blob: 6928344306d061afeb8f7d799f8a9b53f01998b8 [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.
*
*/
package org.apache.flex.swf.tags;
import org.apache.flex.swf.TagType;
/**
* Represents a <code>DefineBitsJPEG3</code> tag in a SWF file.
* <p>
* This tag defines a bitmap character with JPEG compression. This tag extends
* DefineBitsJPEG2, adding alpha channel (opacity) data. Opacity/transparency
* information is not a standard feature in JPEG images, so the alpha channel
* information is encoded separately from the JPEG data, and compressed using
* the ZLIB standard for compression. The data format used by the ZLIB library
* is described by Request for Comments (RFCs) documents 1950 to 1952.
* <p>
* The data in this tag begins with the JPEG SOI marker 0xFF, 0xD8 and ends with
* the EOI marker 0xFF, 0xD9. Before version 8 of the SWF file format, SWF files
* could contain an erroneous header of 0xFF, 0xD9, 0xFF, 0xD8 before the JPEG
* SOI marker.
* <p>
* In addition to specifying JPEG data, DefineBitsJPEG2 can also contain PNG
* image data and non-animated GIF89a image data.
* <ul>
* <li>If ImageData begins with the eight bytes 0x89 0x50 0x4E 0x47 0x0D 0x0A
* 0x1A 0x0A, the ImageData contains PNG data.</li>
* <li>If ImageData begins with the six bytes 0x47 0x49 0x46 0x38 0x39 0x61, the
* ImageData contains GIF89a data.</li>
* </ul>
* If ImageData contains PNG or GIF89a data, the optional BitmapAlphaData is not
* supported.
*/
public class DefineBitsJPEG3Tag extends DefineBitsJPEG2Tag
{
/**
* Constructor.
*/
public DefineBitsJPEG3Tag()
{
super(TagType.DefineBitsJPEG3);
}
private long alphaDataOffset;
private byte[] bitmapAlphaData;
/**
* Get count of bytes in ImageData.
*
* @return image data size
*/
public long getAlphaDataOffset()
{
return alphaDataOffset;
}
/**
* Set count of bytes in ImageData.
*
* @param value image data size
*/
public void setAlphaDataOffset(long value)
{
alphaDataOffset = value;
}
/**
* ZLIB compressed array of alpha data. Only supported when tag contains
* JPEG data. One byte per pixel. Total size after decompression must equal
* (width * height) of JPEG image.
*
* @return bitmap alpha data
*/
public byte[] getBitmapAlphaData()
{
return bitmapAlphaData;
}
/**
* ZLIB compressed array of alpha data. Only supported when tag contains
* JPEG data. One byte per pixel. Total size after decompression must equal
* (width * height) of JPEG image.
*
* @param bitmapAlphaData bitmap alpha data
*/
public void setBitmapAlphaData(byte[] bitmapAlphaData)
{
this.bitmapAlphaData = bitmapAlphaData;
}
}