2
Copyright (c) 1993-2008, Cognitive Technologies
5
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½,
6
ļæ½ļæ½ļæ½ ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½:
8
* ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
9
ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
10
ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
11
* ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½
12
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
13
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½
14
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
15
* ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ Cognitive Technologies, ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
16
ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
17
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
18
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
20
ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ "ļæ½ļæ½ļæ½
21
ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½" ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½-ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
22
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ ļæ½ļæ½
23
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½. ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
24
ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½
25
ļæ½ļæ½ŃØļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½
26
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
27
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ (ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
28
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½-ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
29
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
30
ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½), ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
31
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
33
Redistribution and use in source and binary forms, with or without modification,
34
are permitted provided that the following conditions are met:
36
* Redistributions of source code must retain the above copyright notice,
37
this list of conditions and the following disclaimer.
38
* Redistributions in binary form must reproduce the above copyright notice,
39
this list of conditions and the following disclaimer in the documentation
40
and/or other materials provided with the distribution.
41
* Neither the name of the Cognitive Technologies nor the names of its
42
contributors may be used to endorse or promote products derived from this
43
software without specific prior written permission.
45
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
46
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
47
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
48
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
49
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
50
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
51
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
52
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
53
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
54
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
57
/*# include <windows.h>*/
68
/************************ External Handles from DPUMA *************************/
69
extern Handle hShowCheckLetters;
70
/******************************************************************************/
73
////////////////////////////////////////////////////////////////////////////////
74
Bool32 CheckAreaForComps(Handle hCCOM, Handle hCCOM_big, Rect32 rect, Int32 Height, Word32 *Result1, Word32 *Result2)
84
Handle MainWindowD=NULL;
85
MainWindowD=LDPUMA_GetWindowHandle ("ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½");
87
MainWindowD=LDPUMA_GetWindowHandle ("Main");
93
if(!LDPUMA_Skip(hShowCheckLetters))
95
rect1.top = (Word16)rect.top;
96
rect1.left = (Word16)rect.left;
97
rect1.bottom = (Word16)rect.bottom;
98
rect1.right = (Word16)rect.right;
99
LDPUMA_DrawRect(MainWindowD, &rect1, 0, 23635, 4, key);
103
comp = CCOM_GetFirst(hCCOM_big,NULL);
106
if(comp->h < Height/6) goto lNextComp_big;
107
if(comp->h > Height*1.5) goto lNextComp_big;
108
if(comp->upper < rect.top) goto lNextComp_big;
109
if(comp->left < rect.left) goto lNextComp_big;
110
if(comp->upper + comp->h > rect.bottom) goto lNextComp_big;
111
if(comp->left + comp->w > rect.right) goto lNextComp_big;
112
if((comp->h < Height/3 )&&(comp->upper < rect.top))goto lNextComp_big;
113
for(i=0; i<nPics; i++)
115
if ( (comp->upper >= pPics[i].upper)&&
116
(comp->left >= pPics[i].left)&&
117
(comp->upper + comp->h < pPics[i].upper + pPics[i].h)&&
118
(comp->left + comp->w <= pPics[i].left + pPics[i].w))
124
if((comp->h > Height*0.5)&&(comp->h < Height*1.5))
127
if(!LDPUMA_Skip(hShowCheckLetters))
129
rect1.left = comp->left;
130
rect1.top = comp->upper;
131
rect1.right = comp->left + comp->w;
132
rect1.bottom = comp->upper + comp->h;
133
LDPUMA_DrawRect(MainWindowD, &rect1, 0, color, 8, key);
138
if((comp->h > Height/3*0.5)&&(comp->h < Height/3*1.5))
141
if(!LDPUMA_Skip(hShowCheckLetters))
143
rect1.left = comp->left;
144
rect1.top = comp->upper;
145
rect1.right = comp->left + comp->w;
146
rect1.bottom = comp->upper + comp->h;
147
LDPUMA_DrawRect(MainWindowD, &rect1, 0, color, 2, key);
153
comp = CCOM_GetNext(comp,NULL);
157
comp = CCOM_GetFirst(hCCOM,NULL);
160
if(comp->h < Height/6) goto lNextComp;
161
if(comp->h > Height*1.5) goto lNextComp;
162
if(comp->upper < rect.top) goto lNextComp;
163
if(comp->left < rect.left) goto lNextComp;
164
if(comp->upper + comp->h > rect.bottom) goto lNextComp;
165
if(comp->left + comp->w > rect.right) goto lNextComp;
166
if((comp->h < Height/3 )&&(comp->upper < rect.top))goto lNextComp;
167
for(i=0; i<nPics; i++)
169
if ( (comp->upper >= pPics[i].upper)&&
170
(comp->left >= pPics[i].left)&&
171
(comp->upper + comp->h < pPics[i].upper + pPics[i].h)&&
172
(comp->left + comp->w <= pPics[i].left + pPics[i].w))
178
if((comp->h > Height*0.5)&&(comp->h < Height*1.5))
181
if(!LDPUMA_Skip(hShowCheckLetters))
183
rect1.left = comp->left;
184
rect1.top = comp->upper;
185
rect1.right = comp->left + comp->w;
186
rect1.bottom = comp->upper + comp->h;
187
LDPUMA_DrawRect(MainWindowD, &rect1, 0, color, 8, key);
192
if((comp->h > Height/3*0.5)&&(comp->h < Height/3*1.5))
195
if(!LDPUMA_Skip(hShowCheckLetters))
197
rect1.left = comp->left;
198
rect1.top = comp->upper;
199
rect1.right = comp->left + comp->w;
200
rect1.bottom = comp->upper + comp->h;
201
LDPUMA_DrawRect(MainWindowD, &rect1, 0, color, 2, key);
207
comp = CCOM_GetNext(comp,NULL);
210
if(!LDPUMA_Skip(hShowCheckLetters))
212
LDPUMA_Console("RPIC_ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ \n");
213
LDPUMA_WaitUserInput(hShowCheckLetters, MainWindowD);
214
LDPUMA_DeleteRects(MainWindowD, key);
219
////////////////////////////////////////////////////////////////////////////////
222
////////////////////////////////////////////////////////////////////////////////
223
Bool32 SearchRectanglePictures(Handle hCCOM, Handle hCCOM_big,Handle hCPAGE)
228
Word16 pLocalHystogram[MaxHeightOfLetter];
230
Word32 MaxLocal, nMaxLocal;
231
Word32 Result1, Result2, Result3, Result4, tmp1, tmp2;
233
Int32 LengthTotal,LengthByIntervals;
238
RPIC_Comp_Rect CompRect;
241
BlockType = CPAGE_GetInternalType("pic's to letters boxes");
243
for(i=0; i<nPics; i++)
246
my_upper = pic.upper;
248
my_bottom = pic.upper + pic.h;
249
my_right = pic.left + pic.w;
252
//Additional parameter - local distribution of heights
253
//in case of local fragment with different (from main) height
255
for(j=0;j<MaxHeightOfLetter;j++)
257
pLocalHystogram[j] = 0;
261
comp = CCOM_GetFirst(hCCOM_big, &MyFiltrateIn);
264
if( (comp->h < MaxHeightOfLetter) && (comp->h > MinHeightOfLetter) )
266
pLocalHystogram[comp->h]++;
269
comp = CCOM_GetNext(comp, &MyFiltrateIn);
273
comp = CCOM_GetFirst(hCCOM, &MyFiltrateIn);
276
if( (comp->h < MaxHeightOfLetter) && (comp->h > MinHeightOfLetter) )
278
pLocalHystogram[comp->h]++;
281
comp = CCOM_GetNext(comp, &MyFiltrateIn);
286
MaxLocal = pLocalHystogram[0];
287
for(j=0;j<MaxHeightOfLetter;j++)
289
if(pLocalHystogram [j] > MaxLocal)
291
MaxLocal = pLocalHystogram [j];
298
sprintf(tmp_str, " %i Result1 (must be 0)\n", Result1);
299
LDPUMA_FPuts(logFile_comp,tmp_str);
300
sprintf(tmp_str, " %i Result2 (must be 0)\n", Result2);
301
LDPUMA_FPuts(logFile_comp,tmp_str);
302
sprintf(tmp_str, " %i (nComps)\n", nComps);
303
LDPUMA_FPuts(logFile_comp,tmp_str);
306
comp = CCOM_GetFirst(hCCOM_big, &MyFiltrateIn);
309
//sprintf(tmp_str, " %i (comp)\n", comp);
310
//LDPUMA_FPuts(hFile,tmp_str);
311
if( (comp->h < MaxHeightOfLetter-1) && (comp->h > MinHeightOfLetter) )
314
sprintf(tmp_str, " %i (comp->h)\n", comp->h);
315
LDPUMA_FPuts(logFile_comp,tmp_str);
316
sprintf(tmp_str, " %i (pHystogram[comp->h])\n", pHystogram[comp->h]);
317
LDPUMA_FPuts(logFile_comp,tmp_str);
320
//Result1 += OVERALL*pHystogram[comp->h];
321
Result1 += pHystogram[comp->h]/20+pHystogram[comp->h-1]/20+pHystogram[comp->h+1]/20;
322
if(comp->h - nMaxLocal < DIFFERENCE1)
324
//Result2 += LOCAL*pLocalHystogram[comp->h];
325
Result2 += pLocalHystogram[comp->h]+pLocalHystogram[comp->h-1]+pLocalHystogram[comp->h+1];
328
comp = CCOM_GetNext(comp, &MyFiltrateIn);
332
comp = CCOM_GetFirst(hCCOM, &MyFiltrateIn);
335
//sprintf(tmp_str, " %i (comp)\n", comp);
336
//LDPUMA_FPuts(hFile,tmp_str);
337
if( (comp->h < MaxHeightOfLetter-1) && (comp->h > MinHeightOfLetter) )
340
sprintf(tmp_str, " %i (comp->h)\n", comp->h);
341
LDPUMA_FPuts(logFile_comp,tmp_str);
342
sprintf(tmp_str, " %i (pHystogram[comp->h])\n", pHystogram[comp->h]);
343
LDPUMA_FPuts(logFile_comp,tmp_str);
346
//Result1 += OVERALL*pHystogram[comp->h];
347
Result1 += pHystogram[comp->h]/20+pHystogram[comp->h-1]/20+pHystogram[comp->h+1]/20;
348
if(comp->h - nMaxLocal < DIFFERENCE1)
350
//Result2 += LOCAL*pLocalHystogram[comp->h];
351
Result2 += pLocalHystogram[comp->h]+pLocalHystogram[comp->h-1]+pLocalHystogram[comp->h+1];
354
comp = CCOM_GetNext(comp, &MyFiltrateIn);
357
//Result1 = Result1/nComps;
358
Result1 = Result1/10;
359
//Result2 = Result2/nLocalComps;
360
Result2 = Result2/20;
362
sprintf(tmp_str , " Picture %i (i)\n", i);
363
LDPUMA_FPuts(logFile_comp,tmp_str);
364
sprintf(tmp_str, " %i (Result1)\n", Result1);
365
LDPUMA_FPuts(logFile_comp,tmp_str);
366
sprintf(tmp_str, " %i (Result2)\n", Result2);
367
LDPUMA_FPuts(logFile_comp,tmp_str);
369
if(Result1 + Result2 > CONDITION1)
377
/**************************************************************************/
378
/* Analys by comp's count of begins&ends */
379
/**************************************************************************/
381
CCOM_USER_BLOCK uBlock;
382
uBlock.code = CCOM_UB_BEGENDS;
383
if( CCOM_GetUserBlock(&pPics[i], &uBlock) )
385
if(*(Word8*)uBlock.data > 100)
391
/**************************************************************************/
392
/* Analys by comp's intervals */
393
/**************************************************************************/
395
//CCOM_USER_BLOCK uBlock;
396
uBlock.code = CCOM_UB_DENSITY;
397
if( CCOM_GetUserBlock(&pPics[i], &uBlock) )
399
LengthByIntervals = *(Int32*)uBlock.data;
400
LengthTotal = pPics[i].h * pPics[i].w;
402
if(LengthByIntervals==0)
407
if(LengthTotal/LengthByIntervals > CONDITION2)
416
/************** final union all crossed and included pictures ******************/
418
for (i=0; i<nPics; i++)
420
if(pPics[i].large & CCOM_LR_KILLED)
424
for (j=0; j<nPics; j++)
426
if(pPics[j].large & CCOM_LR_KILLED)
430
if ( (pPics[i].upper < pPics[j].upper)&&
431
(pPics[i].left < pPics[j].left)&&
432
(pPics[i].left + pPics[i].w > pPics[j].left + pPics[j].w)&&
433
(pPics[i].upper + pPics[i].h > pPics[j].upper + pPics[j].h) )
435
if((pPics[i].type!=CCOM_CH_LETTER)||(pPics[j].type!=CCOM_CH_LETTER))
437
pPics[i].type = CCOM_CH_MERGE;
446
for (i=0; i<nPics; i++)
448
if(pPics[i].large & CCOM_LR_KILLED)
452
for (j=0; j<nPics; j++)
454
if(pPics[j].large & CCOM_LR_KILLED)
459
if ( (pPics[i].upper < pPics[j].upper + pPics[j].h)&&
460
(pPics[i].left < pPics[j].left + pPics[j].w)&&
461
(pPics[i].left + pPics[i].w > pPics[j].left)&&
462
(pPics[i].upper + pPics[i].h > pPics[j].upper) )
465
if (pPics[i].upper >= pPics[j].upper)
466
common.upper = pPics[j].upper;
467
if (pPics[i].left >= pPics[j].left)
468
common.left = pPics[j].left;
469
if (pPics[i].upper + pPics[i].h < pPics[j].upper + pPics[j].h)
470
common.h = pPics[j].upper + pPics[j].h - pPics[i].upper;
471
if (pPics[i].left + pPics[i].w < pPics[j].left + pPics[j].w)
472
common.w = pPics[j].left + pPics[j].w - pPics[i].left;
473
common.h += pPics[i].upper - common.upper;
474
common.w += pPics[i].left - common.left;
477
if((pPics[i].type!=CCOM_CH_LETTER)||(pPics[j].type!=CCOM_CH_LETTER))
479
pPics[i].type = CCOM_CH_MERGE;
482
pPics[i].type = CCOM_CH_NOTLTR;
491
for(i=0; i<nPics; i++)
493
if(pPics[i].large & CCOM_LR_KILLED)
498
my_upper = pic.upper;
500
my_bottom = pic.upper + pic.h;
501
my_right = pic.left + pic.w;
503
Deleting from Pics, in case of Titles and "Bukvica", zero version,
504
planing CHECK (by Oleg) for Letters in case of Bukvica, else check for
505
comps with compatible heights in local area (horizontal).
507
if(pPics[i].scale <= 3)
509
rect.top = pPics[i].upper;
510
rect.left = pPics[i].left + pPics[i].w;
511
rect.bottom = pPics[i].upper + pPics[i].h;
512
rect.right = pPics[i].left + pPics[i].w + pPics[i].h;
513
CheckAreaForComps(hCCOM,hCCOM_big, rect, nAverageHeight, &Result1, &Result2);
515
if( (Result1 > 10)&&(pPics[i].type != CCOM_CH_NOTLTR))
517
if( CCOM_GetRaster(&pPics[i], &rec) &&
518
CCOM_GetLanguage(hCCOM, &Language) &&
519
RSTR_RecogOneLetter (&rec, (Word8)(Language), &vs) )
522
if( (vs.lnAltCnt > 0)&&
523
(vs.Alt[0].Prob > 240)&&
524
(vs.Alt[0].Code != 'i')&&
525
(vs.Alt[0].Code != '1')&&
526
(vs.Alt[0].Code != 'I')&&
527
(vs.Alt[0].Code != 'l'))
529
pPics[i].type = CCOM_CH_LETTER;
530
CompRect.upper = pPics[i].upper;
531
CompRect.left = pPics[i].left;
532
CompRect.h = pPics[i].h;
533
CompRect.w = pPics[i].w;
534
CPAGE_CreateBlock(hCPAGE, BlockType, 0, 0, &CompRect, sizeof(CompRect));
544
rect.top = pPics[i].upper - (Int32)(0.3*(double)(pPics[i].h));
545
rect.left = pPics[i].left - 12*pPics[i].h;
546
rect.bottom = pPics[i].upper + (Int32)(1.3*(double)(pPics[i].h));
547
//rect.right = pPics[i].left + pPics[i].w;
548
rect.right = pPics[i].left;
549
CheckAreaForComps(hCCOM,hCCOM_big, rect, pPics[i].h, &Result1, &Result2);
552
rect.top = pPics[i].upper - (Int32)(0.3*(double)(pPics[i].h));
553
rect.left = pPics[i].left - (Int32)(1.5*(double)(pPics[i].h));
554
rect.bottom = pPics[i].upper + (Int32)(1.3*(double)(pPics[i].h));
555
rect.right = pPics[i].left;
556
CheckAreaForComps(hCCOM,hCCOM_big, rect, pPics[i].h, &tmp1, &tmp2);
557
if(tmp2 == 0) Result2 = 0;
559
if((Result1 > 3)||(Result2 > 7))
561
pPics[i].type = CCOM_CH_LETTER;
562
CompRect.upper = pPics[i].upper;
563
CompRect.left = pPics[i].left;
564
CompRect.h = pPics[i].h;
565
CompRect.w = pPics[i].w;
566
CPAGE_CreateBlock(hCPAGE, BlockType, 0, 0, &CompRect, sizeof(CompRect));
573
rect.top = pPics[i].upper - (Int32)(0.3*(double)(pPics[i].h));
574
rect.left = pPics[i].left + pPics[i].w;
575
rect.bottom = pPics[i].upper + (Int32)(1.3*(double)(pPics[i].h));
576
rect.right = pPics[i].left + pPics[i].w + 12*pPics[i].h;
577
CheckAreaForComps(hCCOM,hCCOM_big, rect, pPics[i].h, &Result3, &Result4);
580
rect.top = pPics[i].upper - (Int32)(0.3*(double)(pPics[i].h));
581
rect.left = pPics[i].left + pPics[i].w;
582
rect.bottom = pPics[i].upper + (Int32)(1.3*(double)(pPics[i].h));
583
rect.right = pPics[i].left + pPics[i].w + (Int32)(1.5*(double)(pPics[i].h));
584
CheckAreaForComps(hCCOM,hCCOM_big ,rect, pPics[i].h, &tmp1, &tmp2);
585
if(tmp2 == 0) Result4 = 0;
589
(Result1 + Result3 > 3)||
590
(Result2 + Result4 > 7))
592
pPics[i].type = CCOM_CH_LETTER;
593
CompRect.upper = pPics[i].upper;
594
CompRect.left = pPics[i].left;
595
CompRect.h = pPics[i].h;
596
CompRect.w = pPics[i].w;
597
CPAGE_CreateBlock(hCPAGE, BlockType, 0, 0, &CompRect, sizeof(CompRect));