/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.pdfbox.pdmodel.documentinterchange.taggedpdf; import org.apache.pdfbox.cos.COSArray; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDMarkedContent; /** * An artifact marked content. * * @author Johannes Koch * */ public class PDArtifactMarkedContent extends PDMarkedContent { public PDArtifactMarkedContent(COSDictionary properties) { super(COSName.ARTIFACT, properties); } /** * Gets the type (Type). * * @return the type */ public String getType() { return this.getProperties().getNameAsString(COSName.TYPE); } /** * Gets the artifact's bounding box (BBox). * * @return the artifact's bounding box */ public PDRectangle getBBox() { PDRectangle retval = null; COSArray a = (COSArray) this.getProperties().getDictionaryObject( COSName.BBOX); if (a != null) { retval = new PDRectangle(a); } return retval; } /** * Is the artifact attached to the top edge? * * @return <code>true</code> if the artifact is attached to the top edge, * <code>false</code> otherwise */ public boolean isTopAttached() { return this.isAttached("Top"); } /** * Is the artifact attached to the bottom edge? * * @return <code>true</code> if the artifact is attached to the bottom edge, * <code>false</code> otherwise */ public boolean isBottomAttached() { return this.isAttached("Bottom"); } /** * Is the artifact attached to the left edge? * * @return <code>true</code> if the artifact is attached to the left edge, * <code>false</code> otherwise */ public boolean isLeftAttached() { return this.isAttached("Left"); } /** * Is the artifact attached to the right edge? * * @return <code>true</code> if the artifact is attached to the right edge, * <code>false</code> otherwise */ public boolean isRightAttached() { return this.isAttached("Right"); } /** * Gets the subtype (Subtype). * * @return the subtype */ public String getSubtype() { return this.getProperties().getNameAsString(COSName.SUBTYPE); } /** * Is the artifact attached to the given edge? * * @param edge the edge * @return <code>true</code> if the artifact is attached to the given edge, * <code>false</code> otherwise */ private boolean isAttached(String edge) { COSArray a = (COSArray) this.getProperties().getDictionaryObject( COSName.ATTACHED); if (a != null) { for (int i = 0; i < a.size(); i++) { if (edge.equals(a.getName(i))) { return true; } } } return false; } }