static IPTR coolimage_draw(Class *cl, Object *o, struct impDraw *msg) { struct CoolImageData *data; WORD x, y; data = INST_DATA(cl, o); x = IM(o)->LeftEdge + msg->imp_Offset.X; y = IM(o)->TopEdge + msg->imp_Offset.Y; if (CyberGfxBase && (GetBitMapAttr(msg->imp_RPort->BitMap, BMA_DEPTH) >= 15)) { data->pal[0] = data->bgcol; WriteLUTPixelArray((APTR)data->image->data, 0, 0, data->image->width, msg->imp_RPort, data->pal, x, y, data->image->width, data->image->height, CTABFMT_XRGB8); } return 0; }
static void refresh_rectangle( grArosSurface* surface, int x, int y, int w, int h ) { SetAPen(surface->win->RPort, 1); SetDrMd(surface->win->RPort, JAM2); if (!surface->grays) { BltTemplate(surface->root.bitmap.buffer, 0, w / 8, surface->win->RPort, surface->win->BorderLeft, surface->win->BorderTop, surface->bpr * 8, surface->root.bitmap.rows); } else { #if 0 WritePixelArray8(surface->win->RPort, surface->win->BorderLeft, surface->win->BorderTop, surface->win->BorderLeft + surface->root.bitmap.width - 1, surface->win->BorderTop + surface->root.bitmap.rows - 1, surface->root.bitmap.buffer, 0); #endif WriteLUTPixelArray(surface->root.bitmap.buffer, 0, 0, surface->root.bitmap.width, surface->win->RPort, surface->cgfxcoltab, surface->win->BorderLeft, surface->win->BorderTop, surface->root.bitmap.width, surface->root.bitmap.rows, CTABFMT_XRGB8); } }