01: /*
02: Copyright © 2007 Stefano Chizzolini. http://clown.stefanochizzolini.it
03:
04: Contributors:
05: * Stefano Chizzolini (original code developer, http://www.stefanochizzolini.it):
06: contributed code is Copyright © 2007 by Stefano Chizzolini.
07:
08: This file should be part of the source code distribution of "PDF Clown library"
09: (the Program): see the accompanying README files for more info.
10:
11: This Program is free software; you can redistribute it and/or modify it under
12: the terms of the GNU General Public License as published by the Free Software
13: Foundation; either version 2 of the License, or (at your option) any later version.
14:
15: This Program is distributed in the hope that it will be useful, but WITHOUT ANY
16: WARRANTY, either expressed or implied; without even the implied warranty of
17: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more details.
18:
19: You should have received a copy of the GNU General Public License along with this
20: Program (see README files); if not, go to the GNU website (http://www.gnu.org/).
21:
22: Redistribution and use, with or without modification, are permitted provided that such
23: redistributions retain the above copyright notice, license and disclaimer, along with
24: this list of conditions.
25: */
26:
27: package it.stefanochizzolini.clown.documents.contents.objects;
28:
29: import it.stefanochizzolini.clown.documents.contents.LineDash;
30: import it.stefanochizzolini.clown.objects.IPdfNumber;
31: import it.stefanochizzolini.clown.objects.PdfArray;
32: import it.stefanochizzolini.clown.objects.PdfDirectObject;
33: import it.stefanochizzolini.clown.objects.PdfInteger;
34:
35: import java.util.Arrays;
36: import java.util.List;
37:
38: /**
39: 'Set the line dash pattern' operation [PDF:1.6:4.3.3].
40:
41: @author Stefano Chizzolini
42: @version 0.0.4, 06/17/07
43: @since 0.0.4
44: */
45: public final class SetLineDash extends Operation {
46: // <class>
47: // <static>
48: // <fields>
49: public static final String Operator = "d";
50:
51: // </fields>
52: // </static>
53:
54: // <dynamic>
55: // <constructors>
56: public SetLineDash(int phase, int unitsOn, int unitsOff) {
57: super (Operator, Arrays.asList(new PdfArray(
58: new PdfDirectObject[] { new PdfInteger(unitsOn),
59: new PdfInteger(unitsOff) }), new PdfInteger(
60: phase)));
61: }
62:
63: public SetLineDash(List<PdfDirectObject> operands) {
64: super (Operator, operands);
65: }
66:
67: // </constructors>
68:
69: // <interface>
70: // <public>
71: public LineDash getValue() {
72: // 1. Dash array.
73: PdfArray baseDashArray = (PdfArray) operands.get(0);
74: int[] dashArray = new int[baseDashArray.size()];
75: for (int index = 0, length = dashArray.length; index < length; index++) {
76: dashArray[index] = (int) ((IPdfNumber) baseDashArray
77: .get(index)).getNumberValue();
78: }
79: // 2. Dash phase.
80: int dashPhase = (int) ((IPdfNumber) operands.get(1))
81: .getNumberValue();
82:
83: return new LineDash(dashArray, dashPhase);
84: }
85: // </public>
86: // </interface>
87: // </dynamic>
88: // </class>
89: }
|