prep 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ChangeLog ADDED
@@ -0,0 +1,8 @@
1
+ 2012-03-12 Tetsuhisa MAKINO <tim.makino@gmail.com>
2
+
3
+ * lib/core/loop.rb (PREP::Core::Loop#draw_iterator): fix bug on gap calculation
4
+
5
+ 2012-03-08 Tetsuhisa MAKINO <tim.makino@gmail.com>
6
+
7
+ * lib/core/rectangle.rb (PREP::Core::Rectangle#line_width): support to be able to specify the zero to line_width
8
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.3.3
@@ -0,0 +1,245 @@
1
+ page:
2
+ size: a5
3
+ orientation: landscape
4
+ margin:
5
+ top: 10
6
+ left: 10
7
+ bottom: 10
8
+ right: 10
9
+ header_height: 0
10
+ footer_height: 0
11
+ content:
12
+ type: group
13
+ inner_loop:
14
+ type: loop
15
+ x: 0
16
+ y: 0
17
+ direction: vertical
18
+ page_break: true
19
+ gap: 3
20
+ header: loop_header
21
+ iterator: loop_iterator
22
+ footer: loop_footer
23
+ loop_header:
24
+ type: group
25
+ top_line:
26
+ type: line
27
+ start:
28
+ x: 10
29
+ y: 0
30
+ end:
31
+ x: 150
32
+ y: 0
33
+ line01:
34
+ type: line
35
+ start:
36
+ x: 10
37
+ y: 0
38
+ end:
39
+ x: 10
40
+ y: 10
41
+ header1:
42
+ type: label
43
+ label: "Header1"
44
+ region:
45
+ x: 10
46
+ y: 0
47
+ width: 60
48
+ height: 10
49
+ line02:
50
+ type: line
51
+ start:
52
+ x: 70
53
+ y: 0
54
+ end:
55
+ x: 70
56
+ y: 10
57
+ header2:
58
+ type: label
59
+ label: "Header2"
60
+ region:
61
+ x: 70
62
+ y: 0
63
+ width: 50
64
+ height: 10
65
+ line03:
66
+ type: line
67
+ start:
68
+ x: 120
69
+ y: 0
70
+ end:
71
+ x: 120
72
+ y: 10
73
+ header3:
74
+ type: label
75
+ label: "Header3"
76
+ region:
77
+ x: 120
78
+ y: 0
79
+ width: 30
80
+ height: 10
81
+ line04:
82
+ type: line
83
+ start:
84
+ x: 150
85
+ y: 0
86
+ end:
87
+ x: 150
88
+ y: 10
89
+ bottom_line:
90
+ type: line
91
+ start:
92
+ x: 10
93
+ y: 10
94
+ end:
95
+ x: 150
96
+ y: 10
97
+ loop_footer:
98
+ type: group
99
+ top_line:
100
+ type: line
101
+ start:
102
+ x: 10
103
+ y: 0
104
+ end:
105
+ x: 150
106
+ y: 0
107
+ line01:
108
+ type: line
109
+ start:
110
+ x: 10
111
+ y: 0
112
+ end:
113
+ x: 10
114
+ y: 10
115
+ footer1:
116
+ type: label
117
+ label: "Footer1"
118
+ region:
119
+ x: 10
120
+ y: 0
121
+ width: 60
122
+ height: 10
123
+ line02:
124
+ type: line
125
+ start:
126
+ x: 70
127
+ y: 0
128
+ end:
129
+ x: 70
130
+ y: 10
131
+ footer2:
132
+ type: label
133
+ label: "Footer2"
134
+ region:
135
+ x: 70
136
+ y: 0
137
+ width: 50
138
+ height: 10
139
+ line03:
140
+ type: line
141
+ start:
142
+ x: 120
143
+ y: 0
144
+ end:
145
+ x: 120
146
+ y: 10
147
+ footer3:
148
+ type: label
149
+ label: "Footer3"
150
+ region:
151
+ x: 120
152
+ y: 0
153
+ width: 30
154
+ height: 10
155
+ line04:
156
+ type: line
157
+ start:
158
+ x: 150
159
+ y: 0
160
+ end:
161
+ x: 150
162
+ y: 10
163
+ bottom_line:
164
+ type: line
165
+ start:
166
+ x: 10
167
+ y: 10
168
+ end:
169
+ x: 150
170
+ y: 10
171
+
172
+ loop_iterator:
173
+ type: group
174
+ top_line:
175
+ type: line
176
+ start:
177
+ x: 10
178
+ y: 0
179
+ end:
180
+ x: 150
181
+ y: 0
182
+ line01:
183
+ type: line
184
+ start:
185
+ x: 10
186
+ y: 0
187
+ end:
188
+ x: 10
189
+ y: 10
190
+ value1:
191
+ type: label
192
+ label: "Value 1"
193
+ region:
194
+ x: 10
195
+ y: 0
196
+ width: 60
197
+ height: 10
198
+ line02:
199
+ type: line
200
+ start:
201
+ x: 70
202
+ y: 0
203
+ end:
204
+ x: 70
205
+ y: 10
206
+ value2:
207
+ type: label
208
+ label: "Value 2"
209
+ region:
210
+ x: 70
211
+ y: 0
212
+ width: 50
213
+ height: 10
214
+ line03:
215
+ type: line
216
+ start:
217
+ x: 120
218
+ y: 0
219
+ end:
220
+ x: 120
221
+ y: 10
222
+ value3:
223
+ type: label
224
+ label: "Value 3"
225
+ region:
226
+ x: 120
227
+ y: 0
228
+ width: 30
229
+ height: 10
230
+ line04:
231
+ type: line
232
+ start:
233
+ x: 150
234
+ y: 0
235
+ end:
236
+ x: 150
237
+ y: 10
238
+ bottom_line:
239
+ type: line
240
+ start:
241
+ x: 10
242
+ y: 10
243
+ end:
244
+ x: 150
245
+ y: 10
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), "..", "lib", "prep")
2
+
3
+ prep = PREP::Core::Prep.new("gap_test.yml")
4
+
5
+ values = {:content=>
6
+ {:inner_loop=>
7
+ {:footer=>{:footer1=>"Footer1", :footer3=>"Footer3", :footer2=>"Footer2"},
8
+ :values=>
9
+ [{:value3=>"1-3", :value2=>"1-2", :value1=>"1-1"},
10
+ {:value3=>"2-3", :value2=>"2-2", :value1=>"2-1"},
11
+ {:value3=>"3-3", :value2=>"3-2", :value1=>"3-1"},
12
+ {:value3=>"4-3", :value2=>"4-2", :value1=>"4-1"},
13
+ {:value3=>"5-3", :value2=>"5-2", :value1=>"5-1"},
14
+ {:value3=>"6-3", :value2=>"6-2", :value1=>"6-1"},
15
+ {:value3=>"7-3", :value2=>"7-2", :value1=>"7-1"},
16
+ {:value3=>"8-3", :value2=>"8-2", :value1=>"8-1"},
17
+ {:value3=>"9-3", :value2=>"9-2", :value1=>"9-1"},
18
+ {:value3=>"10-3", :value2=>"10-2", :value1=>"10-1"},
19
+ {:value3=>"11-3", :value2=>"11-2", :value1=>"11-1"},
20
+ {:value3=>"12-3", :value2=>"12-2", :value1=>"12-1"}],
21
+ :header=>
22
+ {:header3=>"Header3", :header2=>"Header2", :header1=>"Header1"}}}}
23
+
24
+ prep.generate("#{$0}.pdf", values)
@@ -0,0 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.join(File.dirname(__FILE__), "..", "lib", "prep")
3
+
4
+ prep = PREP::Core::Prep.new("rect_line_width_zero_sample.yml")
5
+ prep.generate("#{$0}.pdf", { :content => { :title => "外部引き渡しタイトル文字列" } })
@@ -0,0 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.join(File.dirname(__FILE__), "..", "lib", "prep")
3
+
4
+ prep = PREP::Core::Prep.new("ttfont_sample.yml")
5
+ prep.generate("#{$0}.pdf", { :content => { :title => "外部引き渡しタイトル文字列" } })
@@ -0,0 +1,134 @@
1
+ page:
2
+ size: a4
3
+ orientation: portrait
4
+ margin:
5
+ top: 10
6
+ left: 10
7
+ bottom: 10
8
+ right: 10
9
+ header_height: 0
10
+ footer_height: 0
11
+ content:
12
+ type: group
13
+ title:
14
+ type: label
15
+ label: "タイトル文字列"
16
+ region:
17
+ x: 10
18
+ y: 10
19
+ width: 100
20
+ height: 20
21
+ color:
22
+ red: 0
23
+ green: 0
24
+ blue: 0
25
+ line01:
26
+ type: line
27
+ start:
28
+ x: 10
29
+ y: 10
30
+ end:
31
+ x: 100
32
+ y: 10
33
+ line02:
34
+ type: line
35
+ start:
36
+ x: 10
37
+ y: 10
38
+ end:
39
+ x: 110
40
+ y: 110
41
+ color:
42
+ red: 1
43
+ green: 0
44
+ blue: 0
45
+ rectangle01:
46
+ type: rectangle
47
+ region:
48
+ x: 120
49
+ y: 0
50
+ width: 10
51
+ height: 5
52
+ line_color:
53
+ red: 0
54
+ green: 0.3
55
+ blue: 0
56
+ line_width: 3
57
+ fill_color:
58
+ red: 0
59
+ green: 1
60
+ blue: 1
61
+ rectangle02:
62
+ type: rectangle
63
+ region:
64
+ x: 10
65
+ y: 10
66
+ width: 100
67
+ height: 100
68
+ line_width: 1
69
+ line_color:
70
+ red: 1
71
+ green: 0
72
+ blue: 0
73
+ fill_color:
74
+ red: 1
75
+ green: 1
76
+ blue: 1
77
+ rectangle03:
78
+ type: rectangle
79
+ region:
80
+ x: 10
81
+ y: 120
82
+ width: 100
83
+ height: 40
84
+ line_width: 0
85
+ line_color:
86
+ red: 1
87
+ green: 0
88
+ blue: 0
89
+ fill_color:
90
+ red: 0
91
+ green: 1
92
+ blue: 0
93
+ rect1:
94
+ type: rectangle
95
+ region:
96
+ x: 0
97
+ y: 0
98
+ width: 10
99
+ height: 10
100
+ rect2:
101
+ type: rectangle
102
+ region:
103
+ x: 10
104
+ y: 10
105
+ width: 10
106
+ height: 10
107
+ # arc_rect_rect:
108
+ # type: rectangle
109
+ # region:
110
+ # x: 50
111
+ # y: 200
112
+ # width: 100
113
+ # height: 30
114
+ # line_color:
115
+ # red: 0
116
+ # green: 0
117
+ # blue: 1
118
+ arc_rect:
119
+ type: arc_rectangle
120
+ line_width: 0
121
+ region:
122
+ x: 50
123
+ y: 200
124
+ width: 100
125
+ height: 30
126
+ line_color:
127
+ red: 1
128
+ green: 0
129
+ blue: 1
130
+ fill_color:
131
+ red: 0
132
+ green: 1
133
+ blue: 1
134
+ round_arc: 5
data/lib/core/loop.rb CHANGED
@@ -334,6 +334,7 @@ module PREP # nodoc
334
334
  iterator_times = values[:values].size
335
335
  end
336
336
  iterator_times.times do |index|
337
+ add_gap = false
337
338
  iterator_values = values[:values][index]
338
339
  iterator_values ||= { }
339
340
  begin
@@ -345,19 +346,23 @@ module PREP # nodoc
345
346
  end
346
347
  # 描画したので、方向に応じてリージョン補正
347
348
  if @direction == DIRECTIONS[:horizontal] # 右方向
348
- if has_footer_group?(prep) || (values[:values].size > index + 1)
349
- w += @gap
350
- end
351
349
  region.x += w
352
350
  region.width -= w
351
+ if has_footer_group?(prep) || (values[:values].size > index + 1)
352
+ add_gap = true
353
+ region.x += @gap
354
+ region.width -= @gap
355
+ end
353
356
  @height ||= h
354
357
  @height = h if @height < h
355
358
  else # if @direction == DIRECTIONS[:vertical] # 下方向
356
- if has_footer_group?(prep) || (values[:values].size > index + 1)
357
- h += @gap
358
- end
359
359
  region.y += h
360
360
  region.height -= h
361
+ if has_footer_group?(prep) || (values[:values].size > index + 1)
362
+ add_gap = true
363
+ region.y += @gap
364
+ region.height -= @gap
365
+ end
361
366
  @width ||= w
362
367
  @width = w if @width < w
363
368
  end
@@ -382,7 +387,11 @@ module PREP # nodoc
382
387
  end
383
388
  region = draw_header(prep, region, values, stop_on_drawable)
384
389
  # リトライ
385
- retry
390
+ if add_gap
391
+ next
392
+ else
393
+ retry
394
+ end
386
395
  end
387
396
  raise
388
397
  rescue RegionHeightOverflowError
@@ -407,7 +416,11 @@ module PREP # nodoc
407
416
  # ヘッダを再描画
408
417
  region = draw_header(prep, region, values, stop_on_drawable)
409
418
  # リトライ
410
- retry
419
+ if add_gap
420
+ next
421
+ else
422
+ retry
423
+ end
411
424
  end
412
425
  raise
413
426
  end
@@ -431,25 +444,30 @@ module PREP # nodoc
431
444
  iterator_times = values[:values].size
432
445
  end
433
446
  iterator_times.times do |index|
447
+ add_gap = false
434
448
  iterator_values = values[:values][index]
435
449
  iterator_values ||= { }
436
450
  begin
437
451
  w, h = iterator.calculate_region(prep, region, iterator_values, stop_on_drawable)
438
452
  # 描画したので、方向に応じてリージョン補正
439
453
  if @direction == DIRECTIONS[:horizontal] # 右方向
440
- if has_footer_group?(prep) || (values[:values].size > index + 1)
441
- w += @gap
442
- end
443
454
  region.x += w
444
455
  region.width -= w
456
+ if has_footer_group?(prep) || (values[:values].size > index + 1)
457
+ add_gap = true
458
+ region.x += @gap
459
+ region.width -= @gap
460
+ end
445
461
  @height ||= h
446
462
  @height = h if @height < h
447
463
  else # if @direction == DIRECTIONS[:vertical] # 下方向
448
- if has_footer_group?(prep) || (values[:values].size > index + 1)
449
- h += @gap
450
- end
451
464
  region.y += h
452
465
  region.height -= h
466
+ if has_footer_group?(prep) || (values[:values].size > index + 1)
467
+ add_gap = true
468
+ region.y += @gap
469
+ region.height -= @gap
470
+ end
453
471
  @width ||= w
454
472
  @width = w if @width < w
455
473
  end
@@ -475,7 +493,11 @@ module PREP # nodoc
475
493
  # ヘッダを再計算
476
494
  region = calculate_header_region(prep, region, values, stop_on_drawable)
477
495
  # リトライ
478
- retry
496
+ if add_gap
497
+ next
498
+ else
499
+ retry
500
+ end
479
501
  end
480
502
  raise
481
503
  rescue RegionHeightOverflowError
@@ -500,7 +522,11 @@ module PREP # nodoc
500
522
  # ヘッダを再計算
501
523
  region = calculate_header_region(prep, region, values, stop_on_drawable)
502
524
  # リトライ
503
- retry
525
+ if add_gap
526
+ next
527
+ else
528
+ retry
529
+ end
504
530
  end
505
531
  raise
506
532
  end
@@ -44,12 +44,12 @@ module PREP # nodoc
44
44
  @line_color = Color.new(values[:line_color][:red],
45
45
  values[:line_color][:green],
46
46
  values[:line_color][:blue])
47
- self.line_width = values[:line_width]
48
47
  self.line_style = values[:line_style]
49
48
  self.fill_pattern = values[:fill_pattern]
50
49
  @fill_color = Color.new(values[:fill_color][:red],
51
50
  values[:fill_color][:green],
52
51
  values[:fill_color][:blue])
52
+ self.line_width = values[:line_width]
53
53
  @expand = values[:expand]
54
54
  end
55
55
 
@@ -62,6 +62,8 @@ module PREP # nodoc
62
62
  def line_width=(w)
63
63
  if w > 0
64
64
  @line_width = w
65
+ elsif w.zero?
66
+ @line_color = @fill_color
65
67
  else
66
68
  raise "Rectangle line width must be grater than zero."
67
69
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prep
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 2
10
- version: 0.3.2
9
+ - 3
10
+ version: 0.3.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tetsuhisa MAKINO
@@ -15,9 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-17 00:00:00 Z
18
+ date: 2012-03-12 00:00:00 +09:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
22
+ type: :runtime
21
23
  requirement: &id001 !ruby/object:Gem::Requirement
22
24
  none: false
23
25
  requirements:
@@ -29,11 +31,11 @@ dependencies:
29
31
  - 0
30
32
  - 8
31
33
  version: 2.0.8
32
- version_requirements: *id001
33
34
  name: hpdf
35
+ version_requirements: *id001
34
36
  prerelease: false
35
- type: :runtime
36
37
  - !ruby/object:Gem::Dependency
38
+ type: :development
37
39
  requirement: &id002 !ruby/object:Gem::Requirement
38
40
  none: false
39
41
  requirements:
@@ -45,11 +47,11 @@ dependencies:
45
47
  - 3
46
48
  - 0
47
49
  version: 2.3.0
48
- version_requirements: *id002
49
50
  name: rspec
51
+ version_requirements: *id002
50
52
  prerelease: false
51
- type: :development
52
53
  - !ruby/object:Gem::Dependency
54
+ type: :development
53
55
  requirement: &id003 !ruby/object:Gem::Requirement
54
56
  none: false
55
57
  requirements:
@@ -61,11 +63,11 @@ dependencies:
61
63
  - 0
62
64
  - 0
63
65
  version: 1.0.0
64
- version_requirements: *id003
65
66
  name: bundler
67
+ version_requirements: *id003
66
68
  prerelease: false
67
- type: :development
68
69
  - !ruby/object:Gem::Dependency
70
+ type: :development
69
71
  requirement: &id004 !ruby/object:Gem::Requirement
70
72
  none: false
71
73
  requirements:
@@ -77,11 +79,11 @@ dependencies:
77
79
  - 5
78
80
  - 2
79
81
  version: 1.5.2
80
- version_requirements: *id004
81
82
  name: jeweler
83
+ version_requirements: *id004
82
84
  prerelease: false
83
- type: :development
84
85
  - !ruby/object:Gem::Dependency
86
+ type: :development
85
87
  requirement: &id005 !ruby/object:Gem::Requirement
86
88
  none: false
87
89
  requirements:
@@ -91,10 +93,9 @@ dependencies:
91
93
  segments:
92
94
  - 0
93
95
  version: "0"
94
- version_requirements: *id005
95
96
  name: rcov
97
+ version_requirements: *id005
96
98
  prerelease: false
97
- type: :development
98
99
  description: PREP is PDF Report generator depends on HPDF.
99
100
  email: tim.makino@gmail.com
100
101
  executables:
@@ -103,11 +104,13 @@ executables:
103
104
  extensions: []
104
105
 
105
106
  extra_rdoc_files:
107
+ - ChangeLog
106
108
  - LICENSE.txt
107
109
  - README.rdoc
108
110
  files:
109
111
  - .document
110
112
  - .rspec
113
+ - ChangeLog
111
114
  - Gemfile
112
115
  - Gemfile.lock
113
116
  - LICENSE.txt
@@ -116,8 +119,11 @@ files:
116
119
  - VERSION
117
120
  - bin/prep-helper
118
121
  - bin/prep-test
122
+ - examples/gap_test.yml
123
+ - examples/generate_gap_test.rb
119
124
  - examples/generate_group_sample.rb
120
125
  - examples/generate_image_sample.rb
126
+ - examples/generate_rect_line_width_zero_sample.rb
121
127
  - examples/generate_sample.rb
122
128
  - examples/generate_sample2.rb
123
129
  - examples/generate_sample3.rb
@@ -130,6 +136,7 @@ files:
130
136
  - examples/group_sample.yml
131
137
  - examples/image_sample.yml
132
138
  - examples/qrimage.png
139
+ - examples/rect_line_width_zero_sample.yml
133
140
  - examples/sample.yml
134
141
  - examples/sample2.yml
135
142
  - examples/sample3.yml
@@ -157,6 +164,8 @@ files:
157
164
  - spec/component_spec.rb
158
165
  - spec/prep_spec.rb
159
166
  - spec/spec_helper.rb
167
+ - examples/generate_ttfont_sample.rb
168
+ has_rdoc: true
160
169
  homepage: http://github.com/maki-tetsu/prep
161
170
  licenses:
162
171
  - MIT
@@ -186,13 +195,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
195
  requirements: []
187
196
 
188
197
  rubyforge_project:
189
- rubygems_version: 1.8.10
198
+ rubygems_version: 1.6.2
190
199
  signing_key:
191
200
  specification_version: 3
192
201
  summary: PREP is PDF Report generator depends on HPDF.
193
202
  test_files:
203
+ - examples/generate_gap_test.rb
194
204
  - examples/generate_group_sample.rb
195
205
  - examples/generate_image_sample.rb
206
+ - examples/generate_rect_line_width_zero_sample.rb
196
207
  - examples/generate_sample.rb
197
208
  - examples/generate_sample2.rb
198
209
  - examples/generate_sample3.rb
@@ -202,6 +213,7 @@ test_files:
202
213
  - examples/generate_sample7.rb
203
214
  - examples/generate_sample8.rb
204
215
  - examples/generate_sample_dataset.rb
216
+ - examples/generate_ttfont_sample.rb
205
217
  - spec/component_spec.rb
206
218
  - spec/prep_spec.rb
207
219
  - spec/spec_helper.rb