XObjectsCycleDetector.java
2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.adobe.internal.pdftoolkit.core.cos.CosObject
* com.adobe.internal.pdftoolkit.core.exceptions.PDFUnableToCompleteOperationException
*/
package com.adobe.internal.pdftoolkit.pdf.content;
import com.adobe.internal.pdftoolkit.core.cos.CosObject;
import com.adobe.internal.pdftoolkit.core.exceptions.PDFUnableToCompleteOperationException;
import com.adobe.internal.pdftoolkit.pdf.document.PDFDocument;
import com.adobe.internal.pdftoolkit.pdf.document.listener.DocumentListener;
import com.adobe.internal.pdftoolkit.pdf.document.listener.DocumentListenerProperties;
import com.adobe.internal.pdftoolkit.pdf.document.listener.DocumentListenerRegistry;
import com.adobe.internal.pdftoolkit.pdf.document.listener.DocumentMessage;
import com.adobe.internal.pdftoolkit.pdf.graphics.xobject.PDFXObject;
import java.util.HashSet;
import java.util.Stack;
public class XObjectsCycleDetector
implements DocumentListener {
private Stack<Integer> xobjects = new Stack();
private HashSet<Integer> objectNumSet = new HashSet();
private XObjectsCycleDetector() {
}
public static XObjectsCycleDetector getInstance(PDFDocument document) {
DocumentListener existingListener = document.getListenerRegistry().getListener(XObjectsCycleDetector.class);
if (existingListener == null) {
XObjectsCycleDetector cycleDetector = new XObjectsCycleDetector();
document.getListenerRegistry().registerListener(XObjectsCycleDetector.class, cycleDetector);
return cycleDetector;
}
return (XObjectsCycleDetector)existingListener;
}
public boolean cycleDetected(PDFXObject current) {
if (this.xobjects.isEmpty()) {
return false;
}
return this.objectNumSet.contains(current.getCosObject().getObjNum());
}
public void push(PDFXObject current) {
Integer num = current.getCosObject().getObjNum();
this.xobjects.push(num);
this.objectNumSet.add(num);
}
public void pop() {
Integer num = this.xobjects.pop();
this.objectNumSet.remove(num);
}
public DocumentListenerProperties getProperties() {
return null;
}
public void message(DocumentMessage message) throws PDFUnableToCompleteOperationException {
}
}