NAME

Image::Leptonica::Func::arrayaccess

VERSION

version 0.04

arrayaccess.c

arrayaccess.c

   Access within an array of 32-bit words

         l_int32     l_getDataBit()
         void        l_setDataBit()
         void        l_clearDataBit()
         void        l_setDataBitVal()
         l_int32     l_getDataDibit()
         void        l_setDataDibit()
         void        l_clearDataDibit()
         l_int32     l_getDataQbit()
         void        l_setDataQbit()
         void        l_clearDataQbit()
         l_int32     l_getDataByte()
         void        l_setDataByte()
         l_int32     l_getDataTwoBytes()
         void        l_setDataTwoBytes()
         l_int32     l_getDataFourBytes()
         void        l_setDataFourBytes()

   Note that these all require 32-bit alignment, and hence an input
   ptr to l_uint32.  However, this is not enforced by the compiler.
   Instead, we allow the use of a void* ptr, because the line ptrs
   are an efficient way to get random access (see pixGetLinePtrs()).
   It is then necessary to cast internally within each function
   because ptr arithmetic requires knowing the size of the units
   being referenced.

FUNCTIONS

l_clearDataBit

void l_clearDataBit ( void *line, l_int32 n )

l_clearDataBit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: void

Action: sets the (1-bit) pixel to 0

l_clearDataDibit

void l_clearDataDibit ( void *line, l_int32 n )

l_clearDataDibit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: void

Action: sets the (2-bit) pixel to 0

l_clearDataQbit

void l_clearDataQbit ( void *line, l_int32 n )

l_clearDataQbit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: void

Action: sets the (4-bit) pixel to 0

l_getDataBit

l_int32 l_getDataBit ( void *line, l_int32 n )

l_getDataBit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: val of the nth (1-bit) pixel.

l_getDataByte

l_int32 l_getDataByte ( void *line, l_int32 n )

l_getDataByte()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: value of the n-th (byte) pixel

l_getDataDibit

l_int32 l_getDataDibit ( void *line, l_int32 n )

l_getDataDibit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: val of the nth (2-bit) pixel.

l_getDataFourBytes

l_int32 l_getDataFourBytes ( void *line, l_int32 n )

l_getDataFourBytes()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: value of the n-th (4-byte) pixel

l_getDataQbit

l_int32 l_getDataQbit ( void *line, l_int32 n )

l_getDataQbit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: val of the nth (4-bit) pixel.

l_getDataTwoBytes

l_int32 l_getDataTwoBytes ( void *line, l_int32 n )

l_getDataTwoBytes()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: value of the n-th (2-byte) pixel

l_setDataBit

void l_setDataBit ( void *line, l_int32 n )

l_setDataBit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
    Return: void

Action: sets the pixel to 1

l_setDataBitVal

void l_setDataBitVal ( void *line, l_int32 n, l_int32 val )

l_setDataBitVal()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
            val   (val to be inserted: 0 or 1)
    Return: void

Notes:
    (1) This is an accessor for a 1 bpp pix.
    (2) It is actually a little slower than using:
          if (val == 0)
              l_ClearDataBit(line, n);
          else
              l_SetDataBit(line, n);

l_setDataByte

void l_setDataByte ( void *line, l_int32 n, l_int32 val )

l_setDataByte()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
            val   (val to be inserted: 0 - 0xff)
    Return: void

l_setDataDibit

void l_setDataDibit ( void *line, l_int32 n, l_int32 val )

l_setDataDibit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
            val   (val to be inserted: 0 - 3)
    Return: void

l_setDataFourBytes

void l_setDataFourBytes ( void *line, l_int32 n, l_int32 val )

l_setDataFourBytes()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
            val   (val to be inserted: 0 - 0xffffffff)
    Return: void

l_setDataQbit

void l_setDataQbit ( void *line, l_int32 n, l_int32 val )

l_setDataQbit()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
            val   (val to be inserted: 0 - 0xf)
    Return: void

l_setDataTwoBytes

void l_setDataTwoBytes ( void *line, l_int32 n, l_int32 val )

l_setDataTwoBytes()

    Input:  line  (ptr to beginning of data line)
            n     (pixel index)
            val   (val to be inserted: 0 - 0xffff)
    Return: void

AUTHOR

Zakariyya Mughal <zmughal@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Zakariyya Mughal.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.