Home » pdfbox-1.1.0-src » org.apache.pdfbox.pdmodel.interactive.annotation » [javadoc | source]

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
   10    *
   11    * Unless required by applicable law or agreed to in writing, software
   12    * distributed under the License is distributed on an "AS IS" BASIS,
   13    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    * See the License for the specific language governing permissions and
   15    * limitations under the License.
   16    */
   17   package org.apache.pdfbox.pdmodel.interactive.annotation;
   18   
   19   import org.apache.pdfbox.cos.COSArray;
   20   import org.apache.pdfbox.cos.COSDictionary;
   21   import org.apache.pdfbox.cos.COSName;
   22   import org.apache.pdfbox.pdmodel.graphics.color.PDGamma;
   23   import org.apache.pdfbox.pdmodel.common.PDRectangle;
   24   
   25   /**
   26    * This is the class that represents a rectangular or eliptical annotation
   27    * Introduced in PDF 1.3 specification .
   28    *
   29    * @author Paul King
   30    * @version $Revision: 1.1 $
   31    */
   32   public class PDAnnotationSquareCircle extends PDAnnotationMarkup
   33   {
   34   
   35       /**
   36        * Constant for a Rectangular type of annotation.
   37        */
   38       public static final String SUB_TYPE_SQUARE = "Square";
   39       /**
   40        * Constant for an Eliptical type of annotation.
   41        */
   42       public static final String SUB_TYPE_CIRCLE = "Circle";
   43   
   44       /**
   45        * Creates a Circle or Square annotation of the specified sub type.
   46        *
   47        * @param subType the subtype the annotation represents.
   48            */
   49       public PDAnnotationSquareCircle( String subType )
   50       {
   51           super();
   52           setSubtype( subType );
   53       }
   54   
   55       /**
   56        * Creates a Line annotation from a COSDictionary, expected to be a correct
   57        * object definition.
   58        *
   59        * @param field
   60        *            the PDF objet to represent as a field.
   61        */
   62       public PDAnnotationSquareCircle( COSDictionary field )
   63       {
   64           super( field );
   65       }
   66   
   67   
   68       /**
   69        * This will set interior colour of the drawn area
   70        * Colour is in DeviceRGB colourspace.
   71        *
   72        * @param ic
   73        *            colour in the DeviceRGB colourspace.
   74        *
   75        */
   76       public void setInteriorColour( PDGamma ic )
   77       {
   78           getDictionary().setItem( "IC", ic );
   79       }
   80   
   81       /**
   82        * This will retrieve the interior colour of the drawn area
   83        * Colour is in DeviceRGB colourspace.
   84        *
   85        *
   86        * @return PDGamma object representing the colour.
   87        *
   88        */
   89       public PDGamma getInteriorColour()
   90       {
   91   
   92           COSArray ic = (COSArray) getDictionary().getItem(
   93                   COSName.getPDFName( "IC" ) );
   94           if (ic != null)
   95           {
   96               return new PDGamma( ic );
   97           }
   98           else
   99           {
  100               return null;
  101           }
  102       }
  103   
  104   
  105       /**
  106        * This will set the border effect dictionary, specifying effects to be applied
  107        * when drawing the line.
  108        *
  109        * @param be The border effect dictionary to set.
  110        *
  111        */
  112       public void setBorderEffect( PDBorderEffectDictionary be )
  113       {
  114           getDictionary().setItem( "BE", be );
  115       }
  116   
  117       /**
  118        * This will retrieve the border effect dictionary, specifying effects to be
  119        * applied used in drawing the line.
  120        *
  121        * @return The border effect dictionary
  122        */
  123       public PDBorderEffectDictionary getBorderEffect()
  124       {
  125           COSDictionary be = (COSDictionary) getDictionary().getDictionaryObject( "BE" );
  126           if (be != null)
  127           {
  128               return new PDBorderEffectDictionary( be );
  129           }
  130           else
  131           {
  132               return null;
  133           }
  134       }
  135   
  136       /**
  137        * This will set the rectangle difference rectangle. Giving the difference
  138        * between the annotations rectangle and where the drawing occurs.
  139            * (To take account of any effects applied through the BE entry forexample)
  140        *
  141        * @param rd the rectangle difference
  142        *
  143        */
  144       public void setRectDifference( PDRectangle rd )
  145       {
  146           getDictionary().setItem( "RD", rd );
  147       }
  148   
  149       /**
  150        * This will get the rectangle difference rectangle. Giving the difference
  151        * between the annotations rectangle and where the drawing occurs.
  152            * (To take account of any effects applied through the BE entry forexample)
  153        *
  154        * @return the rectangle difference
  155        */
  156       public PDRectangle getRectDifference()
  157       {
  158           COSArray rd = (COSArray) getDictionary().getDictionaryObject( "RD" );
  159           if (rd != null)
  160           {
  161               return new PDRectangle( rd );
  162           }
  163           else
  164           {
  165               return null;
  166           }
  167       }
  168   
  169       /**
  170        * This will set the sub type (and hence appearance, AP taking precedence) For
  171        * this annotation. See the SUB_TYPE_XXX constants for valid values.
  172        *
  173        * @param subType The subtype of the annotation
  174        */
  175       public void setSubtype( String subType )
  176       {
  177           getDictionary().setName( COSName.SUBTYPE, subType );
  178       }
  179   
  180       /**
  181        * This will retrieve the sub type (and hence appearance, AP taking precedence)
  182        * For this annotation.
  183        *
  184        * @return The subtype of this annotation, see the SUB_TYPE_XXX constants.
  185        */
  186       public String getSubtype()
  187       {
  188           return getDictionary().getNameAsString( COSName.SUBTYPE);
  189       }
  190   
  191       /**
  192        * This will set the border style dictionary, specifying the width and dash
  193        * pattern used in drawing the line.
  194        *
  195        * @param bs the border style dictionary to set.
  196        * TODO not all annotations may have a BS entry
  197        *
  198        */
  199       public void setBorderStyle( PDBorderStyleDictionary bs )
  200       {
  201           this.getDictionary().setItem( "BS", bs);
  202       }
  203   
  204       /**
  205        * This will retrieve the border style dictionary, specifying the width and
  206        * dash pattern used in drawing the line.
  207        *
  208        * @return the border style dictionary.
  209        * TODO not all annotations may have a BS entry
  210        */
  211       public PDBorderStyleDictionary getBorderStyle()
  212       {
  213           COSDictionary bs = (COSDictionary) this.getDictionary().getItem(
  214                   COSName.getPDFName( "BS" ) );
  215           if (bs != null)
  216           {
  217               return new PDBorderStyleDictionary( bs );
  218           }
  219           else
  220           {
  221               return null;
  222           }
  223       }
  224   
  225   }

Home » pdfbox-1.1.0-src » org.apache.pdfbox.pdmodel.interactive.annotation » [javadoc | source]