123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /*
- * 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.goca;
-
- import java.io.IOException;
- import java.io.OutputStream;
-
- import org.apache.fop.afp.util.BinaryUtils;
-
- /**
- * A GOCA Image
- */
- public class GraphicsImage extends AbstractGraphicsDrawingOrder {
-
- /** the maximum image data length */
- public static final short MAX_DATA_LEN = 255;
-
- /** x coordinate */
- private final int x;
-
- /** y coordinate */
- private final int y;
-
- /** width */
- private final int width;
-
- /** height */
- private final int height;
-
- /** image data */
- private final byte[] imageData;
-
- /**
- * Main constructor
- *
- * @param x the x coordinate of the image
- * @param y the y coordinate of the image
- * @param width the image width
- * @param height the image height
- * @param imageData the image data
- */
- public GraphicsImage(int x, int y, int width, int height, byte[] imageData) {
- this.x = x;
- this.y = y;
- this.width = width;
- this.height = height;
- this.imageData = imageData;
- }
-
- /** {@inheritDoc} */
- public int getDataLength() {
- //TODO:
- return 0;
- }
-
- byte getOrderCode() {
- return (byte)0xD1;
- }
-
- /** {@inheritDoc} */
- public void writeToStream(OutputStream os) throws IOException {
- byte[] xcoord = BinaryUtils.convert(x, 2);
- byte[] ycoord = BinaryUtils.convert(y, 2);
- byte[] w = BinaryUtils.convert(width, 2);
- byte[] h = BinaryUtils.convert(height, 2);
- byte[] startData = new byte[] {
- getOrderCode(), // GBIMG order code
- (byte) 0x0A, // LENGTH
- xcoord[0],
- xcoord[1],
- ycoord[0],
- ycoord[1],
- 0x00, // FORMAT
- 0x00, // RES
- w[0], // WIDTH
- w[1], //
- h[0], // HEIGHT
- h[1] //
- };
- os.write(startData);
-
- byte[] dataHeader = new byte[] {
- (byte) 0x92 // GIMD
- };
- final int lengthOffset = 1;
- writeChunksToStream(imageData, dataHeader, lengthOffset, MAX_DATA_LEN, os);
-
- byte[] endData = new byte[] {
- (byte) 0x93, // GEIMG order code
- 0x00 // LENGTH
- };
- os.write(endData);
- }
-
- /** {@inheritDoc} */
- public String toString() {
- return "GraphicsImage{x=" + x
- + ", y=" + y
- + ", width=" + width
- + ", height=" + height
- + "}";
- }
- }
|