Leptonica  1.54
Файл fpix1.c
#include <string.h>
#include "allheaders.h"

Функции

static l_int32 fpixaExtendArray (FPIXA *fpixa)
 
static l_int32 fpixaExtendArrayToSize (FPIXA *fpixa, l_int32 size)
 
FPIXfpixCreate (l_int32 width, l_int32 height)
 
FPIXfpixCreateTemplate (FPIX *fpixs)
 
FPIXfpixClone (FPIX *fpix)
 
FPIXfpixCopy (FPIX *fpixd, FPIX *fpixs)
 
l_int32 fpixResizeImageData (FPIX *fpixd, FPIX *fpixs)
 
void fpixDestroy (FPIX **pfpix)
 
l_int32 fpixGetDimensions (FPIX *fpix, l_int32 *pw, l_int32 *ph)
 
l_int32 fpixSetDimensions (FPIX *fpix, l_int32 w, l_int32 h)
 
l_int32 fpixGetWpl (FPIX *fpix)
 
l_int32 fpixSetWpl (FPIX *fpix, l_int32 wpl)
 
l_int32 fpixGetRefcount (FPIX *fpix)
 
l_int32 fpixChangeRefcount (FPIX *fpix, l_int32 delta)
 
l_int32 fpixGetResolution (FPIX *fpix, l_int32 *pxres, l_int32 *pyres)
 
l_int32 fpixSetResolution (FPIX *fpix, l_int32 xres, l_int32 yres)
 
l_int32 fpixCopyResolution (FPIX *fpixd, FPIX *fpixs)
 
l_float32fpixGetData (FPIX *fpix)
 
l_int32 fpixSetData (FPIX *fpix, l_float32 *data)
 
l_int32 fpixGetPixel (FPIX *fpix, l_int32 x, l_int32 y, l_float32 *pval)
 
l_int32 fpixSetPixel (FPIX *fpix, l_int32 x, l_int32 y, l_float32 val)
 
FPIXAfpixaCreate (l_int32 n)
 
FPIXAfpixaCopy (FPIXA *fpixa, l_int32 copyflag)
 
void fpixaDestroy (FPIXA **pfpixa)
 
l_int32 fpixaAddFPix (FPIXA *fpixa, FPIX *fpix, l_int32 copyflag)
 
l_int32 fpixaGetCount (FPIXA *fpixa)
 
l_int32 fpixaChangeRefcount (FPIXA *fpixa, l_int32 delta)
 
FPIXfpixaGetFPix (FPIXA *fpixa, l_int32 index, l_int32 accesstype)
 
l_int32 fpixaGetFPixDimensions (FPIXA *fpixa, l_int32 index, l_int32 *pw, l_int32 *ph)
 
l_float32fpixaGetData (FPIXA *fpixa, l_int32 index)
 
l_int32 fpixaGetPixel (FPIXA *fpixa, l_int32 index, l_int32 x, l_int32 y, l_float32 *pval)
 
l_int32 fpixaSetPixel (FPIXA *fpixa, l_int32 index, l_int32 x, l_int32 y, l_float32 val)
 
DPIXdpixCreate (l_int32 width, l_int32 height)
 
DPIXdpixCreateTemplate (DPIX *dpixs)
 
DPIXdpixClone (DPIX *dpix)
 
DPIXdpixCopy (DPIX *dpixd, DPIX *dpixs)
 
l_int32 dpixResizeImageData (DPIX *dpixd, DPIX *dpixs)
 
void dpixDestroy (DPIX **pdpix)
 
l_int32 dpixGetDimensions (DPIX *dpix, l_int32 *pw, l_int32 *ph)
 
l_int32 dpixSetDimensions (DPIX *dpix, l_int32 w, l_int32 h)
 
l_int32 dpixGetWpl (DPIX *dpix)
 
l_int32 dpixSetWpl (DPIX *dpix, l_int32 wpl)
 
l_int32 dpixGetRefcount (DPIX *dpix)
 
l_int32 dpixChangeRefcount (DPIX *dpix, l_int32 delta)
 
l_int32 dpixGetResolution (DPIX *dpix, l_int32 *pxres, l_int32 *pyres)
 
l_int32 dpixSetResolution (DPIX *dpix, l_int32 xres, l_int32 yres)
 
l_int32 dpixCopyResolution (DPIX *dpixd, DPIX *dpixs)
 
l_float64dpixGetData (DPIX *dpix)
 
l_int32 dpixSetData (DPIX *dpix, l_float64 *data)
 
l_int32 dpixGetPixel (DPIX *dpix, l_int32 x, l_int32 y, l_float64 *pval)
 
l_int32 dpixSetPixel (DPIX *dpix, l_int32 x, l_int32 y, l_float64 val)
 
FPIXfpixRead (const char *filename)
 
FPIXfpixReadStream (FILE *fp)
 
l_int32 fpixWrite (const char *filename, FPIX *fpix)
 
l_int32 fpixWriteStream (FILE *fp, FPIX *fpix)
 
FPIXfpixEndianByteSwap (FPIX *fpixd, FPIX *fpixs)
 
DPIXdpixRead (const char *filename)
 
DPIXdpixReadStream (FILE *fp)
 
l_int32 dpixWrite (const char *filename, DPIX *dpix)
 
l_int32 dpixWriteStream (FILE *fp, DPIX *dpix)
 
DPIXdpixEndianByteSwap (DPIX *dpixd, DPIX *dpixs)
 
l_int32 fpixPrintStream (FILE *fp, FPIX *fpix, l_int32 factor)
 

Переменные

static const l_int32 INITIAL_PTR_ARRAYSIZE = 20
 

Функции

◆ dpixChangeRefcount()

l_int32 dpixChangeRefcount ( DPIX dpix,
l_int32  delta 
)

◆ 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.

◆ dpixCopyResolution()

l_int32 dpixCopyResolution ( DPIX dpixd,
DPIX dpixs 
)

◆ 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.

◆ dpixGetData()

l_float64* dpixGetData ( DPIX dpix)

◆ 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

◆ dpixGetRefcount()

l_int32 dpixGetRefcount ( DPIX dpix)

◆ dpixGetResolution()

l_int32 dpixGetResolution ( DPIX dpix,
l_int32 pxres,
l_int32 pyres 
)

◆ dpixGetWpl()

l_int32 dpixGetWpl ( DPIX dpix)

◆ 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

◆ dpixSetData()

l_int32 dpixSetData ( DPIX dpix,
l_float64 data 
)

◆ 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

◆ dpixSetResolution()

l_int32 dpixSetResolution ( DPIX dpix,
l_int32  xres,
l_int32  yres 
)

◆ dpixSetWpl()

l_int32 dpixSetWpl ( DPIX dpix,
l_int32  wpl 
)

◆ 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

◆ 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.

◆ fpixaExtendArray()

static l_int32 fpixaExtendArray ( FPIXA fpixa)
static

fpixaExtendArray()

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

Notes: (1) Doubles the size of the fpixa ptr array.

◆ fpixaExtendArrayToSize()

static l_int32 fpixaExtendArrayToSize ( FPIXA fpixa,
l_int32  size 
)
static

fpixaExtendArrayToSize()

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

Notes: (1) If necessary, reallocs new fpixa ptrs array to @size.

◆ fpixaGetCount()

l_int32 fpixaGetCount ( FPIXA fpixa)

fpixaGetCount()

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

◆ fpixaGetData()

l_float32* fpixaGetData ( FPIXA fpixa,
l_int32  index 
)

fpixaGetData()

Input:  fpixa
        index (into fpixa array)
Return: data (not a copy), or null on error

◆ 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

◆ fpixChangeRefcount()

l_int32 fpixChangeRefcount ( FPIX fpix,
l_int32  delta 
)

◆ 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.

◆ fpixCopyResolution()

l_int32 fpixCopyResolution ( FPIX fpixd,
FPIX fpixs 
)

◆ 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.

◆ fpixGetData()

l_float32* fpixGetData ( FPIX fpix)

◆ 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

◆ fpixGetRefcount()

l_int32 fpixGetRefcount ( FPIX fpix)

◆ fpixGetResolution()

l_int32 fpixGetResolution ( FPIX fpix,
l_int32 pxres,
l_int32 pyres 
)

◆ fpixGetWpl()

l_int32 fpixGetWpl ( FPIX fpix)

◆ 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.

◆ fpixSetData()

l_int32 fpixSetData ( FPIX fpix,
l_float32 data 
)

◆ 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

◆ fpixSetResolution()

l_int32 fpixSetResolution ( FPIX fpix,
l_int32  xres,
l_int32  yres 
)

◆ fpixSetWpl()

l_int32 fpixSetWpl ( FPIX fpix,
l_int32  wpl 
)

◆ 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

Переменные

◆ INITIAL_PTR_ARRAYSIZE

const l_int32 INITIAL_PTR_ARRAYSIZE = 20
static