コード例 #1
0
ファイル: cdwimg.c プロジェクト: LuaDist/cd
static void cdkillcanvas (cdCtxCanvas *ctxcanvas)
{
  cdwKillCanvas(ctxcanvas);
  
  memset(ctxcanvas, 0, sizeof(cdCtxCanvas));
  free(ctxcanvas);
}
コード例 #2
0
ファイル: cdwdbuf.c プロジェクト: gcfavorites/tastools
static void cdkillcanvas(cdCtxCanvas *ctxcanvas)
{
  cdKillImage(ctxcanvas->image_dbuffer);
  cdwKillCanvas(ctxcanvas);
  
  memset(ctxcanvas, 0, sizeof(cdCtxCanvas));
  free(ctxcanvas);
}
コード例 #3
0
ファイル: cdwprn.c プロジェクト: gcfavorites/tastools
/* 
%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);
}
コード例 #4
0
ファイル: cdwemf.c プロジェクト: LuaDist/cd
static void cdkillcanvas (cdCtxCanvas* ctxcanvas)
{
  HENHMETAFILE hmf;
  
  cdwKillCanvas(ctxcanvas);
  
  hmf = CloseEnhMetaFile(ctxcanvas->hDC);
  DeleteEnhMetaFile(hmf);
  
  memset(ctxcanvas, 0, sizeof(cdCtxCanvas));
  free(ctxcanvas);
}
コード例 #5
0
ファイル: cdwclp.c プロジェクト: LuaDist/cd
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);
}
コード例 #6
0
ファイル: cdwwmf.c プロジェクト: Vulcanior/IUP
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);
}
コード例 #7
0
ファイル: cdwdbuf.c プロジェクト: gcfavorites/tastools
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;
}