~vcs-imports/tesseract-ocr/trunk

« back to all changes in this revision

Viewing changes to vs2010/include/leptonica/ccbord.h

  • Committer: zdenop at gmail
  • Date: 2012-02-26 15:30:05 UTC
  • Revision ID: svn-v4:d0cd1f9f-072b-0410-8dd7-cf729c803f20:trunk:681
vs2008 and vs2010 replaced with Tom Powers solution

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*====================================================================*
2
 
 -  Copyright (C) 2001 Leptonica.  All rights reserved.
3
 
 -  This software is distributed in the hope that it will be
4
 
 -  useful, but with NO WARRANTY OF ANY KIND.
5
 
 -  No author or distributor accepts responsibility to anyone for the
6
 
 -  consequences of using this software, or for whether it serves any
7
 
 -  particular purpose or works at all, unless he or she says so in
8
 
 -  writing.  Everyone is granted permission to copy, modify and
9
 
 -  redistribute this source code, for commercial or non-commercial
10
 
 -  purposes, with the following restrictions: (1) the origin of this
11
 
 -  source code must not be misrepresented; (2) modified versions must
12
 
 -  be plainly marked as such; and (3) this notice may not be removed
13
 
 -  or altered from any source or modified source distribution.
14
 
 *====================================================================*/
15
 
 
16
 
#ifndef  LEPTONICA_CCBORD_H
17
 
#define  LEPTONICA_CCBORD_H
18
 
 
19
 
/*
20
 
 *  ccbord.h
21
 
 *
22
 
 *           CCBord:   represents a single connected component
23
 
 *           CCBorda:  an array of CCBord
24
 
 */
25
 
 
26
 
    /* Use in ccbaStepChainsToPixCoords() */
27
 
enum {
28
 
      CCB_LOCAL_COORDS = 1,
29
 
      CCB_GLOBAL_COORDS = 2
30
 
};
31
 
 
32
 
    /* Use in ccbaGenerateSPGlobalLocs() */
33
 
enum {
34
 
      CCB_SAVE_ALL_PTS = 1,
35
 
      CCB_SAVE_TURNING_PTS = 2
36
 
};
37
 
 
38
 
 
39
 
    /* CCBord contains:
40
 
     *
41
 
     *    (1) a minimally-clipped bitmap of the component (pix),
42
 
     *    (2) a boxa consisting of:
43
 
     *          for the primary component:
44
 
     *                (xul, yul) pixel location in global coords
45
 
     *                (w, h) of the bitmap
46
 
     *          for the hole components:
47
 
     *                (x, y) in relative coordinates in primary component
48
 
     *                (w, h) of the hole border (which is 2 pixels
49
 
     *                       larger in each direction than the hole itself)
50
 
     *    (3) a pta ('start') of the initial border pixel location for each
51
 
     *        closed curve, all in relative coordinates of the primary
52
 
     *        component.  This is given for the primary component,
53
 
     *        followed by the hole components, if any.
54
 
     *    (4) a refcount of the ccbord; used internally when a ccbord
55
 
     *        is accessed from a ccborda (array of ccbord)
56
 
     *    (5) a ptaa for the chain code for the border in relative
57
 
     *        coordinates, where the first pta is the exterior border
58
 
     *        and all other pta are for interior borders (holes)
59
 
     *    (6) a ptaa for the global pixel loc rendition of the border,
60
 
     *        where the first pta is the exterior border and all other
61
 
     *        pta are for interior borders (holes).
62
 
     *        This is derived from the local or step chain code.
63
 
     *    (7) a numaa for the chain code for the border as orientation
64
 
     *        directions between successive border pixels, where
65
 
     *        the first numa is the exterior border and all other
66
 
     *        numa are for interior borders (holes).  This is derived
67
 
     *        from the local chain code.  The 8 directions are 0 - 7.
68
 
     *    (8) a pta for a single chain for each c.c., comprised of outer
69
 
     *        and hole borders, plus cut paths between them, all in
70
 
     *        local coords.
71
 
     *    (9) a pta for a single chain for each c.c., comprised of outer
72
 
     *        and hole borders, plus cut paths between them, all in
73
 
     *        global coords.
74
 
     */
75
 
struct CCBord
76
 
{
77
 
    struct Pix          *pix;            /* component bitmap (min size)      */
78
 
    struct Boxa         *boxa;           /* regions of each closed curve     */
79
 
    struct Pta          *start;          /* initial border pixel locations   */
80
 
    l_int32              refcount;       /* number of handles; start at 1    */
81
 
    struct Ptaa         *local;          /* ptaa of chain pixels (local)     */
82
 
    struct Ptaa         *global;         /* ptaa of chain pixels (global)    */
83
 
    struct Numaa        *step;           /* numaa of chain code (step dir)   */
84
 
    struct Pta          *splocal;        /* pta of single chain (local)      */
85
 
    struct Pta          *spglobal;       /* pta of single chain (global)     */
86
 
};
87
 
typedef struct CCBord CCBORD;
88
 
 
89
 
 
90
 
struct CCBorda
91
 
{
92
 
    struct Pix          *pix;            /* input pix (may be null)          */
93
 
    l_int32              w;              /* width of pix                     */
94
 
    l_int32              h;              /* height of pix                    */
95
 
    l_int32              n;              /* number of ccbord in ptr array    */
96
 
    l_int32              nalloc;         /* number of ccbord ptrs allocated  */
97
 
    struct CCBord      **ccb;            /* ccb ptr array                    */
98
 
};
99
 
typedef struct CCBorda CCBORDA;
100
 
 
101
 
 
102
 
#endif  /* LEPTONICA_CCBORD_H */
103