libmemdraw: change memimageinit() to return integer error (for kernel), minor cleanups
This commit is contained in:
parent
def87d6016
commit
d56a6fadc5
5 changed files with 16 additions and 21 deletions
|
@ -149,7 +149,7 @@ extern void memarc(Memimage*, Point, int, int, int, Memimage*, Point, int, int,
|
|||
extern Rectangle memlinebbox(Point, Point, int, int, int);
|
||||
extern int memlineendsize(int);
|
||||
extern void _memmkcmap(void);
|
||||
extern void memimageinit(void);
|
||||
extern int memimageinit(void);
|
||||
|
||||
/*
|
||||
* Subfont management
|
||||
|
|
|
@ -94,7 +94,7 @@ int drawdebug;
|
|||
.PP
|
||||
.ft L
|
||||
.nf
|
||||
void memimageinit(void)
|
||||
int memimageinit(void)
|
||||
ulong* wordaddr(Memimage *i, Point p)
|
||||
uchar* byteaddr(Memimage *i, Point p)
|
||||
void memimagemove(void *from, void *to)
|
||||
|
@ -213,7 +213,8 @@ as well as the replicated solid color images
|
|||
and
|
||||
.BR memwhite .
|
||||
It should be called before referring to any of these images
|
||||
and before calling any of the other library functions.
|
||||
and before calling any of the other library functions. It
|
||||
returns non-zero on error.
|
||||
.PP
|
||||
Each
|
||||
.B Memimage
|
||||
|
|
|
@ -121,7 +121,7 @@ freememimage(Memimage *i)
|
|||
{
|
||||
if(i == nil)
|
||||
return;
|
||||
if(i->data->ref-- == 1 && i->data->allocd){
|
||||
if(--i->data->ref == 0 && i->data->allocd){
|
||||
if(i->data->base)
|
||||
poolfree(imagmem, i->data->base);
|
||||
free(i->data);
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
extern Pool* imagmem;
|
||||
int drawdebug;
|
||||
static int tablesbuilt;
|
||||
|
||||
/* perfect approximation to NTSC = .299r+.587g+.114b when 0 ≤ r,g,b < 256 */
|
||||
#define RGB2K(r,g,b) ((156763*(r)+307758*(g)+59769*(b))>>19)
|
||||
|
@ -54,16 +53,15 @@ Memimage *memopaque;
|
|||
|
||||
int _ifmt(Fmt*);
|
||||
|
||||
void
|
||||
int
|
||||
memimageinit(void)
|
||||
{
|
||||
static int didinit = 0;
|
||||
|
||||
if(didinit)
|
||||
return;
|
||||
|
||||
didinit = 1;
|
||||
return 0;
|
||||
|
||||
if(imagmem != nil)
|
||||
if(strcmp(imagmem->name, "Image") == 0 || strcmp(imagmem->name, "image") == 0)
|
||||
imagmem->move = memimagemove;
|
||||
|
||||
|
@ -75,22 +73,25 @@ memimageinit(void)
|
|||
fmtinstall('b', _ifmt);
|
||||
|
||||
memones = allocmemimage(Rect(0,0,1,1), GREY1);
|
||||
memzeros = allocmemimage(Rect(0,0,1,1), GREY1);
|
||||
if(memones == nil || memzeros == nil)
|
||||
return -1;
|
||||
|
||||
memones->flags |= Frepl;
|
||||
memones->clipr = Rect(-0x3FFFFFF, -0x3FFFFFF, 0x3FFFFFF, 0x3FFFFFF);
|
||||
*byteaddr(memones, ZP) = ~0;
|
||||
|
||||
memzeros = allocmemimage(Rect(0,0,1,1), GREY1);
|
||||
memzeros->flags |= Frepl;
|
||||
memzeros->clipr = Rect(-0x3FFFFFF, -0x3FFFFFF, 0x3FFFFFF, 0x3FFFFFF);
|
||||
*byteaddr(memzeros, ZP) = 0;
|
||||
|
||||
if(memones == nil || memzeros == nil)
|
||||
assert(0 /*cannot initialize memimage library */); /* RSC BUG */
|
||||
|
||||
memwhite = memones;
|
||||
memblack = memzeros;
|
||||
memopaque = memones;
|
||||
memtransparent = memzeros;
|
||||
|
||||
didinit = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ulong imgtorgba(Memimage*, ulong);
|
||||
|
@ -354,13 +355,6 @@ mktables(void)
|
|||
{
|
||||
int i, j, mask, sh, small;
|
||||
|
||||
if(tablesbuilt)
|
||||
return;
|
||||
|
||||
fmtinstall('R', Rfmt);
|
||||
fmtinstall('P', Pfmt);
|
||||
tablesbuilt = 1;
|
||||
|
||||
/* bit replication up to 8 bits */
|
||||
for(i=0; i<256; i++){
|
||||
for(j=0; j<=8; j++){ /* j <= 8 [sic] */
|
||||
|
|
|
@ -79,7 +79,7 @@ _memfillpolysc(Memimage *dst, Point *vert, int nvert, int w, Memimage *src, Poin
|
|||
Point p0;
|
||||
int i;
|
||||
|
||||
if(nvert == 0)
|
||||
if(nvert <= 0)
|
||||
return;
|
||||
|
||||
seg = malloc((nvert+2)*sizeof(Seg*));
|
||||
|
|
Loading…
Reference in a new issue