001: /**
002: * Copyright (c) 2003-2006, 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.graphics;
031:
032: import org.pdfbox.cos.COSArray;
033: import org.pdfbox.cos.COSBase;
034: import org.pdfbox.cos.COSInteger;
035: import org.pdfbox.cos.COSNumber;
036:
037: import org.pdfbox.pdmodel.common.COSArrayList;
038: import org.pdfbox.pdmodel.common.COSObjectable;
039:
040: import java.util.List;
041:
042: /**
043: * This class represents the line dash pattern for a graphics state. See PDF
044: * Reference 1.5 section 4.3.2
045: *
046: * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
047: * @version $Revision: 1.6 $
048: */
049: public class PDLineDashPattern implements COSObjectable {
050: private COSArray lineDashPattern = null;
051:
052: /**
053: * Creates a blank line dash pattern. With no dashes and a phase of 0.
054: */
055: public PDLineDashPattern() {
056: lineDashPattern = new COSArray();
057: lineDashPattern.add(new COSArray());
058: lineDashPattern.add(new COSInteger(0));
059: }
060:
061: /**
062: * Constructs a line dash pattern from an existing array.
063: *
064: * @param ldp The existing line dash pattern.
065: */
066: public PDLineDashPattern(COSArray ldp) {
067: lineDashPattern = ldp;
068: }
069:
070: /**
071: * Constructs a line dash pattern from an existing array.
072: *
073: * @param ldp The existing line dash pattern.
074: * @param phase The phase for the line dash pattern.
075: */
076: public PDLineDashPattern(COSArray ldp, int phase) {
077: lineDashPattern = new COSArray();
078: lineDashPattern.add(ldp);
079: lineDashPattern.add(new COSInteger(phase));
080: }
081:
082: /**
083: * {@inheritDoc}
084: */
085: public COSBase getCOSObject() {
086: return lineDashPattern;
087: }
088:
089: /**
090: * This will get the line dash pattern phase. The dash phase specifies the
091: * distance into the dash pattern at which to start the dash.
092: *
093: * @return The line dash pattern phase.
094: */
095: public int getPhaseStart() {
096: COSNumber phase = (COSNumber) lineDashPattern.get(1);
097: return phase.intValue();
098: }
099:
100: /**
101: * This will set the line dash pattern phase.
102: *
103: * @param phase The new line dash patter phase.
104: */
105: public void setPhaseStart(int phase) {
106: lineDashPattern.set(1, new COSInteger(phase));
107: }
108:
109: /**
110: * This will return a list of java.lang.Integer objects that represent the line
111: * dash pattern appearance.
112: *
113: * @return The line dash pattern.
114: */
115: public List getDashPattern() {
116: COSArray dashPatterns = (COSArray) lineDashPattern.get(0);
117: return COSArrayList.convertIntegerCOSArrayToList(dashPatterns);
118: }
119:
120: /**
121: * Get the line dash pattern as a COS object.
122: *
123: * @return The cos array line dash pattern.
124: */
125: public COSArray getCOSDashPattern() {
126: return (COSArray) lineDashPattern.get(0);
127: }
128:
129: /**
130: * This will replace the existing line dash pattern.
131: *
132: * @param dashPattern A list of java.lang.Integer objects.
133: */
134: public void setDashPattern(List dashPattern) {
135: lineDashPattern.set(0, COSArrayList
136: .converterToCOSArray(dashPattern));
137: }
138: }
|