void* CreateImageRGBA(int w, int h) { void* myImage; unsigned char * _alpha = malloc(w * h); SimpleInitAlpha(w, h, _alpha); cdCanvasSetAttribute(curCanvas, "IMAGEALPHA", (char*)_alpha); cdCanvasSetAttribute(curCanvas, "IMAGEFORMAT", "32"); // afetara´ o proximo cdCreateImage myImage = cdCanvasCreateImage(curCanvas, w, h); cdCanvasSetAttribute(curCanvas, "IMAGEFORMAT", NULL); // remove o atributo para nao afetar outros cdCreateImage return myImage; }
static void cdcreatecanvas(cdCanvas* canvas, cdCanvas* canvas_dbuffer) { int w, h; cdCtxCanvas* ctxcanvas; cdImage* image_dbuffer; cdCtxImage* ctximage; cdCanvasActivate(canvas_dbuffer); w = canvas_dbuffer->w; h = canvas_dbuffer->h; if (w==0) w=1; if (h==0) h=1; /* this is done in the canvas_dbuffer context */ image_dbuffer = cdCanvasCreateImage(canvas_dbuffer, w, h); if (!image_dbuffer) return; ctximage = image_dbuffer->ctximage; /* Init the driver DBuffer */ ctxcanvas = cdgdkCreateCanvas(canvas, (GdkDrawable*)ctximage->img, ctximage->scr, ctximage->vis); if (!ctxcanvas) return; ctxcanvas->image_dbuffer = image_dbuffer; ctxcanvas->canvas_dbuffer = canvas_dbuffer; { char* mode = cdCanvasGetAttribute(canvas_dbuffer, "UTF8MODE"); int utf8mode = mode? (mode[0]=='1'? 1: 0): 0; if (utf8mode) cdCanvasSetAttribute(canvas, "UTF8MODE", "1"); } }
static void cdcreatecanvas(cdCanvas* canvas, cdCanvas* canvas_dbuffer) { int w, h; cdCtxCanvas* ctxcanvas; cdImage* image_dbuffer; cdCtxImage* ctximage; cdCanvasActivate(canvas_dbuffer); w = canvas_dbuffer->w; h = canvas_dbuffer->h; if (w==0) w=1; if (h==0) h=1; /* this is done in the canvas_dbuffer context */ image_dbuffer = cdCanvasCreateImage(canvas_dbuffer, w, h); if (!image_dbuffer) return; ctximage = image_dbuffer->ctximage; /* Inicializa driver DBuffer */ ctxcanvas = cdwCreateCanvas(canvas, NULL, ctximage->hDC, CDW_BMP); ctxcanvas->image_dbuffer = image_dbuffer; ctxcanvas->canvas_dbuffer = canvas_dbuffer; canvas->w = ctximage->w; canvas->h = ctximage->h; canvas->w_mm = ctximage->w_mm; canvas->h_mm = ctximage->h_mm; canvas->bpp = ctximage->bpp; canvas->xres = ctximage->xres; canvas->yres = ctximage->yres; ctxcanvas->clip_pnt[2].x = ctxcanvas->clip_pnt[1].x = ctximage->w - 1; ctxcanvas->clip_pnt[3].y = ctxcanvas->clip_pnt[2].y = ctximage->h - 1; }