001: /**
002: * Copyright (c) 2003-2005, www.pdfbox.org
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms, with or without
006: * modification, are permitted provided that the following conditions are met:
007: *
008: * 1. Redistributions of source code must retain the above copyright notice,
009: * this list of conditions and the following disclaimer.
010: * 2. Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: * 3. Neither the name of pdfbox; nor the names of its
014: * contributors may be used to endorse or promote products derived from this
015: * software without specific prior written permission.
016: *
017: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
018: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
019: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
020: * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
021: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
022: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
023: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
024: * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
025: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
026: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
027: *
028: * http://www.pdfbox.org
029: *
030: */package org.pdfbox.pdmodel.interactive.annotation;
031:
032: import org.pdfbox.cos.COSBase;
033: import org.pdfbox.cos.COSDictionary;
034: import org.pdfbox.cos.COSArray;
035: import org.pdfbox.cos.COSInteger;
036:
037: import org.pdfbox.pdmodel.common.COSObjectable;
038: import org.pdfbox.pdmodel.graphics.PDLineDashPattern;
039:
040: /**
041: * This class represents a PDF /BS entry the border style dictionary.
042: *
043: * @author Paul King
044: * @version $Revision: 1.1 $
045: */
046: public class PDBorderStyleDictionary implements COSObjectable {
047:
048: /*
049: * The various values of the style for the border as defined in the PDF 1.6
050: * reference Table 8.13
051: */
052:
053: /**
054: * Constant for the name of a solid style.
055: */
056: public static final String STYLE_SOLID = "S";
057:
058: /**
059: * Constant for the name of a dashed style.
060: */
061: public static final String STYLE_DASHED = "D";
062:
063: /**
064: * Constant for the name of a beveled style.
065: */
066: public static final String STYLE_BEVELED = "B";
067:
068: /**
069: * Constant for the name of a inset style.
070: */
071: public static final String STYLE_INSET = "I";
072:
073: /**
074: * Constant for the name of a underline style.
075: */
076: public static final String STYLE_UNDERLINE = "U";
077:
078: private COSDictionary dictionary;
079:
080: /**
081: * Constructor.
082: */
083: public PDBorderStyleDictionary() {
084: dictionary = new COSDictionary();
085: }
086:
087: /**
088: * Constructor.
089: *
090: * @param dict
091: * a border style dictionary.
092: */
093: public PDBorderStyleDictionary(COSDictionary dict) {
094: dictionary = dict;
095: }
096:
097: /**
098: * returns the dictionary.
099: *
100: * @return the dictionary
101: */
102: public COSDictionary getDictionary() {
103: return dictionary;
104: }
105:
106: /**
107: * returns the dictionary.
108: *
109: * @return the dictionary
110: */
111: public COSBase getCOSObject() {
112: return dictionary;
113: }
114:
115: /**
116: * This will set the border width in points, 0 = no border.
117: *
118: * @param w
119: * float the width in points
120: */
121: public void setWidth(float w) {
122: getDictionary().setFloat("W", w);
123: }
124:
125: /**
126: * This will retrieve the border width in points, 0 = no border.
127: *
128: * @return flaot the width of the border in points
129: */
130: public float getWidth() {
131: return getDictionary().getFloat("W", 1);
132: }
133:
134: /**
135: * This will set the border style, see the STYLE_* constants for valid values.
136: *
137: * @param s
138: * the border style to use
139: */
140: public void setStyle(String s) {
141: getDictionary().setName("S", s);
142: }
143:
144: /**
145: * This will retrieve the border style, see the STYLE_* constants for valid
146: * values.
147: *
148: * @return the style of the border
149: */
150: public String getStyle() {
151: return getDictionary().getNameAsString("S", STYLE_SOLID);
152: }
153:
154: /**
155: * This will set the dash style used for drawing the border.
156: *
157: * @param d
158: * the dash style to use
159: */
160: public void setDashStyle(PDLineDashPattern d) {
161: COSArray array = null;
162: if (d != null) {
163: array = d.getCOSDashPattern();
164: }
165: getDictionary().setItem("D", array);
166: }
167:
168: /**
169: * This will retrieve the dash style used for drawing the border.
170: *
171: * @return the dash style of the border
172: */
173: public PDLineDashPattern getDashStyle() {
174: COSArray d = (COSArray) getDictionary()
175: .getDictionaryObject("D");
176: if (d == null) {
177: d = new COSArray();
178: d.add(new COSInteger(3));
179: getDictionary().setItem("D", d);
180: }
181: return new PDLineDashPattern(d, 0);
182: }
183:
184: }
|