static void cdkillcanvas (cdCtxCanvas *ctxcanvas) { cdwKillCanvas(ctxcanvas); memset(ctxcanvas, 0, sizeof(cdCtxCanvas)); free(ctxcanvas); }
static void cdkillcanvas(cdCtxCanvas *ctxcanvas) { cdKillImage(ctxcanvas->image_dbuffer); cdwKillCanvas(ctxcanvas); memset(ctxcanvas, 0, sizeof(cdCtxCanvas)); free(ctxcanvas); }
/* %F cdKillCanvas para Printer. Termina a pagina e termina o documento, enviando-o para a impressora. */ static void cdkillcanvas (cdCtxCanvas *ctxcanvas) { EndPage(ctxcanvas->hDC); EndDoc(ctxcanvas->hDC); cdwKillCanvas(ctxcanvas); DeleteDC(ctxcanvas->hDC); memset(ctxcanvas, 0, sizeof(cdCtxCanvas)); free(ctxcanvas); }
static void cdkillcanvas (cdCtxCanvas* ctxcanvas) { HENHMETAFILE hmf; cdwKillCanvas(ctxcanvas); hmf = CloseEnhMetaFile(ctxcanvas->hDC); DeleteEnhMetaFile(hmf); memset(ctxcanvas, 0, sizeof(cdCtxCanvas)); free(ctxcanvas); }
static void cdkillcanvas (cdCtxCanvas *ctxcanvas) { cdwKillCanvas(ctxcanvas); OpenClipboard(NULL); EmptyClipboard(); if (ctxcanvas->wtype == CDW_WMF) { HMETAFILE hmf = CloseMetaFile(ctxcanvas->hDC); HANDLE hMemG; METAFILEPICT* lpMFP; hMemG = GlobalAlloc(GHND|GMEM_DDESHARE, (DWORD)sizeof(METAFILEPICT)); lpMFP = (METAFILEPICT*) GlobalLock(hMemG); lpMFP->mm = MM_ANISOTROPIC; lpMFP->xExt = (long)(100 * ctxcanvas->canvas->w_mm); lpMFP->yExt = (long)(100 * ctxcanvas->canvas->h_mm); lpMFP->hMF = hmf; GlobalUnlock(hMemG); SetClipboardData(CF_METAFILEPICT, hMemG); } else if (ctxcanvas->wtype == CDW_EMF) { HENHMETAFILE hmf = CloseEnhMetaFile(ctxcanvas->hDC); SetClipboardData(CF_ENHMETAFILE, hmf); } else { HANDLE hDib; GdiFlush(); hDib = cdwCreateCopyHDIB(&ctxcanvas->bmiClip, ctxcanvas->bitsClip); SelectObject(ctxcanvas->hDC, ctxcanvas->hOldBitmapClip); DeleteObject(ctxcanvas->hBitmapClip); DeleteDC(ctxcanvas->hDC); SetClipboardData(CF_DIB, hDib); } CloseClipboard(); memset(ctxcanvas, 0, sizeof(cdCtxCanvas)); free(ctxcanvas); }
static void cdkillcanvas(cdCtxCanvas *ctxcanvas) { HMETAFILE hmf; cdwKillCanvas(ctxcanvas); hmf = CloseMetaFile(ctxcanvas->hDC); wmfMakePlaceableMetafile(hmf, ctxcanvas->filename, ctxcanvas->canvas->w, ctxcanvas->canvas->h); DeleteMetaFile(hmf); free(ctxcanvas->filename); memset(ctxcanvas, 0, sizeof(cdCtxCanvas)); free(ctxcanvas); }
static int cdactivate(cdCtxCanvas *ctxcanvas) { int w, h; cdCanvas* canvas_dbuffer = ctxcanvas->canvas_dbuffer; /* this is done in the canvas_dbuffer context */ /* this will update canvas size */ cdCanvasActivate(canvas_dbuffer); w = canvas_dbuffer->w; h = canvas_dbuffer->h; if (w==0) w=1; if (h==0) h=1; /* check if the size changed */ if (w != ctxcanvas->image_dbuffer->w || h != ctxcanvas->image_dbuffer->h) { cdCanvas* canvas = ctxcanvas->canvas; /* save the current, if the rebuild fail */ cdImage* old_image_dbuffer = ctxcanvas->image_dbuffer; cdCtxCanvas* old_ctxcanvas = ctxcanvas; /* if the image is rebuild, the canvas that uses the image must be also rebuild */ /* rebuild the image and the canvas */ canvas->ctxcanvas = NULL; cdcreatecanvas(canvas, canvas_dbuffer); if (!canvas->ctxcanvas) { canvas->ctxcanvas = old_ctxcanvas; return CD_ERROR; } /* remove the old image and canvas */ cdKillImage(old_image_dbuffer); cdwKillCanvas(old_ctxcanvas); free(old_ctxcanvas); ctxcanvas = canvas->ctxcanvas; /* update canvas attributes */ canvas->cxBackground(ctxcanvas, canvas->background); canvas->cxForeground(ctxcanvas, canvas->foreground); canvas->cxBackOpacity(ctxcanvas, canvas->back_opacity); canvas->cxWriteMode(ctxcanvas, canvas->write_mode); canvas->cxLineStyle(ctxcanvas, canvas->line_style); canvas->cxLineWidth(ctxcanvas, canvas->line_width); canvas->cxLineCap(ctxcanvas, canvas->line_cap); canvas->cxLineJoin(ctxcanvas, canvas->line_join); canvas->cxHatch(ctxcanvas, canvas->hatch_style); if (canvas->stipple) canvas->cxStipple(ctxcanvas, canvas->stipple_w, canvas->stipple_h, canvas->stipple); if (canvas->pattern) canvas->cxPattern(ctxcanvas, canvas->pattern_w, canvas->pattern_h, canvas->pattern); canvas->cxInteriorStyle(ctxcanvas, canvas->interior_style); if (canvas->native_font[0] == 0) canvas->cxFont(ctxcanvas, canvas->font_type_face, canvas->font_style, canvas->font_size); else canvas->cxNativeFont(ctxcanvas, canvas->native_font); canvas->cxTextAlignment(ctxcanvas, canvas->text_alignment); canvas->cxTextOrientation(ctxcanvas, canvas->text_orientation); if (canvas->use_matrix && canvas->cxTransform) canvas->cxTransform(ctxcanvas, canvas->matrix); if (canvas->clip_mode == CD_CLIPAREA && canvas->cxClipArea) canvas->cxClipArea(ctxcanvas, canvas->clip_rect.xmin, canvas->clip_rect.xmax, canvas->clip_rect.ymin, canvas->clip_rect.ymax); /* if (canvas->clip_mode == CD_CLIPAREA && canvas->cxFClipArea) canvas->cxFClipArea(ctxcanvas, canvas->clip_frect.xmin, canvas->clip_frect.xmax, canvas->clip_frect.ymin, canvas->clip_frect.ymax); */ if (canvas->clip_mode == CD_CLIPPOLYGON && canvas->clip_poly) canvas->cxPoly(ctxcanvas, CD_CLIP, canvas->clip_poly, canvas->clip_poly_n); /* if (canvas->clip_mode == CD_CLIPPOLYGON && canvas->clip_fpoly) canvas->cxFPoly(ctxcanvas, CD_CLIP, canvas->clip_fpoly, canvas->clip_poly_n); */ if (canvas->clip_mode != CD_CLIPOFF) canvas->cxClip(ctxcanvas, canvas->clip_mode); } return CD_OK; }