1 17 18 19 20 package org.apache.fop.pdf; 21 22 import java.util.Map ; 23 import java.util.Iterator ; 24 25 28 public class PDFGState extends PDFObject { 29 30 31 public static final String GSTATE_LINE_WIDTH = "LW"; 32 33 public static final String GSTATE_LINE_CAP = "LC"; 34 35 public static final String GSTATE_LINE_JOIN = "LJ"; 36 37 public static final String GSTATE_MITER_LIMIT = "ML"; 38 39 public static final String GSTATE_DASH_PATTERN = "D"; 40 41 public static final String GSTATE_RENDERING_INTENT = "RI"; 42 43 public static final String GSTATE_OVERPRINT_STROKE = "OP"; 44 45 public static final String GSTATE_OVERPRINT_FILL = "op"; 46 47 public static final String GSTATE_OVERPRINT_MODE = "OPM"; 48 49 public static final String GSTATE_FONT = "Font"; 50 51 public static final String GSTATE_BLACK_GENERATION = "BG"; 52 53 public static final String GSTATE_BLACK_GENERATION2 = "BG2"; 54 55 public static final String GSTATE_UNDERCOLOR_REMOVAL = "UCR"; 56 57 public static final String GSTATE_UNDERCOLOR_REMOVAL2 = "UCR2"; 58 59 public static final String GSTATE_TRANSFER_FUNCTION = "TR"; 60 61 public static final String GSTATE_TRANSFER_FUNCTION2 = "TR2"; 62 63 public static final String GSTATE_HALFTONE_DICT = "HT"; 64 65 public static final String GSTATE_HALFTONE_PHASE = "HTP"; 66 67 public static final String GSTATE_FLATNESS = "FL"; 68 69 public static final String GSTATE_SMOOTHNESS = "SM"; 70 71 public static final String GSTATE_STRIKE_ADJ = "SA"; 72 73 public static final String GSTATE_BLEND_MODE = "BM"; 74 75 public static final String GSTATE_SOFT_MASK = "SMask"; 76 77 public static final String GSTATE_ALPHA_STROKE = "CA"; 78 79 public static final String GSTATE_ALPHA_NONSTROKE = "ca"; 80 81 public static final String GSTATE_ALPHA_SOURCE_FLAG = "AIS"; 82 83 public static final String GSTATE_TEXT_KNOCKOUT = "TK"; 84 85 86 87 public static final PDFGState DEFAULT; 88 89 static { 90 DEFAULT = new PDFGState(); 91 Map vals = DEFAULT.values; 92 102 103 vals.put(GSTATE_ALPHA_STROKE, new Float (1.0)); 104 vals.put(GSTATE_ALPHA_NONSTROKE, new Float (1.0)); 105 } 106 107 private Map values = new java.util.HashMap (); 108 109 113 public String getName() { 114 return "GS" + getObjectNumber(); 115 } 116 117 123 public void setAlpha(float val, boolean fill) { 124 if (fill) { 125 values.put(GSTATE_ALPHA_NONSTROKE, new Float (val)); 126 } else { 127 values.put(GSTATE_ALPHA_STROKE, new Float (val)); 128 } 129 } 130 131 135 public void addValues(PDFGState state) { 136 values.putAll(state.values); 137 } 138 139 143 public void addValues(Map vals) { 144 values.putAll(vals); 145 } 146 147 150 public String toPDFString() { 151 StringBuffer sb = new StringBuffer (64); 152 sb.append(getObjectID()); 153 sb.append("<<\n/Type /ExtGState\n"); 154 appendVal(sb, GSTATE_ALPHA_NONSTROKE); 155 appendVal(sb, GSTATE_ALPHA_STROKE); 156 157 sb.append(">>\nendobj\n"); 158 return sb.toString(); 159 } 160 161 private void appendVal(StringBuffer sb, String name) { 162 Object val = values.get(name); 163 if (val != null) { 164 sb.append("/" + name + " " + val + "\n"); 165 } 166 } 167 168 177 178 181 public boolean equals(Object obj) { 182 if (obj == this) { 183 return true; 184 } 185 if (!(obj instanceof PDFGState)) { 186 return false; 187 } 188 Map vals1 = values; 189 Map vals2 = ((PDFGState)obj).values; 190 if (vals1.size() != vals2.size()) { 191 return false; 192 } 193 for (Iterator iter = vals1.keySet().iterator(); iter.hasNext();) { 194 Object str = iter.next(); 195 Object obj1 = vals1.get(str); 196 if (!obj1.equals(vals2.get(str))) { 197 return false; 198 } 199 } 200 return true; 201 } 202 } 203 204 | Popular Tags |