Pdf/demo/line_demo.tsl

291 lines
6.0 KiB
Plaintext

Uses TSPdfEnumerations;
{$IFDEF LINUX}
separator := "/";
{$ELSE}
separator := "\\";
{$ENDIF}
alias := "";
path := "";
InitCmdParams(alias, path);
output_file := "line_demo.pdf";
output_file := path + separator + output_file;
page_title := "Line Demo";
pdf := new PdfFile();
// 默认字体
font := pdf.GetFont("Helvetica", "");
// 添加页面
page := pdf.AddPage();
// print the lines of the page
page.SetLineWidth(1);
width := page.GetWidth();
height := page.GetHeight();
page.Rectangle(50, 50, width - 100, height - 110);
page.Stroke();
// print the title of the page (with positioning center)
page.SetFontAndSize(font, 24);
tw := page.TextWidth(page_title);
page.BeginText();
page.MoveTextPos((width - tw) / 2, height - 50);
page.ShowText(page_title);
page.EndText();
page.SetFontAndSize(font, 10);
// Draw verious widths of lines
page.SetLineWidth(0);
DrawLine(page, 60, 770, "line width = 0");
page.SetLineWidth(1.0);
DrawLine(page, 60, 740, "line width = 1.0");
page.SetLineWidth(2.0);
DrawLine(page, 60, 710, "line width = 2.0");
// Line dash pattern
DASH_MODE1 := array(3);
DASH_MODE2 := array(3, 7);
DASH_MODE3 := array(8, 7, 2, 7);
page.SetLineWidth(1.0);
page.SetDash(DASH_MODE1, 1, 1);
DrawLine(page, 60, 680, "dash_ptn=[3, phase=1 -- 2 on, 3 off, 3 on..");
page.SetDash(DASH_MODE2, 2, 2);
DrawLine(page, 60, 650, "dash_ptn=[7, 3, phase=2 -- 5 on, 3 off, 7 on..");
page.SetDash(DASH_MODE3, 4, 0);
DrawLine(page, 60, 620, "dash_ptn=[8, 7, 2, 7, phase=0");
page.SetDash(array(), 0, 0);
page.SetLineWidth(30);
page.SetRGBStroke(0.0, 0.6, 0.0);
// Line Cap Style
page.SetLineCap(TSPdfEnumerations.BUTT_END);
DrawLine2(page, 60, 570, "PDF_BUTT_END");
page.SetLineCap(TSPdfEnumerations.ROUND_END);
DrawLine2(page, 60, 505, "PDF_ROUND_END");
page.SetLineCap(TSPdfEnumerations.PROJECTING_SQUARE_END);
DrawLine2(page, 60, 440, "PDF_PROJECTING_SQUARE_END");
// Line Join Style
page.SetLineWidth(30);
page.SetRGBStroke(0.0, 0.0, 0.5);
page.SetLineJoin(TSPdfEnumerations.MITER_JOIN);
page.MoveTo(120, 300);
page.LineTo(150, 340);
page.LineTo(200, 300);
page.Stroke();
page.BeginText();
page.MoveTextPos(60, 360);
page.ShowText("PDF_MITER_JOIN");
page.EndText();
page.SetLineJoin(TSPdfEnumerations.ROUND_JOIN);
page.MoveTo(120, 195);
page.LineTo(160, 235);
page.LineTo(200, 195);
page.Stroke();
page.BeginText();
page.MoveTextPos(60, 255);
page.ShowText("PDF_ROUND_JOIN");
page.EndText();
page.SetLineJoin(TSPdfEnumerations.BEVEL_JOIN);
page.MoveTo(120, 90);
page.LineTo(160, 130);
page.LineTo(200, 90);
page.Stroke();
page.BeginText();
page.MoveTextPos(60, 150);
page.ShowText("PDF_BEVEL_JOIN");
page.EndText();
// Draw Rectangle
page.SetLineWidth(2);
page.SetRGBStroke(0, 0, 0);
page.SetRGBFill(0.75, 0, 0);
DrawRect(page, 300, 770, "Stroke");
page.Stroke();
DrawRect(page, 300, 720, "Fill");
page.Fill();
DrawRect(page, 300, 670, "Fill then Stroke");
page.FillStroke();
// Clip Rect
page.GSave();
DrawRect(page, 300, 620, "Clip Rectangle");
page.Clip();
page.Stroke();
page.SetFontAndSize(font, 13);
page.BeginText();
page.MoveTextPos(290, 600);
page.SetTextLeading(12);
page.ShowText("Clip Clip Clip Clip Clip Clip Clip Clip Clip Clip");
page.ShowTextNextLine("Clip Clip Clip Clip Clip Clip Clip Clip Clip Clip");
page.ShowTextNextLine("Clip Clip Clip Clip Clip Clip Clip Clip Clip Clip");
page.EndText();
page.GRestore();
// Curve Example(CurveTo2)
x := 330;
y := 440;
x1 := 430;
y1 := 530;
x2 := 480;
y2 := 470;
x3 := 480;
y3 := 90;
page.SetRGBFill(0, 0, 0);
page.BeginText();
page.MoveTextPos(300, 540);
page.ShowText("CurveTo2(x1, y1, x2. y2)");
page.EndText();
page.BeginText();
page.MoveTextPos(x + 5, y - 5);
page.ShowText("Current point");
page.MoveTextPos(x1 - x, y1 - y);
page.ShowText("(x1, y1)");
page.MoveTextPos(x2 - x1, y2 - y1);
page.ShowText("(x2, y2)");
page.EndText();
page.SetDash(DASH_MODE1, 1, 0);
page.SetLineWidth(0.5);
page.MoveTo(x1, y1);
page.LineTo(x2, y2);
page.Stroke();
page.SetDash(array(), 0, 0);
page.SetLineWidth(1.5);
page.MoveTo(x, y);
page.CurveTo2(x1, y1, x2, y2);
page.Stroke();
// Curve Example(CurveTo3)
y -= 150;
y1 -= 150;
y2 -= 150;
page.BeginText();
page.MoveTextPos(300, 390);
page.ShowText("CurveTo3(x1, y1, x2. y2)");
page.EndText();
page.BeginText();
page.MoveTextPos(x + 5, y - 5);
page.ShowText("Current point");
page.MoveTextPos(x1 - x, y1 - y);
page.ShowText("(x1, y1)");
page.MoveTextPos(x2 - x1, y2 - y1);
page.ShowText("(x2, y2)");
page.EndText();
page.SetDash(DASH_MODE1, 1, 0);
page.SetLineWidth(0.5);
page.MoveTo(x, y);
page.LineTo(x1, y1);
page.Stroke();
page.SetDash(array(), 0, 0);
page.SetLineWidth(1.5);
page.MoveTo(x, y);
page.CurveTo3(x1, y1, x2, y2);
page.Stroke();
// Curve Example(CurveTo)
y -= 150;
y1 -= 160;
y2 -= 130;
x2 += 10;
page.BeginText();
page.MoveTextPos(300, 240);
page.ShowText("CurveTo(x1, y1, x2. y2, x3, y3)");
page.EndText();
page.BeginText();
page.MoveTextPos(x + 5, y - 5);
page.ShowText("Current point");
page.MoveTextPos(x1 - x, y1 - y);
page.ShowText("(x1, y1)");
page.MoveTextPos(x2 - x1, y2 - y1);
page.ShowText("(x2, y2)");
page.MoveTextPos(x3 - x2, y3 - y2);
page.ShowText("(x3, y3)");
page.EndText();
page.SetDash(DASH_MODE1, 1, 0);
page.SetLineWidth(0.5);
page.MoveTo(x, y);
page.LineTo(x1, y1);
page.Stroke();
page.MoveTo(x2, y2);
page.LineTo(x3, y3);
page.Stroke();
page.SetDash(array(), 0, 0);
page.SetLineWidth(1.5);
page.MoveTo(x, y);
page.CurveTo(x1, y1, x2, y2, x3, y3);
page.Stroke();
err := pdf.SaveToFile(alias, output_file);
echo "SaveToFile::\t", "err := ", format("%x", err), "\toutput_file := ", output_file, "\n";
return;
Function DrawLine(page, x, y, text);
Begin
page.BeginText();
page.MoveTextPos(x, y - 10);
page.ShowText(text);
page.EndText();
page.MoveTo(x, y - 15);
page.LineTo(x + 200, y - 15);
page.Stroke();
End;
Function DrawLine2(page, x, y, text);
Begin
page.BeginText();
page.MoveTextPos(x, y);
page.ShowText(text);
page.EndText();
page.MoveTo(x + 30, y - 25);
page.LineTo(x + 160, y - 25);
page.Stroke();
End;
Function DrawRect(page, x, y, text);
Begin
page.BeginText();
page.MoveTextPos(x, y - 10);
page.ShowText(text);
page.EndText();
page.Rectangle(x, y - 40, 220, 25);
End;