예제 #1
0
파일: cdwprnp.cpp 프로젝트: LuaDist/cd
/* 
%F cdFlush para Printer.
Termina uma pagina e inicia outra.
*/
static void cdflush(cdCtxCanvas* ctxcanvas)
{
  delete ctxcanvas->graphics;
  EndPage(ctxcanvas->hDC);

  StartPage(ctxcanvas->hDC);
  ctxcanvas->graphics = new Graphics(ctxcanvas->hDC, ctxcanvas->printerHandle);

  cdwpUpdateCanvas(ctxcanvas);
}
예제 #2
0
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->canvas->w ||
      h != ctxcanvas->canvas->h)
  {
    delete ctxcanvas->graphics;
    delete ctxcanvas->bitmap;
    if (ctxcanvas->bitmap_dbuffer) delete ctxcanvas->bitmap_dbuffer;
    ctxcanvas->bitmap_dbuffer = NULL;

    Bitmap* bitmap = new Bitmap(w, h, PixelFormat24bppRGB);
    bitmap->SetResolution((REAL)(canvas_dbuffer->xres*25.4), (REAL)(canvas_dbuffer->yres*25.4));

    ctxcanvas->bitmap = bitmap;
    ctxcanvas->graphics = new Graphics(bitmap);

    ctxcanvas->canvas->w = w;
    ctxcanvas->canvas->h = h;

    ctxcanvas->dirty = 1;

    cdwpUpdateCanvas(ctxcanvas);
  }

  return CD_OK;
}