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.pdfwriter;
031:
032: import org.pdfbox.persistence.util.COSObjectKey;
033:
034: import org.pdfbox.cos.COSBase;
035:
036: /**
037: * this is en entry in the xref section of the physical pdf document
038: * generated by the COSWriter.
039: *
040: * @author Michael Traut
041: * @version $Revision: 1.7 $
042: */
043: public class COSWriterXRefEntry implements Comparable {
044: private long offset;
045: private COSBase object;
046: private COSObjectKey key;
047: private boolean free = false;
048:
049: /**
050: * {@inheritDoc}
051: */
052: public int compareTo(Object obj) {
053: if (obj instanceof COSWriterXRefEntry) {
054: return (int) (getKey().getNumber() - ((COSWriterXRefEntry) obj)
055: .getKey().getNumber());
056: } else {
057: return -1;
058: }
059: }
060:
061: /**
062: * This will get the Object key.
063: *
064: * @return The object key.
065: */
066: public COSObjectKey getKey() {
067: return key;
068: }
069:
070: /**
071: * This will get the offset into the document.
072: *
073: * @return The offset into the document.
074: */
075: public long getOffset() {
076: return offset;
077: }
078:
079: /**
080: * Gets the xref 'free' attribute.
081: *
082: * @return The free attribute.
083: */
084: public boolean isFree() {
085: return free;
086: }
087:
088: /**
089: * This will set the free attribute.
090: *
091: * @param newFree The newly freed attribute.
092: */
093: public void setFree(boolean newFree) {
094: free = newFree;
095: }
096:
097: /**
098: * This will set the object key.
099: *
100: * @param newKey The new object key.
101: */
102: private void setKey(COSObjectKey newKey) {
103: key = newKey;
104: }
105:
106: /**
107: * The offset attribute.
108: *
109: * @param newOffset The new value for the offset.
110: */
111: public void setOffset(long newOffset) {
112: offset = newOffset;
113: }
114:
115: /**
116: * COSWriterXRefEntry constructor comment.
117: *
118: * @param start The start attribute.
119: * @param obj The COS object that this entry represents.
120: * @param keyValue The key to the COS object.
121: */
122: public COSWriterXRefEntry(long start, COSBase obj,
123: COSObjectKey keyValue) {
124: super ();
125: setOffset(start);
126: setObject(obj);
127: setKey(keyValue);
128: }
129:
130: /**
131: * This will get the object.
132: *
133: * @return The object.
134: */
135: public COSBase getObject() {
136: return object;
137: }
138:
139: /**
140: * This will set the object for this xref.
141: *
142: * @param newObject The object that is being set.
143: */
144: private void setObject(COSBase newObject) {
145: object = newObject;
146: }
147: }
|