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
//************************************************************************//
58
//* CTB_CNVM.C : convert memory functions **************************//
59
//************************************************************************//
63
static void conv_bits_to_bytes8(Word8 *bits, Word8 *bytes, Int16 l);
64
static void conv_bytes_to_bits8(Word8 *bytes, Word8 *bits, Int16 l);
65
static void conv_bits_to_bytes4(Word8 *bits, Word8 *bytes, Int16 l);
66
static void conv_bytes_to_bits4(Word8 *bytes, Word8 *bits, Int16 l);
67
static void conv_bits_to_bytes2(Word8 *bits, Word8 *bytes, Int16 l);
68
static void conv_bits_to_bytes1(Word8 *bits, Word8 *bytes, Int16 l);
69
static void conv_bytes_to_bits2(Word8 *bytes, Word8 *bits, Int16 l);
70
static void conv_bytes_to_bits1(Word8 *bytes, Word8 *bits, Int16 l);
71
static void conv_bits_to_bytes4plane(Word8 *bits, Word8 *bytes, Int16 l);
72
static void conv_bytes_to_bits4plane(Word8 *bytes, Word8 *bits, Int16 l);
73
static void conv_bits_to_bytes2plane(Word8 *bits, Word8 *bytes, Int16 l);
74
static void conv_bits_to_bytes1plane(Word8 *bits, Word8 *bytes, Int16 l);
75
static void conv_bytes_to_bits2plane(Word8 *bytes, Word8 *bits, Int16 l);
76
static void conv_bytes_to_bits1plane(Word8 *bytes, Word8 *bits, Int16 l);
78
static void conv_bits2_to_bits2plane_one(Word8 *bout,Word8 *text,
79
Word8 msk1,Word8 msk2,Word8 msk3,Word8 msk4,Int16 len);
80
static void conv_bits4_to_bits4plane_one(Word8 *bout,Word8 *text,
81
Word8 mask1,Word8 mask2, Int16 len);
82
static Bool32 conv_bits_to_bytes( Int16 colors,Word8 *bin,Word8 *text, Int16 len);
83
static Bool32 conv_bytes_to_bits( Int16 colors, Word8 *text,Word8 *bin, Int16 len);
84
static void conv_bits4_to_bits4plane(Word8 *text,Word8 *bin,Int16 len,Int16 halftone8);
85
static void conv_bits2_to_bits2plane(Word8 *text,Word8 *bin,Int16 len);
88
Bool32 conv_bits_to_bytes( Int16 colors,Word8 *bin,Word8 *text, Int16 len)
92
case 2 : conv_bits_to_bytes8(bin,text,len); return 1;
93
case 4 : conv_bits_to_bytes4(bin,text,len); return 1;
94
case 16 : conv_bits_to_bytes2(bin,text,len); return 1;
95
case 256 : conv_bits_to_bytes1(bin,text,len); return 1;
96
case -4 : conv_bits_to_bytes4plane(bin,text,len); return 1;
97
case -16 : conv_bits_to_bytes2plane(bin,text,len); return 1;
98
case -256: conv_bits_to_bytes1plane(bin,text,len); return 1;
104
Bool32 conv_bytes_to_bits( Int16 colors, Word8 *text,Word8 *bin, Int16 len)
108
case 2 : conv_bytes_to_bits8(text,bin,len); return 1;
109
case 4 : conv_bytes_to_bits4(text,bin,len); return 1;
110
case 16 : conv_bytes_to_bits2(text,bin,len); return 1;
111
case 256 : conv_bytes_to_bits1(text,bin,len); return 1;
112
case -4 : conv_bytes_to_bits4plane(text,bin,len); return 1;
113
case -16 : conv_bytes_to_bits2plane(text,bin,len); return 1;
114
case -256: conv_bytes_to_bits1plane(text,bin,len); return 1;
121
void conv_bits_to_bytes1(Word8 *bin,Word8 *text, Int16 len)
123
memcpy( text,bin, (Word16)len);
126
void conv_bytes_to_bits1(Word8 *text,Word8 *bin, Int16 len)
128
memcpy( text,bin, (Word16)len);
132
// 16 colors - EGA //
133
void conv_bits_to_bytes2(Word8 *bin,Word8 *text, Int16 len)
137
memset( text,0x0, (Word16)len<<1);
138
for(p=text,i=0;i<len;i++)
141
if( c&0xF0 ) *p= (c&0xF0)>>4; p++;
142
if( c&0x0F ) *p= (c&0x0F); p++;
148
void conv_bytes_to_bits2(Word8 *text,Word8 *bin, Int16 len)
153
for(i=0;i<len;i++,text+=2)
163
// -256 colors - planar VGA //
164
#define SHIFT_SAVE1_1(mask ) if( c&mask ) *p = 0x01; p++;
165
#define SHIFT_SAVE1_2(mask ) if( c&mask ) *p |= 0x02; p++;
166
#define SHIFT_SAVE1_3(mask ) if( c&mask ) *p |= 0x04; p++;
167
#define SHIFT_SAVE1_4(mask ) if( c&mask ) *p |= 0x08; p++;
168
#define SHIFT_SAVE1_5(mask ) if( c&mask ) *p |= 0x10; p++;
169
#define SHIFT_SAVE1_6(mask ) if( c&mask ) *p |= 0x20; p++;
170
#define SHIFT_SAVE1_7(mask ) if( c&mask ) *p |= 0x40; p++;
171
#define SHIFT_SAVE1_8(mask ) if( c&mask ) *p |= 0x80; p++;
172
void conv_bits_to_bytes1plane(Word8 *bin,Word8 *text,Int16 len)
174
Int16 i,len8=len/8,len0;
177
memset( text,0x0, (Word16)len);
179
for(p=text,i=0;i<len0;i++)
192
for(p=text;i<len0;i++)
205
for(p=text;i<len0;i++)
218
for(p=text;i<len0;i++)
231
for(p=text;i<len0;i++)
244
for(p=text;i<len0;i++)
257
for(p=text;i<len0;i++)
270
for(p=text;i<len0;i++)
286
#define SAVE_TEXT1(ind) c1<<=1; c2<<=1; c3<<=1; c4<<=1; c5<<=1; c6<<=1; c7<<=1; c8<<=1; \
287
if( text[ind]&0x01 ) c1 |= 1; \
288
if( text[ind]&0x02 ) c2 |= 1; \
289
if( text[ind]&0x04 ) c3 |= 1; \
290
if( text[ind]&0x08 ) c4 |= 1; \
291
if( text[ind]&0x10 ) c5 |= 1; \
292
if( text[ind]&0x20 ) c6 |= 1; \
293
if( text[ind]&0x40 ) c7 |= 1; \
294
if( text[ind]&0x80 ) c8 |= 1;
296
void conv_bytes_to_bits1plane(Word8 *text,Word8 *bin,Int16 len)
299
Word8 *p1=bin+0*len8, *p2=bin+1*len8, *p3=bin+2*len8, *p4=bin+3*len8;
300
Word8 *p5=bin+4*len8, *p6=bin+5*len8, *p7=bin+6*len8, *p8=bin+7*len8;
301
Word8 c1, c2, c3, c4, c5, c6, c7, c8;
305
for(i=0;i<len8;i++,text+=8)
309
c1 = ( (text[0]&0x01)!=0 );
310
c2 = ( (text[0]&0x02)!=0 );
311
c3 = ( (text[0]&0x04)!=0 );
312
c4 = ( (text[0]&0x08)!=0 );
313
c5 = ( (text[0]&0x10)!=0 );
314
c6 = ( (text[0]&0x20)!=0 );
315
c7 = ( (text[0]&0x40)!=0 );
316
c8 = ( (text[0]&0x80)!=0 );
337
// -16 colors - planar EGA //
338
#define SHIFT_SAVE2_1(mask ) if( c&mask ) *p = 0x1; p++;
339
#define SHIFT_SAVE2_2(mask ) if( c&mask ) *p |= 0x2; p++;
340
#define SHIFT_SAVE2_3(mask ) if( c&mask ) *p |= 0x4; p++;
341
#define SHIFT_SAVE2_4(mask ) if( c&mask ) *p |= 0x8; p++;
342
void conv_bits_to_bytes2plane(Word8 *bin,Word8 *text,Int16 len)
344
Int16 i,len4=len>>2,len2=len>>1,len3=len2+len4;
347
memset( text,0x0, (Word16)len<<1);
348
for(p=text,i=0;i<len4;i++)
360
for(p=text;i<len2;i++)
372
for(p=text;i<len3;i++)
384
for(p=text;i<len;i++)
400
#define SAVE_TEXT2(ind) c1<<=1; c2<<=1; c3<<=1; c4<<=1; \
401
if( text[ind]&0x1 ) c1 |= 1; \
402
if( text[ind]&0x2 ) c2 |= 1; \
403
if( text[ind]&0x4 ) c3 |= 1; \
404
if( text[ind]&0x8 ) c4 |= 1;
405
void conv_bytes_to_bits2plane(Word8 *text,Word8 *bin,Int16 len)
407
Word8 *p1=bin, *p2=bin+(len>>2), *p3=bin+(len>>1), *p4=bin+len-(len>>2);
408
Word8 c1, c2, c3, c4, i;
411
for(i=0;i<len;i++,text+=8)
413
c1 = ( (text[0]&0x1)!=0 );
414
c2 = ( (text[0]&0x2)!=0 );
415
c3 = ( (text[0]&0x4)!=0 );
416
c4 = ( (text[0]&0x8)!=0 );
434
void conv_bits_to_bytes4(Word8 *bin,Word8 *text,Int16 len)
438
memset( text,0x0, (Word16)len<<2);
439
for(p=text,i=0;i<len;i++)
442
if( c&0xC0 ) *p= (c&0xC0)>>6; p++;
443
if( c&0x30 ) *p= (c&0x30)>>4; p++;
444
if( c&0x0C ) *p= (c&0x0C)>>2; p++;
445
if( c&0x03 ) *p= (c&0x03); p++;
451
void conv_bytes_to_bits4(Word8 *text,Word8 *bin,Int16 len)
456
for(i=0;i<len;i++,text+=4)
459
c <<= 2; c |= text[1];
460
c <<= 2; c |= text[2];
461
c <<= 2; c |= text[3];
468
// -4 colors - planar CGA //
469
#define SHIFT_SAVE4_1(mask ) if( c&mask ) *p=0x1; p++;
470
#define SHIFT_SAVE4_2(mask ) if( c&mask ) *p|=0x2; p++;
471
void conv_bits_to_bytes4plane(Word8 *bin,Word8 *text,Int16 len)
476
memset( text,0x0, (Word16)len<<2);
477
for(p=text,i=0;i<len2;i++)
489
for(p=text;i<len;i++)
505
#define SAVE_TEXT4(ind) c1<<=1; c2<<=1; \
506
if( text[ind]&0x1 ) c1 |= 1; \
507
if( text[ind]&0x2 ) c2 |= 1;
508
void conv_bytes_to_bits4plane(Word8 *text,Word8 *bin, Int16 len)
510
Word8 *p1=bin, *p2=bin+(len>>1);
514
for(i=0;i<len;i++,text+=8)
516
c1 = ( (text[0]&0x1)!=0 );
517
c2 = ( (text[0]&0x2)!=0 );
532
// 2 colors - Monochrom //
533
#define SHIFT_SAVE8(mask ) if( c&mask ) *p=0x1; p++;
534
void conv_bits_to_bytes8(Word8 *bin,Word8 *text, Int16 len)
538
memset( text,0x0, len*8);
539
for(p=text,i=0;i<len;i++)
555
#define SAVE_TEXT8(ind) c<<=1; if( text[ind]==0x1 ) c |= 1;
556
void conv_bytes_to_bits8(Word8 *text,Word8 *bin, Int16 len)
561
for(i=0;i<len;i++,text+=8)
563
c = ( text[0]==0x1 );
577
void conv_bits4_to_bits4plane(Word8 *txt,Word8 *bin,Int16 len, Int16 halftone8)
581
Word8 *p1=bin, *p2=bin+(len>>2), *p3=bin+(len>>1), *p4=bin+len-(len>>2);
585
conv_bits4_to_bits4plane_one(p1,txt,0x10,0x01,len);
586
conv_bits4_to_bits4plane_one(p2,txt,0x20,0x02,len);
587
conv_bits4_to_bits4plane_one(p3,txt,0x40,0x04,len);
588
conv_bits4_to_bits4plane_one(p4,txt,0x80,0x08,len);
596
void conv_bits2_to_bits2plane(Word8 *text,Word8 *bin,Int16 len)
598
Word8 *p1=bin, *p2=bin+(len>>1);
601
conv_bits2_to_bits2plane_one(p1,text,0x40,0x10,0x04,0x01,len);
602
conv_bits2_to_bits2plane_one(p2,text,0x80,0x20,0x08,0x02,len);
607
void conv_bits4_to_bits4plane_one(Word8 *bout,Word8 *text,
608
Word8 mask1,Word8 mask2, Int16 len)
612
for(i=0;i<len;i++,text+=4)
614
c = ( (text[0]&mask1)!=0 );
616
if( text[0]&mask2 ) c |= 1;
618
if( text[1]&mask1 ) c |= 1;
620
if( text[1]&mask2 ) c |= 1;
622
if( text[2]&mask1 ) c |= 1;
624
if( text[2]&mask2 ) c |= 1;
626
if( text[3]&mask1 ) c |= 1;
628
if( text[3]&mask2 ) c |= 1;
634
void conv_bits2_to_bits2plane_one(Word8 *bout,Word8 *text,
635
Word8 msk1,Word8 msk2,Word8 msk3,Word8 msk4,
640
for(i=0;i<len;i++,text+=2)
642
c = ( (text[0]&msk1)!=0 );
644
if( text[0]&msk2 ) c |= 1;
646
if( text[0]&msk3 ) c |= 1;
648
if( text[0]&msk4 ) c |= 1;
650
if( text[1]&msk1 ) c |= 1;
652
if( text[1]&msk2 ) c |= 1;
654
if( text[1]&msk3 ) c |= 1;
656
if( text[1]&msk4 ) c |= 1;