\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /proc/self/root/proc/self/root/opt/alt/libharu/usr/share/libharu/bindings/delphi/

Viewing File: ExtGStateDemo.dpr

{*
 * << Haru Free PDF Library 2.0.5 >> -- ExtGStateDemo.dpr
 *
 * Copyright (c) 1999-2006 Takeshi Kanno <takeshi_kanno@est.hi-ho.ne.jp>
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.
 * It is provided 'as is' without express or implied warranty.
 *
 *}
program LineDemo;

{$APPTYPE CONSOLE}

uses
  SysUtils, hpdf, hpdf_types, hpdf_consts;

procedure
error_handler (error_no: HPDF_STATUS; detail_no: HPDF_STATUS;
              user_data: Pointer); stdcall;
var
  message: string;
begin
  message := 'ERROR: ' + IntToStr(error_no) + '-' + IntToStr(detail_no);
  raise Exception.Create(message);
end;

procedure draw_circles (page: HPDF_Page; const description: PChar; x: 
            HPDF_REAL; y: HPDF_REAL);
begin
    HPDF_Page_SetLineWidth (page, 1.0);
    HPDF_Page_SetRGBStroke (page, 0.0, 0.0, 0.0);
    HPDF_Page_SetRGBFill (page, 1.0, 0.0, 0.0);
    HPDF_Page_Circle (page,x +  40, y + 40, 40);
    HPDF_Page_FillStroke (page);
    HPDF_Page_SetRGBFill (page, 0.0, 1.0, 0.0);
    HPDF_Page_Circle (page, x + 100, y + 40, 40);
    HPDF_Page_FillStroke (page);
    HPDF_Page_SetRGBFill (page, 0.0, 0.0, 1.0);
    HPDF_Page_Circle (page, x + 70, y + 74.64, 40);
    HPDF_Page_FillStroke (page);

    HPDF_Page_SetRGBFill (page, 0.0, 0.0, 0.0);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, x + 0.0, y + 130.0, description);
    HPDF_Page_EndText (page);
end;

procedure make_pdf ();
const
  fname: string = 'ExtGStateDemo.pdf';
  PAGE_WIDTH: HPDF_REAL = 600;
  PAGE_HEIGHT: HPDF_REAL = 900;
var
  pdf: HPDF_Doc;
  font: HPDF_Font;
  page: HPDF_Page;
  gstate: HPDF_ExtGState;
begin
  pdf := HPDF_New(@error_handler, nil);
  if pdf = nil then
  begin
    WriteLn('error: cannot create PdfDoc object\n');
    Halt (1);
  end;

  try
//    HPDF_SetCompressionMode(pdf, HPDF_COMP_ALL);

    {* create default-font *}
    font := HPDF_GetFont (pdf, 'Helvetica-Bold', nil);

    {* add a new page object. *}
    page := HPDF_AddPage(pdf);
    HPDF_Page_SetFontAndSize (page, font, 10);

    HPDF_Page_SetHeight (page, PAGE_HEIGHT);
    HPDF_Page_SetWidth (page, PAGE_WIDTH);
    

    {* normal *}
    HPDF_Page_GSave (page);
    draw_circles (page, 'normal', 40.0, PAGE_HEIGHT - 170);
    HPDF_Page_GRestore (page);

    {* alpha fill *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetAlphaFill (gstate, 0.8);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'alpha fill = 0.8', 230.0, PAGE_HEIGHT - 170);
    HPDF_Page_GRestore (page);

    {* alpha stroke *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetAlphaFill (gstate, 0.4);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'alpha fill = 0.4', 420.0, PAGE_HEIGHT - 170);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_MULTIPLY *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_MULTIPLY);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_MULTIPLY', 40.0, PAGE_HEIGHT - 340);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_SCREEN *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_SCREEN);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_SCREEN', 230.0, PAGE_HEIGHT - 340);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_OVERLAY *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_OVERLAY);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_OVERLAY', 420.0, PAGE_HEIGHT - 340);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_DARKEN *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_DARKEN);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_DARKEN', 40.0, PAGE_HEIGHT - 510);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_LIGHTEN *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_LIGHTEN);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_LIGHTEN', 230.0, PAGE_HEIGHT - 510);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_COLOR_DODGE *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_COLOR_DODGE);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_COLOR_DODGE', 420.0, PAGE_HEIGHT - 510);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_COLOR_BUM *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_COLOR_BUM);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_COLOR_BUM', 40.0, PAGE_HEIGHT - 680);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_HARD_LIGHT *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_HARD_LIGHT);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_HARD_LIGHT', 230.0, PAGE_HEIGHT - 680);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_SOFT_LIGHT *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_SOFT_LIGHT);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_SOFT_LIGHT', 420.0, PAGE_HEIGHT - 680);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_DIFFERENCE *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_DIFFERENCE);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_DIFFERENCE', 40.0, PAGE_HEIGHT - 850);
    HPDF_Page_GRestore (page);

    {* blend-mode=HPDF_BM_EXCLUSHON *}
    HPDF_Page_GSave (page);
    gstate := HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_EXCLUSHON);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, 'HPDF_BM_EXCLUSHON', 230.0, PAGE_HEIGHT - 850);
    HPDF_Page_GRestore (page);

    {* save the document to a file *}
    HPDF_SaveToFile (pdf, PChar(fname));

  except
    on e: Exception do
    begin
      Writeln (e.message);
      HPDF_Free (pdf);
      Halt (1);
    end;
  end;

  {* clean up *}
  HPDF_Free (pdf);
end;

begin
  make_pdf;
end.