blob: 359f686023f8fbafaa221cc2bd3ed7a1704849b1 [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.afp.modca;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.fop.afp.util.BinaryUtils;
/**
* An Object Environment Group (OEG) may be associated with an object and is contained
* within the object's begin-end envelope.
* The object environment group defines the object's origin and orientation on the page,
* and can contain font and color attribute table information. The scope of an object
* environment group is the scope of its containing object.
*
* An application that creates a data-stream document may omit some of the parameters
* normally contained in the object environment group, or it may specify that one or
* more default values are to be used.
*/
public final class ObjectEnvironmentGroup extends AbstractNamedAFPObject {
/** the PresentationEnvironmentControl for the object environment group */
private PresentationEnvironmentControl presentationEnvironmentControl;
/** the ObjectAreaDescriptor for the object environment group */
private ObjectAreaDescriptor objectAreaDescriptor;
/** the ObjectAreaPosition for the object environment group */
private ObjectAreaPosition objectAreaPosition;
/** the MapImageObject for the object environment group (optional) */
private MapImageObject mapImageObject;
/** the DataDescriptor for the object environment group */
private AbstractDescriptor dataDescriptor;
/** the MapDataResource for the object environment group */
private MapDataResource mapDataResource;
/** the MapContainerData for the object environment group */
private MapContainerData mapContainerData;
/**
* Constructor for the ObjectEnvironmentGroup, this takes a
* name parameter which must be 8 characters long.
*
* @param name the object environment group name
*/
public ObjectEnvironmentGroup(String name) {
super(name);
}
/**
* Sets the Object Area Descriptor
*
* @param objectAreaDescriptor the object area descriptor
*/
public void setObjectAreaDescriptor(ObjectAreaDescriptor objectAreaDescriptor) {
this.objectAreaDescriptor = objectAreaDescriptor;
}
/**
* Sets the Object Area Position
*
* @param objectAreaPosition the object area position
*/
public void setObjectAreaPosition(ObjectAreaPosition objectAreaPosition) {
this.objectAreaPosition = objectAreaPosition;
}
/**
* Sets the Map Image Object (MIO).
*
* @param mapImageObject the MIO structured field
*/
public void setMapImageObject(MapImageObject mapImageObject) {
this.mapImageObject = mapImageObject;
}
/** {@inheritDoc} */
protected void writeStart(OutputStream os) throws IOException {
byte[] data = new byte[17];
copySF(data, Type.BEGIN, Category.OBJECT_ENVIRONMENT_GROUP);
int tripletDataLength = getTripletDataLength();
int sfLen = data.length + tripletDataLength - 1;
byte[] len = BinaryUtils.convert(sfLen, 2);
data[1] = len[0];
data[2] = len[1];
os.write(data);
writeTriplets(os);
}
/** {@inheritDoc} */
protected void writeContent(OutputStream os) throws IOException {
super.writeContent(os);
if (presentationEnvironmentControl != null) {
presentationEnvironmentControl.writeToStream(os);
}
if (objectAreaDescriptor != null) {
objectAreaDescriptor.writeToStream(os);
}
if (objectAreaPosition != null) {
objectAreaPosition.writeToStream(os);
}
if (mapImageObject != null) {
mapImageObject.writeToStream(os);
}
if (mapContainerData != null) {
mapContainerData.writeToStream(os);
}
if (mapDataResource != null) {
mapDataResource.writeToStream(os);
}
if (dataDescriptor != null) {
dataDescriptor.writeToStream(os);
}
}
/** {@inheritDoc} */
protected void writeEnd(OutputStream os) throws IOException {
byte[] data = new byte[17];
copySF(data, Type.END, Category.OBJECT_ENVIRONMENT_GROUP);
os.write(data);
}
/**
* Sets the presentation environment control
*
* @param presentationEnvironmentControl the presentation environment control
*/
public void setPresentationEnvironmentControl(
PresentationEnvironmentControl presentationEnvironmentControl) {
this.presentationEnvironmentControl = presentationEnvironmentControl;
}
/**
* Sets the data descriptor
*
* @param dataDescriptor the data descriptor
*/
public void setDataDescriptor(AbstractDescriptor dataDescriptor) {
this.dataDescriptor = dataDescriptor;
}
/**
* Sets the map data resource
*
* @param mapDataResource the map data resource
*/
public void setMapDataResource(MapDataResource mapDataResource) {
this.mapDataResource = mapDataResource;
}
/**
* Sets the map container data
*
* @param mapContainerData the map container data
*/
public void setMapContainerData(MapContainerData mapContainerData) {
this.mapContainerData = mapContainerData;
}
/**
* Returns the object area descriptor
*
* @return the object area descriptor
*/
public ObjectAreaDescriptor getObjectAreaDescriptor() {
return this.objectAreaDescriptor;
}
}