All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.royale.swf.io.IInputBitStream Maven / Gradle / Ivy

The newest version!
/*
 *
 *  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.royale.swf.io;

import java.io.Closeable;

/**
 * Read SWF primitive data types from a byte stream.
 */
interface IInputBitStream extends Closeable
{
    /**
     * Discard the data left in the bit value cache. Always call this method
     * after reading bit values and before reading other byte-aligned data.
     */
    void byteAlign();

    /**
     * Get the offset of the read cursor.
     * 
     * @return offset
     */
    long getOffset();

    /**
     * Set the read boundary. Reading beyond the boundary will raise exception.
     * 

* The read boundary can move forward and backward. This is because * DefineSprite has nested tags. The read boundary for a DefineSprite tag is * at the end of all the nested tags, but it moves backwards when starting * to read the nested ones. * * @param offset boundary offset to the beginning of the stream. */ void setReadBoundary(long offset); /** * Get the read boundary. * * @return read boundary */ long getReadBoundary(); /** * Read all the bytes from the current position up to the read boundary. * This is useful for reading SWF tags with variable length field at the * end, like DoABC. * * @return byte array */ byte[] readToBoundary(); /** * Read raw bytes. * * @param length number of bytes to read * @return array of bytes */ byte[] read(int length); /** * Read 1-bit boolean value. * * @return boolean */ boolean readBit(); /** * Read 64-bit floating-point number * * @return double */ double readDOUBLE(); /** * Read encoded unsigned 32-bit integer * * @return integer */ long readEncodedU32(); /** * Read fixed-point bit values. Fixed-point bit values are 32-bit 16.16 * signed, fixed-point numbers. That is, the high 16 bits represent the * number before the decimal point, and the low 16 bits represent the number * after the decimal point. A fixed-point bit value is identical to a * signed-bit value, but the interpretation is different. For example, a * 19-bit, signed-bit value of 0x30000 is interpreted as 196608 decimal. The * 19-bit, fixed-point bit value 0x30000 is interpreted as 3.0. The format * of this value is effectively 3.16 rather than 16.16. * * @param length number of bits to read * @return integer */ float readFB(int length); /** * Read 32-bit 16.16 fixed point number. * * @return fixed point number */ float readFIXED(); /** * Read 16-bit 8.8 fixed point number * * @return fixed point number */ float readFIXED8(); /** * Read 32-bit floating-point number * * @return float */ float readFLOAT(); /** * Read signed bit values. * * @param length number of bits to read * @return integer */ int readSB(int length); /** * Read 16-bit signed integer. * * @return integer */ short readSI16(); /** * Read 32-bit signed integer. * * @return integer */ int readSI32(); /** * Read 64-bit signed integer. * * @return integer */ long readSI64(); /** * Read 8-bit signed integer. * * @return integer */ byte readSI8(); /** * Read string. * * @return string */ String readString(); /** * Read unsigned bit values. * * @param length number of bits to read * @return integer */ int readUB(int length); /** * Read 16-bit unsigned integer. * * @return integer */ int readUI16(); /** * Read 24-bit unsigned integer. * * @return integer */ int readUI24(); /** * Read 32-bit unsigned integer. * * @return integer */ long readUI32(); /** * Read 8-bit unsigned integer. * * @return integer */ short readUI8(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy