The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Image::Leptonica::Func::fpix1

VERSION

version 0.04

fpix1.c

  fpix1.c

    This file has basic constructors, destructors and field accessors
    for FPix, FPixa and DPix.  It also has uncompressed read/write.

    FPix Create/copy/destroy
          FPIX          *fpixCreate()
          FPIX          *fpixCreateTemplate()
          FPIX          *fpixClone()
          FPIX          *fpixCopy()
          l_int32        fpixResizeImageData()
          void           fpixDestroy()

    FPix accessors
          l_int32        fpixGetDimensions()
          l_int32        fpixSetDimensions()
          l_int32        fpixGetWpl()
          l_int32        fpixSetWpl()
          l_int32        fpixGetRefcount()
          l_int32        fpixChangeRefcount()
          l_int32        fpixGetResolution()
          l_int32        fpixSetResolution()
          l_int32        fpixCopyResolution()
          l_float32     *fpixGetData()
          l_int32        fpixSetData()
          l_int32        fpixGetPixel()
          l_int32        fpixSetPixel()

    FPixa Create/copy/destroy
          FPIXA         *fpixaCreate()
          FPIXA         *fpixaCopy()
          void           fpixaDestroy()

    FPixa addition
          l_int32        fpixaAddFPix()
          static l_int32 fpixaExtendArray()
          static l_int32 fpixaExtendArrayToSize()

    FPixa accessors
          l_int32        fpixaGetCount()
          l_int32        fpixaChangeRefcount()
          FPIX          *fpixaGetFPix()
          l_int32        fpixaGetFPixDimensions()
          l_int32        fpixaGetPixel()
          l_int32        fpixaSetPixel()

    DPix Create/copy/destroy
          DPIX          *dpixCreate()
          DPIX          *dpixCreateTemplate()
          DPIX          *dpixClone()
          DPIX          *dpixCopy()
          l_int32        dpixResizeImageData()
          void           dpixDestroy()

    DPix accessors
          l_int32        dpixGetDimensions()
          l_int32        dpixSetDimensions()
          l_int32        dpixGetWpl()
          l_int32        dpixSetWpl()
          l_int32        dpixGetRefcount()
          l_int32        dpixChangeRefcount()
          l_int32        dpixGetResolution()
          l_int32        dpixSetResolution()
          l_int32        dpixCopyResolution()
          l_float64     *dpixGetData()
          l_int32        dpixSetData()
          l_int32        dpixGetPixel()
          l_int32        dpixSetPixel()

    FPix serialized I/O
          FPIX          *fpixRead()
          FPIX          *fpixReadStream()
          l_int32        fpixWrite()
          l_int32        fpixWriteStream()
          FPIX          *fpixEndianByteSwap()

    DPix serialized I/O
          DPIX          *dpixRead()
          DPIX          *dpixReadStream()
          l_int32        dpixWrite()
          l_int32        dpixWriteStream()
          DPIX          *dpixEndianByteSwap()

    Print FPix (subsampled, for debugging)
          l_int32        fpixPrintStream()

FUNCTIONS

dpixClone

DPIX * dpixClone ( DPIX *dpix )

  dpixClone()

      Input:  dpix
      Return: same dpix (ptr), or null on error

  Notes:
      (1) See pixClone() for definition and usage.

dpixCopy

DPIX * dpixCopy ( DPIX *dpixd, DPIX *dpixs )

  dpixCopy()

      Input:  dpixd (<optional>; can be null, or equal to dpixs,
                    or different from dpixs)
              dpixs
      Return: dpixd, or null on error

  Notes:
      (1) There are three cases:
            (a) dpixd == null  (makes a new dpix; refcount = 1)
            (b) dpixd == dpixs  (no-op)
            (c) dpixd != dpixs  (data copy; no change in refcount)
          If the refcount of dpixd > 1, case (c) will side-effect
          these handles.
      (2) The general pattern of use is:
             dpixd = dpixCopy(dpixd, dpixs);
          This will work for all three cases.
          For clarity when the case is known, you can use:
            (a) dpixd = dpixCopy(NULL, dpixs);
            (c) dpixCopy(dpixd, dpixs);
      (3) For case (c), we check if dpixs and dpixd are the same size.
          If so, the data is copied directly.
          Otherwise, the data is reallocated to the correct size
          and the copy proceeds.  The refcount of dpixd is unchanged.
      (4) This operation, like all others that may involve a pre-existing
          dpixd, will side-effect any existing clones of dpixd.

dpixCreate

DPIX * dpixCreate ( l_int32 width, l_int32 height )

  dpixCreate()

      Input:  width, height
      Return: dpix (with data allocated and initialized to 0),
                     or null on error

  Notes:
      (1) Makes a DPix of specified size, with the data array
          allocated and initialized to 0.

dpixCreateTemplate

DPIX * dpixCreateTemplate ( DPIX *dpixs )

  dpixCreateTemplate()

      Input:  dpixs
      Return: dpixd, or null on error

  Notes:
      (1) Makes a DPix of the same size as the input DPix, with the
          data array allocated and initialized to 0.
      (2) Copies the resolution.

dpixDestroy

void dpixDestroy ( DPIX **pdpix )

  dpixDestroy()

      Input:  &dpix <will be nulled>
      Return: void

  Notes:
      (1) Decrements the ref count and, if 0, destroys the dpix.
      (2) Always nulls the input ptr.

dpixEndianByteSwap

DPIX * dpixEndianByteSwap ( DPIX *dpixd, DPIX *dpixs )

  dpixEndianByteSwap()

      Input:  dpixd (can be equal to dpixs or NULL)
              dpixs
      Return: dpixd always

  Notes:
      (1) On big-endian hardware, this does byte-swapping on each of
          the 4-byte words in the dpix data.  On little-endians,
          the data is unchanged.  This is used for serialization
          of dpix; the data is serialized in little-endian byte
          order because most hardware is little-endian.
      (2) The operation can be either in-place or, if dpixd == NULL,
          a new dpix is made.  If not in-place, caller must catch
          the returned pointer.

dpixGetDimensions

l_int32 dpixGetDimensions ( DPIX *dpix, l_int32 *pw, l_int32 *ph )

  dpixGetDimensions()

      Input:  dpix
              &w, &h (<optional return>; each can be null)
      Return: 0 if OK, 1 on error

dpixGetPixel

l_int32 dpixGetPixel ( DPIX *dpix, l_int32 x, l_int32 y, l_float64 *pval )

  dpixGetPixel()

      Input:  dpix
              (x,y) pixel coords
              &val (<return> pixel value)
      Return: 0 if OK; 1 on error

dpixRead

DPIX * dpixRead ( const char *filename )

  dpixRead()

      Input:  filename
      Return: dpix, or null on error

dpixReadStream

DPIX * dpixReadStream ( FILE *fp )

  dpixReadStream()

      Input:  stream
      Return: dpix, or null on error

dpixResizeImageData

l_int32 dpixResizeImageData ( DPIX *dpixd, DPIX *dpixs )

  dpixResizeImageData()

      Input:  dpixd, dpixs
      Return: 0 if OK, 1 on error

dpixSetDimensions

l_int32 dpixSetDimensions ( DPIX *dpix, l_int32 w, l_int32 h )

  dpixSetDimensions()

      Input:  dpix
              w, h
      Return: 0 if OK, 1 on error

dpixSetPixel

l_int32 dpixSetPixel ( DPIX *dpix, l_int32 x, l_int32 y, l_float64 val )

  dpixSetPixel()

      Input:  dpix
              (x,y) pixel coords
              val (pixel value)
      Return: 0 if OK; 1 on error

dpixWrite

l_int32 dpixWrite ( const char *filename, DPIX *dpix )

  dpixWrite()

      Input:  filename
              dpix
      Return: 0 if OK, 1 on error

dpixWriteStream

l_int32 dpixWriteStream ( FILE *fp, DPIX *dpix )

  dpixWriteStream()

      Input:  stream (opened for "wb")
              dpix
      Return: 0 if OK, 1 on error

fpixClone

FPIX * fpixClone ( FPIX *fpix )

  fpixClone()

      Input:  fpix
      Return: same fpix (ptr), or null on error

  Notes:
      (1) See pixClone() for definition and usage.

fpixCopy

FPIX * fpixCopy ( FPIX *fpixd, FPIX *fpixs )

  fpixCopy()

      Input:  fpixd (<optional>; can be null, or equal to fpixs,
                    or different from fpixs)
              fpixs
      Return: fpixd, or null on error

  Notes:
      (1) There are three cases:
            (a) fpixd == null  (makes a new fpix; refcount = 1)
            (b) fpixd == fpixs  (no-op)
            (c) fpixd != fpixs  (data copy; no change in refcount)
          If the refcount of fpixd > 1, case (c) will side-effect
          these handles.
      (2) The general pattern of use is:
             fpixd = fpixCopy(fpixd, fpixs);
          This will work for all three cases.
          For clarity when the case is known, you can use:
            (a) fpixd = fpixCopy(NULL, fpixs);
            (c) fpixCopy(fpixd, fpixs);
      (3) For case (c), we check if fpixs and fpixd are the same size.
          If so, the data is copied directly.
          Otherwise, the data is reallocated to the correct size
          and the copy proceeds.  The refcount of fpixd is unchanged.
      (4) This operation, like all others that may involve a pre-existing
          fpixd, will side-effect any existing clones of fpixd.

fpixCreate

FPIX * fpixCreate ( l_int32 width, l_int32 height )

  fpixCreate()

      Input:  width, height
      Return: fpixd (with data allocated and initialized to 0),
                     or null on error

  Notes:
      (1) Makes a FPix of specified size, with the data array
          allocated and initialized to 0.

fpixCreateTemplate

FPIX * fpixCreateTemplate ( FPIX *fpixs )

  fpixCreateTemplate()

      Input:  fpixs
      Return: fpixd, or null on error

  Notes:
      (1) Makes a FPix of the same size as the input FPix, with the
          data array allocated and initialized to 0.
      (2) Copies the resolution.

fpixDestroy

void fpixDestroy ( FPIX **pfpix )

  fpixDestroy()

      Input:  &fpix <will be nulled>
      Return: void

  Notes:
      (1) Decrements the ref count and, if 0, destroys the fpix.
      (2) Always nulls the input ptr.

fpixEndianByteSwap

FPIX * fpixEndianByteSwap ( FPIX *fpixd, FPIX *fpixs )

  fpixEndianByteSwap()

      Input:  fpixd (can be equal to fpixs or NULL)
              fpixs
      Return: fpixd always

  Notes:
      (1) On big-endian hardware, this does byte-swapping on each of
          the 4-byte floats in the fpix data.  On little-endians,
          the data is unchanged.  This is used for serialization
          of fpix; the data is serialized in little-endian byte
          order because most hardware is little-endian.
      (2) The operation can be either in-place or, if fpixd == NULL,
          a new fpix is made.  If not in-place, caller must catch
          the returned pointer.

fpixGetDimensions

l_int32 fpixGetDimensions ( FPIX *fpix, l_int32 *pw, l_int32 *ph )

  fpixGetDimensions()

      Input:  fpix
              &w, &h (<optional return>; each can be null)
      Return: 0 if OK, 1 on error

fpixGetPixel

l_int32 fpixGetPixel ( FPIX *fpix, l_int32 x, l_int32 y, l_float32 *pval )

  fpixGetPixel()

      Input:  fpix
              (x,y) pixel coords
              &val (<return> pixel value)
      Return: 0 if OK; 1 on error

fpixPrintStream

l_int32 fpixPrintStream ( FILE *fp, FPIX *fpix, l_int32 factor )

  fpixPrintStream()

      Input:  stream
              fpix
              factor (subsampled)
      Return: 0 if OK, 1 on error

  Notes:
      (1) Subsampled printout of fpix for debugging.

fpixRead

FPIX * fpixRead ( const char *filename )

  fpixRead()

      Input:  filename
      Return: fpix, or null on error

fpixReadStream

FPIX * fpixReadStream ( FILE *fp )

  fpixReadStream()

      Input:  stream
      Return: fpix, or null on error

fpixResizeImageData

l_int32 fpixResizeImageData ( FPIX *fpixd, FPIX *fpixs )

  fpixResizeImageData()

      Input:  fpixd, fpixs
      Return: 0 if OK, 1 on error

  Notes:
      (1) If the data sizes differ, this destroys the existing
          data in fpixd and allocates a new, uninitialized, data array
          of the same size as the data in fpixs.  Otherwise, this
          doesn't do anything.

fpixSetDimensions

l_int32 fpixSetDimensions ( FPIX *fpix, l_int32 w, l_int32 h )

  fpixSetDimensions()

      Input:  fpix
              w, h
      Return: 0 if OK, 1 on error

fpixSetPixel

l_int32 fpixSetPixel ( FPIX *fpix, l_int32 x, l_int32 y, l_float32 val )

  fpixSetPixel()

      Input:  fpix
              (x,y) pixel coords
              val (pixel value)
      Return: 0 if OK; 1 on error

fpixWrite

l_int32 fpixWrite ( const char *filename, FPIX *fpix )

  fpixWrite()

      Input:  filename
              fpix
      Return: 0 if OK, 1 on error

fpixWriteStream

l_int32 fpixWriteStream ( FILE *fp, FPIX *fpix )

  fpixWriteStream()

      Input:  stream (opened for "wb")
              fpix
      Return: 0 if OK, 1 on error

fpixaAddFPix

l_int32 fpixaAddFPix ( FPIXA *fpixa, FPIX *fpix, l_int32 copyflag )

  fpixaAddFPix()

      Input:  fpixa
              fpix  (to be added)
              copyflag (L_INSERT, L_COPY, L_CLONE)
      Return: 0 if OK; 1 on error

fpixaChangeRefcount

l_int32 fpixaChangeRefcount ( FPIXA *fpixa, l_int32 delta )

  fpixaChangeRefcount()

      Input:  fpixa
      Return: 0 if OK, 1 on error

fpixaCopy

FPIXA * fpixaCopy ( FPIXA *fpixa, l_int32 copyflag )

  fpixaCopy()

      Input:  fpixas
              copyflag:
                L_COPY makes a new fpixa and copies each fpix
                L_CLONE gives a new ref-counted handle to the input fpixa
                L_COPY_CLONE makes a new fpixa with clones of all fpix
      Return: new fpixa, or null on error

fpixaCreate

FPIXA * fpixaCreate ( l_int32 n )

  fpixaCreate()

      Input:  n  (initial number of ptrs)
      Return: fpixa, or null on error

fpixaDestroy

void fpixaDestroy ( FPIXA **pfpixa )

  fpixaDestroy()

      Input:  &fpixa (<can be nulled>)
      Return: void

  Notes:
      (1) Decrements the ref count and, if 0, destroys the fpixa.
      (2) Always nulls the input ptr.

fpixaGetCount

l_int32 fpixaGetCount ( FPIXA *fpixa )

  fpixaGetCount()

      Input:  fpixa
      Return: count, or 0 if no pixa

fpixaGetFPix

FPIX * fpixaGetFPix ( FPIXA *fpixa, l_int32 index, l_int32 accesstype )

  fpixaGetFPix()

      Input:  fpixa
              index  (to the index-th fpix)
              accesstype  (L_COPY or L_CLONE)
      Return: fpix, or null on error

fpixaGetFPixDimensions

l_int32 fpixaGetFPixDimensions ( FPIXA *fpixa, l_int32 index, l_int32 *pw, l_int32 *ph )

  fpixaGetFPixDimensions()

      Input:  fpixa
              index  (to the index-th box)
              &w, &h (<optional return>; each can be null)
      Return: 0 if OK, 1 on error

fpixaGetPixel

l_int32 fpixaGetPixel ( FPIXA *fpixa, l_int32 index, l_int32 x, l_int32 y, l_float32 *pval )

  fpixaGetPixel()

      Input:  fpixa
              index (into fpixa array)
              (x,y) pixel coords
              &val (<return> pixel value)
      Return: 0 if OK; 1 on error

fpixaSetPixel

l_int32 fpixaSetPixel ( FPIXA *fpixa, l_int32 index, l_int32 x, l_int32 y, l_float32 val )

  fpixaSetPixel()

      Input:  fpixa
              index (into fpixa array)
              (x,y) pixel coords
              val (pixel value)
      Return: 0 if OK; 1 on error

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.