UNPKG

@flashport/flashport

Version:

FlashPort is a TypeScript 2D graphics library that largely replicates the Flash ActionScript 3.0 library

221 lines (220 loc) 9.3 kB
import { IDataInput } from "./IDataInput"; /** * The IDataOutput interface provides a set of methods for writing binary data. * This interface is the I/O counterpart to the IDataInput interface, which * reads binary data. The IDataOutput interface is implemented by the FileStream, Socket * and ByteArray classes. * <p class="- topic/p ">All IDataInput and IDataOutput operations are "bigEndian" by default (the most significant * byte in the sequence is stored at the lowest or first storage address), * and are nonblocking. </p><p class="- topic/p ">Sign extension matters only when you read data, not when you write it. Therefore, you do not need separate * write methods to work with <codeph class="+ topic/ph pr-d/codeph ">IDataInput.readUnsignedByte()</codeph> and * <codeph class="+ topic/ph pr-d/codeph ">IDataInput.readUnsignedShort()</codeph>. In other words:</p><ul class="- topic/ul "><li class="- topic/li ">Use <codeph class="+ topic/ph pr-d/codeph ">IDataOutput.writeByte()</codeph> with <codeph class="+ topic/ph pr-d/codeph ">IDataInput.readUnsignedByte()</codeph> and * <codeph class="+ topic/ph pr-d/codeph ">IDataInput.readByte()</codeph>.</li><li class="- topic/li ">Use <codeph class="+ topic/ph pr-d/codeph ">IDataOutput.writeShort()</codeph> with <codeph class="+ topic/ph pr-d/codeph ">IDataInput.readUnsignedShort()</codeph> and * <codeph class="+ topic/ph pr-d/codeph ">IDataInput.readShort()</codeph>.</li></ul> * * EXAMPLE: * * The following example uses the class <codeph class="+ topic/ph pr-d/codeph ">DataOutputExample</codeph> to write a boolean * and the double-precision floating-point representation of pi to a byte array. This is accomplished * using the following steps: * <ol class="- topic/ol "><li class="- topic/li ">Declare a new ByteArray object instance <codeph class="+ topic/ph pr-d/codeph ">byteArr</codeph>.</li><li class="- topic/li ">Write the byte-equivalent value of the Boolean <codeph class="+ topic/ph pr-d/codeph ">false</codeph> and the double-precision * floating-point equivalent of the mathematical value of pi.</li><li class="- topic/li ">Read back the boolean and double-precision floating-point number.</li></ol><p class="- topic/p ">Notice how a code segment is added at the end to check for end of file errors to ensure that * the byte stream is not read past its end.</p><codeblock xml:space="preserve" class="+ topic/pre pr-d/codeblock "> * package { * import flash.display.Sprite; * import flash.utils.ByteArray; * import flash.errors.EOFError; * * public class DataOutputExample extends Sprite { * public function DataOutputExample() { * var byteArr:ByteArray = new ByteArray(); * * byteArr.writeBoolean(false); * byteArr.writeDouble(Math.PI); * * byteArr.position = 0; * * try { * trace(byteArr.readBoolean()); // false * } * catch(e:EOFError) { * trace(e); // EOFError: Error #2030: End of file was encountered. * } * * try { * trace(byteArr.readDouble()); // 3.141592653589793 * } * catch(e:EOFError) { * trace(e); // EOFError: Error #2030: End of file was encountered. * } * * try { * trace(byteArr.readDouble()); * } * catch(e:EOFError) { * trace(e); // EOFError: Error #2030: End of file was encountered. * } * } * } * } * </codeblock> * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 */ export interface IDataOutput { length: number; position: number; /** * The byte order for the data, either the BIG_ENDIAN or LITTLE_ENDIAN * constant from the Endian class. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 */ endian: string; /** * Used to determine whether the AMF3 or AMF0 format is used when writing or reading binary data using the * writeObject() method. The value is a constant from the ObjectEncoding class. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 */ objectEncoding: number; /** * Writes a Boolean value. A single byte is written according to the value parameter, * either 1 if true or 0 if false. * @param value A Boolean value determining which byte is written. If the parameter is true, * 1 is written; if false, 0 is written. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeBoolean(value: boolean): void; /** * Writes a byte. * The low 8 bits of the * parameter are used; the high 24 bits are ignored. * @param value A byte value as an integer. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeByte(value: number): void; /** * Writes a sequence of bytes from the * specified byte array, bytes, * starting at the byte specified by offset * (using a zero-based index) * with a length specified by length, * into the file stream, byte stream, or byte array. * * If the length parameter is omitted, the default * length of 0 is used and the entire buffer starting at * offset is written. * If the offset parameter is also omitted, the entire buffer is * written. If the offset or length parameter * is out of range, they are clamped to the beginning and end * of the bytes array. * @param bytes The byte array to write. * @param offset A zero-based index specifying the position into the array to begin writing. * @param length An unsigned integer specifying how far into the buffer to write. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeBytes(bytes: IDataInput, offset?: number, length?: number): void; /** * Writes an IEEE 754 double-precision (64-bit) floating point number. * @param value A double-precision (64-bit) floating point number. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeDouble(value: number): void; /** * Writes an IEEE 754 single-precision (32-bit) floating point number. * @param value A single-precision (32-bit) floating point number. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeFloat(value: number): void; /** * Writes a 32-bit signed integer. * @param value A byte value as a signed integer. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeInt(value: number): void; /** * Writes a multibyte string to the file stream, byte stream, or byte array, using the specified character set. * @param value The string value to be written. * @param charSet The string denoting the character set to use. Possible character set strings * include "shift-jis", "cn-gb", "iso-8859-1", and others. * For a complete list, see Supported Character Sets. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 */ writeMultiByte(value: string, charSet: string): void; /** * Writes an object to the file stream, byte stream, or byte array, in AMF serialized * format. * @param object The object to be serialized. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeObject(object: any): void; /** * Writes a 16-bit integer. The low 16 bits of the parameter are used; * the high 16 bits are ignored. * @param value A byte value as an integer. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeShort(value: number): void; /** * Writes a 32-bit unsigned integer. * @param value A byte value as an unsigned integer. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeUnsignedInt(value: number): void; /** * Writes a UTF-8 string to the file stream, byte stream, or byte array. The length of the UTF-8 string in bytes * is written first, as a 16-bit integer, followed by the bytes representing the * characters of the string. * @param value The string value to be written. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? * @throws RangeError If the length is larger than * 65535. */ writeUTF(value: string): void; /** * Writes a UTF-8 string. Similar to writeUTF(), * but does not prefix the string with a 16-bit length word. * @param value The string value to be written. * @langversion 3.0 * @playerversion Flash 9 * @playerversion Lite 4 * @throws throws IOError An I/O error occurred? */ writeUTFBytes(value: string): void; }