blob: ced3ac4970ef3262901743be392a1a23b178acc9 [file] [log] [blame]
/*
* 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.
*/
/* $Id$ */
package org.apache.fop.pdf;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import org.apache.commons.io.output.CountingOutputStream;
/**
* class representing a named destination
*/
public class PDFDestination extends PDFObject {
/**
* ID Reference for this destination
*/
private String idRef;
/**
* PDFReference (object reference) for this destination
*/
private Object goToReference;
/**
* Create a named destination
* @param idRef ID Reference for this destination (the name of the destination)
* @param goToRef Object reference to the GoTo Action
*/
public PDFDestination(String idRef, Object goToRef) {
super();
this.goToReference = goToRef;
this.idRef = idRef;
}
/** {@inheritDoc} */
protected int output(OutputStream stream) throws IOException {
CountingOutputStream cout = new CountingOutputStream(stream);
Writer writer = PDFDocument.getWriterFor(cout);
formatObject(getIDRef(), cout, writer);
writer.write(' ');
formatObject(goToReference, cout, writer);
writer.flush();
return cout.getCount();
}
/**
* Sets the GoToReference in the associated DestinationData object.
*
* @param goToReference the reference to set in the associated DestinationData object.
* @deprecated use setGoToReference(Object) instead
*/
public void setGoToReference(String goToReference) {
this.goToReference = goToReference;
}
/**
* Sets the GoToReference in the associated DestinationData object.
*
* @param goToReference the reference to set in the associated DestinationData object.
*/
public void setGoToReference(Object goToReference) {
this.goToReference = goToReference;
}
/**
* Returns the GoToReference from the associated DestinationData object.
*
* @return the GoToReference from the associated DestinationData object.
*/
public Object getGoToReference() {
return this.goToReference;
}
/**
* Returns the RefID from the associated DestinationData object.
*
* @return the RefID from the associated DestinationData object.
*/
public String getIDRef() {
return this.idRef;
}
/**
* Check if this equals another object.
*
* @param obj the object to compare
* @return true if this equals other object
*/
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || !(obj instanceof PDFDestination)) {
return false;
}
PDFDestination dest = (PDFDestination)obj;
if (dest.getIDRef().equals(this.getIDRef())) {
return true;
}
return false;
}
/** {@inheritDoc} */
public int hashCode() {
return getIDRef().hashCode();
}
}