01: package com.etymon.pj.object;
02:
03: import java.io.*;
04: import java.util.*;
05: import com.etymon.pj.*;
06:
07: /**
08: The base class for all high level objects and page markings.
09: @author Nassib Nassar
10: */
11: public abstract class BaseObject implements Cloneable {
12:
13: /**
14: Returns a deep copy of this object.
15: @return a deep copy of this object.
16: @exception CloneNotSupportedException if the instance can not be cloned.
17: */
18: public abstract Object clone() throws CloneNotSupportedException;
19:
20: /**
21: Writes this object to a file in PDF format.
22: @param raf the file to write to.
23: @return the number of bytes written.
24: @exception IOException if an I/O error occurs.
25: */
26: public abstract long writePdf(OutputStream os) throws IOException;
27:
28: /**
29: Writes a char to a stream.
30: @param os the stream to write to.
31: @param c the character to write.
32: @return the number of bytes written.
33: @exception IOException if an I/O error occurs.
34: */
35: public static long write(OutputStream os, char c)
36: throws IOException {
37: os.write((int) c);
38: return 1;
39: }
40:
41: /**
42: Writes a byte[] to a stream.
43: @param os the stream to write to.
44: @param b the byte[] to write.
45: @return the number of bytes written.
46: @exception IOException if an I/O error occurs.
47: */
48: public static long write(OutputStream os, byte[] b)
49: throws IOException {
50: os.write(b);
51: return b.length;
52: }
53:
54: /**
55: Writes an Object to a stream.
56: @param os the stream to write to.
57: @param obj the Object to write.
58: @return the number of bytes written.
59: @exception IOException if an I/O error occurs.
60: */
61: public static long write(OutputStream os, Object obj)
62: throws IOException {
63: return write(os, obj.toString().getBytes());
64: }
65:
66: /**
67: Writes an Object to a stream followed by a carriage return.
68: @param os the stream to write to.
69: @param obj the Object to write.
70: @return the number of bytes written.
71: @exception IOException if an I/O error occurs.
72: */
73: public static long writeln(OutputStream os, Object obj)
74: throws IOException {
75: return write(os, obj) + write(os, PjConst.PDF_EOL);
76: }
77:
78: /**
79: Returns a string representation of this object in PDF format.
80: @return the string representation.
81: */
82: public String toString() {
83: ByteArrayOutputStream baos = new ByteArrayOutputStream();
84: try {
85: writePdf(baos);
86: } catch (IOException e) {
87: return null;
88: }
89: return baos.toString();
90: }
91:
92: }
|