[poppler] poppler/Annot.cc
Carlos Garcia Campos
carlosgc at kemper.freedesktop.org
Sun Jun 24 04:32:37 PDT 2012
poppler/Annot.cc | 50 ++++++++++++++++++--------------------------------
1 file changed, 18 insertions(+), 32 deletions(-)
New commits:
commit 31db47d077825045edd1a2d229e873a6f8e09fb1
Author: Carlos Garcia Campos <carlosgc at gnome.org>
Date: Sun Jun 17 12:00:43 2012 +0200
Simplify AnnotAppearance::getAppearanceStream()
- Use a switch instead of if to get the stream object
- Use the return value of dictLookupNF to check whether the object is
null
- Don't fetch the stream to check the reference is valid, this is
already done when used
diff --git a/poppler/Annot.cc b/poppler/Annot.cc
index 9778bd2..e55ddde 100644
--- a/poppler/Annot.cc
+++ b/poppler/Annot.cc
@@ -783,50 +783,38 @@ AnnotAppearance::~AnnotAppearance() {
appearDict.free();
}
-void AnnotAppearance::getAppearanceStream(AnnotAppearance::AnnotAppearanceType type, const char *state, Object *dest) {
+void AnnotAppearance::getAppearanceStream(AnnotAppearanceType type, const char *state, Object *dest) {
Object apData, stream;
apData.initNull();
// Obtain dictionary or stream associated to appearance type
- if (type == appearRollover) {
- appearDict.dictLookupNF("R", &apData);
- } else if (type == appearDown) {
- appearDict.dictLookupNF("D", &apData);
- }
- if (apData.isNull()) { // Normal appearance, also used as fallback
+ switch (type) {
+ case appearRollover:
+ if (appearDict.dictLookupNF("R", &apData)->isNull())
+ appearDict.dictLookupNF("N", &apData);
+ break;
+ case appearDown:
+ if (appearDict.dictLookupNF("D", &apData)->isNull())
+ appearDict.dictLookupNF("N", &apData);
+ break;
+ case appearNormal:
appearDict.dictLookupNF("N", &apData);
- }
-
- // Search state if it's a subdictionary
- if (apData.isDict() && state) {
- Object obj1;
- apData.dictLookupNF(state, &obj1);
- apData.free();
- obj1.copy(&apData);
- obj1.free();
+ break;
}
dest->initNull();
- // Sanity check on the value we are about to return: it must be a ref to stream
- if (apData.isRef()) {
- apData.fetch(xref, &stream);
- if (stream.isStream()) {
- apData.copy(dest);
- } else {
- error(errSyntaxWarning, -1, "AP points to a non-stream object");
- }
- stream.free();
- }
+ if (apData.isDict() && state)
+ apData.dictLookupNF(state, dest);
+ else if (apData.isRef())
+ apData.copy(dest);
apData.free();
}
GooString * AnnotAppearance::getStateKey(int i) {
Object obj1;
GooString * res = NULL;
- appearDict.dictLookupNF("N", &obj1);
- if (obj1.isDict()) {
+ if (appearDict.dictLookupNF("N", &obj1)->isDict())
res = new GooString(obj1.dictGetKey(i));
- }
obj1.free();
return res;
}
@@ -834,10 +822,8 @@ GooString * AnnotAppearance::getStateKey(int i) {
int AnnotAppearance::getNumStates() {
Object obj1;
int res = 0;
- appearDict.dictLookupNF("N", &obj1);
- if (obj1.isDict()) {
+ if (appearDict.dictLookupNF("N", &obj1)->isDict())
res = obj1.dictGetLength();
- }
obj1.free();
return res;
}
More information about the poppler
mailing list