void IupCdDrawFocusRect(Ihandle* ih, cdCanvas *canvas, int x1, int y1, int x2, int y2) { int y, x, w, h; #ifdef WIN32 void* gc = cdCanvasGetAttribute(canvas, "HDC"); #else void* gc = cdCanvasGetAttribute(canvas, "GC"); /* works for X11, GDK and Cairo */ #endif cdCanvasUpdateYAxis(canvas, &y1); cdCanvasUpdateYAxis(canvas, &y2); y = y1; if (y2<y1) y = y2; x = x1; if (x2<x1) x = x2; w = abs(x2-x1)+1; h = abs(y2-y1)+1; iupdrvDrawFocusRect(ih, gc, x, y, w, h); }
static void cdcreatecanvas(cdCanvas* canvas, void *data) { int w, h; cdCanvas* canvas_dbuffer = (cdCanvas*)data; if (!canvas_dbuffer) return; cdCanvasActivate(canvas_dbuffer); /* Update size */ w = canvas_dbuffer->w; h = canvas_dbuffer->h; if (w==0) w=1; if (h==0) h=1; Bitmap* bitmap = new Bitmap(w, h, PixelFormat24bppRGB); bitmap->SetResolution((REAL)(canvas_dbuffer->xres*25.4), (REAL)(canvas_dbuffer->yres*25.4)); Graphics imggraphics(bitmap); imggraphics.Clear(Color((ARGB)Color::White)); Graphics* graphics = new Graphics(bitmap); canvas->w = w; canvas->h = h; canvas->bpp = 24; /* Initialize base driver */ cdCtxCanvas* ctxcanvas = cdwpCreateCanvas(canvas, graphics, CDW_BMP); ctxcanvas->bitmap = bitmap; 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; /* 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"); } }