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.COSDictionary;
035: import org.pdfbox.cos.COSFloat;
036: import org.pdfbox.cos.COSNumber;
037:
038: import org.pdfbox.pdmodel.common.COSObjectable;
039:
040: import org.pdfbox.pdmodel.font.PDFont;
041: import org.pdfbox.pdmodel.font.PDFontFactory;
042:
043: import java.io.IOException;
044:
045: /**
046: * This class represents a font setting used for the graphics state. A font setting is a font and a
047: * font size. Maybe there is a better name for this?
048: *
049: * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
050: * @version $Revision: 1.4 $
051: */
052: public class PDFontSetting implements COSObjectable {
053: private COSArray fontSetting = null;
054:
055: /**
056: * Creates a blank font setting, font will be null, size will be 1.
057: */
058: public PDFontSetting() {
059: fontSetting = new COSArray();
060: fontSetting.add(null);
061: fontSetting.add(new COSFloat(1));
062: }
063:
064: /**
065: * Constructs a font setting from an existing array.
066: *
067: * @param fs The new font setting value.
068: */
069: public PDFontSetting(COSArray fs) {
070: fontSetting = fs;
071: }
072:
073: /**
074: * {@inheritDoc}
075: */
076: public COSBase getCOSObject() {
077: return fontSetting;
078: }
079:
080: /**
081: * This will get the font for this font setting.
082: *
083: * @return The font for this setting of null if one was not found.
084: *
085: * @throws IOException If there is an error getting the font.
086: */
087: public PDFont getFont() throws IOException {
088: PDFont retval = null;
089: COSBase font = fontSetting.get(0);
090: if (font instanceof COSDictionary) {
091: retval = PDFontFactory.createFont((COSDictionary) font);
092: }
093: return retval;
094: }
095:
096: /**
097: * This will set the font for this font setting.
098: *
099: * @param font The new font.
100: */
101: public void setFont(PDFont font) {
102: fontSetting.set(0, font);
103: }
104:
105: /**
106: * This will get the size of the font.
107: *
108: * @return The size of the font.
109: */
110: public float getFontSize() {
111: COSNumber size = (COSNumber) fontSetting.get(1);
112: return size.floatValue();
113: }
114:
115: /**
116: * This will set the size of the font.
117: *
118: * @param size The new size of the font.
119: */
120: public void setFontSize(float size) {
121: fontSetting.set(1, new COSFloat(size));
122: }
123: }
|