D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
thread-self
/
root
/
opt
/
alt
/
libharu
/
usr
/
share
/
libharu
/
bindings
/
oberon-2
/
Filename :
test.ob2
back
Copy
<*+CHANGESYM*> <*+M2EXTENSIONS*> <*+O2EXTENSIONS*> <*+MAIN*> MODULE test; IMPORT Out, SYSTEM, w := Windows, h := hpdf; PROCEDURE ["StdCall"] ErrorProc(error_no: h.HPDF_STATUS; detail_no: h.HPDF_STATUS; <*+WOFF301*>user_data: w.PVOID<*-WOFF301*>); BEGIN Out.String("ERROR: "); Out.Int(error_no, 1); Out.String(" - "); Out.Int(detail_no, 1); Out.Ln; HALT(1); END ErrorProc; PROCEDURE draw_line (page: h.HPDF_Page; x: h.HPDF_REAL; y: h.HPDF_REAL; text: h.HPDF_PCHAR); BEGIN h.HPDF_Page_BeginText(page); h.HPDF_Page_MoveTextPos(page, x, y - 10); h.HPDF_Page_ShowText(page, text); h.HPDF_Page_EndText(page); h.HPDF_Page_MoveTo(page, x, y - 15); h.HPDF_Page_LineTo(page, x + 220, y - 15); h.HPDF_Page_Stroke(page); END draw_line; PROCEDURE draw_line2 (page: h.HPDF_Page; x: h.HPDF_REAL; y: h.HPDF_REAL; text: h.HPDF_PCHAR); BEGIN h.HPDF_Page_BeginText(page); h.HPDF_Page_MoveTextPos(page, x, y); h.HPDF_Page_ShowText(page, text); h.HPDF_Page_EndText(page); h.HPDF_Page_MoveTo(page, x + 30, y - 25); h.HPDF_Page_LineTo(page, x + 160, y - 25); h.HPDF_Page_Stroke(page); END draw_line2; PROCEDURE draw_rect (page: h.HPDF_Page; x: h.HPDF_REAL; y: h.HPDF_REAL; text: h.HPDF_PCHAR); BEGIN h.HPDF_Page_BeginText(page); h.HPDF_Page_MoveTextPos(page, x, y - 10); h.HPDF_Page_ShowText(page, text); h.HPDF_Page_EndText(page); h.HPDF_Page_Rectangle(page, x, y - 40, 220, 25); -- h.HPDF_Page_Rectangle(page, x, y - 40, 100, 100); END draw_rect; VAR pdf: h.HPDF_Doc; font: h.HPDF_Font; page: h.HPDF_Page; x, y, x0, y0, x1, y1, x2, y2, x3, y3, tw: h.HPDF_REAL; ffilename: h.HPDF_PCHAR; CONST page_title = '���������� ������'; fname = 'LineDemo.pdf'; DASH_MODE1 = ARRAY OF h.HPDF_UINT16 {3}; DASH_MODE2 = ARRAY OF h.HPDF_UINT16 {7, 3}; DASH_MODE3 = ARRAY OF h.HPDF_UINT16 {8, 7, 2, 7}; BEGIN pdf := h.HPDF_New(ErrorProc, NIL); IF pdf = NIL THEN Out.String("error: cannot create PdfDoc object"); Out.Ln(); HALT(1); END; h.HPDF_SetCompressionMode(pdf, h.HPDF_COMP_ALL); ffilename := h.HPDF_LoadTTFontFromFile(pdf, w.GetPSTR('PTS55F.ttf'), TRUE); (* create default-font *) font := h.HPDF_GetFont(pdf, ffilename, w.GetPSTR('CP1251')); (* add a new page object. *) page := h.HPDF_AddPage(pdf); (* print the lines of the page. *) h.HPDF_Page_SetLineWidth(page, 1); x := h.HPDF_Page_GetWidth(page) - 100; y := h.HPDF_Page_GetHeight(page) - 110; h.HPDF_Page_Rectangle(page, 50, 50, x, y); h.HPDF_Page_Stroke(page); (* print the title of the page (with positioning center). *) h.HPDF_Page_SetFontAndSize(page, font, 24); tw := h.HPDF_Page_TextWidth(page, w.GetPSTR(page_title)); h.HPDF_Page_BeginText(page); x := (h.HPDF_Page_GetWidth(page) - tw) / 2; y := h.HPDF_Page_GetHeight(page) - 50; h.HPDF_Page_MoveTextPos (page, x, y); h.HPDF_Page_ShowText (page, w.GetPSTR(page_title)); h.HPDF_Page_EndText (page); h.HPDF_Page_SetFontAndSize (page, font, 10); (* Draw verious widths of lines. *) h.HPDF_Page_SetLineWidth (page, 0); draw_line (page, 60, 770, w.GetPSTR('������ ����� := 0')); h.HPDF_Page_SetLineWidth (page, 1.0); draw_line (page, 60, 740, w.GetPSTR('������ ����� := 1.0')); h.HPDF_Page_SetLineWidth (page, 2.0); draw_line (page, 60, 710, w.GetPSTR('������ ����� := 2.0')); (* Line dash pattern *) h.HPDF_Page_SetLineWidth (page, 1.0); h.HPDF_Page_SetDash (page, SYSTEM.REF(DASH_MODE1), 1, 1); draw_line (page, 60, 680, w.GetPSTR('dash_ptn=[3], ���=1 -- 2 ���, 3 ���, 3 ���...')); h.HPDF_Page_SetDash (page, SYSTEM.REF(DASH_MODE2), 2, 2); draw_line (page, 60, 650, w.GetPSTR('dash_ptn=[7, 3], phase=2 -- 5 ��� 3 ���, 7 ���,...')); h.HPDF_Page_SetDash (page, SYSTEM.REF(DASH_MODE3), 4, 0); draw_line (page, 60, 620, w.GetPSTR('dash_ptn=[8, 7, 2, 7], ���=0')); h.HPDF_Page_SetDash (page, NIL, 0, 0); h.HPDF_Page_SetLineWidth (page, 30); h.HPDF_Page_SetRGBStroke (page, 0.0, 0.5, 0.0); (* Line Cap Style *) h.HPDF_Page_SetLineCap (page, h.HPDF_BUTT_END); draw_line2 (page, 60, 570, w.GetPSTR('PDF_BUTT_END')); h.HPDF_Page_SetLineCap (page, h.HPDF_ROUND_END); draw_line2 (page, 60, 505, w.GetPSTR('PDF_ROUND_END')); h.HPDF_Page_SetLineCap (page, h.HPDF_PROJECTING_SQUARE_END); draw_line2 (page, 60, 440, w.GetPSTR('PDF_PROJECTING_SCUARE_END')); (* Line Join Style *) h.HPDF_Page_SetLineWidth (page, 30); h.HPDF_Page_SetRGBStroke (page, 0.0, 0.0, 0.5); h.HPDF_Page_SetLineJoin (page, h.HPDF_MITER_JOIN); h.HPDF_Page_MoveTo (page, 120, 300); h.HPDF_Page_LineTo (page, 160, 340); h.HPDF_Page_LineTo (page, 200, 300); h.HPDF_Page_Stroke (page); h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, 60, 360); h.HPDF_Page_ShowText (page, w.GetPSTR('PDF_MITER_JOIN')); h.HPDF_Page_EndText (page); h.HPDF_Page_SetLineJoin (page, h.HPDF_ROUND_JOIN); h.HPDF_Page_MoveTo (page, 120, 195); h.HPDF_Page_LineTo (page, 160, 235); h.HPDF_Page_LineTo (page, 200, 195); h.HPDF_Page_Stroke (page); h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, 60, 255); h.HPDF_Page_ShowText (page, w.GetPSTR('PDF_ROUND_JOIN')); h.HPDF_Page_EndText (page); h.HPDF_Page_SetLineJoin (page, h.HPDF_BEVEL_JOIN); h.HPDF_Page_MoveTo (page, 120, 90); h.HPDF_Page_LineTo (page, 160, 130); h.HPDF_Page_LineTo (page, 200, 90); h.HPDF_Page_Stroke (page); h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, 60, 150); h.HPDF_Page_ShowText (page, w.GetPSTR('PDF_BEVEL_JOIN')); h.HPDF_Page_EndText (page); (* Draw Rectangle *) h.HPDF_Page_SetLineWidth (page, 2); h.HPDF_Page_SetRGBStroke (page, 0, 0, 0); h.HPDF_Page_SetRGBFill (page, 0.75, 0.0, 0.0); draw_rect (page, 300, 770, w.GetPSTR('����')); h.HPDF_Page_Stroke (page); draw_rect (page, 300, 720, w.GetPSTR('����������')); h.HPDF_Page_Fill (page); draw_rect (page, 300, 670, w.GetPSTR('����������, ����� ����')); h.HPDF_Page_FillStroke (page); (* Clip Rect *) h.HPDF_Page_GSave (page); (* Save the current graphic state *) draw_rect (page, 300, 620, w.GetPSTR('����������� �������')); h.HPDF_Page_Clip (page); h.HPDF_Page_Stroke (page); h.HPDF_Page_SetFontAndSize (page, font, 13); h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, 290, 600); h.HPDF_Page_SetTextLeading (page, 12); h.HPDF_Page_ShowText (page, w.GetPSTR('�������� �������� �������� ��������')); h.HPDF_Page_ShowTextNextLine (page, w.GetPSTR('�������� �������� �������� ��������')); h.HPDF_Page_ShowTextNextLine (page, w.GetPSTR('�������� �������� �������� ��������')); h.HPDF_Page_EndText (page); h.HPDF_Page_GRestore (page); x0 := 330; y0 := 440; x1 := 430; y1 := 530; x2 := 480; y2 := 470; x3 := 480; y3 := 90; (* Curve Example(CurveTo2) *) h.HPDF_Page_SetRGBFill (page, 0, 0, 0); h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, 300, 540); h.HPDF_Page_ShowText (page, w.GetPSTR('CurveTo2(x1, y1, x2. y2)')); h.HPDF_Page_EndText (page); h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, x0 + 5, y0 - 5); h.HPDF_Page_ShowText (page, w.GetPSTR('����� ����')); h.HPDF_Page_MoveTextPos (page, x1 - x0, y1 - y0); h.HPDF_Page_ShowText (page, w.GetPSTR('(x1, y1)')); h.HPDF_Page_MoveTextPos (page, x2 - x1, y2 - y1); h.HPDF_Page_ShowText (page, w.GetPSTR('(x2, y2)')); h.HPDF_Page_EndText (page); h.HPDF_Page_SetDash (page, NIL, 0, 0); h.HPDF_Page_SetLineWidth (page, 0.5); h.HPDF_Page_MoveTo (page, x1, y1); h.HPDF_Page_LineTo (page, x2, y2); h.HPDF_Page_Stroke (page); h.HPDF_Page_SetDash (page, NIL, 0, 0); h.HPDF_Page_SetLineWidth (page, 1.5); h.HPDF_Page_MoveTo (page, x0, y0); h.HPDF_Page_CurveTo2 (page, x1, y1, x2, y2); h.HPDF_Page_Stroke (page); (* Curve Example(CurveTo3) *) y0 := y0 - 150; y1 := y1 - 150; y2 := y2 - 150; h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, 300, 390); h.HPDF_Page_ShowText (page, w.GetPSTR('CurveTo3(x1, y1, x2. y2)')); h.HPDF_Page_EndText (page); h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, x0 + 5, y0 - 5); h.HPDF_Page_ShowText (page, w.GetPSTR('����� ����')); h.HPDF_Page_MoveTextPos (page, x1 - x0, y1 - y0); h.HPDF_Page_ShowText (page, w.GetPSTR('(x1, y1)')); h.HPDF_Page_MoveTextPos (page, x2 - x1, y2 - y1); h.HPDF_Page_ShowText (page, w.GetPSTR('(x2, y2)')); h.HPDF_Page_EndText (page); h.HPDF_Page_SetDash (page, SYSTEM.REF(DASH_MODE1), 1, 1); h.HPDF_Page_SetLineWidth (page, 0.5); h.HPDF_Page_MoveTo (page, x0, y0); h.HPDF_Page_LineTo (page, x1, y1); h.HPDF_Page_Stroke (page); h.HPDF_Page_SetDash (page, NIL, 0, 0); h.HPDF_Page_SetLineWidth (page, 1.5); h.HPDF_Page_MoveTo (page, x0, y0); h.HPDF_Page_CurveTo3 (page, x1, y1, x2, y2); h.HPDF_Page_Stroke (page); (* Curve Example(CurveTo) *) y0 := y0 - 150; y1 := y1 - 160; y2 := y2 - 130; x2 := x2 + 10; h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, 300, 240); h.HPDF_Page_ShowText (page, w.GetPSTR('CurveTo(x1, y1, x2. y2, x3, y3)')); h.HPDF_Page_EndText (page); h.HPDF_Page_BeginText (page); h.HPDF_Page_MoveTextPos (page, x0 + 5, y0 - 5); h.HPDF_Page_ShowText (page, w.GetPSTR('����� ����')); h.HPDF_Page_MoveTextPos (page, x1 - x0, y1 - y0); h.HPDF_Page_ShowText (page, w.GetPSTR('(x1, y1)')); h.HPDF_Page_MoveTextPos (page, x2 - x1, y2 - y1); h.HPDF_Page_ShowText (page, w.GetPSTR('(x2, y2)')); h.HPDF_Page_MoveTextPos (page, x3 - x2, y3 - y2); h.HPDF_Page_ShowText (page, '(x3, y3)'); h.HPDF_Page_EndText (page); h.HPDF_Page_SetDash (page, SYSTEM.REF(DASH_MODE1), 1, 1); h.HPDF_Page_SetLineWidth (page, 0.5); h.HPDF_Page_MoveTo (page, x0, y0); h.HPDF_Page_LineTo (page, x1, y1); h.HPDF_Page_Stroke (page); h.HPDF_Page_MoveTo (page, x2, y2); h.HPDF_Page_LineTo (page, x3, y3); h.HPDF_Page_Stroke (page); h.HPDF_Page_SetDash (page, NIL, 0, 0); h.HPDF_Page_SetLineWidth (page, 1.5); h.HPDF_Page_MoveTo (page, x0, y0); h.HPDF_Page_CurveTo (page, x1, y1, x2, y2, x3, y3); h.HPDF_Page_Stroke (page); (* save the document to a file *) h.HPDF_SaveToFile (pdf, w.GetPSTR(fname)); END test.