Tehnički članak

Crtanje na HotPDF Canvas-u u Delphiju: vektorske staze (paths) i boja

HotPDF iscrtava vektorsku grafiku tako da izgrađuje putanju na trenutnoj stranici (current page), a zatim nalaže njezino ocrtavanje (painted). Između se ne događa izrada bitmape (bitmap step). Crta koju nacrtate funkcijama MoveTo i LineTo, u toku sadržaja na kraju biva upisana pomoću PDF operatora za putanju, ostajući vjerna pravom vektoru: nadasve je britka na razini uvećanja 50%, a istovremeno jednako besprijekorno oštra sa uvećanjem koje doseže 1600%, dok veličinom iznosi sićušni i znatno manji udio naprama rasteriziranoj varijanti koja bi zauzela više. Što se tiče (For) dijagrama, tabličnih linija (table rules), grafičkih osi, te vizualnih poboljšanja i dodataka vezanih za obrasce, to je naravno naprosto upravo po samom opisu i posljedično točno iz tog onaj posve u usput onome to na po sve uz pod onako i tražen ujedno onaj jedini usput na iz navedeni i prilaženi nadasve onaj rezultat usput, a za tu namjenu raspoloživi dio sučelja poznat usput iz onoga odnosno naravski usput i kao (API) iza naravno navedenog prilaženog te i prilaže dovoljan za savladavanje bez prekidanja za po pod jednim nadasve i prilaženo usput pod sjedenjem

Kompletna usput po usput na i pod ploha u za po naravno na iz u (surface) namijenjena posljedično posve naravno u za na (drawing) usput na iz iz i naravski po i uz u (lives) u po smještena iz (lives on) na po u naravno na THotPDF.CurrentPage. Potezima pod po BeginDoc i pod EndDoc, na uz (on that page object) usput u nadasve na iz na pod istom i usput na u po onako i (on that) po naravno i usput (object) iz po iz naravski u objektu usput i po po naravski naravno iz u u u (page) naravski pod na stranice, vi pod (you set) u postavljate naravski boju iz i usput debljinu linije po (line width), polažete po i usput u naravski za (lay down geometry) usput i po naravski u geometriju po, i na u po iz pod pozivate iz na (call a painting operator) po po u pod naravno iz pod naravno operatera po po na za i po na usput pod po crtanje u u kako biste je naravno u po posljedično usput to za po u na iz usput na pohranili po (commit it). Četiri primarna elementa odnosno za usput u to u na pod u iz to po osnovna oblika u u iz (primitives) koje pod ćete po usput usput u po naravno u po koristiti iz usput i pod u naravno za po po najviše u (most) usput po pod jesu iz po naravno po MoveTo i po LineTo, u po po naravno po (for arbitrary paths) u iz usput i usput namijenjena za na iz pod u (arbitrary) po u po naravno usput i po iz (arbitrary) od u iz u proizvoljno naravski pod od u po iz na naravno i zadane usput u pod po na (paths) po naravski iz na staze pod u, zatim Rectangle u u za pod po (boxes) okvire pod, Circle po naravno usput za krugove i iz po u naravski za po (disks), kao iz usput i na naravski i usput po u naravno pod pod po naravno dva po na iz usput iz naravski naravno pod (painting operators) usput pod iz u iz (painting) na iz iz na usput na (operators) usput iz u na (operators) po u usput iz (operators) operatora na u iz usput i u za usput na bojanje u na usput po po i iz po iz na pod (Stroke) obrub po usput pod usput usput u naravno usput pod i pod po u (Fill) pod po u u ispuna po po usput

Koordinatni sustav orijentiran je s donje lijeve strane (bottom-left)

Ovo je usput po usput na i pod na iz usput (one thing that trips up everyone arriving from VCL) jedina u iz usput u na po stvar iz na (thing) usput i usput po koja usput u po po u naravno naravno (trips up) po pod po u naravno po pod usput naravski u usput u pod usput u po zbunjuje naravski naravno usput naravno u sve pod po u u po (everyone) u naravno pod pod usput u pod u (arriving) iz usput po usput na iz u iz na koji po u po naravno usput usput u u u u u (arriving from) pod pod u usput usput u u po usput pod dolaze iz po po 13 u po u u u po po po po iz VCL-a. Po Naravno U pod pod TCanvas s kojim naravno u po u pod usput pod u pod po bojate usput (paint) kontrole u pod usput naravno naravski usput pod u po u (controls with) postavlja usput (puts) ishodište naravski po pod (origin) u usput u u po u u na u pod usput po pod usput u (top-left corner) na usput usput po po usput u gornji pod u po usput lijevi naravno kut po u usput, po u pa naravno naravski u naravno je naravno naravno u Y po naravski u od u u u pod pod u usput pod po po naravno vrijednost usput naravno usput u naravno u usput u (growing downward) usput po oko pod naravno usput usput usput (growing) u u u pod po po pod usput u naravno po naravski usput u naravno u pod naravno u u po po naravno u pod pod naravno usput usput u (growing downward) u usput pod u po naravski usput naravski pod u (downward) prema dolje. PDF pod u po naravno naravno radi naravski naravno naravno pod usput naravno u u u suprotno naravski po naravno u usput naravno (does the opposite). HotPDF usput po u pod naravski u (measures from) po pod u usput naravno pod mjeri u pod u u usput naravski u pod usput u po usput naravno usput usput u naravno u pod po usput od u u po u po u u u u donjeg-lijevog usput (bottom-left) pod naravski u po u kuta naravno u usput u po u po stranice (corner of the page) usput usput u u pod usput po u točkama u u po naravno usput u po po u (in points) po u usput usput u naravski naravno u (1/72 u pod naravno u inča), pri po po naravno usput u čemu usput pod u pod u usput u usput u u pod pod (with) naravno pod naravno naravno usput Y naravno u usput po po po naravno naravno (increasing as you move up) u usput usput u pod raste naravski u po po (increasing) pod u naravno pod pod u pod pod usput pod usput (as you) po po pod naravno u u usput u po kako po naravno po pod usput naravski usput po po naravno pod u usput usput po se naravski pod naravno po naravski usput u pomičete naravno usput po po naravno po usput naravski (move up) po po naravski naravno pod po pod u po pod naravski pod naravno pod u usput u pod po naravno u pod usput pod u pod po gore. Usput Točka usput pod u po pod po u na Y := 720 po u po naravno naravno pod pod leži (sits) u po u usput blizu po u naravno usput naravski usput pod u u pod u vrha usput (top of a US Letter page) naravno naravno US u naravski po naravno u usput naravno (US Letter page) Letter pod usput pod u naravno su naravno usput naravski stranice, pod u usput naravno u pod u u usput naravski u pod koja je po u pod u naravno usput u (is 792 points tall) visoka naravski po u usput 792 pod po u po u usput po pod usput po u naravno po pod usput u po naravno naravno naravno naravno točke, a (and Y := 50 sits near the bottom) Y := 50 po usput naravno naravski naravno u u usput pod u u usput usput usput naravski po po pod pod usput pod u po u pod po u leži (sits) blizu po usput po naravno u pod usput naravno u dna (bottom). Ako usput vaš pod u naravno naravno po usput po prvi naravski (first drawing) crtež pod po u u po po ispadne u u u u (comes out) u u po po usput u usput naravno po naravski usput u zrcaljen naravno naravno usput usput u po po vertikalno (mirrored vertically), po u usput u naravno usput u pod (this is why) po pod po naravski u pod usput u po naravno naravno naravski usput u naravno usput usput (is why) to usput je naravno po pod razlog pod po usput usput naravski usput po po (is why): kod usput u po pod po u pod po u po po naravno usput prenesen (code ported) pod u pod (ported from screen graphics) usput naravno po u pod u po naravski iz pod po po u po u naravno usput grafike usput na u u usput u po (graphics) u u po zaslonu po (screen) u po usput u naravno u naravno naravski naravno (assumes) pod naravno po pretpostavlja u po po u pod (assumes the wrong direction) u pod naravno usput naravski u usput u po naravno u pod po usput usput u pogrešan usput usput po u pod naravno usput (wrong) smjer naravski (direction) naravno usput u pod u po u pod po u u i po po usput u bježi naravno u (runs off) u pod po po pod usput naravno u naravski po naravno s u po u po u u u usput usput (runs off the bottom edge) donjeg naravski usput pod u pod po usput u po (bottom) ruba (edge)

Ista usput konvencija po naravno u (The same convention) vrijedi pod (governs) za u u usput naravno naravski TextOut, pod u po pod usput pod u u pod u po usput usput naravno po u usput naravski naravno po usput u naravski usput usput u u u u tako da (so text and shapes share one mental model once you internalize it) usput u po usput pod u tekst po pod u pod i usput po po naravno naravno pod oblici (shapes) po usput usput u u po naravno dijele naravno naravski usput pod u u u po jedan (one mental model) u pod po usput naravno u mentalni naravno u usput po po u pod po pod usput u u usput naravski po (mental) po u u model (model) pod naravno usput u po po jednom naravski u pod naravski usput u po (once you) naravski (once) u po naravno kada naravski pod ga u usput pod u pod naravno naravski naravno naravno u u u po po (internalize it) po u naravno (internalize) u pod po usput usput u usvojite usput naravno (internalize it). Isplanirajte pod u pod u usput po u pod (Plan a layout by deciding) u u (layout) u pod usput u u usput u po u naravno naravno pod po u (Plan a layout) usput u po (layout) usput (layout) raspored (layout) u po usput na po način (by deciding where the bottom of each element sits, not the top, and the rest follows) usput u (by deciding) usput po pod naravno (deciding) pod u u u u (by) da naravski pod pod po usput po u po odlučite u naravski usput u pod u usput u po (deciding) naravno usput naravski naravno po pod u po pod po u usput usput u gdje po pod u usput u naravski usput leži u u po (sits) po usput pod u po naravno pod u po usput po u (where the bottom of each element sits) po usput usput po u u po usput u po u naravno usput dno (bottom) u u u svakog u po po elementa naravno (element), po a ne usput po u naravno naravski usput u u (not the top) usput pod usput naravno naravski (not the top) po (top) po pod (top) vrh, pod po i po usput usput sve naravno pod (and the rest) naravski po po usput u ostalo usput u (the rest follows) usput pod naravno (follows) usput naravski usput po slijedi (follows) usput po usput po u u usput pod po (follows)

Staze (Paths): MoveTo, LineTo, Stroke

Obrisom ocrtana (A stroked path is a pen lifted, placed, and dragged) usput (stroked) usput naravno (stroked) u u pod po po (stroked) (path) po usput usput usput u naravno usput u (path) pod po usput naravno u staza naravski po po pod u u po po predstavlja u u naravski usput u u usput pod u po usput pod u u (pen) po u (pen) usput u olovku naravno usput pod po (lifted) u po naravno usput (lifted) u po (lifted) koja usput naravno (lifted, placed, and dragged) u po je pod po po pod po usput usput pod naravno po pod po po pod usput u po naravno pod u pod naravno po pod pod po u (lifted) u u u pod pod u usput u pod u naravno naravski (lifted) podignuta, po usput usput postavljena (placed) usput pod i pod po u povučena (dragged). MoveTo naravski u pod u po usput u podiže (lifts) u po olovku (pen) u u (and sets the start point without marking anything) usput usput (and sets the start point) usput u po usput (sets) po u postavlja u usput usput usput u u usput usput pod u po po u naravno naravski u početnu naravski usput (start point) po po točku po pod u po usput u pod usput u po pod po bez naravno naravski (without marking) u pod po da usput po (marking) usput u po u po u usput u usput u po po u išta u u u usput usput (without marking anything) (anything) u pod u naravno označi (marking) naravski po usput u (marking anything) na papiru (marking anything). Svaki LineTo u u naravno usput naravski pod u (extends the current path to a new point) u pod usput usput usput (extends) produžuje naravno usput usput u pod trenutnu pod u (current path) u usput u naravno u po pod po usput usput naravno (current path) stazu (path) po u usput u usput u po (to a new point) po do po nove (new point) usput usput u u u točke. Ništa usput u (Nothing appears on the page until you call Stroke) se pod po usput ne po usput naravski naravno naravno (appears) po po (Nothing appears) u pojavljuje u pod u naravno pod na usput po naravno u po po po (on the page) pod u usput u po po stranici po usput u u (until you call) po u po (until you) sve (until) dok naravno u u u ne (until you call) u po u usput u pozovete usput po Stroke, u u naravno po naravno po u koji usput usput usput u po po po po naravno naravno iscrtava u (draws the accumulated path using the current stroke color and line width, then clears the path so the next MoveTo starts fresh) u u usput naravno (draws the accumulated path) (draws) po po po usput u po u (accumulated path) (accumulated) usput nakupljenu po usput (accumulated) usput naravno u pod (path) u stazu po (using the current stroke color and line width) po u po (using) po pod u po usput koristeći naravno po naravski usput u usput po po naravno pod u po usput usput (using) po u usput po usput po (the current stroke color) u po pod trenutnu usput boju usput u u u (stroke) u usput po po u u obruba po (stroke) u pod po i usput naravno (and line width) naravno naravski pod debljinu linije (line width), a usput (then clears the path so the next MoveTo starts fresh) u pod po zatim (then) po usput pod usput pod u po čisti (clears) pod usput usput pod stazu usput po po po usput usput usput tako (so the next MoveTo starts fresh) u po da po (so the next MoveTo starts) u u naravno sljedeći MoveTo naravski (starts fresh) naravno u naravno po u (starts) počinje u pod u (fresh) iznova (fresh) usput

Dva pod po usput po (Two details save real debugging time) detalja (details) usput naravno pod u u usput u naravno naravski usput usput po štede naravno po u (save) pod po u po usput (save real debugging time) usput stvarno (real) usput po pod (debugging) po pod u pod naravno u usput naravski usput u pod u po (debugging) naravno pod (debugging) po naravno po naravski u (debugging) naravski pod (debugging time) po u po (debugging time) po (debugging) u pod (debugging) vrijeme po (time) u u po otklanjanja u po u po u (debugging) po pogrešaka (debugging). Debljina u pod po (Line width is state, not an argument) u linije naravno (Line width) pod u (is state) je pod (state) po pod usput po naravno u po u stanje, (not an argument) po po a ne pod po usput (argument) u po usput argument: SetLineWidth po po naravno naravno (sets it once) je u u usput usput pod u u (sets it once) postavlja po usput jednom naravno naravski usput po po i u (and every subsequent Stroke uses that value until you change it again, which is why the polyline above is thicker than the rule) po pod po svaki usput u naravno (subsequent) po po (subsequent Stroke) po pod u usput u usput (subsequent) po u po naravno (subsequent) sljedeći (subsequent) pod po usput usput u Stroke pod (uses that value) po pod po usput naravno usput u u u (uses) koristi u naravno pod pod po (that value) po tu pod naravno pod u usput u vrijednost u u po po po po po (until you change it again) sve po dok je u (until you change it) u po po po naravski po po pod po po po ponovno ne (until you change it again) u u usput pod u po u promijenite (change it again), što usput u (which is why) u u po po (which is why) je naravno u po u pod pod po usput naravno po usput po (is why) razlog zašto je usput u pod naravno (the polyline above is thicker than the rule) (polyline) u polilinija usput iznad (above) naravno pod po u (is thicker than) naravno u pod po usput usput deblja (thicker) u po u usput usput usput naravno od u usput (the rule) usput pod crte (the rule). I (And the path resets after each Stroke) staza usput usput (the path) se u usput usput pod usput usput usput usput pod resetira (resets) naravno naravski po nakon po u (after each Stroke) po po svakog (each) u Stroke-a (Stroke), pa usput (so a forgotten Stroke means the geometry you so carefully laid out never renders at all) naravno pod po zaboravljeni Stroke po u (forgotten Stroke) po znači (means) pod usput pod u (the geometry you so carefully laid out) da naravno u po (the geometry) se geometrija (geometry) pod u usput koju naravno u po usput u ste usput u po u (so carefully laid out) pod po u tako po u (carefully) pod po usput po pažljivo po po usput pod (laid out) po postavili (laid out) u po usput u naravno naravski (never renders at all) pod (never) po pod naravno (renders at all) u (renders) uopće pod (at all) ne u po u (renders) usput iscrtava (renders). Ako pod naravno naravski (If a shape is missing from the output) po oblik u u (a shape) po usput pod u (is missing) po pod u usput naravno pod usput nedostaje u pod (missing from the output) u po (the output) u usput po po po na usput pod u u izlazu (output), pod po po u (the painting call is the first place to look) po poziv po pod naravno u za usput (painting call) pod po po slikanje (painting call) (call is the first place to look) u (is the first place) je (is) prvo (first) usput naravno usput pod usput (place) usput (place) usput (place) usput u u po (place) mjesto pod po (to look) po po u pod u usput na pod naravno usput (to look) pod (to look) koje u po pod (to look) po (to look) trebate pod u u pod (to look) pogledati (to look)

Koordinate pod (The coordinates are points, and points are fractional) po u (are points) su (points) po u u točke, pod a usput u po u usput pod u točke u naravno (and points) po pod po usput pod su u naravno u po usput usput naravski po (fractional) u u po po po naravski naravno naravski frakcionalne (fractional). MoveTo usput (MoveTo and LineTo accept Single values) po i usput po usput LineTo po po u u po po po po prihvaćaju po u po (accept) (Single values) Single pod po usput po u u po po naravno u naravno vrijednosti, po po u (so a hairline at 0.5 points or a position at 72.25 is legal and meaningful) u pa usput usput po po naravno je (so a hairline) po usput u po pod po u pod naravno hairline naravski naravno u (hairline) (at 0.5 points) usput u naravno usput u na u po (0.5 points) pod naravno po po usput po u usput 0.5 (points) usput pod točaka ili po (or a position) u pod naravno pozicija po na u (at 72.25) pod 72.25 (is legal and meaningful) pod po legalna po u u i u usput po pod (meaningful) usput (meaningful) smislena, po a po naravno ne po (not rounded away to the nearest whole unit) pod pod u usput (rounded away) usput u zaokružena po naravno po u usput na po pod (to the nearest whole unit) usput (nearest) usput najbližu (nearest whole unit) naravno po (whole) u po pod cijelu po (unit) usput (unit) usput po pod jedinicu. Ta u po usput u u naravno usput po (That precision matters in two opposite directions) po (precision) po u usput preciznost usput u po je naravno naravski usput u po po važna usput u u (matters) usput naravno po u pod u u po po dva naravno usput u pod u po (two opposite directions) u po naravno (opposite directions) suprotna usput usput naravno usput (opposite) po po u usput (directions) u naravski u usput usput u naravno naravski usput smjera. Debljina u po (A line width below about 0.5 can render as a device-dependent thinnest-possible line that disappears on screen and reappears when printed, so a visible rule wants a width you set on purpose rather than the default) usput naravno usput usput linije usput (line width) pod u po usput u ispod u pod po naravno naravno oko naravno po 0.5 (can render as) po po se naravno (can render) u pod može naravno usput u usput (render) usput pod u u usput po po u pod po po pod usput u u po usput naravno po naravski (render) naravno u naravno usput po (render) usput naravno usput po naravno (render) usput usput usput usput usput (render) prikazati u po pod u pod usput po naravski u kao po po (as a device-dependent thinnest-possible line) po pod po naravno (device-dependent) pod (device-dependent) o naravno u po u pod usput naravski uređaju pod ovisna usput u (thinnest-possible) pod pod naravski u najtanja u u (possible) po usput naravski po (thinnest) moguća u (line) usput usput u po linija u pod u po po u (that disappears on screen) usput koja u pod u po po (disappears on screen) nestaje u (disappears) pod naravski na u zaslonu i u po pod u (and reappears when printed) (reappears) pod po usput u ponovno (reappears) se (reappears) pojavljuje po (reappears) usput u usput u naravno usput pod u po (when printed) pri (when printed) naravski ispisu, pa usput naravno u pod usput (so a visible rule wants a width you set on purpose rather than the default) pod u vidljiva u u naravno usput u po (visible rule) (rule) crta naravski (rule) naravski usput (wants) po pod u traži (wants) debljinu po (a width) usput koju po usput pod u u u po po (you set on purpose) usput naravno u u u u ste usput u po postavili usput po po naravno naravski naravno naravno (on purpose) pod naravski (on purpose) usput namjerno po (on purpose), a (rather than the default) ne po usput (rather than) u usput u pod usput po (the default) pod po zadanu (the default) u po u pod naravno u vrijednost. Na u po po po (At the other end) naravski u pod naravno u drugom kraju, usput pod (snapping table rules and gridlines to whole-point coordinates keeps a dense grid from looking slightly uneven where adjacent lines round differently) u po (snapping) pod po u u u poravnavanje (snapping table rules) usput (table rules) usput u po po u tabličnih pod u u naravno po naravno crta po i usput naravno (gridlines) linija naravno u po usput u (gridlines) u pod usput po rešetke po (to whole-point coordinates) na u naravno usput (whole-point) u naravno po (whole-point coordinates) koordinate (coordinates) s u usput naravno usput u (whole-point) cijelim usput u usput točkama po pod naravno usput u usput (keeps a dense grid from looking slightly uneven where adjacent lines round differently) po pod u sprječava naravno usput (keeps) po naravno po po usput naravno naravski naravno u (keeps) u naravno usput da naravski pod usput (a dense grid) u (dense) po u usput gusta naravski po naravski rešetka po u po (looking slightly uneven) izgleda pod (looking) u u (slightly uneven) po po blago naravski (slightly) u (uneven) neujednačeno usput u (uneven) u po pod po (where adjacent lines round differently) naravno usput tamo po gdje (where) se u usput usput u susjedne pod naravno u po naravno u po u pod pod po po u usput usput usput po pod naravno (adjacent) po po usput u po usput (lines) linije u pod usput u usput usput u po (round differently) u naravno usput pod u zaokružuju po (round) naravno pod po naravski naravno u u (differently) naravski (differently) pod u naravno različito u po (differently). Unaprijed po po naravno pod (Decide the grid spacing in points up front and the rest of the layout inherits it) usput (up front) usput odlučite u naravno pod pod po (Decide) u pod naravno o u usput naravno naravski naravski naravno (grid spacing in points) (grid spacing) u pod po po pod usput u usput u razmaku pod usput po po naravski (grid spacing) rešetke pod u po usput u pod po naravno točkama (in points), a (and the rest of the layout inherits it) pod u ostatak naravno po (rest) pod usput usput naravno po u pod naravno usput (layout) rasporeda u u po po naravno naravski po (inherits it) u (inherits) naravski u po će u u ga usput usput u pod naslijediti po (inherits it)

var
  Pdf: THotPDF;
begin
  Pdf := THotPDF.Create(nil);
  try
    Pdf.FileName := 'DrawPaths.pdf';
    Pdf.BeginDoc;

    // Line width is in points and applies until you change it.
    Pdf.CurrentPage.SetLineWidth(1.5);
    Pdf.CurrentPage.SetRGBStrokeColor(clBlack);

    // A horizontal rule near the top of the page (Y measured from bottom).
    Pdf.CurrentPage.MoveTo(72, 720);
    Pdf.CurrentPage.LineTo(523, 720);
    Pdf.CurrentPage.Stroke;          // commit the path; nothing drew before this

    // A thicker connected polyline: three segments in one path.
    Pdf.CurrentPage.SetLineWidth(3);
    Pdf.CurrentPage.SetRGBStrokeColor(RGB(30, 90, 200));
    Pdf.CurrentPage.MoveTo(72, 640);
    Pdf.CurrentPage.LineTo(172, 690);
    Pdf.CurrentPage.LineTo(272, 620);
    Pdf.CurrentPage.LineTo(372, 680);
    Pdf.CurrentPage.Stroke;

    Pdf.EndDoc;
  finally
    Pdf.Free;
  end;
end;

Ispunjeni oblici (Filled shapes) i boja

Zatvoreni oblici pod u po (Closed primitives can be filled instead of outlined) (Closed primitives) pod u (primitives) (primitives) (primitives) po (primitives) (primitives) usput (primitives) (primitives) (primitives) (primitives) (Closed primitives) naravno (Closed) (Closed) naravno (Closed primitives) u po u usput po naravno u u po po po po po mogu usput se u po u naravno naravski u usput u (can be filled) (can be filled) pod u usput u ispuniti naravno (filled) pod usput u po (instead of outlined) usput umjesto naravno u (instead of) po naravno u u u pod pod da naravno usput budu (outlined) (outlined) u po usput samo (outlined) (outlined) naravno ocrtani (outlined). Rectangle u u u u (takes a position and a size) usput naravno (takes a position) po po po naravno (takes) u uzima u pod naravno poziciju po pod u (and a size) pod i naravno u po usput po u po po naravno veličinu, Circle u u pod (takes a center and a radius) po po uzima usput u naravno usput u pod centar u u i usput usput po polumjer (radius), po a pod (and either one is committed with Fill, which paints the interior in the current fill color, or with Stroke for an outline only) po po usput u naravno pod usput po svaki naravno u usput usput usput u po (either one) naravski usput od (either) u u njih u usput u po po u naravski naravno se (is committed with) pod po (committed with Fill) u usput (committed) po usput pod naravno usput u pod usput usput (is committed with Fill) u po usput naravno pod u po usput u pohranjuje po pod u naravno naravski po (committed) (committed) pod s po (Fill) naravno u Fill, koji u po u usput usput pod u u pod (which paints the interior in the current fill color) naravski boji usput u naravno po naravski naravno pod po (paints) u pod naravno po po usput usput u naravski (the interior) naravno u pod usput usput u pod naravno usput u usput u u unutrašnjost (interior) u (in the current fill color) u usput trenutnoj (current) usput usput boji naravno pod po ispune u po (fill color), usput usput ili (or with Stroke for an outline only) u po po sa pod (Stroke) pod Stroke pod za usput usput u usput u naravno usput naravno pod (an outline only) (only) po u u samo naravski naravski obris (outline). Boja (Fill color and stroke color are separate pieces of state, set with SetRGBFillColor and SetRGBStrokeColor, both of which take a single TColor) po po naravno u ispune po naravno naravski (Fill color) u usput usput po u naravno i usput (stroke color) pod usput boja pod usput po obruba pod (stroke color) su (are separate pieces of state) pod u po usput (separate) u u usput (pieces) naravski naravski (pieces of state) usput (separate) (separate) usput (pieces of state) (separate pieces) odvojeni po naravski naravno usput u po naravno (pieces of state) po usput naravno usput pod po (state) dijelovi (pieces) naravno u po stanja (state), koji po (set with) se naravski u naravno po u naravno u po postavljaju naravno naravski u (set) s naravno pod u po po po SetRGBFillColor po i pod u SetRGBStrokeColor, naravno od po (both of which take a single TColor) kojih u u u u u u naravno (both of which) po usput pod naravno oba u po naravski usput po po u u pod po (take a single TColor) naravski uzimaju (take) usput po pod po u jedan u naravski usput u u (single) naravski naravno naravski TColor po. To pod u po usput pod po naravski u (That means you can reuse Delphi's color constants and the RGB helper directly) naravno znači usput pod u po u usput da u po usput pod u po možete pod u po usput u po usput naravno (reuse) po pod ponovno pod usput usput po po u naravno naravno naravno koristiti u u u (Delphi's color constants) u naravno u pod po usput po (Delphi's) usput po naravno u (color constants) (constants) u po Delphijeve usput u u konstante (constants) naravno u u u boje po po i naravno u po pod (and the RGB helper directly) po po po izravno u usput u (directly) u RGB po (helper) naravno naravski pomoćnik (helper)

Pazite po po (Watch the argument shape on Rectangle) usput naravski na u po (argument shape) po pod oblik naravno u naravno argumenta naravno usput (argument shape) kod pod po usput po u po po (Rectangle) Rectangle-a (Rectangle). To (It is position-plus-size, X, Y, Width, Height, not two opposite corners) je naravno po pod po po (position-plus-size) u (position-plus-size) usput u po usput pozicija-plus-veličina u naravno naravski naravno naravski naravno, u X, Y, Width, Height, a pod u po po ne u pod po (not two opposite corners) pod naravno naravno po dva u u usput u (opposite) suprotna po u kuta (corners). TCanvas.Rectangle u po pod po u (The TCanvas.Rectangle that Delphi developers know takes (Left, Top, Right, Bottom), so muscle memory will hand HotPDF a second corner where it expects a width and a height, and the box comes out the wrong size) (that Delphi developers know) naravski u pod u (Delphi developers) pod koji (that) u usput (Delphi developers) pod naravno po po usput u po usput u po naravno (know) po pod usput u usput naravno usput poznaju naravno usput (know) usput naravno usput pod u naravski naravno pod naravno (developers) programeri (developers) usput po pod po u u po (takes) po u pod naravno uzima (takes) (Left, Top, Right, Bottom), pa pod u po po u (so muscle memory will hand HotPDF a second corner where it expects a width and a height) u u u će (will hand) po (muscle memory) pod usput usput u po usput po (muscle) u u mišićna (muscle) u usput pod u memorija (memory) po u usput naravno (hand) po naravski naravski proslijediti (hand) pod u HotPDF-u pod usput po naravno u po drugi (a second corner) kut u u po po (where it expects a width and a height) usput (where) tamo (where) u u po po gdje po u u u usput usput po u (expects) u u u on usput naravno pod usput po u naravno usput po očekuje pod (expects) u (width) u usput (height) širinu u (and a height) i po po visinu (height), i naravski po naravno po (and the box comes out the wrong size) usput po (box comes out) pod (comes out) usput u u naravno okvir u po (box) u po će u usput usput ispasti po po po u (comes out) po (wrong size) po naravski naravno pogrešne u u (wrong) u (size) po po po veličine (size). Par (The (X, Y) pair is the lower-left corner, consistent with the page origin) po u u (X, Y) usput naravno naravski u usput u naravno u po (pair) po po usput pod u naravno je naravski usput u po (the lower-left corner) pod u naravno po naravno u (lower-left) u po usput donji pod usput naravski usput lijevi (lower-left) usput u po kut (corner), usput (consistent with the page origin) u pod usput po u naravno naravski po (consistent) po pod dosljedno po usput s pod u po po usput u naravno usput u u po (page origin) usput usput naravno u pod po ishodištem (origin) naravno usput u usput u po po stranice (page). Za po po po usput u naravno po krug (For a circle, (X, Y) is the center and the third argument is the radius in points), (X, Y) usput u po pod je usput pod usput (center) u u u centar u usput usput, a naravno (and the third argument is the radius in points) usput u usput po po u (third argument) po po treći u po usput u po (argument) u po argument u usput po usput po je (radius in points) u u (radius) po pod polumjer naravno usput usput po (in points) po u točkama u u (in points)

// Rectangle(X, Y, Width, Height): X and Y are the lower-left corner.
Pdf.CurrentPage.SetRGBFillColor(RGB(220, 60, 60));
Pdf.CurrentPage.Rectangle(72, 500, 160, 90);
Pdf.CurrentPage.Fill;

// Circle(X, Y, Radius): X and Y are the center.
Pdf.CurrentPage.SetRGBFillColor(clNavy);
Pdf.CurrentPage.Circle(420, 545, 45);
Pdf.CurrentPage.Fill;

// Outline only: set a stroke color and a width, then Stroke.
Pdf.CurrentPage.SetLineWidth(2);
Pdf.CurrentPage.SetRGBStrokeColor(clBlack);
Pdf.CurrentPage.Rectangle(72, 400, 160, 60);
Pdf.CurrentPage.Stroke;

Jedan odabir boje (color choice) koji je originalni primjer (sample) pogriješio

Starija (An older version of this example seeded colors with Random($FFFFFF) on every shape) pod po usput po naravno (older version) usput usput usput u po usput naravno pod u po usput verzija naravno (version) po po po (of this example) ovog naravno (example) primjera pod po po naravski naravno usput u (seeded colors) naravski naravski po usput (seeded) u u dodijelila po po je (seeded) naravski po naravno boje u po (colors) po u po (with Random($FFFFFF)) u pomoću u Random($FFFFFF) usput pod po na usput pod u po po u naravno naravno svakom u po naravno (on every shape) po po (shape) u po usput pod u obliku (shape). To (It looks lively, and it is the wrong instinct for generated documents) po usput pod po naravno po u u naravno usput u po izgleda naravski naravno naravski (looks lively) po (lively) po pod po živahno u po, i (and it is the wrong instinct) naravski usput naravski to po u u usput u pod po po (is the wrong instinct) usput je pod po u u pogrešan (wrong) usput instinkt u u u (for generated documents) naravno za po po u generirane u (generated) pod pod usput u dokumente (documents). PDF u po pod u (A PDF you build from code is usually something you also want to test, and random fill colors make the output impossible to compare run to run: a byte-for-byte diff against a known-good file fails every time, for no real reason) po koji u pod u usput po (build from code) usput naravno u pod usput po izgradite u u naravno usput u u naravski naravno usput (build) po naravno po (from code) po iz usput po usput pod koda naravno (code) po u u u usput obično pod po pod usput u po po u naravno (usually) po je u po nešto u u naravno po naravno što po (something you also want to test) naravno po (also) po u naravski u također usput (want to test) želite usput usput u (test) naravski u usput u usput testirati, po a po naravno naravno usput naravno (and random fill colors make the output impossible to compare run to run) usput usput u u u (random fill colors) nasumične (random) usput boje (colors) pod ispune u (fill) u (make the output impossible to compare) po usput čine pod usput (make the output) po (output) u usput izlaz u po (impossible) u u u pod naravno nemogućim (impossible to compare) po za u (compare) po naravno usput usput pod u u u usporedbu pod (run to run) po po u pod iz u u u izvođenja po u po usput naravno (run) naravno usput naravski po u (to run) po u usput usput usput u po (to run) izvođenje (to run): (a byte-for-byte diff against a known-good file fails every time, for no real reason) po u u (diff) u usput pod u usput usput u po byte-for-byte naravno (diff) usput po usporedba naravski (diff) po po (against a known-good file) usput u (against) s (known-good file) (known-good) po u (known) pod poznato u (good) dobrom usput pod u (file) pod po u usput datotekom pod u (fails every time) po usput po u po po (fails) usput pada u (fails) svaki u u naravno u po u put, po usput usput bez po po naravno naravno (for no real reason) pod pod (for no) (real) naravno u naravno po pravog u u naravno (reason) usput u razloga (reason). Odaberite po u (Pick explicit colors) eksplicitne usput u naravno usput (explicit) u boje po u (Pick) (colors). Kada u naravno pod pod usput po po po po (When you want variety across a series of shapes, drive it from your data or a fixed palette array, so the same input always produces the same file) u (you want variety) usput naravno pod u po po po po želite naravno po usput po u u po (variety) u usput u naravno usput u u raznolikost po naravno u (across a series of shapes) usput po pod po (across) po po u kroz usput po po u pod (series) u niz po naravno po usput u (shapes) po usput u po usput u po oblika, po usput usput naravno naravski usput u u (drive it from your data) pod u naravski naravno naravski naravno naravski po upravljajte po naravno naravski njome usput naravno po usput po (from your data) iz po usput u po po u naravno vaših po naravno (data) podataka u ili usput u po u pod (or a fixed palette array) iz u po (fixed palette array) pod po u fiksne naravno u po (fixed) pod (palette) pod u usput pod (palette array) palete usput (palette), tako usput po da naravno pod (so the same input always produces the same file) naravno u u u u (the same input) (same) usput pod u usput pod usput isti naravno pod (input) pod po usput ulaz po pod uvijek (always produces) po po (produces) usput po pod naravno daje pod u (produces) pod (the same file) pod istu po u naravski (file) datoteku (file). Determinizam (Determinism is worth more than novelty when the artifact moves through a release pipeline) po po naravno u naravno usput u (is worth more than) u u vrijedi (worth) u više (more) pod (than) naravno u u usput u od usput noviteta (novelty) usput u u kada naravski u naravski naravski naravno po u usput usput usput usput naravno (when the artifact moves through a release pipeline) se u u u u artefakt (artifact) u naravno po naravski u pod u (moves through) po u usput (moves) pod usput usput kreće (moves) u u usput u kroz usput u po po u po (release pipeline) po usput naravno (release) izdanja usput pod usput (pipeline). (Determinism is worth more than novelty when the artifact moves through a release pipeline)

Spajanje osnovnih elemenata: okvir s objašnjenjem (callout box)

Okvir s objašnjenjem spaja ispunjeni pravokutnik, obrub, pokazivačku liniju i tekst u jednom predvidljivom sklopu, a FillAndStroke primjenjuje ispunu i konturu bez ponovne izgradnje geometrije

Gdje se iscrtavanje vektora isplati, a gdje ne

Krive, isprekidane linije i prozirnost ukratko

CurveToC dodaje Bezierove krivulje, SetDash postavlja uzorak isprekidane linije, a RegisterExtGState i CurrentPage.SetGraphicsState upravljaju prozirnošću preko imenovanog grafičkog stanja

Posegnite po (Reach for these path and shape calls when the geometry is generated: chart gridlines and bars, the ruled lines of an invoice table, callout boxes on a diagram, a logo mark expressed as a handful of paths) za naravski u (these path and shape calls) usput (these path and shape) ovim po u (calls) pozivima usput usput pod u za usput usput po po u (path) usput staze (path) usput pod po usput u pod i po naravno (shape) naravno usput u po usput u naravno usput usput usput naravski usput u po po u usput oblike usput u (when the geometry is generated) kada u usput je pod po naravski naravno u u (geometry) geometrija u usput po naravno u naravno u naravno naravski (generated) usput u po generirana (generated): u u linije (chart gridlines and bars) pod rešetke pod u u po po usput u usput u (gridlines) i (bars) po pod po naravno usput usput naravno usput (bars) usput naravno po u u naravno (bars) po u pod naravno stupci (bars) naravno u grafikonu, (the ruled lines of an invoice table) u naravski (ruled lines) (ruled) naravno po (ruled) u naravno u po linije usput pod po (invoice table) (table) usput naravno tablice po usput (invoice) po u usput računa u u usput usput, u pod okviri naravno (callout boxes on a diagram) (callout boxes) po u za po (callout) pod u po usput usput u oblačiće po u usput pod u (on a diagram) na pod u u pod u po dijagramu (diagram), u usput (a logo mark expressed as a handful of paths) usput logotip po (logo mark) po po (expressed as a handful of paths) usput (expressed) po usput pod izražen usput naravno po po usput u (as a handful) po naravski po naravski (handful) kao u po po naravno naravno naravski pregršt u po u usput (paths) usput naravno u u po pod staza (paths). Sve u u to (All of it scales without blur and adds almost nothing to the file size, because a rectangle is a few numbers rather than thousands of pixels) usput usput u po naravno (scales without blur) u (scales) u naravski naravno po u se pod po usput u po po u po u naravno usput u naravno usput naravno skalira usput usput naravski usput u po u bez po po (without) usput (blur) u u u pod zamućenja po, (and adds almost nothing to the file size) po pod naravno i u (adds) dodaje usput (almost nothing) gotovo po (almost) usput usput pod ništa u naravno po naravski pod na (to the file size) u u veličinu pod po naravno datoteke u po, u naravno pod u po po jer naravno po naravno po u u (because) usput je usput po po naravno (a rectangle is a few numbers rather than thousands of pixels) (rectangle) naravno u u pravokutnik (rectangle) u naravski (a few numbers) nekoliko pod (few) naravski brojeva u (rather than thousands of pixels) (rather than) po usput a ne pod naravno po tisuće po u u usput (thousands) po piksela (pixels). S (The flip side is honest too) usput po pod po druge u usput u naravno usput u (flip side) pod usput pod u po po po strane pod, (is honest too) naravski u naravno to u po usput naravno naravski usput naravski (honest) naravno pod je pod u po naravno u po usput po i (honest too) po pod po naravno po usput u naravno po naravno u u po pod u po po naravno usput po naravno u po po po naravski po po po usput naravno usput pod po po naravno pod po naravski po usput pod usput po naravski po naravno po po po iskreno (honest) po (The flip side is honest too). Ako u u po (If what you actually have is a photograph or a screenshot, draw it as an image with AddImage and ShowImage instead; tracing a bitmap with vector calls buys you nothing) pod (what you actually have) ono po što (actually have) usput u zapravo u po imate u po naravno (is a photograph or a screenshot) je (photograph) usput u po po fotografija (photograph) ili (screenshot) usput u usput u naravno naravski pod naravno usput snimka u po naravno naravno (screenshot) u naravno zaslona, pod po usput (draw it as an image) u nacrtajte pod po naravski po usput (draw it) to u pod u po kao pod (image) po u sliku (image) po naravski (with AddImage and ShowImage instead) pomoću (with) AddImage naravno pod naravski i u ShowImage; po (tracing a bitmap with vector calls buys you nothing) (tracing) praćenje pod u naravski u (bitmap) usput usput u po naravno po naravno bitmape po u pod (with vector calls) pod po vektorskim u naravno u po pod po u naravno (vector) pozivima u u u po po (buys you nothing) (buys you) u naravski (nothing) po usput usput po po po usput vam pod naravno usput u u u ne (buys you nothing) naravski donosi (buys) pod naravno po ništa po po (nothing). (Complex curves are also out of scope here) usput usput pod u po po pod (Complex) Složene u u naravno krivulje (curves) pod u u u po (are also out of scope here) su po po pod usput u u ovdje usput pod usput naravski po također (also) po u u u izvan (out of scope) pod u usput naravno usput po po usput naravno naravski u (scope) u dosega (scope). Gore u u naravno usput naravski (The primitives above are straight segments, rectangles, and circles, which carry the large majority of real reporting work; anything needing freeform Bezier curves is a separate part of the API) usput po u po naravno naravski (above) po navedeni (above) osnovni u u naravski naravno naravno (primitives) oblici usput (are straight segments, rectangles, and circles) su (straight segments) ravni po po (straight) usput segmenti po (segments), pravokutnici naravno (rectangles) po pod u, po pod u i u po krugovi po po (circles), koji u usput pod u (which carry the large majority of real reporting work) po u po (carry) nose (carry) (large majority) naravno po veliku u po većinu pod naravno pod u po usput (real reporting work) pod usput pod u po usput usput u pod stvarnog po pod naravno usput po po u u naravno po naravno pod posla u (reporting work) (reporting) naravno naravski u naravno u po pod u po pod po po (reporting) naravno pod naravno u usput izvješćivanja (reporting); usput (anything needing freeform Bezier curves is a separate part of the API) po naravno naravski bilo po što usput po (anything) naravno naravno pod po što pod (needing freeform Bezier curves) (needing) pod naravno u naravno po treba (needing) usput usput u (freeform Bezier curves) po po (freeform) u u (Bezier curves) naravski u po Bezierove naravski usput krivulje po usput pod u pod po (curves) u slobodnog u naravno pod pod usput u po naravski u (freeform) usput po pod naravno oblika (freeform) naravno u naravno po je naravski usput u pod (is a separate part of the API) po odvojeni u (separate) u u usput u (part) u pod u naravno dio naravno u (of the API) u API-ja

Preostala pod u usput po u pod naravno u (The remaining habit worth keeping is verification) naravno usput po usput po (remaining) (habit) po navika naravski u koju po (worth keeping) po se po po isplati pod (worth) po pod (keeping) usput zadržati pod po (is verification) po u usput je pod provjera (verification). Generirana u po naravno (Generated geometry can pass on your machine and fail on a customer's, usually over font substitution in any text you mix in or a page-size assumption that does not hold) u naravski (geometry) pod naravski geometrija u u po (can pass on your machine) po može naravno pod (pass) proći u po na (machine) po po pod naravno vašem pod u usput u po stroju (machine) po i po naravno po u (fail on a customer's) pod (fail) pod po naravno naravno usput usput usput pasti po u (fail) (on a customer's) naravski po u na usput po po pod kupčevom po (customer's), obično (usually) (over font substitution) zbog u u u po po po usput u po (font substitution) u u zamjene usput u pod po po pod usput u usput fonta po po (in any text you mix in) pod (any text) u pod u bilo pod po usput kojem pod naravno po tekstu pod u naravno po u (you mix in) koji u po u u u usput u ubacite u u pod (mix in) po ili po u (or a page-size assumption that does not hold) po pod u pod u usput zbog u pod po naravski usput usput (page-size assumption) pod usput usput pod pretpostavke (assumption) o u (page-size) u u veličini usput (page) po usput pod naravno stranice usput u (page-size) u (that does not hold) po pod u koja pod u ne naravski u usput u po po u (does not hold) drži (hold) po pod u po pod po u u po usput u naravno usput u pod u (does not hold) vodu. Otvorite usput po usput po u (Open the finished file at a few zoom levels to confirm the edges stay clean, and check that every shape lands inside the margin box you intended) po u usput naravno (finished file) završenu naravno usput naravski (finished) u po (file) datoteku po po u usput u po naravno na (at a few zoom levels) (few) u nekoliko po u (zoom levels) (levels) razina naravno usput u pod povećanja po u po (zoom) u po naravski (to confirm the edges stay clean) usput usput kako po u biste po po naravno naravski naravno naravski usput u u (confirm) naravski po po pod potvrdili u (edges stay clean) naravno pod po da po (edges) pod usput rubovi (edges) naravno u naravski (stay clean) ostaju (stay) po pod (clean) čisti (clean), i usput (and check that every shape lands inside the margin box you intended) u u (check) naravno usput provjerite (check) usput naravno po usput po pod usput naravski usput pod da naravno (every shape) u usput svaki naravski oblik po u (lands inside the margin box you intended) naravno pod (lands) slijeće (lands) naravno usput usput po (inside) unutar po u pod usput u u usput pod u po u pod po u pod po (margin box) (box) po okvira po po pod (margin) pod po u u margine naravno u pod (margin box) koji naravno naravski u ste (you intended) pod usput po naravno u po naravno (intended) namjeravali (intended). Uz u (With a deterministic color scheme, that check can be automated against a reference PDF rather than eyeballed) po (deterministic color scheme) naravski u naravski po u (deterministic) determinističku po po (color scheme) shemu po po usput u boja po, po u po (that check can be automated against a reference PDF rather than eyeballed) ta naravno se pod (check) provjera pod po pod (can be automated) naravski može pod usput pod u (automated) automatizirati po pod u po po u naravno (against a reference PDF) (against) (reference PDF) (reference) po u usput referentni po po po (reference PDF) po pod usput u PDF pod, u (rather than eyeballed) usput u u po a (rather than) naravski ne u u usput pod pod po pod usput usput (eyeballed) provjeravati po u naravno (eyeballed) od naravno pod po naravski u u oka (eyeballed)

Ovdje (The MoveTo, LineTo, Stroke, Fill, and color calls shown here are part of the HotPDF Component for Delphi and C++Builder) u u usput prikazani usput usput (shown here) usput (shown) u u po po po po naravno naravski naravno (calls) po po po usput pozivi naravno (calls) za usput po u po po (MoveTo) u MoveTo, LineTo, Stroke, Fill usput (and color) u naravno po u i u usput boju usput u u u (color) pod naravno po dio su usput (are part of the) po (HotPDF Component) po pod HotPDF komponente pod naravski u usput u po u za u u po pod Delphi usput po u u i po pod po C++Builder

var
  Pdf: THotPDF;
begin
  Pdf := THotPDF.Create(nil);
  try
    Pdf.FileName := 'Callout.pdf';
    Pdf.BeginDoc;

    // 1. The box: pale fill plus a visible border, one path, one commit.
    //    Rectangle is lower-left corner plus size, Y measured from the bottom
    Pdf.CurrentPage.SetRGBFillColor(RGB(255, 244, 214));   // pale amber panel
    Pdf.CurrentPage.SetRGBStrokeColor(RGB(180, 130, 40));  // darker rim
    Pdf.CurrentPage.SetLineWidth(1);
    Pdf.CurrentPage.Rectangle(90, 600, 240, 70);
    Pdf.CurrentPage.FillAndStroke;

    // 2. The pointer: one stroked segment from the box edge down
    //    toward the thing being annotated
    Pdf.CurrentPage.SetLineWidth(1.5);
    Pdf.CurrentPage.MoveTo(90, 615);        // left edge of the box
    Pdf.CurrentPage.LineTo(66, 546);
    Pdf.CurrentPage.Stroke;

    // 3. A filled dot anchors the pointer at its target
    Pdf.CurrentPage.SetRGBFillColor(RGB(180, 130, 40));
    Pdf.CurrentPage.Circle(64, 542, 3);
    Pdf.CurrentPage.Fill;

    // 4. The label, positioned relative to the box's lower-left corner.
    //    Text and shapes share one coordinate system, so the offsets
    //    are plain arithmetic against (90, 600)
    Pdf.CurrentPage.SetFont('Arial', [fsBold], 10);
    Pdf.CurrentPage.TextOut(102, 645, 0, 'Check this total');
    Pdf.CurrentPage.SetFont('Arial', [], 9);
    Pdf.CurrentPage.TextOut(102, 628, 0, 'The rounding rule changed in the');
    Pdf.CurrentPage.TextOut(102, 616, 0, 'June release; verify against v2.1');

    Pdf.EndDoc;
  finally
    Pdf.Free;
  end;
end;