Cairo és freepascal

Fórumok

Freepascal, lazarusból szeretném használni a Cairo-t.

Addig el is jutottam, hogy .png képet minden további nélkül létre tudok hozni.
Mivel nyomtatni is szeretnék, postscriptet is elő kellene állítanom. A cairo unit csak és szigorúan a cairo.h-ban lévő deklarációkat tartalmazza, ezt ezért kibővítettem ideiglenesen a cairo-ps.h deklarációival.

A lenti kód részben mükszik is, de vagy üres fájlt hoz létre, vagy létrehozza a .ps fájlt, de egy 1x1 pontos üres dokumentum az eredmény, ami mindent tartalmaz, de BoundingBox 0 0 1 1 bejegyzést tartalmaz, ill. a dokumentum nem rendelkezik tartalmi résszel.

köszönök bármi féle segítséget.

program project1;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, Cairo
{ add your units here };
var
surface: Pcairo_surface_t;
cr: Pcairo_t;

begin
surface := cairo_ps_surface_create('/home/zsolti/cairoprb.ps', 500, 800);

cr := cairo_create(surface);

cairo_select_font_face (cr, 'courier new', CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
cairo_set_font_size(cr, 8);
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_move_to(cr, 20,10);
cairo_show_text(cr,'Hello world !');
cairo_show_page(cr);

cairo_destroy(cr);

cairo_surface_destroy(surface);

end.

Hozzászólások

Sz'asz!

Én is szeretném a Cairo-t használni, de honnan szerezzem be a cairo.pp pascal cuccot? A h2pas nem mindent fordít át pascalra, én meg nem vagyok "C guru".

ui: Bocsi, hogy nem tudok segíteni!

Csá!

a cairo.pp a 2.0.4 forrásban a packages/extra/cairo könyvtárban megtalálható, vagy a freepascal svn repo-ból leszedhető.
Vmelyik régebbi cairóból lett csinálva, ezért néhány eljárás hiányzik belőle(eddig egyel találkoztam), valamint csak a cairo.h-ból készült. A többi headerben viszont csak eljárások szerepelnek - legalábbis a cairo-ps.h-ban igen - azokból nem jelenthet gondot egy pascal unit készítése, vagy a cairo.pp -hez hozzáfűzni.

Egyébként működik a dolog, úgyhogy csinálok egy egszerű report generatort, ha lesz használható változat, közzé is teszem.
Lazarus-hoz sajnos nagyon hiányzik egy olyan report generator, ami nem csak a ghostscript fontjait használja.

Működik a dolog, nagyjából sikerült is beleásnom magam a cairo rejtelmeibe, tudok közvetlenül nyomtatóra küldeni cairóval renderelt ps állományt, illetve nekiláttam egy unit elkészítésének, aminek a végeredménye remélhetőleg az lesz, hogy a Canvas osztály használatával azonos módon lehet majd különböző cairo által támogatott dokumentumot elkészíteni. :) Ha érdekel küldhetek példaprogit a nyomtatásról, illetve a módosított cairo.pp-t.