001: /*
002: * $Id: RtfElement.java 2808 2007-05-30 10:58:16Z psoares33 $
003: * $Name: $
004: *
005: * Copyright 2001, 2002, 2003, 2004 by Mark Hall
006: *
007: * The contents of this file are subject to the Mozilla Public License Version 1.1
008: * (the "License"); you may not use this file except in compliance with the License.
009: * You may obtain a copy of the License at http://www.mozilla.org/MPL/
010: *
011: * Software distributed under the License is distributed on an "AS IS" basis,
012: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
013: * for the specific language governing rights and limitations under the License.
014: *
015: * The Original Code is 'iText, a free JAVA-PDF library'.
016: *
017: * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
018: * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie.
019: * All Rights Reserved.
020: * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
021: * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved.
022: *
023: * Contributor(s): all the names of the contributors are added in the source code
024: * where applicable.
025: *
026: * Alternatively, the contents of this file may be used under the terms of the
027: * LGPL license (the ?GNU LIBRARY GENERAL PUBLIC LICENSE?), in which case the
028: * provisions of LGPL are applicable instead of those above. If you wish to
029: * allow use of your version of this file only under the terms of the LGPL
030: * License and not to allow others to use your version of this file under
031: * the MPL, indicate your decision by deleting the provisions above and
032: * replace them with the notice and other provisions required by the LGPL.
033: * If you do not delete the provisions above, a recipient may use your version
034: * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
035: *
036: * This library is free software; you can redistribute it and/or modify it
037: * under the terms of the MPL as stated above or under the terms of the GNU
038: * Library General Public License as published by the Free Software Foundation;
039: * either version 2 of the License, or any later version.
040: *
041: * This library is distributed in the hope that it will be useful, but WITHOUT
042: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
043: * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
044: * details.
045: *
046: * If you didn't download this code from the following link, you should check if
047: * you aren't using an obsolete version:
048: * http://www.lowagie.com/iText/
049: */
050:
051: package com.lowagie.text.rtf;
052:
053: import java.io.IOException;
054: import java.io.OutputStream;
055:
056: import com.lowagie.text.rtf.document.RtfDocument;
057:
058: /**
059: * RtfElement is the base class for all RTF Element classes
060: *
061: * @version $Id: RtfElement.java 2808 2007-05-30 10:58:16Z psoares33 $
062: * @author Mark Hall (mhall@edu.uni-klu.ac.at)
063: * @author Thomas Bickel (tmb99@inode.at)
064: */
065: public abstract class RtfElement implements RtfBasicElement {
066: /**
067: * The RtfDocument this RtfElement belongs to
068: */
069: protected RtfDocument document = null;
070: /**
071: * Whether this RtfElement is in a table
072: */
073: protected boolean inTable = false;
074: /**
075: * Whether this RtfElement is in a header
076: */
077: protected boolean inHeader = false;
078:
079: /**
080: * Constructs a RtfElement belonging to the specified RtfDocument.
081: *
082: * @param doc The RtfDocument this RtfElement belongs to
083: */
084: public RtfElement(RtfDocument doc) {
085: super ();
086: this .document = doc;
087: }
088:
089: /**
090: * Transforms an integer into its String representation and then returns the bytes
091: * of that string.
092: *
093: * @param i The integer to convert
094: * @return A byte array representing the integer
095: */
096: public byte[] intToByteArray(int i) {
097: return Integer.toString(i).getBytes();
098: }
099:
100: /**
101: * Returns the content of the RtfElement in a byte array.
102: *
103: * @return An empty byte array
104: * @deprecated replaced by {@link #writeContent(OutputStream)}
105: */
106: public abstract byte[] write();
107:
108: /**
109: * Writes the element content to the given output stream.
110: */
111: public void writeContent(final OutputStream out) throws IOException {
112: try {
113: byte[] content = write();
114: out.write(content);
115: } catch (OutOfMemoryError e) {
116: System.out.println(getClass());
117: throw (e);
118: } catch (RuntimeException e) {
119: System.out.println(getClass());
120: throw (e);
121: }
122: }
123:
124: /**
125: * Sets the RtfDocument this RtfElement belongs to
126: *
127: * @param doc The RtfDocument to use
128: */
129: public void setRtfDocument(RtfDocument doc) {
130: this .document = doc;
131: }
132:
133: /**
134: * Gets whether this RtfElement is in a table
135: *
136: * @return Whether this RtfElement is in a table
137: */
138: public boolean isInTable() {
139: return inTable;
140: }
141:
142: /**
143: * Sets whether this RtfElement is in a table
144: *
145: * @param inTable <code>True</code> if this RtfElement is in a table, <code>false</code> otherwise
146: */
147: public void setInTable(boolean inTable) {
148: this .inTable = inTable;
149: }
150:
151: /**
152: * Sets whether this RtfElement is in a header
153: *
154: * @param inHeader <code>True</code> if this RtfElement is in a header, <code>false</code> otherwise
155: */
156: public void setInHeader(boolean inHeader) {
157: this.inHeader = inHeader;
158: }
159:
160: }
|