libmemdraw: change memimageinit() to return integer error (for kernel), minor cleanups

This commit is contained in:
cinap_lenrek 2013-11-12 21:42:05 +01:00
parent def87d6016
commit d56a6fadc5
5 changed files with 16 additions and 21 deletions

View file

@ -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 Rectangle memlinebbox(Point, Point, int, int, int);
extern int memlineendsize(int); extern int memlineendsize(int);
extern void _memmkcmap(void); extern void _memmkcmap(void);
extern void memimageinit(void); extern int memimageinit(void);
/* /*
* Subfont management * Subfont management

View file

@ -94,7 +94,7 @@ int drawdebug;
.PP .PP
.ft L .ft L
.nf .nf
void memimageinit(void) int memimageinit(void)
ulong* wordaddr(Memimage *i, Point p) ulong* wordaddr(Memimage *i, Point p)
uchar* byteaddr(Memimage *i, Point p) uchar* byteaddr(Memimage *i, Point p)
void memimagemove(void *from, void *to) void memimagemove(void *from, void *to)
@ -213,7 +213,8 @@ as well as the replicated solid color images
and and
.BR memwhite . .BR memwhite .
It should be called before referring to any of these images 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 .PP
Each Each
.B Memimage .B Memimage

View file

@ -121,7 +121,7 @@ freememimage(Memimage *i)
{ {
if(i == nil) if(i == nil)
return; return;
if(i->data->ref-- == 1 && i->data->allocd){ if(--i->data->ref == 0 && i->data->allocd){
if(i->data->base) if(i->data->base)
poolfree(imagmem, i->data->base); poolfree(imagmem, i->data->base);
free(i->data); free(i->data);

View file

@ -6,7 +6,6 @@
extern Pool* imagmem; extern Pool* imagmem;
int drawdebug; int drawdebug;
static int tablesbuilt;
/* perfect approximation to NTSC = .299r+.587g+.114b when 0 ≤ r,g,b < 256 */ /* 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) #define RGB2K(r,g,b) ((156763*(r)+307758*(g)+59769*(b))>>19)
@ -54,16 +53,15 @@ Memimage *memopaque;
int _ifmt(Fmt*); int _ifmt(Fmt*);
void int
memimageinit(void) memimageinit(void)
{ {
static int didinit = 0; static int didinit = 0;
if(didinit) if(didinit)
return; return 0;
didinit = 1;
if(imagmem != nil)
if(strcmp(imagmem->name, "Image") == 0 || strcmp(imagmem->name, "image") == 0) if(strcmp(imagmem->name, "Image") == 0 || strcmp(imagmem->name, "image") == 0)
imagmem->move = memimagemove; imagmem->move = memimagemove;
@ -75,22 +73,25 @@ memimageinit(void)
fmtinstall('b', _ifmt); fmtinstall('b', _ifmt);
memones = allocmemimage(Rect(0,0,1,1), GREY1); 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->flags |= Frepl;
memones->clipr = Rect(-0x3FFFFFF, -0x3FFFFFF, 0x3FFFFFF, 0x3FFFFFF); memones->clipr = Rect(-0x3FFFFFF, -0x3FFFFFF, 0x3FFFFFF, 0x3FFFFFF);
*byteaddr(memones, ZP) = ~0; *byteaddr(memones, ZP) = ~0;
memzeros = allocmemimage(Rect(0,0,1,1), GREY1);
memzeros->flags |= Frepl; memzeros->flags |= Frepl;
memzeros->clipr = Rect(-0x3FFFFFF, -0x3FFFFFF, 0x3FFFFFF, 0x3FFFFFF); memzeros->clipr = Rect(-0x3FFFFFF, -0x3FFFFFF, 0x3FFFFFF, 0x3FFFFFF);
*byteaddr(memzeros, ZP) = 0; *byteaddr(memzeros, ZP) = 0;
if(memones == nil || memzeros == nil)
assert(0 /*cannot initialize memimage library */); /* RSC BUG */
memwhite = memones; memwhite = memones;
memblack = memzeros; memblack = memzeros;
memopaque = memones; memopaque = memones;
memtransparent = memzeros; memtransparent = memzeros;
didinit = 1;
return 0;
} }
static ulong imgtorgba(Memimage*, ulong); static ulong imgtorgba(Memimage*, ulong);
@ -354,13 +355,6 @@ mktables(void)
{ {
int i, j, mask, sh, small; int i, j, mask, sh, small;
if(tablesbuilt)
return;
fmtinstall('R', Rfmt);
fmtinstall('P', Pfmt);
tablesbuilt = 1;
/* bit replication up to 8 bits */ /* bit replication up to 8 bits */
for(i=0; i<256; i++){ for(i=0; i<256; i++){
for(j=0; j<=8; j++){ /* j <= 8 [sic] */ for(j=0; j<=8; j++){ /* j <= 8 [sic] */

View file

@ -79,7 +79,7 @@ _memfillpolysc(Memimage *dst, Point *vert, int nvert, int w, Memimage *src, Poin
Point p0; Point p0;
int i; int i;
if(nvert == 0) if(nvert <= 0)
return; return;
seg = malloc((nvert+2)*sizeof(Seg*)); seg = malloc((nvert+2)*sizeof(Seg*));