/*
 * 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: PreprocessPresentationObject.java 1610839 2014-07-15 20:25:58Z vhennebert $ */

package org.apache.fop.afp.modca;

import java.io.IOException;
import java.io.OutputStream;

import org.apache.fop.afp.modca.triplets.FullyQualifiedNameTriplet;
import org.apache.fop.afp.util.BinaryUtils;

The Preprocess Presentation Object structured field specifies presentation parameters for a data object that has been mapped as a resource.
/** * The Preprocess Presentation Object structured field specifies presentation * parameters for a data object that has been mapped as a resource. */
public class PreprocessPresentationObject extends AbstractTripletStructuredObject { private static final byte TYPE_OTHER = (byte)0x92; private static final byte TYPE_OVERLAY = (byte)0xDF; private static final byte TYPE_IMAGE = (byte)0xFB; private byte objType = TYPE_OTHER; private byte objOrent; // object always processed at 0 degree orientation private int objXOffset = -1; private int objYOffset = -1;
Main constructor
Params:
  • prePresObj – the presentation object to be preprocessed
/** * Main constructor * * @param prePresObj the presentation object to be preprocessed */
public PreprocessPresentationObject(AbstractTripletStructuredObject prePresObj) { if (prePresObj instanceof ImageObject || prePresObj instanceof Overlay) { if (prePresObj instanceof ImageObject) { this.objType = TYPE_IMAGE; } else { this.objType = TYPE_OVERLAY; } setFullyQualifiedName( FullyQualifiedNameTriplet.TYPE_BEGIN_RESOURCE_OBJECT_REF, FullyQualifiedNameTriplet.FORMAT_CHARSTR, prePresObj.getFullyQualifiedName()); } else { this.objType = TYPE_OTHER; } }
0 degrees orientation
/** 0 degrees orientation */
public static final byte ORIENTATION_ZERO_DEGREES = 1;
90 degrees orientation
/** 90 degrees orientation */
public static final byte ORIENTATION_90_DEGREES = 2;
180 degrees orientation
/** 180 degrees orientation */
public static final byte ORIENTATION_180_DEGREES = 4;
270 degrees orientation
/** 270 degrees orientation */
public static final byte ORIENTATION_270_DEGREES = 8;
Sets the object orientations relative to media leading edge
Params:
  • orientation – the object orientations relative to media leading edge
/** * Sets the object orientations relative to media leading edge * * @param orientation the object orientations relative to media leading edge */
public void setOrientation(byte orientation) { objOrent = orientation; }
Sets the X axis origin for object content
Params:
  • xOffset – the X axis origin for object content
/** * Sets the X axis origin for object content * * @param xOffset the X axis origin for object content */
public void setXOffset(int xOffset) { this.objXOffset = xOffset; }
Sets the Y axis origin for object content
Params:
  • yOffset – the Y axis origin for object content
/** * Sets the Y axis origin for object content * * @param yOffset the Y axis origin for object content */
public void setYOffset(int yOffset) { this.objYOffset = yOffset; }
{@inheritDoc}
/** {@inheritDoc} */
public void writeStart(OutputStream os) throws IOException { super.writeStart(os); byte[] data = new byte[9]; copySF(data, Type.PROCESS, Category.DATA_RESOURCE); byte[] l = BinaryUtils.convert(19 + getTripletDataLength(), 2); data[1] = l[0]; // Length byte 1 data[2] = l[1]; // Length byte 1 os.write(data); }
{@inheritDoc}
/** {@inheritDoc} */
public void writeContent(OutputStream os) throws IOException { byte[] data = new byte[12]; byte[] l = BinaryUtils.convert(12 + getTripletDataLength(), 2); data[0] = l[0]; // RGLength data[1] = l[1]; // RGLength data[2] = objType; // ObjType data[3] = 0x00; // Reserved data[4] = 0x00; // Reserved data[5] = objOrent; // ObjOrent if (objXOffset > 0) { byte[] xOff = BinaryUtils.convert(objYOffset, 3); data[6] = xOff[0]; // XocaOset (not specified) data[7] = xOff[1]; // XocaOset data[8] = xOff[2]; // XocaOset } else { data[6] = (byte)0xFF; // XocaOset (not specified) data[7] = (byte)0xFF; // XocaOset data[8] = (byte)0xFF; // XocaOset } if (objYOffset > 0) { byte[] yOff = BinaryUtils.convert(objYOffset, 3); data[9] = yOff[0]; // YocaOset (not specified) data[10] = yOff[1]; // YocaOset data[11] = yOff[2]; // YocaOset } else { data[9] = (byte)0xFF; // YocaOset (not specified) data[10] = (byte)0xFF; // YocaOset data[11] = (byte)0xFF; // YocaOset } os.write(data); writeTriplets(os); } }