Showing
2 changed files
with
20 additions
and
25 deletions
@@ -31,18 +31,15 @@ import 'stream.dart'; | @@ -31,18 +31,15 @@ import 'stream.dart'; | ||
31 | enum PdfCrossRefEntryType { free, inUse, compressed } | 31 | enum PdfCrossRefEntryType { free, inUse, compressed } |
32 | 32 | ||
33 | /// Cross-reference for a Pdf Object | 33 | /// Cross-reference for a Pdf Object |
34 | -class PdfXref { | 34 | +class PdfXref extends PdfIndirect { |
35 | /// Creates a cross-reference for a Pdf Object | 35 | /// Creates a cross-reference for a Pdf Object |
36 | const PdfXref( | 36 | const PdfXref( |
37 | - this.id, | 37 | + int ser, |
38 | this.offset, { | 38 | this.offset, { |
39 | - this.generation = 0, | 39 | + int gen = 0, |
40 | this.object, | 40 | this.object, |
41 | this.type = PdfCrossRefEntryType.inUse, | 41 | this.type = PdfCrossRefEntryType.inUse, |
42 | - }); | ||
43 | - | ||
44 | - /// The id of a Pdf Object | ||
45 | - final int id; | 42 | + }) : super(ser, gen); |
46 | 43 | ||
47 | /// The offset within the Pdf file | 44 | /// The offset within the Pdf file |
48 | final int offset; | 45 | final int offset; |
@@ -50,14 +47,11 @@ class PdfXref { | @@ -50,14 +47,11 @@ class PdfXref { | ||
50 | /// The object ID containing this compressed object | 47 | /// The object ID containing this compressed object |
51 | final int? object; | 48 | final int? object; |
52 | 49 | ||
53 | - /// The generation of the object, usually 0 | ||
54 | - final int generation; | ||
55 | - | ||
56 | final PdfCrossRefEntryType type; | 50 | final PdfCrossRefEntryType type; |
57 | 51 | ||
58 | /// The xref in the format of the xref section in the Pdf file | 52 | /// The xref in the format of the xref section in the Pdf file |
59 | String _legacyRef() { | 53 | String _legacyRef() { |
60 | - return '${offset.toString().padLeft(10, '0')} ${generation.toString().padLeft(5, '0')}${type == PdfCrossRefEntryType.inUse ? ' n ' : ' f '}'; | 54 | + return '${offset.toString().padLeft(10, '0')} ${gen.toString().padLeft(5, '0')}${type == PdfCrossRefEntryType.inUse ? ' n ' : ' f '}'; |
61 | } | 55 | } |
62 | 56 | ||
63 | PdfIndirect? get container => object == null ? null : PdfIndirect(object!, 0); | 57 | PdfIndirect? get container => object == null ? null : PdfIndirect(object!, 0); |
@@ -75,7 +69,7 @@ class PdfXref { | @@ -75,7 +69,7 @@ class PdfXref { | ||
75 | 69 | ||
76 | setVal(w[0], type == PdfCrossRefEntryType.inUse ? 1 : 0); | 70 | setVal(w[0], type == PdfCrossRefEntryType.inUse ? 1 : 0); |
77 | setVal(w[1], offset); | 71 | setVal(w[1], offset); |
78 | - setVal(w[2], generation); | 72 | + setVal(w[2], gen); |
79 | 73 | ||
80 | return ofs; | 74 | return ofs; |
81 | } | 75 | } |
@@ -90,7 +84,7 @@ class PdfXref { | @@ -90,7 +84,7 @@ class PdfXref { | ||
90 | } | 84 | } |
91 | 85 | ||
92 | @override | 86 | @override |
93 | - String toString() => '$id $generation obj ${type.name} $offset'; | 87 | + String toString() => '$ser $gen obj ${type.name} $offset'; |
94 | 88 | ||
95 | @override | 89 | @override |
96 | int get hashCode => offset; | 90 | int get hashCode => offset; |
@@ -145,7 +139,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | @@ -145,7 +139,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | ||
145 | 139 | ||
146 | for (final ob in objects) { | 140 | for (final ob in objects) { |
147 | final offset = ob.output(s); | 141 | final offset = ob.output(s); |
148 | - _offsets.add(PdfXref(ob.objser, offset, generation: ob.objgen)); | 142 | + _offsets.add(PdfXref(ob.objser, offset, gen: ob.objgen)); |
149 | } | 143 | } |
150 | 144 | ||
151 | final int xrefOffset; | 145 | final int xrefOffset; |
@@ -197,8 +191,8 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | @@ -197,8 +191,8 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | ||
197 | 191 | ||
198 | int outputLegacy(PdfObjectBase o, PdfStream s) { | 192 | int outputLegacy(PdfObjectBase o, PdfStream s) { |
199 | // Now scan through the offsets list. They should be in sequence. | 193 | // Now scan through the offsets list. They should be in sequence. |
200 | - _offsets.sort((a, b) => a.id.compareTo(b.id)); | ||
201 | - final size = _offsets.last.id + 1; | 194 | + _offsets.sort((a, b) => a.ser.compareTo(b.ser)); |
195 | + final size = _offsets.last.ser + 1; | ||
202 | 196 | ||
203 | assert(() { | 197 | assert(() { |
204 | if (o.verbose) { | 198 | if (o.verbose) { |
@@ -217,7 +211,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | @@ -217,7 +211,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | ||
217 | block.add(const PdfXref( | 211 | block.add(const PdfXref( |
218 | 0, | 212 | 0, |
219 | 0, | 213 | 0, |
220 | - generation: 65535, | 214 | + gen: 65535, |
221 | type: PdfCrossRefEntryType.free, | 215 | type: PdfCrossRefEntryType.free, |
222 | )); | 216 | )); |
223 | 217 | ||
@@ -226,16 +220,16 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | @@ -226,16 +220,16 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | ||
226 | 220 | ||
227 | for (final x in _offsets) { | 221 | for (final x in _offsets) { |
228 | // check to see if block is in range | 222 | // check to see if block is in range |
229 | - if (x.id != (lastId + 1)) { | 223 | + if (x.ser != (lastId + 1)) { |
230 | // no, so write this block, and reset | 224 | // no, so write this block, and reset |
231 | _writeBlock(s, firstId, block); | 225 | _writeBlock(s, firstId, block); |
232 | block.clear(); | 226 | block.clear(); |
233 | - firstId = x.id; | 227 | + firstId = x.ser; |
234 | } | 228 | } |
235 | 229 | ||
236 | // now add to block | 230 | // now add to block |
237 | block.add(x); | 231 | block.add(x); |
238 | - lastId = x.id; | 232 | + lastId = x.ser; |
239 | } | 233 | } |
240 | 234 | ||
241 | // now write the last block | 235 | // now write the last block |
@@ -261,10 +255,10 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | @@ -261,10 +255,10 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | ||
261 | final offset = s.offset; | 255 | final offset = s.offset; |
262 | 256 | ||
263 | // Sort all references | 257 | // Sort all references |
264 | - _offsets.sort((a, b) => a.id.compareTo(b.id)); | 258 | + _offsets.sort((a, b) => a.ser.compareTo(b.ser)); |
265 | 259 | ||
266 | // Write this object too | 260 | // Write this object too |
267 | - final id = _offsets.last.id + 1; | 261 | + final id = _offsets.last.ser + 1; |
268 | final size = id + 1; | 262 | final size = id + 1; |
269 | _offsets.add(PdfXref(id, offset)); | 263 | _offsets.add(PdfXref(id, offset)); |
270 | 264 | ||
@@ -280,13 +274,13 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | @@ -280,13 +274,13 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic { | ||
280 | 274 | ||
281 | for (final x in _offsets) { | 275 | for (final x in _offsets) { |
282 | // check to see if block is in range | 276 | // check to see if block is in range |
283 | - if (x.id != (lastId + 1)) { | 277 | + if (x.ser != (lastId + 1)) { |
284 | // no, so store this block, and reset | 278 | // no, so store this block, and reset |
285 | blocks.add(lastId - firstId + 1); | 279 | blocks.add(lastId - firstId + 1); |
286 | - firstId = x.id; | 280 | + firstId = x.ser; |
287 | blocks.add(firstId); | 281 | blocks.add(firstId); |
288 | } | 282 | } |
289 | - lastId = x.id; | 283 | + lastId = x.ser; |
290 | } | 284 | } |
291 | blocks.add(lastId - firstId + 1); | 285 | blocks.add(lastId - firstId + 1); |
292 | 286 |
-
Please register or login to post a comment