static RD_HCURSOR l_ui_create_cursor(struct rdp_inst * inst, uint32 x, uint32 y, int width, int height, uint8 * andmask, uint8 * xormask, int bpp) { wfInfo * wfi; HCURSOR cursor; ICONINFO iconinfo; uint8 * cdata; wfi = GET_WFI(inst); if (bpp == 1) { cursor = CreateCursor(g_hInstance, x, y, width, height, andmask, xormask); } else { iconinfo.fIcon = FALSE; iconinfo.xHotspot = x; iconinfo.yHotspot = y; cdata = wf_cursor_mask_convert(wfi, width, height, andmask); iconinfo.hbmMask = CreateBitmap(width, height, 1, 1, cdata); iconinfo.hbmColor = wf_create_dib(wfi, width, height, bpp, 0, xormask); cursor = CreateIconIndirect(&iconinfo); DeleteObject(iconinfo.hbmMask); DeleteObject(iconinfo.hbmColor); free(cdata); } return (RD_HCURSOR)cursor; }
static HBRUSH wf_create_brush(wfContext* wfc, rdpBrush* brush, UINT32 color, UINT32 bpp) { UINT32 i; HBRUSH br; LOGBRUSH lbr; BYTE* cdata; BYTE ipattern[8]; HBITMAP pattern = NULL; lbr.lbStyle = brush->style; if (lbr.lbStyle == BS_DIBPATTERN || lbr.lbStyle == BS_DIBPATTERN8X8 || lbr.lbStyle == BS_DIBPATTERNPT) lbr.lbColor = DIB_RGB_COLORS; else lbr.lbColor = color; if (lbr.lbStyle == BS_PATTERN || lbr.lbStyle == BS_PATTERN8X8) { if (brush->bpp > 1) { UINT32 format = gdi_get_pixel_format(bpp); pattern = wf_create_dib(wfc, 8, 8, format, brush->data, NULL); lbr.lbHatch = (ULONG_PTR) pattern; } else { for (i = 0; i != 8; i++) ipattern[7 - i] = brush->data[i]; cdata = wf_glyph_convert(wfc, 8, 8, ipattern); pattern = CreateBitmap(8, 8, 1, 1, cdata); lbr.lbHatch = (ULONG_PTR) pattern; free(cdata); } } else if (lbr.lbStyle == BS_HATCHED) { lbr.lbHatch = brush->hatch; } else { lbr.lbHatch = 0; } br = CreateBrushIndirect(&lbr); SetBrushOrgEx(wfc->drawing->hdc, brush->x, brush->y, NULL); if (pattern != NULL) DeleteObject(pattern); return br; }
HBRUSH wf_create_brush(wfInfo * wfi, rdpBrush* brush, uint32 color, int bpp) { int i; HBRUSH br; LOGBRUSH lbr; uint8* cdata; uint8 ipattern[8]; HBITMAP pattern = NULL; lbr.lbStyle = brush->style; if (lbr.lbStyle == BS_DIBPATTERN || lbr.lbStyle == BS_DIBPATTERN8X8 || lbr.lbStyle == BS_DIBPATTERNPT) lbr.lbColor = DIB_RGB_COLORS; else lbr.lbColor = color; if (lbr.lbStyle == BS_PATTERN || lbr.lbStyle == BS_PATTERN8X8) { if (brush->bpp > 1) { pattern = wf_create_dib(wfi, 8, 8, bpp, brush->data, NULL); lbr.lbHatch = (ULONG_PTR) pattern; } else { for (i = 0; i != 8; i++) ipattern[7 - i] = brush->data[i]; cdata = wf_glyph_convert(wfi, 8, 8, ipattern); pattern = CreateBitmap(8, 8, 1, 1, cdata); lbr.lbHatch = (ULONG_PTR) pattern; free(cdata); } } else if (lbr.lbStyle == BS_HATCHED) { lbr.lbHatch = brush->hatch; } else { lbr.lbHatch = 0; } br = CreateBrushIndirect(&lbr); SetBrushOrgEx(wfi->drawing->hdc, brush->x, brush->y, NULL); if (pattern != NULL) DeleteObject(pattern); return br; }
wfBitmap* wf_bitmap_new(wfInfo* wfi, int width, int height, int bpp, uint8* data) { HDC hdc; wfBitmap* bitmap; hdc = GetDC(NULL); bitmap = (wfBitmap*) malloc(sizeof(wfBitmap)); bitmap->hdc = CreateCompatibleDC(hdc); bitmap->bitmap = wf_create_dib(wfi, width, height, bpp, data, &(bitmap->pdata)); bitmap->org_bitmap = (HBITMAP) SelectObject(bitmap->hdc, bitmap->bitmap); ReleaseDC(NULL, hdc); return bitmap; }
wfBitmap* wf_image_new(wfContext* wfc, UINT32 width, UINT32 height, UINT32 format, const BYTE* data) { HDC hdc; wfBitmap* image; hdc = GetDC(NULL); image = (wfBitmap*) malloc(sizeof(wfBitmap)); image->hdc = CreateCompatibleDC(hdc); image->bitmap = wf_create_dib(wfc, width, height, format, data, &(image->pdata)); image->org_bitmap = (HBITMAP) SelectObject(image->hdc, image->bitmap); ReleaseDC(NULL, hdc); return image; }
void wf_Bitmap_New(wfContext* wfc, rdpBitmap* bitmap) { HDC hdc; wfBitmap* wf_bitmap = (wfBitmap*) bitmap; wf_bitmap = (wfBitmap*) bitmap; hdc = GetDC(NULL); wf_bitmap->hdc = CreateCompatibleDC(hdc); if (!bitmap->data) wf_bitmap->bitmap = CreateCompatibleBitmap(hdc, bitmap->width, bitmap->height); else wf_bitmap->bitmap = wf_create_dib(wfc, bitmap->width, bitmap->height, bitmap->bpp, bitmap->data, NULL); wf_bitmap->org_bitmap = (HBITMAP) SelectObject(wf_bitmap->hdc, wf_bitmap->bitmap); ReleaseDC(NULL, hdc); }
wfBitmap* wf_image_new(wfInfo* wfi, int width, int height, int bpp, uint8* data) { HDC hdc; wfBitmap* image; hdc = GetDC(NULL); image = (wfBitmap*) malloc(sizeof(wfBitmap)); image->hdc = CreateCompatibleDC(hdc); if (data == NULL) image->bitmap = CreateCompatibleBitmap(hdc, width, height); else image->bitmap = wf_create_dib(wfi, width, height, bpp, data, &(image->pdata)); image->org_bitmap = (HBITMAP) SelectObject(image->hdc, image->bitmap); ReleaseDC(NULL, hdc); return image; }
void wf_Bitmap_New(rdpContext* context, rdpBitmap* bitmap) { HDC hdc; wfBitmap* wf_bitmap = (wfBitmap*) bitmap; wfInfo* wfi = ((wfContext*) context)->wfi; wf_bitmap = (wfBitmap*) bitmap; hdc = GetDC(NULL); wf_bitmap->hdc = CreateCompatibleDC(hdc); if (bitmap->data == NULL) wf_bitmap->bitmap = CreateCompatibleBitmap(hdc, bitmap->width, bitmap->height); else wf_bitmap->bitmap = wf_create_dib(wfi, bitmap->width, bitmap->height, bitmap->bpp, bitmap->data); wf_bitmap->org_bitmap = (HBITMAP) SelectObject(wf_bitmap->hdc, wf_bitmap->bitmap); ReleaseDC(NULL, hdc); }
void wf_bitmap_new(rdpUpdate* update, wfBitmap* bitmap) { HDC hdc; uint8* data; rdpBitmap* _bitmap; wfInfo* wfi = ((wfContext*) update->context)->wfi; hdc = GetDC(NULL); bitmap->hdc = CreateCompatibleDC(hdc); _bitmap = &(bitmap->_p); data = _bitmap->dstData; if (data == NULL) bitmap->bitmap = CreateCompatibleBitmap(hdc, _bitmap->width, _bitmap->height); else bitmap->bitmap = wf_create_dib(wfi, _bitmap->width, _bitmap->height, _bitmap->bpp, data); bitmap->org_bitmap = (HBITMAP) SelectObject(bitmap->hdc, bitmap->bitmap); ReleaseDC(NULL, hdc); }
static struct wf_bitmap * wf_bitmap_new(wfInfo * wfi, int width, int height, int bpp, int reverse, uint8 * data) { struct wf_bitmap *bm; HDC hdc; hdc = GetDC(NULL); bm = (struct wf_bitmap *) malloc(sizeof(struct wf_bitmap)); bm->hdc = CreateCompatibleDC(hdc); if (data == NULL) { bm->bitmap = CreateCompatibleBitmap(hdc, width, height); } else { bm->bitmap = wf_create_dib(wfi, width, height, bpp, reverse, data); } bm->org_bitmap = (HBITMAP)SelectObject(bm->hdc, bm->bitmap); ReleaseDC(NULL, hdc); return bm; }
static BOOL wf_Bitmap_New(rdpContext* context, rdpBitmap* bitmap) { HDC hdc; wfContext* wfc = (wfContext*)context; wfBitmap* wf_bitmap = (wfBitmap*) bitmap; if (!context || !bitmap) return FALSE; wf_bitmap = (wfBitmap*) bitmap; hdc = GetDC(NULL); wf_bitmap->hdc = CreateCompatibleDC(hdc); if (!bitmap->data) wf_bitmap->bitmap = CreateCompatibleBitmap(hdc, bitmap->width, bitmap->height); else wf_bitmap->bitmap = wf_create_dib(wfc, bitmap->width, bitmap->height, bitmap->format, bitmap->data, NULL); wf_bitmap->org_bitmap = (HBITMAP) SelectObject(wf_bitmap->hdc, wf_bitmap->bitmap); ReleaseDC(NULL, hdc); return TRUE; }
static HBRUSH wf_create_brush(wfInfo * wfi, RD_BRUSH * brush, int color, int bpp) { HBRUSH br; LOGBRUSH lbr; HBITMAP pattern = NULL; uint8 * cdata; int i; uint8 ipattern[8]; // Style lbr.lbStyle = brush->style; // Color if (lbr.lbStyle == BS_DIBPATTERN || lbr.lbStyle == BS_DIBPATTERN8X8 || lbr.lbStyle == BS_DIBPATTERNPT) { lbr.lbColor = DIB_RGB_COLORS; } else { lbr.lbColor = color; } // Hatch if (lbr.lbStyle == BS_PATTERN || lbr.lbStyle == BS_PATTERN8X8) { if (brush->bd == 0) /* rdp4 brush */ { for (i = 0; i != 8; i++) { ipattern[7 - i] = brush->pattern[i]; } cdata = wf_glyph_convert(wfi, 8, 8, ipattern); pattern = CreateBitmap(8, 8, 1, 1, cdata); lbr.lbHatch = (ULONG_PTR)pattern; free(cdata); } else if (brush->bd->color_code > 1) /* > 1 bpp */ { pattern = wf_create_dib(wfi, 8, 8, bpp, 1, brush->bd->data); lbr.lbHatch = (ULONG_PTR)pattern; } else { cdata = wf_glyph_convert(wfi, 8, 8, brush->bd->data); pattern = CreateBitmap(8, 8, 1, 1, cdata); lbr.lbHatch = (ULONG_PTR)pattern; free(cdata); } } else if (lbr.lbStyle == BS_HATCHED) { lbr.lbHatch = brush->pattern[0]; } else { lbr.lbHatch = 0; } br = CreateBrushIndirect(&lbr); SetBrushOrgEx(wfi->drw->hdc, brush->xorigin, brush->yorigin, NULL); if (pattern != NULL) { DeleteObject(pattern); } return br; }