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

View file

@ -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

View file

@ -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);

View file

@ -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] */

View file

@ -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*));