void xf_Glyph_BeginDraw(rdpContext* context, int x, int y, int width, int height, UINT32 bgcolor, UINT32 fgcolor) { xfContext* context_ = (xfContext*) context; xfContext* xfc = (xfContext*) context; bgcolor = (xfc->clrconv->invert)? freerdp_color_convert_var_bgr(bgcolor, context_->settings->ColorDepth, xfc->bpp, xfc->clrconv): freerdp_color_convert_var_rgb(bgcolor, context_->settings->ColorDepth, xfc->bpp, xfc->clrconv); fgcolor = (xfc->clrconv->invert)? freerdp_color_convert_var_bgr(fgcolor, context_->settings->ColorDepth, xfc->bpp, xfc->clrconv): freerdp_color_convert_var_rgb(fgcolor, context_->settings->ColorDepth, xfc->bpp, xfc->clrconv); xf_lock_x11(xfc, FALSE); XSetFunction(xfc->display, xfc->gc, GXcopy); XSetFillStyle(xfc->display, xfc->gc, FillSolid); XSetForeground(xfc->display, xfc->gc, fgcolor); XFillRectangle(xfc->display, xfc->drawing, xfc->gc, x, y, width, height); XSetForeground(xfc->display, xfc->gc, bgcolor); XSetBackground(xfc->display, xfc->gc, fgcolor); XSetFillStyle(xfc->display, xfc->gc, FillStippled); xf_unlock_x11(xfc, FALSE); }
void gdi_Glyph_EndDraw(rdpContext* context, int x, int y, int width, int height, uint32 bgcolor, uint32 fgcolor) { rdpGdi* gdi = context->gdi; bgcolor = freerdp_color_convert_var_bgr(bgcolor, gdi->srcBpp, 32, gdi->clrconv); gdi->textColor = gdi_SetTextColor(gdi->drawing->hdc, bgcolor); }
void wf_gdi_multi_opaque_rect(wfContext* wfc, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect) { int i; RECT rect; HBRUSH brush; UINT32 brush_color; DELTA_RECT* rectangle; for (i = 1; i < (int) multi_opaque_rect->numRectangles + 1; i++) { rectangle = &multi_opaque_rect->rectangles[i]; brush_color = freerdp_color_convert_var_bgr(multi_opaque_rect->color, wfc->srcBpp, wfc->dstBpp, wfc->clrconv); rect.left = rectangle->left; rect.top = rectangle->top; rect.right = rectangle->left + rectangle->width; rect.bottom = rectangle->top + rectangle->height; brush = CreateSolidBrush(brush_color); FillRect(wfc->drawing->hdc, &rect, brush); if (wfc->drawing == wfc->primary) wf_invalidate_region(wfc, rect.left, rect.top, rect.right - rect.left + 1, rect.bottom - rect.top + 1); DeleteObject(brush); } }
void wf_gdi_line_to(wfContext* wfc, LINE_TO_ORDER* line_to) { HPEN pen; HPEN org_pen; int x, y, w, h; UINT32 pen_color; pen_color = freerdp_color_convert_var_bgr(line_to->penColor, wfc->srcBpp, wfc->dstBpp, wfc->clrconv); pen = CreatePen(line_to->penStyle, line_to->penWidth, pen_color); wf_set_rop2(wfc->drawing->hdc, line_to->bRop2); org_pen = (HPEN) SelectObject(wfc->drawing->hdc, pen); MoveToEx(wfc->drawing->hdc, line_to->nXStart, line_to->nYStart, NULL); LineTo(wfc->drawing->hdc, line_to->nXEnd, line_to->nYEnd); x = (line_to->nXStart < line_to->nXEnd) ? line_to->nXStart : line_to->nXEnd; y = (line_to->nYStart < line_to->nYEnd) ? line_to->nYStart : line_to->nYEnd; w = (line_to->nXStart < line_to->nXEnd) ? (line_to->nXEnd - line_to->nXStart) : (line_to->nXStart - line_to->nXEnd); h = (line_to->nYStart < line_to->nYEnd) ? (line_to->nYEnd - line_to->nYStart) : (line_to->nYStart - line_to->nYEnd); if (wfc->drawing == wfc->primary) wf_invalidate_region(wfc, x, y, w, h); SelectObject(wfc->drawing->hdc, org_pen); DeleteObject(pen); }
void gdi_Glyph_BeginDraw(rdpContext* context, int x, int y, int width, int height, uint32 bgcolor, uint32 fgcolor) { GDI_RECT rect; HGDI_BRUSH brush; rdpGdi* gdi = context->gdi; bgcolor = freerdp_color_convert_var_bgr(bgcolor, gdi->srcBpp, 32, gdi->clrconv); fgcolor = freerdp_color_convert_var_bgr(fgcolor, gdi->srcBpp, 32, gdi->clrconv); gdi_CRgnToRect(x, y, width, height, &rect); brush = gdi_CreateSolidBrush(fgcolor); gdi_FillRect(gdi->drawing->hdc, &rect, brush); gdi->textColor = gdi_SetTextColor(gdi->drawing->hdc, bgcolor); }
void xf_Glyph_BeginDraw(rdpContext* context, int x, int y, int width, int height, uint32 bgcolor, uint32 fgcolor) { xfInfo* xfi = ((xfContext*) context)->xfi; bgcolor = (xfi->clrconv->invert)? freerdp_color_convert_var_bgr(bgcolor, xfi->srcBpp, 32, xfi->clrconv): freerdp_color_convert_var_rgb(bgcolor, xfi->srcBpp, 32, xfi->clrconv); fgcolor = (xfi->clrconv->invert)? freerdp_color_convert_var_bgr(fgcolor, xfi->srcBpp, 32, xfi->clrconv): freerdp_color_convert_var_rgb(fgcolor, xfi->srcBpp, 32, xfi->clrconv); XSetFunction(xfi->display, xfi->gc, GXcopy); XSetFillStyle(xfi->display, xfi->gc, FillSolid); XSetForeground(xfi->display, xfi->gc, fgcolor); XFillRectangle(xfi->display, xfi->drawing, xfi->gc, x, y, width, height); XSetForeground(xfi->display, xfi->gc, bgcolor); XSetBackground(xfi->display, xfi->gc, fgcolor); XSetFillStyle(xfi->display, xfi->gc, FillStippled); }
void rf_Glyph_BeginDraw(rdpContext* context, int x, int y, int width, int height, uint32 bgcolor, uint32 fgcolor) { #ifdef RF_GLYPH rfContext* rfi = (rfContext*) context; bgcolor = (rfi->clrconv->invert)? freerdp_color_convert_var_bgr(bgcolor, rfi->srcBpp, 32, rfi->clrconv): freerdp_color_convert_var_rgb(bgcolor, rfi->srcBpp, 32, rfi->clrconv); fgcolor = (rfi->clrconv->invert)? freerdp_color_convert_var_bgr(fgcolor, rfi->srcBpp, 32, rfi->clrconv): freerdp_color_convert_var_rgb(fgcolor, rfi->srcBpp, 32, rfi->clrconv); XSetFunction(rfi->display, rfi->gc, GXcopy); XSetFillStyle(rfi->display, rfi->gc, FillSolid); XSetForeground(rfi->display, rfi->gc, fgcolor); XFillRectangle(rfi->display, rfi->drawing, rfi->gc, x, y, width, height); XSetForeground(rfi->display, rfi->gc, bgcolor); XSetBackground(rfi->display, rfi->gc, fgcolor); XSetFillStyle(rfi->display, rfi->gc, FillStippled); #endif }
void wf_gdi_opaque_rect(wfContext* wfc, OPAQUE_RECT_ORDER* opaque_rect) { RECT rect; HBRUSH brush; UINT32 brush_color; brush_color = freerdp_color_convert_var_bgr(opaque_rect->color, wfc->srcBpp, wfc->dstBpp, wfc->clrconv); rect.left = opaque_rect->nLeftRect; rect.top = opaque_rect->nTopRect; rect.right = opaque_rect->nLeftRect + opaque_rect->nWidth; rect.bottom = opaque_rect->nTopRect + opaque_rect->nHeight; brush = CreateSolidBrush(brush_color); FillRect(wfc->drawing->hdc, &rect, brush); DeleteObject(brush); if (wfc->drawing == wfc->primary) wf_invalidate_region(wfc, rect.left, rect.top, rect.right - rect.left + 1, rect.bottom - rect.top + 1); }
void wf_gdi_polyline(wfContext* wfc, POLYLINE_ORDER* polyline) { int i; POINT* pts; int org_rop2; HPEN hpen; HPEN org_hpen; UINT32 pen_color; pen_color = freerdp_color_convert_var_bgr(polyline->penColor, wfc->srcBpp, wfc->dstBpp, wfc->clrconv); hpen = CreatePen(0, 1, pen_color); org_rop2 = wf_set_rop2(wfc->drawing->hdc, polyline->bRop2); org_hpen = (HPEN) SelectObject(wfc->drawing->hdc, hpen); if (polyline->numPoints > 0) { POINT temp; temp.x = polyline->xStart; temp.y = polyline->yStart; pts = (POINT*) malloc(sizeof(POINT) * polyline->numPoints); for (i = 0; i < (int) polyline->numPoints; i++) { temp.x += polyline->points[i].x; temp.y += polyline->points[i].y; pts[i].x = temp.x; pts[i].y = temp.y; if (wfc->drawing == wfc->primary) wf_invalidate_region(wfc, pts[i].x, pts[i].y, pts[i].x + 1, pts[i].y + 1); } Polyline(wfc->drawing->hdc, pts, polyline->numPoints); free(pts); } SelectObject(wfc->drawing->hdc, org_hpen); wf_set_rop2(wfc->drawing->hdc, org_rop2); DeleteObject(hpen); }