1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
/*
* 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;
}
}
|