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 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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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] */
|
||||||
|
|
|
@ -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*));
|
||||||
|
|
Loading…
Reference in a new issue