# # This has been ported by Hiroshi Saito(hiroshi@winpg.jp) # Copyright notice of the original as below. # # * # * << Haru Free PDF Library 2.0.0 >> -- line_demo.c # * # * Copyright (c) 1999-2006 Takeshi Kanno # * # * 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. # * # * @load "pdf" # ---- # function # ---- function draw_line(page, x, y, label) { HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, x, y - 10); HPDF_Page_ShowText(page, label); HPDF_Page_EndText(page); HPDF_Page_MoveTo(page, x, y - 15); HPDF_Page_LineTo(page, x + 220, y - 15); HPDF_Page_Stroke(page); } function draw_line2(page, x, y, label) { HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, x, y); HPDF_Page_ShowText(page, label); HPDF_Page_EndText(page); HPDF_Page_MoveTo(page, x + 30, y - 25); HPDF_Page_LineTo(page, x + 160, y - 25); HPDF_Page_Stroke(page); } function draw_rect(page, x, y, label) { HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, x, y - 10); HPDF_Page_ShowText(page, label); HPDF_Page_EndText(page); HPDF_Page_Rectangle(page, x, y - 40, 220, 25); } # ---- # main # ---- BEGIN{ page_title = "Line Example"; DASH_MODE1 = 3; DASH_MODE2[1] = 3; DASH_MODE2[2] = 7; DASH_MODE3[1] = 8; DASH_MODE3[2] = 7; DASH_MODE3[3] = 2; DASH_MODE3[4] = 7; fname = "pdf_lines.pdf"; pdf = HPDF_New(NULL, NULL); font = HPDF_GetFont(pdf, "Helvetica", NULL); page = HPDF_AddPage(pdf); HPDF_Page_SetLineWidth(page, 1); HPDF_Page_Rectangle(page, 50, 50, HPDF_Page_GetWidth(page) - 100, HPDF_Page_GetHeight(page) - 110); HPDF_Page_Stroke(page); HPDF_Page_SetFontAndSize(page, font, 24); tw = HPDF_Page_TextWidth(page, page_title); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page,(HPDF_Page_GetWidth(page) - tw) / 2, HPDF_Page_GetHeight(page) - 50); HPDF_Page_ShowText(page, page_title); HPDF_Page_EndText(page); HPDF_Page_SetFontAndSize(page, font, 10); # Draw verious widths of lines. HPDF_Page_SetLineWidth(page, 0); draw_line(page, 60, 770, "line width = 0"); HPDF_Page_SetLineWidth(page, 1.0); draw_line(page, 60, 740, "line width = 1.0"); HPDF_Page_SetLineWidth(page, 2.0); draw_line(page, 60, 710, "line width = 2.0"); # Line dash pattern HPDF_Page_SetLineWidth(page, 1.0); HPDF_Page_SetDash(page, DASH_MODE1, 1, 1); draw_line(page, 60, 680, "dash_ptn=[3], phase=1 -- 2 on, 3 off, 3 on..."); HPDF_Page_SetDash(page, DASH_MODE2, 2, 2); draw_line(page, 60, 650, "dash_ptn=[7, 3], phase=2 -- 5 on 3 off, 7 on,..."); HPDF_Page_SetDash(page, DASH_MODE3, 4, 0); draw_line(page, 60, 620, "dash_ptn=[8, 7, 2, 7], phase=0"); HPDF_Page_SetDash(page, NULL, 0, 0); HPDF_Page_SetLineWidth(page, 30); HPDF_Page_SetRGBStroke(page, 0.0, 0.5, 0.0); # Line Cap Style HPDF_Page_SetLineCap(page, HPDF_BUTT_END); draw_line2(page, 60, 570, "PDF_BUTT_END"); HPDF_Page_SetLineCap(page, HPDF_ROUND_END); draw_line2(page, 60, 505, "PDF_ROUND_END"); HPDF_Page_SetLineCap(page, HPDF_PROJECTING_SCUARE_END); draw_line2(page, 60, 440, "PDF_PROJECTING_SCUARE_END"); # Line Join Style HPDF_Page_SetLineWidth(page, 30); HPDF_Page_SetRGBStroke(page, 0.0, 0.0, 0.5); HPDF_Page_SetLineJoin(page, HPDF_MITER_JOIN); HPDF_Page_MoveTo(page, 120, 300); HPDF_Page_LineTo(page, 160, 340); HPDF_Page_LineTo(page, 200, 300); HPDF_Page_Stroke(page); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, 60, 360); HPDF_Page_ShowText(page, "PDF_MITER_JOIN"); HPDF_Page_EndText(page); HPDF_Page_SetLineJoin(page, HPDF_ROUND_JOIN); HPDF_Page_MoveTo(page, 120, 195); HPDF_Page_LineTo(page, 160, 235); HPDF_Page_LineTo(page, 200, 195); HPDF_Page_Stroke(page); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, 60, 255); HPDF_Page_ShowText(page, "PDF_ROUND_JOIN"); HPDF_Page_EndText(page); HPDF_Page_SetLineJoin(page, HPDF_BEVEL_JOIN); HPDF_Page_MoveTo(page, 120, 90); HPDF_Page_LineTo(page, 160, 130); HPDF_Page_LineTo(page, 200, 90); HPDF_Page_Stroke(page); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, 60, 150); HPDF_Page_ShowText(page, "PDF_BEVEL_JOIN"); HPDF_Page_EndText(page); # Draw Rectangle HPDF_Page_SetLineWidth(page, 2); HPDF_Page_SetRGBStroke(page, 0, 0, 0); HPDF_Page_SetRGBFill(page, 0.75, 0.0, 0.0); draw_rect(page, 300, 770, "Stroke"); HPDF_Page_Stroke(page); draw_rect(page, 300, 720, "Fill"); HPDF_Page_Fill(page); draw_rect(page, 300, 670, "Fill then Stroke"); HPDF_Page_FillStroke(page); # Clip Rect HPDF_Page_GSave(page); draw_rect(page, 300, 620, "Clip Rectangle"); HPDF_Page_Clip(page); HPDF_Page_Stroke(page); HPDF_Page_SetFontAndSize(page, font, 13); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, 290, 600); HPDF_Page_SetTextLeading(page, 12); HPDF_Page_ShowText(page, "Clip Clip Clip Clip Clip Clipi Clip Clip Clip"); HPDF_Page_ShowTextNextLine(page, "Clip Clip Clip Clip Clip Clip Clip Clip Clip"); HPDF_Page_ShowTextNextLine(page, "Clip Clip Clip Clip Clip Clip Clip Clip Clip"); HPDF_Page_EndText(page); HPDF_Page_GRestore(page); # Curve Example(CurveTo2) x = 330; y = 440; x1 = 430; y1 = 530; x2 = 480; y2 = 470; x3 = 480; y3 = 90; HPDF_Page_SetRGBFill(page, 0, 0, 0); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, 300, 540); HPDF_Page_ShowText(page, "CurveTo2(x1, y1, x2. y2)"); HPDF_Page_EndText(page); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, x + 5, y - 5); HPDF_Page_ShowText(page, "Current point"); HPDF_Page_MoveTextPos(page, x1 - x, y1 - y); HPDF_Page_ShowText(page, "(x1, y1)"); HPDF_Page_MoveTextPos(page, x2 - x1, y2 - y1); HPDF_Page_ShowText(page, "(x2, y2)"); HPDF_Page_EndText(page); HPDF_Page_SetDash(page, DASH_MODE1, 1, 0); HPDF_Page_SetLineWidth(page, 0.5); HPDF_Page_MoveTo(page, x1, y1); HPDF_Page_LineTo(page, x2, y2); HPDF_Page_Stroke(page); HPDF_Page_SetDash(page, NULL, 0, 0); HPDF_Page_SetLineWidth(page, 1.5); HPDF_Page_MoveTo(page, x, y); HPDF_Page_CurveTo2(page, x1, y1, x2, y2); HPDF_Page_Stroke(page); # Curve Example(CurveTo3) y -= 150; y1 -= 150; y2 -= 150; HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, 300, 390); HPDF_Page_ShowText(page, "CurveTo3(x1, y1, x2. y2)"); HPDF_Page_EndText(page); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, x + 5, y - 5); HPDF_Page_ShowText(page, "Current point"); HPDF_Page_MoveTextPos(page, x1 - x, y1 - y); HPDF_Page_ShowText(page, "(x1, y1)"); HPDF_Page_MoveTextPos(page, x2 - x1, y2 - y1); HPDF_Page_ShowText(page, "(x2, y2)"); HPDF_Page_EndText(page); HPDF_Page_SetDash(page, DASH_MODE1, 1, 0); HPDF_Page_SetLineWidth(page, 0.5); HPDF_Page_MoveTo(page, x, y); HPDF_Page_LineTo(page, x1, y1); HPDF_Page_Stroke(page); HPDF_Page_SetDash(page, NULL, 0, 0); HPDF_Page_SetLineWidth(page, 1.5); HPDF_Page_MoveTo(page, x, y); HPDF_Page_CurveTo3(page, x1, y1, x2, y2); HPDF_Page_Stroke(page); # Curve Example(CurveTo) y -= 150; y1 -= 160; y2 -= 130; x2 += 10; HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, 300, 240); HPDF_Page_ShowText(page, "CurveTo(x1, y1, x2. y2, x3, y3)"); HPDF_Page_EndText(page); HPDF_Page_BeginText(page); HPDF_Page_MoveTextPos(page, x + 5, y - 5); HPDF_Page_ShowText(page, "Current point"); HPDF_Page_MoveTextPos(page, x1 - x, y1 - y); HPDF_Page_ShowText(page, "(x1, y1)"); HPDF_Page_MoveTextPos(page, x2 - x1, y2 - y1); HPDF_Page_ShowText(page, "(x2, y2)"); HPDF_Page_MoveTextPos(page, x3 - x2, y3 - y2); HPDF_Page_ShowText(page, "(x3, y3)"); HPDF_Page_EndText(page); HPDF_Page_SetDash(page, DASH_MODE1, 1, 0); HPDF_Page_SetLineWidth(page, 0.5); HPDF_Page_MoveTo(page, x, y); HPDF_Page_LineTo(page, x1, y1); HPDF_Page_Stroke(page); HPDF_Page_MoveTo(page, x2, y2); HPDF_Page_LineTo(page, x3, y3); HPDF_Page_Stroke(page); HPDF_Page_SetDash(page, NULL, 0, 0); HPDF_Page_SetLineWidth(page, 1.5); HPDF_Page_MoveTo(page, x, y); HPDF_Page_CurveTo(page, x1, y1, x2, y2, x3, y3); HPDF_Page_Stroke(page); HPDF_SaveToFile(pdf, fname); HPDF_Free(pdf); }