/*
 * 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: IMImageObject.java 1679676 2015-05-16 02:10:42Z adelmelle $ */

package org.apache.fop.afp.modca;

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

import org.apache.fop.afp.ioca.ImageCellPosition;
import org.apache.fop.afp.ioca.ImageInputDescriptor;
import org.apache.fop.afp.ioca.ImageOutputControl;
import org.apache.fop.afp.ioca.ImageRasterData;

An IM image data object specifies the contents of a raster image and its placement on a page, overlay, or page segment. An IM image can be either simple or complex. A simple image is composed of one or more Image Raster Data (IRD) structured fields that define the raster pattern for the entire image. A complex image is divided into regions called image cells. Each image cell is composed of one or more IRD structured fields that define the raster pattern for the image cell, and one Image Cell Position (ICP) structured field that defines the position of the image cell relative to the origin of the entire image. Each ICP also specifies the size of the image cell and a fill rectangle into which the cell is replicated.
/** * An IM image data object specifies the contents of a raster image and * its placement on a page, overlay, or page segment. An IM image can be * either simple or complex. A simple image is composed of one or more Image * Raster Data (IRD) structured fields that define the raster pattern for the * entire image. A complex image is divided into regions called image cells. * Each image cell is composed of one or more IRD structured fields that define * the raster pattern for the image cell, and one Image Cell Position (ICP) * structured field that defines the position of the image cell relative to * the origin of the entire image. Each ICP also specifies the size of the * image cell and a fill rectangle into which the cell is replicated. */
public class IMImageObject extends AbstractNamedAFPObject {
The image output control
/** * The image output control */
private ImageOutputControl imageOutputControl;
The image input descriptor
/** * The image input descriptor */
private ImageInputDescriptor imageInputDescriptor;
The image cell position
/** * The image cell position */
private ImageCellPosition imageCellPosition;
The image rastor data
/** * The image rastor data */
private ImageRasterData imageRasterData;
Constructor for the image object with the specified name, the name must be a fixed length of eight characters.
Params:
  • name – The name of the image.
/** * Constructor for the image object with the specified name, * the name must be a fixed length of eight characters. * * @param name The name of the image. */
public IMImageObject(String name) { super(name); }
Sets the ImageOutputControl.
Params:
  • imageOutputControl – The imageOutputControl to set
/** * Sets the ImageOutputControl. * * @param imageOutputControl The imageOutputControl to set */
public void setImageOutputControl(ImageOutputControl imageOutputControl) { this.imageOutputControl = imageOutputControl; }
Sets the ImageCellPosition.
Params:
  • imageCellPosition – The imageCellPosition to set
/** * Sets the ImageCellPosition. * * @param imageCellPosition The imageCellPosition to set */
public void setImageCellPosition(ImageCellPosition imageCellPosition) { this.imageCellPosition = imageCellPosition; }
Sets the ImageInputDescriptor.
Params:
  • imageInputDescriptor – The imageInputDescriptor to set
/** * Sets the ImageInputDescriptor. * * @param imageInputDescriptor The imageInputDescriptor to set */
public void setImageInputDescriptor(ImageInputDescriptor imageInputDescriptor) { this.imageInputDescriptor = imageInputDescriptor; }
Sets the ImageRastorData.
Params:
  • imageRasterData – The imageRasterData to set
/** * Sets the ImageRastorData. * * @param imageRasterData The imageRasterData to set */
public void setImageRasterData(ImageRasterData imageRasterData) { this.imageRasterData = imageRasterData; }
{@inheritDoc}
/** {@inheritDoc} */
protected void writeContent(OutputStream os) throws IOException { super.writeContent(os); if (imageOutputControl != null) { imageOutputControl.writeToStream(os); } if (imageInputDescriptor != null) { imageInputDescriptor.writeToStream(os); } if (imageCellPosition != null) { imageCellPosition.writeToStream(os); } if (imageRasterData != null) { imageRasterData.writeToStream(os); } }
{@inheritDoc}
/** {@inheritDoc} */
protected void writeStart(OutputStream os) throws IOException { byte[] data = new byte[17]; copySF(data, Type.BEGIN, Category.IM_IMAGE); os.write(data); }
{@inheritDoc}
/** {@inheritDoc} */
protected void writeEnd(OutputStream os) throws IOException { byte[] data = new byte[17]; copySF(data, Type.END, Category.IM_IMAGE); os.write(data); } }