Class: Prawn::Blank::FieldBase
- Inherits:
-
Core::Reference
- Object
- Core::Reference
- Prawn::Blank::FieldBase
- Defined in:
- lib/prawn/blank/field_base.rb
Direct Known Subclasses
Constant Summary collapse
- FF_FLAGS =
see pdf reference for documentation
{ :readonly => 1, :required => 2, :no_export => 3, # for text fields :multiline => 13, :password => 14, # for buttons :no_toggle_to_off => 15 }
Class Method Summary collapse
- .create(document, *args, &block) ⇒ Object
- .field_attr_accessor(name, key, inheritable = true) ⇒ Object
- .flag_accessor(name, bit, flag_name = 'flags') ⇒ Object
- .from_ref(ref) ⇒ Object
Instance Method Summary collapse
- #_parent= ⇒ Object
- #appearance ⇒ Object
- #appearance=(app) ⇒ Object
- #at ⇒ Object
- #at=(*args) ⇒ Object
- #denormalize_color(color) ⇒ Object
- #finalize(document) ⇒ Object
- #height ⇒ Object
- #height=(h) ⇒ Object
-
#initialize(id, *args) {|_self| ... } ⇒ FieldBase
constructor
A new instance of FieldBase.
- #leaf? ⇒ Boolean
- #parent=(p) ⇒ Object
- #root? ⇒ Boolean
- #validate! ⇒ Object
- #width ⇒ Object
- #width=(w) ⇒ Object
Constructor Details
#initialize(id, *args) {|_self| ... } ⇒ FieldBase
Returns a new instance of FieldBase.
144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/prawn/blank/field_base.rb', line 144 def initialize(id,*args) super( id, self. ) # okay, we print this annot by default self.print = true = (args.last.kind_of?(Hash) ? args.pop : {}) .each do |k,v| self.send "#{k.to_s}=".to_sym,v end yield self if block_given? end |
Class Method Details
.create(document, *args, &block) ⇒ Object
134 135 136 |
# File 'lib/prawn/blank/field_base.rb', line 134 def self.create(document, *args, &block) document.state.store.push( self.new(document.state.store.size+1,*args, &block) ) end |
.field_attr_accessor(name, key, inheritable = true) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/prawn/blank/field_base.rb', line 21 def field_attr_accessor(name,key,inheritable=true) self.class_eval <<EVAL def #{name.to_s} if #{inheritable.inspect} and [email protected]?(#{key.to_sym.inspect}) and self.parent? return self.parent.#{name.to_s} end @data[#{key.to_sym.inspect}] end def #{name.to_s}=(value) @data[#{key.to_sym.inspect}]=value end def delete_#{name.to_s} @data.delete #{key.to_sym.inspect} end def #{name.to_s}? if #{inheritable.inspect} @data.key?(#{key.to_sym.inspect}) or ( self.parent? and self.parent.#{name.to_s}?) else @data.key? #{key.to_sym.inspect} end end def own_#{name.to_s}? @data.key? #{key.to_sym.inspect} end EVAL end |
.flag_accessor(name, bit, flag_name = 'flags') ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/prawn/blank/field_base.rb', line 48 def flag_accessor(name,bit,flag_name='flags') mask = (1 << (bit-1)) self.class_eval <<EVAL def #{name.to_s} (self.#{flag_name} || 0) & #{mask.inspect} end alias #{name.to_s}? #{name.to_s} def #{name.to_s}=(value) if value self.#{flag_name} = (self.#{flag_name} || 0) | #{mask.inspect} else self.#{flag_name} = (self.#{flag_name} || 0) & ~#{mask.inspect} end end EVAL end |
.from_ref(ref) ⇒ Object
138 139 140 141 142 |
# File 'lib/prawn/blank/field_base.rb', line 138 def self.from_ref(ref) result = self.new(ref.identifier) result.data = ref.data return result end |
Instance Method Details
#_parent= ⇒ Object
103 |
# File 'lib/prawn/blank/field_base.rb', line 103 alias_method :_parent=, :parent= |
#appearance ⇒ Object
114 115 116 117 118 119 120 |
# File 'lib/prawn/blank/field_base.rb', line 114 def appearance return @appearance if @appearance if parent? return parent.appearance end return nil end |
#appearance=(app) ⇒ Object
122 123 124 |
# File 'lib/prawn/blank/field_base.rb', line 122 def appearance=(app) @appearance=app end |
#at ⇒ Object
177 178 179 |
# File 'lib/prawn/blank/field_base.rb', line 177 def at self.rect[0..1] end |
#at=(*args) ⇒ Object
181 182 183 184 |
# File 'lib/prawn/blank/field_base.rb', line 181 def at=(*args) x,y = args.flatten self.rect = [x,y,x + width, y - height] end |
#denormalize_color(color) ⇒ Object
198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/prawn/blank/field_base.rb', line 198 def denormalize_color(color) s = color.size if( s == 1 ) # gray return [0,0,0,color[0]] elsif( s == 3 ) # rgb return Prawn::Graphics::Color.rgb2hex(color.map{|component| component * 255.0}) elsif( s == 4 ) # cmyk return color.map{|component| component * 100.0} end raise "Unknown color: #{color}" end |
#finalize(document) ⇒ Object
194 195 196 |
# File 'lib/prawn/blank/field_base.rb', line 194 def finalize(document) end |
#height ⇒ Object
168 169 170 171 |
# File 'lib/prawn/blank/field_base.rb', line 168 def height r = self.rect return (r[3] - r[1]).abs end |
#height=(h) ⇒ Object
173 174 175 |
# File 'lib/prawn/blank/field_base.rb', line 173 def height=(h) self.rect[3] = self.rect[1] + h end |
#leaf? ⇒ Boolean
126 127 128 |
# File 'lib/prawn/blank/field_base.rb', line 126 def leaf? !children? end |
#parent=(p) ⇒ Object
105 106 107 108 109 110 111 112 |
# File 'lib/prawn/blank/field_base.rb', line 105 def parent=(p) if parent? self.parent.children.delete(self) end p.children ||= [] p.children << self self._parent = p end |
#root? ⇒ Boolean
130 131 132 |
# File 'lib/prawn/blank/field_base.rb', line 130 def root? !parent? end |
#validate! ⇒ Object
186 187 188 189 190 191 192 |
# File 'lib/prawn/blank/field_base.rb', line 186 def validate! raise "Blank: Type must be :Annot " if self.data[:Type] != :Annot raise "Blank: Subtype must be :Annot " if self.data[:Subtype] != :Widget if leaf? raise "Blank: FT ( Field Type ) must be :Btn, :Tx, :Ch or :Sig " unless [:Btn, :Tx, :Ch, :Sig].include self.type end end |
#width ⇒ Object
159 160 161 162 |
# File 'lib/prawn/blank/field_base.rb', line 159 def width r = self.rect return (r[2] - r[0]).abs end |
#width=(w) ⇒ Object
164 165 166 |
# File 'lib/prawn/blank/field_base.rb', line 164 def width=(w) self.rect[2] = self.rect[0] + w end |