lost pixlib sources
git-svn-id: svn://kolibrios.org@882 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
162
programs/develop/libraries/pixlib/pixlib.c
Normal file
162
programs/develop/libraries/pixlib/pixlib.c
Normal file
@@ -0,0 +1,162 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "system.h"
|
||||
|
||||
#include "pixlib.h"
|
||||
|
||||
static clip_t scrn_clip;
|
||||
static pixmap_t scrn_pixmap;
|
||||
|
||||
static u32_t srv_hw2d;
|
||||
|
||||
#define HS_HORIZONTAL 0
|
||||
#define HS_VERTICAL 1
|
||||
#define HS_FDIAGONAL 2
|
||||
#define HS_BDIAGONAL 3
|
||||
#define HS_CROSS 4
|
||||
#define HS_DIAGCROSS 5
|
||||
|
||||
|
||||
static u32_t hatches[HATCH_MAX*2] =
|
||||
{ 0xFF000000, 0xFF000000, /* HORIZONTAL */
|
||||
0x22222222, 0x22222222, /* VERTICAL */
|
||||
0x11224488, 0x11224488, /* FDIAGONAL */
|
||||
0x44221188, 0x44221188, /* BDIAGONAL */
|
||||
0xFF111111, 0xFF111111, /* CROSS */
|
||||
0x10284482, 0x01824428 /* DCROSS */
|
||||
};
|
||||
|
||||
|
||||
typedef struct {
|
||||
int available; /**< Count of available items in this slab. */
|
||||
void *start; /**< Start address of first item. */
|
||||
void *nextavail; /**< The index of next available item. */
|
||||
} slab_t;
|
||||
|
||||
static brush_t brushes[256];
|
||||
static pixmap_t pixmaps[64];
|
||||
static slab_t br_slab;
|
||||
static slab_t px_slab;
|
||||
|
||||
int __stdcall start(int state)
|
||||
{
|
||||
int p;
|
||||
int i;
|
||||
|
||||
int scrnsize;
|
||||
int scrnbpp;
|
||||
int scrnpitch;
|
||||
|
||||
if( !test_mmx())
|
||||
return FALSE;
|
||||
|
||||
if( (scrnbpp = GetScreenBpp()) != 32)
|
||||
return FALSE;
|
||||
|
||||
scrnsize = GetScreenSize();
|
||||
scrnpitch = GetScreenPitch();
|
||||
|
||||
scrn_clip.xmin = 0;
|
||||
scrn_clip.ymin = 0;
|
||||
scrn_clip.xmax = (scrnsize >> 16) - 1;
|
||||
scrn_clip.ymax = (scrnsize & 0xFFFF) - 1;
|
||||
|
||||
scrn_pixmap.width = scrnsize >> 16;
|
||||
scrn_pixmap.height = scrnsize & 0xFFFF;
|
||||
scrn_pixmap.format = PICT_a8r8g8b8;
|
||||
scrn_pixmap.flags = 0;
|
||||
scrn_pixmap.pitch = scrnpitch;
|
||||
scrn_pixmap.mapped = (void*)0xFE000000;
|
||||
|
||||
br_slab.available = 256;
|
||||
br_slab.start = brushes;
|
||||
br_slab.nextavail = brushes;
|
||||
|
||||
for (i = 0, p = (int)br_slab.start; i < 256; i++)
|
||||
{
|
||||
*(int *)p = p+sizeof(brush_t);
|
||||
p = p+sizeof(brush_t);
|
||||
};
|
||||
|
||||
px_slab.available = 64;
|
||||
px_slab.start = pixmaps;
|
||||
px_slab.nextavail = pixmaps;
|
||||
|
||||
for (i = 0, p = (int)px_slab.start; i < 64; i++)
|
||||
{
|
||||
*(int *)p = p+sizeof(pixmap_t);
|
||||
p = p+sizeof(pixmap_t);
|
||||
};
|
||||
|
||||
srv_hw2d = get_service("HDRAW");
|
||||
if(srv_hw2d == 0)
|
||||
srv_hw2d = load_service("/rd/1/drivers/ati2d.drv");
|
||||
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
|
||||
#include "clip.inc"
|
||||
#include "pixmap.inc"
|
||||
#include "brush.inc"
|
||||
#include "draw.inc"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
void *f;
|
||||
}export_t;
|
||||
|
||||
char szStart[] = "START";
|
||||
char szVersion[] = "version";
|
||||
|
||||
//char szBlockClip[] = "BlockClip";
|
||||
//char szLineClip[] = "LineClip";
|
||||
|
||||
char szCreatePixmap[] = "CreatePixmap";
|
||||
char szDestroyPixmap[] = "DestroyPixmap";
|
||||
char szLockPixmap[] = "LockPixmap";
|
||||
char szUnlockPixmap[] = "UnlockPixmap";
|
||||
char szGetPixmapPitch[] = "GetPixmapPitch";
|
||||
|
||||
char szCreateHatch[] = "CreateHatch";
|
||||
char szCreateMonoBrush[] = "CreateMonoBrush";
|
||||
char szDestroyBrush[] = "DestroyBrush";
|
||||
|
||||
char szClearPixmap[] = "ClearPixmap";
|
||||
char szLine[] = "Line";
|
||||
char szDrawRect[] = "DrawRect";
|
||||
char szFillRect[] = "FillRect";
|
||||
char szBlit[] = "Blit";
|
||||
char szTransparentBlit[] = "TransparentBlit";
|
||||
|
||||
|
||||
export_t EXPORTS[] __asm__("EXPORTS") =
|
||||
{
|
||||
{ szStart, start },
|
||||
{ szVersion, (void*)0x00010001 },
|
||||
|
||||
// { szBlockClip, BlockClip },
|
||||
// { szLineClip, LineClip },
|
||||
|
||||
{ szCreatePixmap, CreatePixmap },
|
||||
{ szDestroyPixmap, DestroyPixmap },
|
||||
{ szLockPixmap, LockPixmap },
|
||||
{ szUnlockPixmap, UnlockPixmap },
|
||||
{ szGetPixmapPitch, GetPixmapPitch },
|
||||
|
||||
{ szCreateHatch, CreateHatch },
|
||||
{ szCreateMonoBrush, CreateMonoBrush },
|
||||
{ szDestroyBrush, DestroyBrush },
|
||||
|
||||
{ szClearPixmap, ClearPixmap },
|
||||
{ szLine, Line },
|
||||
{ szDrawRect, DrawRect },
|
||||
{ szFillRect, FillRect },
|
||||
{ szBlit, Blit },
|
||||
{ szTransparentBlit, TransparentBlit },
|
||||
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user