Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/main/java/org/verapdf/as/ASAtom.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,17 @@ public class ASAtom implements Comparable<ASAtom> {
public static final ASAtom AF_RELATIONSHIP = new ASAtom("AFRelationship");
public static final ASAtom AFTER = new ASAtom("After");
public static final ASAtom AIS = new ASAtom("AIS");
public static final ASAtom ALT = new ASAtom("Alt");
public static final ASAtom ALL_OFF = new ASAtom("AllOff");
public static final ASAtom ALL_ON = new ASAtom("AllOn");
public static final ASAtom ALPHA = new ASAtom("Alpha");
public static final ASAtom ALT = new ASAtom("Alt");
public static final ASAtom ALTERNATE = new ASAtom("Alternate");
public static final ASAtom ALTERNATES = new ASAtom("Alternates");
public static final ASAtom ANNOT = new ASAtom("Annot");
public static final ASAtom ANNOTS = new ASAtom("Annots");
public static final ASAtom ANTI_ALIAS = new ASAtom("AntiAlias");
public static final ASAtom ANY_OFF = new ASAtom("AnyOff");
public static final ASAtom ANY_ON = new ASAtom("AnyOn");
public static final ASAtom AP = new ASAtom("AP");
public static final ASAtom AP_REF = new ASAtom("APRef");
public static final ASAtom APP = new ASAtom("App");
Expand Down Expand Up @@ -408,6 +412,7 @@ public class ASAtom implements Comparable<ASAtom> {
public static final ASAtom OBJR = new ASAtom("OBJR");
public static final ASAtom OBJ_STM = new ASAtom("ObjStm");
public static final ASAtom OC = new ASAtom("OC");
public static final ASAtom OCMD = new ASAtom("OCMD");
public static final ASAtom OCG = new ASAtom("OCG");
public static final ASAtom OCGS = new ASAtom("OCGs");
public static final ASAtom OCPROPERTIES = new ASAtom("OCProperties");
Expand Down
37 changes: 37 additions & 0 deletions src/main/java/org/verapdf/pd/optionalcontent/PDOCMDDictionary.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.verapdf.pd.optionalcontent;

import org.verapdf.as.ASAtom;
import org.verapdf.cos.COSArray;
import org.verapdf.cos.COSBase;
import org.verapdf.cos.COSObjType;
import org.verapdf.cos.COSObject;

public class PDOCMDDictionary {
public static boolean isVisibleOCMDByP(COSBase property, PDOptionalContentProperties optProperties) {
COSObject ocgProperty = property.getKey(ASAtom.OCGS);
if (ocgProperty == null || ocgProperty.getType() != COSObjType.COS_ARRAY) {
return true;
}
COSArray ocgs = (COSArray) ocgProperty.getDirectBase();
ASAtom pValue = property.getNameKey(ASAtom.P);
for (COSObject obj : ocgs) {
boolean isVisible = optProperties.isVisibleLayer(obj.getStringKey(ASAtom.NAME));
if (isVisible) {
if (pValue == null || ASAtom.ANY_ON.equals(pValue)) {
return true;
}
if (ASAtom.ALL_OFF.equals(pValue)) {
return false;
}
} else {
if (ASAtom.ALL_ON.equals(pValue)) {
return false;
}
if (ASAtom.ANY_OFF.equals(pValue)) {
return true;
}
}
}
return ASAtom.ALL_OFF.equals(pValue) || ASAtom.ALL_ON.equals(pValue);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,7 @@
package org.verapdf.pd.optionalcontent;

import org.verapdf.as.ASAtom;
import org.verapdf.cos.COSArray;
import org.verapdf.cos.COSDictionary;
import org.verapdf.cos.COSObjType;
import org.verapdf.cos.COSObject;
import org.verapdf.cos.*;
import org.verapdf.pd.PDObject;

import java.util.ArrayList;
Expand Down Expand Up @@ -55,6 +52,21 @@ public List<String> getGroupNames() {
return groups;
}

public boolean isContainsName(String name) {
if (name == null) {
return false;
}
COSObject ocgs = getObject().getKey(ASAtom.OCGS);
if (!ocgs.empty() && ocgs.getType() == COSObjType.COS_ARRAY) {
for (COSObject obj : (COSArray) ocgs.getDirectBase()) {
if (!obj.empty() && obj.getType() == COSObjType.COS_DICT && name.equals(obj.getStringKey(ASAtom.NAME))) {
return true;
}
}
}
return false;
}

public boolean isVisibleLayer(String name) {
if (name == null) {
return true;
Expand Down