/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.pdfbox.pdfwriter; import org.apache.pdfbox.cos.COSObjectKey; import org.apache.pdfbox.cos.COSBase; /** * this is en entry in the xref section of the physical pdf document * generated by the COSWriter. * * @author Michael Traut */ public class COSWriterXRefEntry implements Comparable<COSWriterXRefEntry> { private long offset; private COSBase object; private COSObjectKey key; private boolean free = false; private static final COSWriterXRefEntry NULLENTRY; static { NULLENTRY = new COSWriterXRefEntry(0, null, new COSObjectKey(0, 65535)); NULLENTRY.setFree(true); } /** * {@inheritDoc} */ @Override public int compareTo(COSWriterXRefEntry obj) { if (obj != null) { if (getKey().getNumber() < obj.getKey().getNumber()) { return -1; } else if (getKey().getNumber() > obj.getKey().getNumber()) { return 1; } return 0; } return -1; } /** * This will return a null entry: 0000000000 65535 f. * * @return null COSWriterXRefEntry */ public static COSWriterXRefEntry getNullEntry() { return NULLENTRY; } /** * This will get the Object key. * * @return The object key. */ public COSObjectKey getKey() { return key; } /** * This will get the offset into the document. * * @return The offset into the document. */ public long getOffset() { return offset; } /** * Gets the xref 'free' attribute. * * @return The free attribute. */ public boolean isFree() { return free; } /** * This will set the free attribute. * * @param newFree The newly freed attribute. */ public void setFree(boolean newFree) { free = newFree; } /** * This will set the object key. * * @param newKey The new object key. */ private void setKey(COSObjectKey newKey) { key = newKey; } /** * The offset attribute. * * @param newOffset The new value for the offset. */ public final void setOffset(long newOffset) { offset = newOffset; } /** * COSWriterXRefEntry constructor comment. * * @param start The start attribute. * @param obj The COS object that this entry represents. * @param keyValue The key to the COS object. */ public COSWriterXRefEntry(long start, COSBase obj, COSObjectKey keyValue) { super(); setOffset(start); setObject(obj); setKey(keyValue); } /** * This will get the object. * * @return The object. */ public COSBase getObject() { return object; } /** * This will set the object for this xref. * * @param newObject The object that is being set. */ private void setObject(COSBase newObject) { object = newObject; } }