prep 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
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