001: /*
002: * Copyright (c) 2007, intarsys consulting GmbH
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * - Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * - 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: *
014: * - Neither the name of intarsys nor the names of its contributors may be used
015: * to endorse or promote products derived from this software without specific
016: * prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
022: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
023: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
024: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
025: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
026: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
027: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
028: * POSSIBILITY OF SUCH DAMAGE.
029: */
030: package de.intarsys.pdf.font;
031:
032: import de.intarsys.pdf.pd.AbstractBitFlags;
033:
034: /**
035: * The flags of a font descriptor.
036: * <p>
037: * The following bits are defined (more may exist).
038: * </p>
039: * <ul>
040: * <li>0: fixed pitch
041: * <li>1: serif
042: * <li>2: symbolic
043: * <li>3: script
044: * <li>5: non symbolic
045: * <li>6: italic
046: * <li>16: all capital
047: * <li>17: small caps
048: * <li>18: force bold
049: * </ul>
050: */
051: public class FontDescriptorFlags extends AbstractBitFlags {
052: public static final int Bit_FixedPitch = 1;
053:
054: public static final int Bit_Serif = 1 << 1;
055:
056: public static final int Bit_Symbolic = 1 << 2;
057:
058: public static final int Bit_Script = 1 << 3;
059:
060: public static final int Bit_Nonsymbolic = 1 << 5;
061:
062: public static final int Bit_Italic = 1 << 6;
063:
064: public static final int Bit_AllCap = 1 << 16;
065:
066: public static final int Bit_SmallCap = 1 << 17;
067:
068: public static final int Bit_ForceBold = 1 << 18;
069:
070: private PDFontDescriptor fontDescriptor;
071:
072: public FontDescriptorFlags(PDFontDescriptor fontDescriptor) {
073: this .fontDescriptor = fontDescriptor;
074: }
075:
076: public void setAllCap(boolean flag) {
077: set(Bit_AllCap, flag);
078: }
079:
080: public boolean isAllCap() {
081: return isSetAnd(Bit_AllCap);
082: }
083:
084: public void setFixedPitch(boolean flag) {
085: set(Bit_FixedPitch, flag);
086: }
087:
088: public boolean isFixedPitch() {
089: return isSetAnd(Bit_FixedPitch);
090: }
091:
092: public void setForceBold(boolean flag) {
093: set(Bit_ForceBold, flag);
094: }
095:
096: public boolean isForceBold() {
097: return isSetAnd(Bit_ForceBold);
098: }
099:
100: public void setItalic(boolean flag) {
101: set(Bit_Italic, flag);
102: }
103:
104: public boolean isItalic() {
105: return isSetAnd(Bit_Italic);
106: }
107:
108: public void setNonsymbolic(boolean flag) {
109: set(Bit_Nonsymbolic, flag);
110: set(Bit_Symbolic, !flag);
111: }
112:
113: public boolean isNonsymbolic() {
114: return isSetAnd(Bit_Nonsymbolic);
115: }
116:
117: public void setScript(boolean flag) {
118: set(Bit_Script, flag);
119: }
120:
121: public boolean isScript() {
122: return isSetAnd(Bit_Script);
123: }
124:
125: public void setSerif(boolean flag) {
126: set(Bit_Serif, flag);
127: }
128:
129: public boolean isSerif() {
130: return isSetAnd(Bit_Serif);
131: }
132:
133: public void setSmallCap(boolean flag) {
134: set(Bit_SmallCap, flag);
135: }
136:
137: public boolean isSmallCap() {
138: return isSetAnd(Bit_SmallCap);
139: }
140:
141: public void setSymbolic(boolean flag) {
142: set(Bit_Symbolic, flag);
143: set(Bit_Nonsymbolic, !flag);
144: }
145:
146: public boolean isSymbolic() {
147: return isSetAnd(Bit_Symbolic);
148: }
149:
150: protected PDFontDescriptor getFontDescriptor() {
151: return fontDescriptor;
152: }
153:
154: protected void setValue(int newValue) {
155: getFontDescriptor().setFlagsValue(newValue);
156: }
157:
158: protected int getValue() {
159: return getFontDescriptor().getFlagsValue();
160: }
161: }
|