prep 0.2.5 → 0.3.0

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