lib/origami/xreftable.rb in origami-1.2.2 vs lib/origami/xreftable.rb in origami-1.2.3
- old
+ new
@@ -334,10 +334,19 @@
super(data, dictionary)
@xrefs = nil
end
+ def entries
+ load! if @xrefs.nil?
+
+ @xrefs
+ end
+
+ #
+ # Returns XRef entries present in this stream.
+ #
def pre_build #:nodoc:
load! if @xrefs.nil?
self.W = [ 1, 2, 2 ] unless has_field?(:W)
self.Size = @xrefs.length + 1
@@ -384,11 +393,11 @@
nil
end
def clear
- @rawdata, @data = nil, ''
+ self.data = ''
@xrefs = []
self.Index = []
end
private
@@ -408,15 +417,15 @@
field2_w = self.W[2]
entrymask = "B#{type_w << 3}B#{field1_w << 3}B#{field2_w << 3}"
size = @data.size / (type_w + field1_w + field2_w)
- entries = @data.unpack(entrymask * size).map!{|field| field.to_i(2) }
+ xentries = @data.unpack(entrymask * size).map!{|field| field.to_i(2) }
@xrefs = []
size.times do |i|
- type,field1,field2 = entries[i*3],entries[i*3+1],entries[i*3+2]
+ type,field1,field2 = xentries[i*3].ord,xentries[i*3+1].ord,xentries[i*3+2].ord
case type
when XREF_FREE
@xrefs << XRef.new(field1, field2, XRef::FREE)
when XREF_USED
@xrefs << XRef.new(field1, field2, XRef::USED)
@@ -428,10 +437,10 @@
@xrefs = []
end
end
def save! #:nodoc:
- @data = ""
+ self.data = ""
type_w, field1_w, field2_w = self.W
@xrefs.each do |xref| @data << xref.to_xrefstm_data(type_w, field1_w, field2_w) end
encode!