Options
All
  • Public
  • Public/Protected
  • All
Menu

png-pong

Index

Type aliases

Callback

Callback: function

Type declaration

    • (arg: T): void
    • Parameters

      • arg: T

      Returns void

DataCallback

DataCallback: function

Type declaration

    • (array: Uint8Array, readOffset: number, x: number, y: number, length: number): void
    • Parameters

      • array: Uint8Array
      • readOffset: number
      • x: number
      • y: number
      • length: number

      Returns void

EventCallback

EventCallback: function

Type declaration

    • (arg: EventPayloads[K]): void
    • Parameters

      • arg: EventPayloads[K]

      Returns void

RGB

RGB: [number, number, number]

RGBA

RGBA: [number, number, number, number]

ZlibReadCallback

ZlibReadCallback: function

Type declaration

    • (array: Uint8Array, readOffset: number, dataOffset: number, length: number): void
    • Parameters

      • array: Uint8Array
      • readOffset: number
      • dataOffset: number
      • length: number

      Returns void

validBitDepth

validBitDepth: 1 | 2 | 4 | 8 | 16

Variables

BLOCK_SIZE

BLOCK_SIZE: 65535 = 65535

IHDRLength

IHDRLength: number = 4 // Chunk length identifier+ 4 // chunk header+ 13 // actual IHDR length+ 4

IHDR length is always 13 bytes. So we can store this as a constant.

PRE_HEADER

PRE_HEADER: "‰PNG" = "‰PNG"

TABLE

TABLE: Int32Array = new Int32Array([0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d])

ZLIB_WINDOW_SIZE

ZLIB_WINDOW_SIZE: number = 1024 * 32

identifier

identifier: "IEND" = "IEND"

length

length: number = identifier.length // identifier+ 4 // CRC+ 4

Functions

RGBAtoPalettedArray

  • RGBAtoPalettedArray(rgba: Uint8ClampedArray, extraPaletteSpaces: number): PalettedArray

ab2str

  • ab2str(buf: ArrayBuffer): any

adler32_buf

  • adler32_buf(buf: Uint8Array | Uint8ClampedArray, offset: number, length: number, seed?: undefined | number): number
  • Calculate the ADLER32 checksum of a section of a buffer. Code largely taken from: https://github.com/SheetJS/js-adler32

    export

    Parameters

    • buf: Uint8Array | Uint8ClampedArray
    • offset: number
    • length: number
    • Optional seed: undefined | number

    Returns number

alphaBlend

  • alphaBlend(color1: RGB, color2: RGB, alpha: number): number[]

calculateBufferLength

  • calculateBufferLength(width: number, height: number, numColors: number): number
  • Parameters

    • width: number
    • height: number
    • numColors: number

    Returns number

calculateIDATLength

  • calculateIDATLength(width: number, height: number): number
  • Calculate the length of an IDAT chunk. Because it uses both ZLib chunking and a row filter byte at the start of each row, it isn't as simple as width * height.

    export

    Parameters

    • width: number
    • height: number

    Returns number

calculatePaletteLength

  • calculatePaletteLength(numColors: number): number
  • PNG files can have palettes of varying sizes, up to 256 colors. If we want to try to save some space, we can use a smaller palette.

    export

    Parameters

    • numColors: number

    Returns number

calculateZlibbedLength

  • calculateZlibbedLength(dataLength: number): number
  • Zlibbed data takes up more space than the raw data itself - we aren't compressing it but we do need to add block headers and the like.

    export

    Parameters

    • dataLength: number

    Returns number

checkPreheader

crc32

  • crc32(buf: Uint8Array | Uint8ClampedArray, offset: number, length: number, previous?: undefined | number): number

createBlankPNG

  • createBlankPNG(width: number, height: number, backgroundColor: number[], extraPaletteSpaces?: number): ArrayBuffer
  • Parameters

    • width: number
    • height: number
    • backgroundColor: number[]
    • Default value extraPaletteSpaces: number = 0

    Returns ArrayBuffer

createFromRGBAArray

  • createFromRGBAArray(width: number, height: number, rgbaData: Uint8ClampedArray, extraPaletteSpaces?: number): ArrayBuffer
  • Create a PngPong-suitable PNG ArrayBuffer from an existing RGBA array. Combine this with PNGJS to transform an existing PNG image into something PngPong can use.

    export

    Parameters

    • width: number
    • height: number
    • rgbaData: Uint8ClampedArray
    • Default value extraPaletteSpaces: number = 0

      How many extra palette entries should we make available for new colors, after we've added the colors from the existing array?

    Returns ArrayBuffer

createWithMetadata

  • createWithMetadata(width: number, height: number, paletteSize: number, backgroundColor?: RGB): ArrayBuffer
  • Create a PngPong-suitable ArrayBuffer based on the arguments provided.

    export

    Parameters

    • width: number
    • height: number
    • paletteSize: number

      Must be at least 1, and at least 2 if specifying a background color.

    • Optional backgroundColor: RGB

    Returns ArrayBuffer

findOrAddColor

  • findOrAddColor(rgba: Uint8ClampedArray, offset: number, rgbPalette: Uint8ClampedArray, alphaPalette: Uint8ClampedArray): number
  • Parameters

    • rgba: Uint8ClampedArray
    • offset: number
    • rgbPalette: Uint8ClampedArray
    • alphaPalette: Uint8ClampedArray

    Returns number

findRGBA

  • findRGBA(rgba: Uint8ClampedArray, offset: number, rgbPalette: Uint8ClampedArray, alphaPalette: Uint8ClampedArray): number
  • Parameters

    • rgba: Uint8ClampedArray
    • offset: number
    • rgbPalette: Uint8ClampedArray
    • alphaPalette: Uint8ClampedArray

    Returns number

fromBase64

  • fromBase64(str: string): string
  • Quick function to convert from Base64, works in both Node and browser.

    export

    Parameters

    • str: string

    Returns string

readIHDR

  • Read out the values contained within IHDR. Does not let you edit these values, as changing pretty much any of them would make the IDAT chunk totally invalid.

    export

    Parameters

    Returns IHDROptions

readPalette

  • Take an ArrayWalker and parse out the PLTE chunk and, if it exists, the tRNS chunk. If it exists, the tRNS chunk MUST immediately follow the PLTE chunk.

    export

    Parameters

    Returns Palette

readZlib

  • Utility function to parse out a Zlib-encoded block (at a compression level of 0 only). Will skip over Zlib headers and block markers, and call the dataCallback repeatedly when actual data is available.

    export

    Parameters

    Returns void

str2ab

  • str2ab(str: string): Uint8Array

swap16

  • swap16(val: any): number

swap32

  • swap32(val: any): number

toBase64

  • toBase64(str: string): string
  • Quick function to convert a string to Base64, that works in both Node and the browser

    export

    Parameters

    • str: string

    Returns string

writeIDAT

  • Write an IDAT chunk all at once. Typically used when creating a new blank image.

    export

    Parameters

    Returns void

writeIDATConstant

  • writeIDATConstant(walker: ArrayBufferWalker, value: number, width: number, height: number): void
  • Write an IDAT chunk without wasting memory on a source ArrayBuffer - if we want it all to be one palette index.

    export

    Parameters

    • walker: ArrayBufferWalker
    • value: number

      The palette index we want all the pixels to be

    • width: number
    • height: number

    Returns void

writeIEND

writeIHDR

writePalette

  • writePalette(walker: ArrayBufferWalker, rgbPalette: Uint8ClampedArray, alphaPalette: Uint8ClampedArray): void
  • Write both the PLTE and tRNS chunks of the PNG file.

    export

    Parameters

    • walker: ArrayBufferWalker
    • rgbPalette: Uint8ClampedArray
    • alphaPalette: Uint8ClampedArray

    Returns void

writePreheader

Generated using TypeDoc