Class: Prawn::Blank::FieldBase

Inherits:
Core::Reference
  • Object
show all
Defined in:
lib/prawn/blank/field_base.rb

Direct Known Subclasses

Field

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

Instance Method Summary collapse

Constructor Details

#initialize(id, *args) {|_self| ... } ⇒ FieldBase

Returns a new instance of FieldBase.

Yields:

  • (_self)

Yield Parameters:



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.default_options )
  
  # okay, we print this annot by default
  self.print = true
  
  options = (args.last.kind_of?(Hash) ? args.pop : {})
  options.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=

#appearanceObject



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

#atObject



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

#heightObject



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

Returns:

  • (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

Returns:

  • (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

#widthObject



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