prep 0.2.5 → 0.3.0

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.5
1
+ 0.3.0
@@ -0,0 +1,11 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.join(File.dirname(__FILE__), "..", "lib", "prep")
3
+
4
+ prep = PREP::Core::Prep.new("image_sample.yml")
5
+ prep.generate("#{$0}.pdf",
6
+ {
7
+ :content => {
8
+ :title => "外部引き渡しタイトル文字列",
9
+ :normal_image => File.join(File.dirname(__FILE__), 'qrimage.png'),
10
+ }
11
+ })
@@ -0,0 +1,98 @@
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
+ rect1:
78
+ type: rectangle
79
+ region:
80
+ x: 0
81
+ y: 0
82
+ width: 10
83
+ height: 10
84
+ rect2:
85
+ type: rectangle
86
+ region:
87
+ x: 10
88
+ y: 10
89
+ width: 10
90
+ height: 10
91
+ normal_image:
92
+ type: image
93
+ image_path: "qrimage.png"
94
+ region:
95
+ x: 120
96
+ y: 70
97
+ width: 25
98
+ height: 25
Binary file
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  # Group クラスのソースファイル
2
3
  # Author:: maki-tetsu
3
4
  # Date:: 2011/03/11
@@ -7,6 +8,7 @@ require File.join(File.dirname(__FILE__), "drawable")
7
8
  require File.join(File.dirname(__FILE__), "label")
8
9
  require File.join(File.dirname(__FILE__), "line")
9
10
  require File.join(File.dirname(__FILE__), "rectangle")
11
+ require File.join(File.dirname(__FILE__), "image")
10
12
  require File.join(File.dirname(__FILE__), "loop")
11
13
 
12
14
  module PREP # nodoc
@@ -89,6 +91,15 @@ module PREP # nodoc
89
91
  end
90
92
  end
91
93
  end
94
+ when "image"
95
+ klass = Image
96
+ unless @@allow_all
97
+ @drawables.values.each do |drawable|
98
+ if Loop === drawable
99
+ raise "Group already has Loop!!"
100
+ end
101
+ end
102
+ end
92
103
  when "group"
93
104
  # global でのみグループ定義を許可
94
105
  unless global
@@ -0,0 +1,83 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Image クラスのソースファイル
3
+ # Author:: maki-tetsu
4
+ # Date:: 2011/09/12
5
+ # Copyright:: Copyright (c) 2011 maki-tetsu
6
+
7
+ require File.join(File.dirname(__FILE__), "drawable")
8
+ require File.join(File.dirname(__FILE__), "color")
9
+ require File.join(File.dirname(__FILE__), "region")
10
+ require File.join(File.dirname(__FILE__), "..", "mm2pixcel")
11
+
12
+ module PREP # nodoc
13
+ module Core # nodoc
14
+ # イメージ描画構成要素クラス
15
+ class Image < Drawable
16
+ @@default_values = {
17
+ :layer => 1,
18
+ :expand => false,
19
+ }
20
+
21
+ def initialize(identifier, values = { })
22
+ values = @@default_values.merge(key_string_to_symbol(values))
23
+ super(identifier, values[:layer])
24
+
25
+ @region = Region.new(values[:region][:x].mm2pixcel,
26
+ values[:region][:y].mm2pixcel,
27
+ values[:region][:width].mm2pixcel,
28
+ values[:region][:height].mm2pixcel)
29
+ @image_path = values[:image_path].to_s
30
+ @expand = values[:expand]
31
+ end
32
+
33
+ # イメージ描画領域の計算
34
+ def calculate_region(prep, region, value, stop_on_drawable = nil)
35
+ if self == stop_on_drawable
36
+ raise ReRenderJump.new(region)
37
+ end
38
+
39
+ puts "Calculate region for #{self.class}: #{self.identifier} region: #{region}" if ENV["DEBUG"]
40
+ ret_region = Region.new(0, 0,
41
+ region.width - (@region.x + @region.width),
42
+ region.height - (@region.y + @region.height))
43
+ return @region.x + @region.width, @region.y + @region.height
44
+ end
45
+
46
+ # イメージの描画
47
+ def draw(prep, region, value, stop_on_drawable = nil)
48
+ if self === stop_on_drawable
49
+ raise ReRenderJump.new(region)
50
+ end
51
+ STDERR.puts("Draw on #{self.class} #{self.identifier}") if ENV['DEBUG']
52
+ # 領域判定
53
+ calculate_region(prep, region, value)
54
+
55
+ # イメージファイルの指定があるか確認
56
+ if value.to_s != ""
57
+ # Load png image from specific file path
58
+ image_path = value.to_s
59
+ else
60
+ # Load png image from default path
61
+ image_path = @image_path.dup
62
+ end
63
+ begin
64
+ image_data = prep.pdf.load_png_image_from_file(image_path)
65
+ rescue => e
66
+ raise "Failed to load the PNG image from '#{image_path}'"
67
+ end
68
+ region_backup = @region.dup
69
+ if @expand_region
70
+ @region = @expand_region.dup
71
+ @expand_region = nil
72
+ end
73
+ pos_x, pos_y = calculate_pos(prep.current_page, region, @region.x, @region.y)
74
+ # draw png image
75
+ prep.current_page.draw_image(image_data,
76
+ pos_x, pos_y - @region.height,
77
+ @region.width, @region.height)
78
+ @region = region_backup
79
+ prep.current_page.drawed = true
80
+ end
81
+ end
82
+ end
83
+ 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: 29
5
- prerelease:
4
+ hash: 19
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 5
10
- version: 0.2.5
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tetsuhisa MAKINO
@@ -15,11 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-27 00:00:00 +09:00
18
+ date: 2011-09-20 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- type: :runtime
22
+ prerelease: false
23
+ name: hpdf
23
24
  version_requirements: &id001 !ruby/object:Gem::Requirement
24
25
  none: false
25
26
  requirements:
@@ -32,10 +33,10 @@ dependencies:
32
33
  - 8
33
34
  version: 2.0.8
34
35
  requirement: *id001
35
- prerelease: false
36
- name: hpdf
36
+ type: :runtime
37
37
  - !ruby/object:Gem::Dependency
38
- type: :development
38
+ prerelease: false
39
+ name: rspec
39
40
  version_requirements: &id002 !ruby/object:Gem::Requirement
40
41
  none: false
41
42
  requirements:
@@ -48,10 +49,10 @@ dependencies:
48
49
  - 0
49
50
  version: 2.3.0
50
51
  requirement: *id002
51
- prerelease: false
52
- name: rspec
53
- - !ruby/object:Gem::Dependency
54
52
  type: :development
53
+ - !ruby/object:Gem::Dependency
54
+ prerelease: false
55
+ name: bundler
55
56
  version_requirements: &id003 !ruby/object:Gem::Requirement
56
57
  none: false
57
58
  requirements:
@@ -64,10 +65,10 @@ dependencies:
64
65
  - 0
65
66
  version: 1.0.0
66
67
  requirement: *id003
67
- prerelease: false
68
- name: bundler
69
- - !ruby/object:Gem::Dependency
70
68
  type: :development
69
+ - !ruby/object:Gem::Dependency
70
+ prerelease: false
71
+ name: jeweler
71
72
  version_requirements: &id004 !ruby/object:Gem::Requirement
72
73
  none: false
73
74
  requirements:
@@ -80,10 +81,10 @@ dependencies:
80
81
  - 2
81
82
  version: 1.5.2
82
83
  requirement: *id004
83
- prerelease: false
84
- name: jeweler
85
- - !ruby/object:Gem::Dependency
86
84
  type: :development
85
+ - !ruby/object:Gem::Dependency
86
+ prerelease: false
87
+ name: rcov
87
88
  version_requirements: &id005 !ruby/object:Gem::Requirement
88
89
  none: false
89
90
  requirements:
@@ -94,8 +95,7 @@ dependencies:
94
95
  - 0
95
96
  version: "0"
96
97
  requirement: *id005
97
- prerelease: false
98
- name: rcov
98
+ type: :development
99
99
  description: PREP is PDF Report generator depends on HPDF.
100
100
  email: tim.makino@gmail.com
101
101
  executables:
@@ -118,6 +118,7 @@ files:
118
118
  - bin/prep-helper
119
119
  - bin/prep-test
120
120
  - examples/generate_group_sample.rb
121
+ - examples/generate_image_sample.rb
121
122
  - examples/generate_sample.rb
122
123
  - examples/generate_sample2.rb
123
124
  - examples/generate_sample3.rb
@@ -126,6 +127,8 @@ files:
126
127
  - examples/generate_sample6.rb
127
128
  - examples/generate_sample_dataset.rb
128
129
  - examples/group_sample.yml
130
+ - examples/image_sample.yml
131
+ - examples/qrimage.png
129
132
  - examples/sample.yml
130
133
  - examples/sample2.yml
131
134
  - examples/sample3.yml
@@ -134,6 +137,7 @@ files:
134
137
  - lib/core/color.rb
135
138
  - lib/core/drawable.rb
136
139
  - lib/core/group.rb
140
+ - lib/core/image.rb
137
141
  - lib/core/label.rb
138
142
  - lib/core/line.rb
139
143
  - lib/core/loop.rb
@@ -179,12 +183,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
183
  requirements: []
180
184
 
181
185
  rubyforge_project:
182
- rubygems_version: 1.4.2
186
+ rubygems_version: 1.3.7
183
187
  signing_key:
184
188
  specification_version: 3
185
189
  summary: PREP is PDF Report generator depends on HPDF.
186
190
  test_files:
187
191
  - examples/generate_group_sample.rb
192
+ - examples/generate_image_sample.rb
188
193
  - examples/generate_sample.rb
189
194
  - examples/generate_sample2.rb
190
195
  - examples/generate_sample3.rb