~ubuntu-branches/debian/experimental/cuneiform/experimental

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/fon/src/fon_snap.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Baumann
  • Date: 2009-07-10 17:58:10 UTC
  • Revision ID: james.westby@ubuntu.com-20090710175810-rqc89d2i3tki9m89
Tags: upstream-0.7.0+dfsg
ImportĀ upstreamĀ versionĀ 0.7.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright (c) 1993-2008, Cognitive Technologies
 
3
All rights reserved.
 
4
 
 
5
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½,
 
6
ļæ½ļæ½ļæ½ ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½:
 
7
 
 
8
      * ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
9
        ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
10
        ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
11
      * ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½
 
12
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
13
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½
 
14
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
15
      * ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ Cognitive Technologies, ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
 
16
        ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
17
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
18
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
19
 
 
20
ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ "ļæ½ļæ½ļæ½
 
21
ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½" ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½-ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
22
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ ļæ½ļæ½
 
23
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½. ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
24
ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½
 
25
ļæ½ļæ½ŃØļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½
 
26
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
27
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ (ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
28
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½-ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
29
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
30
ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½), ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
 
31
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
32
 
 
33
Redistribution and use in source and binary forms, with or without modification,
 
34
are permitted provided that the following conditions are met:
 
35
 
 
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.
 
44
 
 
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.
 
55
*/
 
56
 
 
57
//////////////////////////
 
58
#include "fon.h"
 
59
#include "sfont.h"
 
60
#include "fonrec.h"
 
61
 
 
62
#include <stdio.h>
 
63
#include <stdlib.h>
 
64
#include <string.h>
 
65
/*#include <windows.h>*/
 
66
 
 
67
#include "compat_defs.h"
 
68
 
 
69
#define NUM_IN_SNAP 9     // maximal pictures in snap
 
70
       BOOL IsSnap=FALSE;
 
71
static int  InSnap=0;     // now pictures in snap
 
72
static RecRaster *snapRaster=NULL;
 
73
static BOOL WasRegister=FALSE;
 
74
static HWND hwndSnap=NULL;
 
75
static char szGluName[32]="FonGlueSnap";
 
76
static HINSTANCE hGluInstance=NULL;
 
77
static char recogResult[256];
 
78
static BOOL RegisterGlu(HANDLE hInstance,LPSTR szAppName);
 
79
static char nameSnap[NUM_IN_SNAP+1];
 
80
static int  probSnap[NUM_IN_SNAP+1];
 
81
////////////
 
82
//
 
83
//  return -1  - no memory
 
84
//
 
85
///////////////
 
86
 
 
87
FON_FUNC(Int32) FONInitSnap(Handle hwnd)
 
88
{
 
89
  memset(nameSnap,0,sizeof(nameSnap));
 
90
  InSnap=0;
 
91
 
 
92
  if(snapRaster==NULL)
 
93
          snapRaster=(RecRaster *)malloc(NUM_IN_SNAP*sizeof(RecRaster));
 
94
  if(!snapRaster)
 
95
          return -1;
 
96
 
 
97
  if( WasRegister == FALSE )
 
98
  {
 
99
   if( hwnd )
 
100
    hGluInstance=(HINSTANCE)GetWindowLong((HWND)hwnd,GWL_HINSTANCE);
 
101
   else
 
102
    hGluInstance = GetModuleHandle("Fon32.dll");
 
103
 
 
104
        WasRegister=RegisterGlu(hGluInstance, szGluName);
 
105
    if(WasRegister==FALSE)
 
106
              return -2;
 
107
  }
 
108
 
 
109
  if(hwndSnap==NULL)
 
110
    hwndSnap=CreateWindow(szGluName,"SnapFONGlue",
 
111
           WS_OVERLAPPEDWINDOW,
 
112
           0,300,400,300,
 
113
           NULL,  NULL,
 
114
           hGluInstance, NULL);
 
115
 
 
116
 
 
117
  if(hwndSnap && !IsWindowVisible(hwndSnap) )
 
118
          ShowWindow(hwndSnap,TRUE);
 
119
 
 
120
  IsSnap=TRUE;
 
121
  return NUM_IN_SNAP;
 
122
}
 
123
//////////////////
 
124
FON_FUNC(Int32) FONEndSnap(void)
 
125
{
 
126
 
 
127
        IsSnap=FALSE;
 
128
        InSnap = 0;
 
129
        if(snapRaster)
 
130
                free(snapRaster);
 
131
        snapRaster=NULL;
 
132
 
 
133
        if(hwndSnap)
 
134
        {
 
135
                SendMessage( hwndSnap, WM_DESTROY, 0, 0);
 
136
        }
 
137
 
 
138
//      UnregisterClass(szGluName, hGluInstance);
 
139
//      WasRegister = FALSE;
 
140
        return 1;
 
141
}
 
142
////////////////////
 
143
int PutNamesSnap(int nvar,BYTE *names,int *probs)
 
144
{
 
145
 int i;
 
146
 
 
147
        memset(recogResult,0,sizeof(recogResult));
 
148
        for(i=0;i<nvar;i++)
 
149
      sprintf(recogResult+strlen(recogResult),"%c(%d) ",names[i],(int)probs[i]);
 
150
 return 1;
 
151
}
 
152
/////////////////////////
 
153
int AddRasterToSnap(RecRaster *rr,int num)
 
154
{
 
155
        if(num < 0) num=InSnap;
 
156
        else        InSnap=num;
 
157
 
 
158
        if(num >= NUM_IN_SNAP) return -10;
 
159
        if(num==0) recogResult[0]=0;
 
160
        memcpy(snapRaster+num,rr,sizeof(RecRaster));
 
161
        InSnap++;
 
162
        return 1;
 
163
}
 
164
//////////////
 
165
int AddBitmapToSnap(BYTE *buf,int xbit,int yrow,int name,int dist)
 
166
{
 
167
 int bytesx=((xbit+63)/64)*8;
 
168
 int xbyte=(xbit+7)>>3;
 
169
 RecRaster *recRas;
 
170
 BYTE *ras;
 
171
 
 
172
 if( !IsSnap)
 
173
         return 0;
 
174
 
 
175
 if( InSnap >= NUM_IN_SNAP)
 
176
         InSnap = 0;
 
177
         //return -10;
 
178
 
 
179
 if(name <= 0)
 
180
 { nameSnap[InSnap]='~';
 
181
   probSnap[InSnap]=0;
 
182
 }
 
183
 // to ANSI from ASCII
 
184
 else
 
185
 { if(name >= 128 && name <176)
 
186
         nameSnap[InSnap]=name+64;
 
187
   else  if(name >= 224 && name <240)
 
188
         nameSnap[InSnap]=name+16;
 
189
   else nameSnap[InSnap]=name;
 
190
   probSnap[InSnap]=dist;
 
191
 }
 
192
 
 
193
 if(bytesx*yrow > REC_MAX_RASTER_SIZE)
 
194
         yrow=REC_MAX_RASTER_SIZE/bytesx;
 
195
 
 
196
 recRas=snapRaster+InSnap;
 
197
 recRas->lnPixHeight=yrow;
 
198
 recRas->lnPixWidth =xbit;
 
199
 recRas->lnRasterBufSize=REC_MAX_RASTER_SIZE;
 
200
 ras=recRas->Raster;
 
201
 for(; yrow>0;yrow--,ras+=bytesx,buf+=xbyte)
 
202
   memcpy(ras,buf,xbyte);
 
203
 
 
204
 InSnap++;
 
205
 return 1;
 
206
}
 
207
//////////////
 
208
// rr-> at position fx,fy, size sx,sy
 
209
static int PutRecRaster(HDC hDC,RecRaster *rr,
 
210
                                         int fx,int fy,int sx,int sy)
 
211
{
 
212
int i,j;
 
213
int wid=rr->lnPixWidth;
 
214
int hei=rr->lnPixHeight;
 
215
int xbyte=((wid+63)/64)*8;
 
216
int step,x,y;
 
217
BYTE cc;
 
218
BYTE *buf=rr->Raster;
 
219
 
 
220
  step=MIN(sx/wid,sy/hei);
 
221
  if(step < 3) step=3;
 
222
 
 
223
  for(i=0,y=fy;i<hei;i++,buf+=xbyte,y+=step)
 
224
   {
 
225
    for(j=0,x=fx,cc=128;j<wid;j++,x+=step)
 
226
     {
 
227
      if(buf[j>>3]&cc)
 
228
                  Rectangle(hDC,x,y,x+step,y+step);
 
229
      cc>>=1;
 
230
      if(cc==0) cc=128;
 
231
     }
 
232
   }
 
233
 
 
234
  return step;
 
235
}
 
236
/*************************/
 
237
FON_FUNC(Int32) FONShowSnap(void)
 
238
{
 
239
RECT rect;
 
240
int  i,j,xstart,ystart;
 
241
HDC  hDC;
 
242
int numRow=1;
 
243
int all;
 
244
 
 
245
 if( IsSnap == FALSE)  return -11;
 
246
 if(InSnap <= 0) return 0; // nothing in snap
 
247
 
 
248
  if(hwndSnap==NULL)
 
249
          return -3;
 
250
 
 
251
  if(IsIconic (hwndSnap ))  return 0;
 
252
 
 
253
  GetClientRect(hwndSnap,&rect);
 
254
 
 
255
  numRow=1;
 
256
  if(InSnap > 6 ) numRow=3;       // make 3 rows
 
257
  else if(InSnap > 3 ) numRow=2;  // make 2 rows
 
258
 
 
259
  if(InSnap >=3 ) j=rect.right/3;
 
260
  else            j=rect.right/InSnap;
 
261
 
 
262
  hDC=GetDC(hwndSnap);
 
263
  Rectangle(hDC,0,0,rect.right,rect.bottom);
 
264
 
 
265
  rect.bottom /=numRow;
 
266
  ystart=0;
 
267
  for(all=0;numRow;numRow--,ystart+=rect.bottom)
 
268
  {
 
269
   for(i=xstart=0;i<3 && all< InSnap;i++,xstart+=j,all++)
 
270
   {
 
271
          SelectObject(hDC,GetStockObject(NULL_BRUSH));
 
272
          Rectangle(hDC,xstart,ystart,xstart+j,ystart+rect.bottom);
 
273
          SelectObject(hDC,GetStockObject(GRAY_BRUSH)); // can gray?
 
274
          PutRecRaster(hDC,snapRaster+all,xstart,ystart,j,rect.bottom);
 
275
   }
 
276
  }
 
277
 
 
278
  ReleaseDC(hwndSnap,hDC);
 
279
//  SetWindowText(hwndSnap,nameSnap);
 
280
  PutNamesSnap(InSnap,nameSnap,probSnap);
 
281
  SetWindowText(hwndSnap,recogResult);
 
282
 
 
283
//  ShowWindow(hwndSnap,SW_SHOWNORMAL);
 
284
 
 
285
  return InSnap;
 
286
}
 
287
/////////////////
 
288
/*
 
289
 * Handle messages for the application window
 
290
 */
 
291
LONG PASCAL GluFonWindowProc(HWND win, UINT msg, WPARAM wparam, LPARAM lparam)
 
292
{
 
293
 PAINTSTRUCT ps;
 
294
 
 
295
 switch ( msg )
 
296
    {
 
297
    case WM_DESTROY:
 
298
                //FONEndSnap();
 
299
                hwndSnap=NULL;
 
300
                IsSnap = FALSE;
 
301
        break;
 
302
    case WM_SIZE:
 
303
                 if(InSnap) FONShowSnap();
 
304
                 break;
 
305
    case WM_PAINT:
 
306
          BeginPaint(win, &ps);
 
307
                  if(InSnap) FONShowSnap();
 
308
          EndPaint(win, &ps);
 
309
          return TRUE;
 
310
    default:
 
311
        break;
 
312
    }
 
313
 return DefWindowProc(win, msg, wparam, lparam);
 
314
}
 
315
////////////////////////
 
316
static BOOL RegisterGlu(HANDLE hInstance,LPSTR szAppName)
 
317
{
 
318
  WNDCLASS WndClass;
 
319
  BOOL bSuccess;
 
320
 
 
321
     memset(&WndClass,0,sizeof(WNDCLASS)) ;
 
322
 
 
323
         WndClass.lpszClassName=szAppName;
 
324
         WndClass.hInstance=hInstance;
 
325
         WndClass.lpfnWndProc=GluFonWindowProc;
 
326
         WndClass.style=(unsigned int)NULL;
 
327
         WndClass.hbrBackground=GetStockObject(WHITE_BRUSH);
 
328
         WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
 
329
         WndClass.hIcon=LoadIcon(NULL,IDI_ASTERISK);
 
330
         WndClass.lpszMenuName=(LPSTR)NULL;
 
331
         WndClass.cbClsExtra=(int)NULL;
 
332
         WndClass.cbWndExtra=(int)NULL;
 
333
 
 
334
         bSuccess=RegisterClass(&WndClass);
 
335
 
 
336
         return bSuccess;
 
337
}
 
338
//////////////////////////