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.