package pt.tumba.parser.swf; import java.io.IOException; /** * A SWF Rectangle structure * *@author unknown *@created 15 de Setembro de 2002 */ public class Rect { /** * Description of the Field */ protected int bitSize = -1; /** * Description of the Field */ protected int minX; /** * Description of the Field */ protected int minY; /** * Description of the Field */ protected int maxX; /** * Description of the Field */ protected int maxY; /** * Gets the minX attribute of the Rect object * *@return The minX value */ public int getMinX() { return minX; } /** * Gets the minY attribute of the Rect object * *@return The minY value */ public int getMinY() { return minY; } /** * Gets the maxX attribute of the Rect object * *@return The maxX value */ public int getMaxX() { return maxX; } /** * Gets the maxY attribute of the Rect object * *@return The maxY value */ public int getMaxY() { return maxY; } /** * Sets the minX attribute of the Rect object * *@param minX The new minX value */ public void setMinX(int minX) { this.minX = minX; bitSize = -1; } /** * Sets the minY attribute of the Rect object * *@param minY The new minY value */ public void setMinY(int minY) { this.minY = minY; bitSize = -1; } /** * Sets the maxX attribute of the Rect object * *@param maxX The new maxX value */ public void setMaxX(int maxX) { this.maxX = maxX; bitSize = -1; } /** * Sets the maxY attribute of the Rect object * *@param maxY The new maxY value */ public void setMaxY(int maxY) { this.maxY = maxY; bitSize = -1; } /** * Constructor for the Rect object * *@param minX Description of the Parameter *@param minY Description of the Parameter *@param maxX Description of the Parameter *@param maxY Description of the Parameter */ public Rect(int minX, int minY, int maxX, int maxY) { this.minX = minX; this.minY = minY; this.maxX = maxX; this.maxY = maxY; } /** * Constructor for the Rect object * *@param in Description of the Parameter *@exception IOException Description of the Exception */ public Rect(InStream in) throws IOException { in.synchBits(); bitSize = (int) in.readUBits(5); minX = (int) in.readSBits(bitSize); maxX = (int) in.readSBits(bitSize); minY = (int) in.readSBits(bitSize); maxY = (int) in.readSBits(bitSize); } /** * Constructor for the Rect object */ public Rect() { this(0, 0, 11000, 8000); //default size } /** * Calculate the minimum bit size based on the current values * *@return The bitSize value */ protected int getBitSize() { if (bitSize == -1) { //bitsize not defined int bsMinX = OutStream.determineSignedBitSize(minX); int bsMaxX = OutStream.determineSignedBitSize(maxX); int bsMinY = OutStream.determineSignedBitSize(minY); int bsMaxY = OutStream.determineSignedBitSize(maxY); bitSize = bsMinY; if (bitSize < bsMaxX) { bitSize = bsMaxX; } if (bitSize < bsMinX) { bitSize = bsMinX; } if (bitSize < bsMaxY) { bitSize = bsMaxY; } } return bitSize; } /** * Gets the length attribute of the Rect object * *@return The length value */ public long getLength() { int bits = 5 + (getBitSize() * 4); int bytes = bits / 8; if (bytes * 8 < bits) { bytes++; } return bytes; } /** * Write the rect contents to the output stream * *@param out Description of the Parameter *@exception IOException Description of the Exception */ public void write(OutStream out) throws IOException { out.flushBits(); out.writeUBits(5, getBitSize()); out.writeSBits(bitSize, minX); out.writeSBits(bitSize, maxX); out.writeSBits(bitSize, minY); out.writeSBits(bitSize, maxY); out.flushBits(); } /** * Description of the Method * *@return Description of the Return Value */ public String toString() { return "Rect bitsize=" + bitSize + " (" + minX + "," + minY + ")-(" + maxX + "," + maxY + ")"; } }