OSDN Git Service

binding with libharu.
[putex/putex.git] / src / texsourc / lib / libhpdf / if / ruby / demo / line_demo.rb
1 #
2 # << Haru Free PDF Library 2.0.2 >> -- line_demo.rb
3 #
4 # http://libharu.org/
5 #
6 # Copyright (c) 1999-2006 Takeshi Kanno
7 #
8 # Permission to use, copy, modify, distribute and sell this software
9 # and its documentation for any purpose is hereby granted without fee,
10 # provided that the above copyright notice appear in all copies and
11 # that both that copyright notice and this permission notice appear
12 # in supporting documentation.
13 # It is provided "as is" without express or implied warranty.
14 #
15
16 require "hpdf"
17
18 def draw_line(page, x, y, text)
19   page.begin_text
20   page.move_text_pos(x, y - 10)
21   page.show_text(text)
22   page.end_text
23
24   page.move_to(x, y - 15)
25   page.line_to(x + 220, y - 15)
26   page.stroke
27 end
28
29 def draw_line2(page, x, y, text)
30   page.begin_text
31   page.move_text_pos(x, y)
32   page.show_text(text)
33   page.end_text
34
35   page.move_to(x + 30, y - 25)
36   page.line_to(x + 160, y - 25)
37   page.stroke
38 end
39
40 def draw_rect(page, x, y, text)
41   page.begin_text
42   page.move_text_pos(x, y - 10)
43   page.show_text(text)
44   page.end_text
45
46   page.rectangle(x, y - 40, 220, 25)
47 end
48
49 pdf = HPDFDoc.new
50
51 pdf.set_compression_mode(HPDFDoc::HPDF_COMP_ALL)
52
53 font = pdf.get_font("Helvetica", nil)
54
55 page = pdf.add_page
56
57 #print the lines of the page.#
58 page.set_line_width(1)
59 x = page.get_width - 100
60 y = page.get_height - 110
61 page.rectangle(50, 50, x, y)
62 page.stroke
63
64 #print the title of the page (with positioning center).#
65 page.set_font_and_size(font, 24)
66 tw = page.text_width('Line Demo')
67 page.begin_text
68
69 x =(page.get_width - tw) / 2
70 y = page.get_height - 50
71 page.move_text_pos(x, y)
72
73 page.show_text('Line Demo')
74 page.end_text
75
76 page.set_font_and_size(font, 10)
77
78 #Draw verious widths of lines.#
79 page.set_line_width(0)
80 draw_line(page, 60, 770, 'line width = 0')
81
82 page.set_line_width(1.0)
83 draw_line(page, 60, 740, 'line width = 1.0')
84
85 page.set_line_width(2.0)
86 draw_line(page, 60, 710, 'line width = 2.0')
87
88 #Line dash pattern#
89 page.set_line_width(1.0)
90
91 page.set_dash([3], 1)
92 draw_line(page, 60, 680, 'dash_ptn=[3], phase=1 -- 2 on, 3 off, 3 on...')
93
94 page.set_dash([7, 3], 2)
95 draw_line(page, 60, 650, 'dash_ptn=[7, 3], phase=2 -- 5 on 3 off, 7 on,...')
96
97 page.set_dash([8, 7, 2, 7], 0)
98 draw_line(page, 60, 620, 'dash_ptn=[8, 7, 2, 7], phase=0')
99
100 page.set_dash([], 0)
101
102 page.set_line_width(30)
103 page.set_rgb_stroke(0.0, 0.5, 0.0)
104
105 #Line Cap Style#
106 page.set_line_cap(HPDFDoc::HPDF_BUTT_END)
107 draw_line2(page, 60, 570, 'HPDF_BUTT_END')
108
109 page.set_line_cap(HPDFDoc::HPDF_ROUND_END)
110 draw_line2(page, 60, 505, 'HPDF_ROUND_END')
111
112 page.set_line_cap(HPDFDoc::HPDF_PROJECTING_SCUARE_END)
113 draw_line2(page, 60, 440, 'HPDF_PROJECTING_SCUARE_END')
114
115 #Line Join Style#
116 page.set_line_width(30)
117 page.set_rgb_stroke(0.0, 0.0, 0.5)
118
119 page.set_line_join(HPDFDoc::HPDF_MITER_JOIN)
120 page.move_to(120, 300)
121 page.line_to(160, 340)
122 page.line_to(200, 300)
123 page.stroke
124
125 page.begin_text
126 page.move_text_pos(60, 360)
127 page.show_text('HPDF_MITER_JOIN')
128 page.end_text
129
130 page.set_line_join(HPDFDoc::HPDF_ROUND_JOIN)
131 page.move_to(120, 195)
132 page.line_to(160, 235)
133 page.line_to(200, 195)
134 page.stroke
135
136 page.begin_text
137 page.move_text_pos(60, 255)
138 page.show_text('HPDF_ROUND_JOIN')
139 page.end_text
140
141 page.set_line_join(HPDFDoc::HPDF_BEVEL_JOIN)
142 page.move_to(120, 90)
143 page.line_to(160, 130)
144 page.line_to(200, 90)
145 page.stroke
146
147 page.begin_text
148 page.move_text_pos(60, 150)
149 page.show_text('HPDF_BEVEL_JOIN')
150 page.end_text
151
152 # Draw rectangle #
153 page.set_line_width(2)
154 page.set_rgb_stroke(0, 0, 0)
155 page.set_rgb_fill(0.75, 0.0, 0.0)
156
157 draw_rect(page, 300, 770, 'stroke')
158 page.stroke
159
160 draw_rect(page, 300, 720, 'Fill')
161 page.fill
162
163 draw_rect(page, 300, 670, 'Fill then stroke')
164 page.fill_stroke
165
166 #clip Rect#
167 page.gsave  # Save the current graphic state#
168 draw_rect(page, 300, 620, 'Clip rectangle')
169 page.clip
170 page.stroke
171 page.set_font_and_size(font, 13)
172
173 page.begin_text
174 page.move_text_pos(290, 600)
175 page.set_text_leading(12)
176 page.show_text('Clip Clip Clip Clip Clip Clipi Clip Clip Clip')
177 page.show_text_next_line('Clip Clip Clip Clip Clip Clip Clip Clip Clip')
178 page.show_text_next_line('Clip Clip Clip Clip Clip Clip Clip Clip Clip')
179 page.end_text
180 page.grestore
181
182 x0 = 330
183 y0 = 440
184 x1 = 430
185 y1 = 530
186 x2 = 480
187 y2 = 470
188 x3 = 480
189 y3 = 90
190
191 #Curve Example(curve_to2)#
192 page.set_rgb_fill(0, 0, 0)
193
194 page.begin_text
195 page.move_text_pos(300, 540)
196 page.show_text('curve_to2(x1, y1, x2. y2)')
197 page.end_text
198
199 page.begin_text
200 page.move_text_pos(x0 + 5, y0 - 5)
201 page.show_text('Current point')
202 page.move_text_pos(x1 - x0, y1 - y0)
203 page.show_text('(x1, y1)')
204 page.move_text_pos(x2 - x1, y2 - y1)
205 page.show_text('(x2, y2)')
206 page.end_text
207
208 page.set_dash([], 0)
209
210 page.set_line_width(0.5)
211 page.move_to(x1, y1)
212 page.line_to(x2, y2)
213 page.stroke
214
215 page.set_dash([], 0)
216
217 page.set_line_width(1.5)
218
219 page.move_to(x0, y0)
220 page.curve_to2(x1, y1, x2, y2)
221 page.stroke
222
223 #Curve Example(curve_to3)#
224 y0 = y0 - 150
225 y1 = y1 - 150
226 y2 = y2 - 150
227
228 page.begin_text
229 page.move_text_pos(300, 390)
230 page.show_text('curve_to3(x1, y1, x2. y2)')
231 page.end_text
232
233 page.begin_text
234 page.move_text_pos(x0 + 5, y0 - 5)
235 page.show_text('Current point')
236 page.move_text_pos(x1 - x0, y1 - y0)
237 page.show_text('(x1, y1)')
238 page.move_text_pos(x2 - x1, y2 - y1)
239 page.show_text('(x2, y2)')
240 page.end_text
241
242 page.set_dash([3], 1)
243
244 page.set_line_width(0.5)
245 page.move_to(x0, y0)
246 page.line_to(x1, y1)
247 page.stroke
248
249 page.set_dash([], 0)
250
251 page.set_line_width(1.5)
252 page.move_to(x0, y0)
253 page.curve_to3(x1, y1, x2, y2)
254 page.stroke
255
256 # Curve Example(curve_to)
257 y0 = y0 - 150
258 y1 = y1 - 160
259 y2 = y2 - 130
260 x2 = x2 + 10
261
262 page.begin_text
263 page.move_text_pos(300, 240)
264 page.show_text('curve_to(x1, y1, x2. y2, x3, y3)')
265 page.end_text
266
267 page.begin_text
268 page.move_text_pos(x0 + 5, y0 - 5)
269 page.show_text('Current point')
270 page.move_text_pos(x1 - x0, y1 - y0)
271 page.show_text('(x1, y1)')
272 page.move_text_pos(x2 - x1, y2 - y1)
273 page.show_text('(x2, y2)')
274 page.move_text_pos(x3 - x2, y3 - y2)
275 page.show_text('(x3, y3)')
276 page.end_text
277
278 page.set_dash([3], 1)
279
280 page.set_line_width(0.5)
281 page.move_to(x0, y0)
282 page.line_to(x1, y1)
283 page.stroke
284 page.move_to(x2, y2)
285 page.line_to(x3, y3)
286 page.stroke
287
288 page.set_dash([], 0)
289
290 page.set_line_width(1.5)
291 page.move_to(x0, y0)
292 page.curve_to(x1, y1, x2, y2, x3, y3)
293 page.stroke
294
295 pdf.save_to_file($0 + ".pdf")
296