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
// ļæ½RTurner.cpp: implementation of the CRTurner class.
2
Copyright (c) 1993-2008, Cognitive Technologies
5
Š Š°Š·ŃŠµŃŠ°ŠµŃŃŃ ŠæŠ¾Š²ŃŠ¾ŃŠ½Š¾Šµ ŃŠ°ŃŠæŃŠ¾ŃŃŃŠ°Š½ŠµŠ½ŠøŠµ Šø ŠøŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°Š½ŠøŠµ ŠŗŠ°Šŗ Š² Š²ŠøŠ“Šµ ŠøŃŃ
Š¾Š“Š½Š¾Š³Š¾ ŠŗŠ¾Š“Š°,
6
ŃŠ°Šŗ Šø Š² Š“Š²Š¾ŠøŃŠ½Š¾Š¹ ŃŠ¾ŃŠ¼Šµ, Ń ŠøŠ·Š¼ŠµŠ½ŠµŠ½ŠøŃŠ¼Šø ŠøŠ»Šø Š±ŠµŠ·, ŠæŃŠø ŃŠ¾Š±Š»ŃŠ“ŠµŠ½ŠøŠø ŃŠ»ŠµŠ“ŃŃŃŠøŃ
ŃŃŠ»Š¾Š²ŠøŠ¹:
8
* ŠŃŠø ŠæŠ¾Š²ŃŠ¾ŃŠ½Š¾Š¼ ŃŠ°ŃŠæŃŠ¾ŃŃŃŠ°Š½ŠµŠ½ŠøŠø ŠøŃŃ
Š¾Š“Š½Š¾Š³Š¾ ŠŗŠ¾Š“Š° Š“Š¾Š»Š¶Š½Ń Š¾ŃŃŠ°Š²Š°ŃŃŃŃ ŃŠŗŠ°Š·Š°Š½Š½Š¾Šµ
9
Š²ŃŃŠµ ŃŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ Š¾Š± Š°Š²ŃŠ¾ŃŃŠŗŠ¾Š¼ ŠæŃŠ°Š²Šµ, ŃŃŠ¾Ń ŃŠæŠøŃŠ¾Šŗ ŃŃŠ»Š¾Š²ŠøŠ¹ Šø ŠæŠ¾ŃŠ»ŠµŠ“ŃŃŃŠøŠ¹
10
Š¾ŃŠŗŠ°Š· Š¾Ń Š³Š°ŃŠ°Š½ŃŠøŠ¹.
11
* ŠŃŠø ŠæŠ¾Š²ŃŠ¾ŃŠ½Š¾Š¼ ŃŠ°ŃŠæŃŠ¾ŃŃŃŠ°Š½ŠµŠ½ŠøŠø Š“Š²Š¾ŠøŃŠ½Š¾Š³Š¾ ŠŗŠ¾Š“Š° Š² Š“Š¾ŠŗŃŠ¼ŠµŠ½ŃŠ°ŃŠøŠø Šø/ŠøŠ»Šø Š²
12
Š“ŃŃŠ³ŠøŃ
Š¼Š°ŃŠµŃŠøŠ°Š»Š°Ń
, ŠæŠ¾ŃŃŠ°Š²Š»ŃŠµŠ¼ŃŃ
ŠæŃŠø ŃŠ°ŃŠæŃŠ¾ŃŃŃŠ°Š½ŠµŠ½ŠøŠø, Š“Š¾Š»Š¶Š½Ń ŃŠ¾Ń
ŃŠ°Š½ŃŃŃŃŃ
13
ŃŠŗŠ°Š·Š°Š½Š½Š°Ń Š²ŃŃŠµ ŠøŠ½ŃŠ¾ŃŠ¼Š°ŃŠøŃ Š¾Š± Š°Š²ŃŠ¾ŃŃŠŗŠ¾Š¼ ŠæŃŠ°Š²Šµ, ŃŃŠ¾Ń ŃŠæŠøŃŠ¾Šŗ ŃŃŠ»Š¾Š²ŠøŠ¹ Šø
14
ŠæŠ¾ŃŠ»ŠµŠ“ŃŃŃŠøŠ¹ Š¾ŃŠŗŠ°Š· Š¾Ń Š³Š°ŃŠ°Š½ŃŠøŠ¹.
15
* ŠŠø Š½Š°Š·Š²Š°Š½ŠøŠµ Cognitive Technologies, Š½Šø ŠøŠ¼ŠµŠ½Š° ŠµŠµ ŃŠ¾ŃŃŃŠ“Š½ŠøŠŗŠ¾Š² Š½Šµ Š¼Š¾Š³ŃŃ
16
Š±ŃŃŃ ŠøŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°Š½Ń Š² ŠŗŠ°ŃŠµŃŃŠ²Šµ ŃŃŠµŠ“ŃŃŠ²Š° ŠæŠ¾Š“Š“ŠµŃŠ¶ŠŗŠø Šø/ŠøŠ»Šø ŠæŃŠ¾Š“Š²ŠøŠ¶ŠµŠ½ŠøŃ
17
ŠæŃŠ¾Š“ŃŠŗŃŠ¾Š², Š¾ŃŠ½Š¾Š²Š°Š½Š½ŃŃ
Š½Š° ŃŃŠ¾Š¼ ŠŠ, Š±ŠµŠ· ŠæŃŠµŠ“Š²Š°ŃŠøŃŠµŠ»ŃŠ½Š¾Š³Š¾ ŠæŠøŃŃŠ¼ŠµŠ½Š½Š¾Š³Š¾
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
// Š”RTurner.cpp: implementation of the CRTurner class.
59
59
//////////////////////////////////////////////////////////////////////
60
60
//#define RIMAGE_DUMP_TO_FILE
323
void CRTurner::FreeBuffers()
296
void CRTurner::FreeBuffers() {
327
298
RIMAGEFree(hLineBuffer);
328
299
hLineBuffer = 0x00000000;//NULL;
332
Bool32 CRTurner::CheckInAndOut180(PCTDIB pIn, PCTDIB pOut)
334
if ( pIn->GetImageHeight() != pOut->GetImageHeight() ||
335
pIn->GetImageWidth() != pOut->GetImageWidth() ||
336
pIn->GetPixelSize() != pOut->GetPixelSize() )
338
SetReturnCode_rimage(IDS_RIMAGE_OUTCOME_DIB_NOT_LINK_TO_INCOME);
345
Bool32 CRTurner::CheckInAndOut90(PCTDIB pIn, PCTDIB pOut)
347
if ( pIn->GetImageHeight() != pOut->GetImageWidth() ||
348
pIn->GetImageWidth() != pOut->GetImageHeight() ||
349
pIn->GetPixelSize() != pOut->GetPixelSize() )
351
SetReturnCode_rimage(IDS_RIMAGE_OUTCOME_DIB_NOT_LINK_TO_INCOME);
358
Bool32 CRTurner::Turn90LA(PCTDIB pInDIB, PCTDIB pOutDIB)
360
Word32 dLines = pOutDIB->GetLinesNumber();
361
Word32 sLines = pInDIB->GetLinesNumber(); //
368
Word32 sBytesPerLine = pOutDIB->GetLineWidth()/8;
372
for ( dLine = 0, sX = 0; dLine < (Int32)dLines; dLine++, sX++ )
374
// ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
375
dPix = (PWord8)pOutDIB->GetPtrToLine(dLine);
377
sShift = pInDIB->GetPixelShiftInByte(sX);
378
// ļæ½ļæ½ 8 ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
379
for ( cByte = 0, sLine = sLines - 1, dX = 0; cByte < sBytesPerLine; cByte++, dX += 8 )
384
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine--);
385
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][0];
388
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine--);
389
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][1];
392
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine--);
393
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][2];
396
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine--);
397
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][3];
400
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine--);
401
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][4];
404
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine--);
405
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][5];
408
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine--);
409
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][6];
412
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine--);
413
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][7];
418
// ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
423
for ( ; sLine >= 0; sLine--, dX++ )
425
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine);
426
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][(pOutDIB->GetPixelShiftInByte(dX))];
433
Bool32 CRTurner::Turn270LA(PCTDIB pInDIB, PCTDIB pOutDIB)
435
Word32 dLines = pOutDIB->GetLinesNumber();
436
Word32 sLines = pInDIB->GetLinesNumber(); //
443
Word32 sBytesPerLine = pOutDIB->GetLineWidth()/8;
447
for ( dLine = 0, sX = dLines - 1; dLine < (Int32)dLines; dLine++, sX-- )
449
// ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
450
dPix = (PWord8)pOutDIB->GetPtrToLine(dLine);
452
sShift = pInDIB->GetPixelShiftInByte(sX);
453
// ļæ½ļæ½ 8 ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
454
for ( cByte = 0, sLine = 0, dX = 0; cByte < sBytesPerLine; cByte++, dX += 8 )
459
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine++);
460
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][0];
463
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine++);
464
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][1];
467
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine++);
468
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][2];
471
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine++);
472
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][3];
475
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine++);
476
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][4];
479
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine++);
480
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][5];
483
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine++);
484
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][6];
487
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine++);
488
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][7];
493
// ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
494
// ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½
495
if ( sLine < (Int32)sLines )
499
for ( ; sLine < (Int32)sLines; sLine++, dX++ )
501
sPix = (PWord8)pInDIB->GetPtrToPixel(sX, sLine);
503
*dPix |= Turn1at90[((*sPix)&wBitMask[sShift])][(pOutDIB->GetPixelShiftInByte(dX))];
510
Bool32 CRTurner::Turn90GC(PCTDIB pIn, PCTDIB pOut)
523
Word32 dLines = pOut->GetLinesNumber();
524
Word32 sLines = pIn->GetLinesNumber(); //
525
Word32 wPixSize = pIn->GetPixelSize() / 8;
530
for( dLine = 0, sX = 0; dLine < (Int32)dLines; dLine++, sX++ )
532
CONTINUEPIXEL(dPix8 = (PWord8)pOut->GetPtrToLine( dLine ));
534
for ( sLine = sLines - 1, dX = 0; dX < (Int32)sLines; sLine--, dX++, dPix8++ )
536
CONTINUEPIXEL(sPix8 = (PWord8)pIn->GetPtrToPixel( sX, sLine));
544
for( dLine = 0, sX = 0; dLine < (Int32)dLines; dLine++, sX++ )
546
CONTINUEPIXEL(dPix16 = (PWord16)pOut->GetPtrToLine( dLine ));
548
for ( sLine = sLines - 1, dX = 0; dX < (Int32)sLines; sLine--, dX++, dPix16++ )
550
CONTINUEPIXEL(sPix16 = (PWord16)pIn->GetPtrToPixel( sX, sLine));
558
for( dLine = 0, sX = 0; dLine < (Int32)dLines; dLine++, sX++ )
560
CONTINUEPIXEL(dPix8 = (PWord8)pOut->GetPtrToLine( dLine )) ;
562
for ( sLine = sLines - 1, dX = 0; dX < (Int32)sLines; sLine--, dX++ )
564
CONTINUEPIXEL(sPix8 = (PWord8)pIn->GetPtrToPixel( sX, sLine));
574
for( dLine = 0, sX = 0; dLine < (Int32)dLines; dLine++, sX++ )
576
CONTINUEPIXEL(dPix32 = (PWord32)pOut->GetPtrToLine( dLine ));
578
for ( sLine = sLines - 1, dX = 0; dX < (Int32)sLines; sLine--, dX++, dPix32++ )
580
CONTINUEPIXEL(sPix32 = (PWord32)pIn->GetPtrToPixel( sX, sLine));
594
Bool32 CRTurner::Turn180GC(PCTDIB pIn, PCTDIB pOut)
606
Word32 wPixSize = pIn->GetPixelSize() / 8;
607
Word32 wLines = pIn->GetLinesNumber();
608
Word32 sLineWidth = pIn->GetLineWidth();
613
for( dLine = 0, sLine = wLines - 1; dLine < wLines; dLine++, sLine--)
615
sPix8 = (PWord8)pIn->GetPtrToPixel( sLineWidth - 1, sLine);
616
dPix8 = (PWord8)pOut->GetPtrToLine( dLine );
618
for ( wPix = 0; wPix < sLineWidth; wPix++, sPix8 --, dPix8 ++ )
627
for( dLine = 0, sLine = wLines - 1; dLine < wLines; dLine++, sLine--)
629
sPix16 = (PWord16)pIn->GetPtrToPixel( sLineWidth - 1, sLine);
630
dPix16 = (PWord16)pOut->GetPtrToLine( dLine );
632
for ( wPix = 0; wPix < sLineWidth; wPix++, sPix16 --, dPix16 ++ )
641
for( dLine = 0, sLine = wLines - 1; dLine < wLines; dLine++, sLine--)
643
sPix8 = (PWord8)pIn->GetPtrToPixel( sLineWidth - 1, sLine);
644
dPix8 = (PWord8)pOut->GetPtrToLine( dLine );
646
for ( wPix = 0; wPix < sLineWidth; wPix++, sPix8 -= 6)
657
for( dLine = 0, sLine = wLines - 1; dLine < wLines; dLine++, sLine--)
659
sPix32 = (PWord32)pIn->GetPtrToPixel( sLineWidth - 1, sLine);
660
dPix32 = (PWord32)pOut->GetPtrToLine( dLine );
662
for ( wPix = 0; wPix < sLineWidth; wPix++, sPix32--, dPix32++ )
677
Bool32 CRTurner::Turn270GC(PCTDIB pIn, PCTDIB pOut)
690
Word32 dLines = pOut->GetLinesNumber();
691
Word32 sLines = pIn->GetLinesNumber(); //
692
Word32 wPixSize = pIn->GetPixelSize() / 8;
697
for( dLine = 0, sX = dLines - 1; dLine < (Int32)dLines; dLine++, sX-- )
699
CONTINUEPIXEL(dPix8 = (PWord8)pOut->GetPtrToLine( dLine ));
701
for ( sLine = 0, dX = 0; sLine < (Int32)sLines; sLine++, dX++, dPix8++ )
703
CONTINUEPIXEL(sPix8 = (PWord8)pIn->GetPtrToPixel( sX, sLine));
711
for( dLine = 0, sX = dLines - 1; dLine < (Int32)dLines; dLine++, sX-- )
713
CONTINUEPIXEL(dPix16 = (PWord16)pOut->GetPtrToLine( dLine ));
715
for ( sLine = 0, dX = 0; sLine < (Int32)sLines; sLine++, dX++, dPix16++ )
717
CONTINUEPIXEL(sPix16 = (PWord16)pIn->GetPtrToPixel( sX, sLine));
725
for( dLine = 0, sX = dLines - 1; dLine < (Int32)dLines; dLine++, sX-- )
727
CONTINUEPIXEL(dPix8 = (PWord8)pOut->GetPtrToLine( dLine ));
729
for ( sLine = 0, dX = 0; sLine < (Int32)sLines; sLine++, dX++ )
731
CONTINUEPIXEL(sPix8 = (PWord8)pIn->GetPtrToPixel( sX, sLine));
741
for( dLine = 0, sX = dLines - 1; dLine < (Int32)dLines; dLine++, sX-- )
743
CONTINUEPIXEL(dPix32 = (PWord32)pOut->GetPtrToLine( dLine ));
745
for ( sLine = 0, dX = 0; sLine < (Int32)sLines; sLine++, dX++, dPix32++ )
747
CONTINUEPIXEL(sPix32 = (PWord32)pIn->GetPtrToPixel( sX, sLine));
761
Bool32 CRTurner::WriteDIBtoBMP(const char *cName, PCTDIB pDIB)
303
Bool32 CRTurner::CheckInAndOut180(PCTDIB pIn, PCTDIB pOut) {
304
if (pIn->GetImageHeight() != pOut->GetImageHeight() || pIn->GetImageWidth()
305
!= pOut->GetImageWidth() || pIn->GetPixelSize()
306
!= pOut->GetPixelSize()) {
307
SetReturnCode_rimage(IDS_RIMAGE_OUTCOME_DIB_NOT_LINK_TO_INCOME);
314
Bool32 CRTurner::CheckInAndOut90(PCTDIB pIn, PCTDIB pOut) {
315
if (pIn->GetImageHeight() != pOut->GetImageWidth() || pIn->GetImageWidth()
316
!= pOut->GetImageHeight() || pIn->GetPixelSize()
317
!= pOut->GetPixelSize()) {
318
SetReturnCode_rimage(IDS_RIMAGE_OUTCOME_DIB_NOT_LINK_TO_INCOME);
325
Bool32 CRTurner::Turn90LA(PCTDIB pInDIB, PCTDIB pOutDIB) {
326
uint32_t dLines = pOutDIB->GetLinesNumber();
327
uint32_t sLines = pInDIB->GetLinesNumber(); //
334
uint32_t sBytesPerLine = pOutDIB->GetLineWidth() / 8;
338
for (dLine = 0, sX = 0; dLine < (int32_t) dLines; dLine++, sX++) {
339
// Š½Š°ŃŠ°Š»Š¾ Š»ŠøŠ½ŠøŠø
340
dPix = (puchar) pOutDIB->GetPtrToLine(dLine);
342
sShift = pInDIB->GetPixelShiftInByte(sX);
343
// ŠæŠ¾ 8 ŠæŠøŠŗŃŠµŠ»ŠµŠ¹
344
for (cByte = 0, sLine = sLines - 1, dX = 0; cByte < sBytesPerLine; cByte++, dX
349
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine--);
350
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][0];
353
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine--);
354
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][1];
357
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine--);
358
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][2];
361
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine--);
362
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][3];
365
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine--);
366
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][4];
369
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine--);
370
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][5];
373
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine--);
374
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][6];
377
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine--);
378
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][7];
383
// ŠæŠ¾ŃŠ»ŠµŠ“Š½ŠøŠ¹ Š½ŠµŠæŠ¾Š»Š½ŃŠ¹ ŠæŠøŠŗŃŠµŠ»
387
for (; sLine >= 0; sLine--, dX++) {
388
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine);
390
|= Turn1at90[((*sPix) & wBitMask[sShift])][(pOutDIB->GetPixelShiftInByte(
398
Bool32 CRTurner::Turn270LA(PCTDIB pInDIB, PCTDIB pOutDIB) {
399
uint32_t dLines = pOutDIB->GetLinesNumber();
400
uint32_t sLines = pInDIB->GetLinesNumber(); //
407
uint32_t sBytesPerLine = pOutDIB->GetLineWidth() / 8;
411
for (dLine = 0, sX = dLines - 1; dLine < (int32_t) dLines; dLine++, sX--) {
412
// Š½Š°ŃŠ°Š»Š¾ Š»ŠøŠ½ŠøŠø
413
dPix = (puchar) pOutDIB->GetPtrToLine(dLine);
415
sShift = pInDIB->GetPixelShiftInByte(sX);
416
// ŠæŠ¾ 8 ŠæŠøŠŗŃŠµŠ»ŠµŠ¹
417
for (cByte = 0, sLine = 0, dX = 0; cByte < sBytesPerLine; cByte++, dX
422
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine++);
423
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][0];
426
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine++);
427
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][1];
430
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine++);
431
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][2];
434
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine++);
435
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][3];
438
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine++);
439
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][4];
442
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine++);
443
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][5];
446
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine++);
447
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][6];
450
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine++);
451
*dPix |= Turn1at90[((*sPix) & wBitMask[sShift])][7];
456
// ŠæŠ¾ŃŠ»ŠµŠ“Š½ŠøŠ¹ Š½ŠµŠæŠ¾Š»Š½ŃŠ¹ ŠæŠøŠŗŃŠµŠ»
458
if (sLine < (int32_t) sLines) {
461
for (; sLine < (int32_t) sLines; sLine++, dX++) {
462
sPix = (puchar) pInDIB->GetPtrToPixel(sX, sLine);
465
|= Turn1at90[((*sPix) & wBitMask[sShift])][(pOutDIB->GetPixelShiftInByte(
473
Bool32 CRTurner::Turn90GC(PCTDIB pIn, PCTDIB pOut) {
485
uint32_t dLines = pOut->GetLinesNumber();
486
uint32_t sLines = pIn->GetLinesNumber(); //
487
uint32_t wPixSize = pIn->GetPixelSize() / 8;
491
for (dLine = 0, sX = 0; dLine < (int32_t) dLines; dLine++, sX++) {
492
CONTINUEPIXEL(dPix8 = (puchar)pOut->GetPtrToLine( dLine ));
494
for (sLine = sLines - 1, dX = 0; dX < (int32_t) sLines; sLine--, dX++, dPix8++) {
495
CONTINUEPIXEL(sPix8 = (puchar)pIn->GetPtrToPixel( sX, sLine));
503
for (dLine = 0, sX = 0; dLine < static_cast<int32_t>(dLines); dLine++, sX++) {
504
CONTINUEPIXEL(dPix16 = (uint16_t *)pOut->GetPtrToLine( dLine ));
506
for (sLine = sLines - 1, dX = 0; dX < (int32_t) sLines; sLine--, dX++, dPix16++) {
507
CONTINUEPIXEL(sPix16 = (uint16_t*)pIn->GetPtrToPixel( sX, sLine));
515
for (dLine = 0, sX = 0; dLine < (int32_t) dLines; dLine++, sX++) {
516
CONTINUEPIXEL(dPix8 = (puchar)pOut->GetPtrToLine( dLine ));
518
for (sLine = sLines - 1, dX = 0; dX < (int32_t) sLines; sLine--, dX++) {
519
CONTINUEPIXEL(sPix8 = (puchar)pIn->GetPtrToPixel( sX, sLine));
529
for (dLine = 0, sX = 0; dLine < (int32_t) dLines; dLine++, sX++) {
530
CONTINUEPIXEL(dPix32 = (uint32_t *)pOut->GetPtrToLine( dLine ));
532
for (sLine = sLines - 1, dX = 0; dX < (int32_t) sLines; sLine--, dX++, dPix32++) {
533
CONTINUEPIXEL(sPix32 = (uint32_t *)pIn->GetPtrToPixel( sX, sLine));
547
Bool32 CRTurner::Turn180GC(PCTDIB pIn, PCTDIB pOut) {
558
uint32_t wPixSize = pIn->GetPixelSize() / 8;
559
uint32_t wLines = pIn->GetLinesNumber();
560
uint32_t sLineWidth = pIn->GetLineWidth();
564
for (dLine = 0, sLine = wLines - 1; dLine < wLines; dLine++, sLine--) {
565
sPix8 = (puchar) pIn->GetPtrToPixel(sLineWidth - 1, sLine);
566
dPix8 = (puchar) pOut->GetPtrToLine(dLine);
568
for (wPix = 0; wPix < sLineWidth; wPix++, sPix8--, dPix8++) {
576
for (dLine = 0, sLine = wLines - 1; dLine < wLines; dLine++, sLine--) {
577
sPix16 = (uint16_t*) pIn->GetPtrToPixel(sLineWidth - 1, sLine);
578
dPix16 = (uint16_t*) pOut->GetPtrToLine(dLine);
580
for (wPix = 0; wPix < sLineWidth; wPix++, sPix16--, dPix16++) {
588
for (dLine = 0, sLine = wLines - 1; dLine < wLines; dLine++, sLine--) {
589
sPix8 = (puchar) pIn->GetPtrToPixel(sLineWidth - 1, sLine);
590
dPix8 = (puchar) pOut->GetPtrToLine(dLine);
592
for (wPix = 0; wPix < sLineWidth; wPix++, sPix8 -= 6) {
602
for (dLine = 0, sLine = wLines - 1; dLine < wLines; dLine++, sLine--) {
603
sPix32 = (uint32_t*) pIn->GetPtrToPixel(sLineWidth - 1, sLine);
604
dPix32 = (uint32_t*) pOut->GetPtrToLine(dLine);
606
for (wPix = 0; wPix < sLineWidth; wPix++, sPix32--, dPix32++) {
620
Bool32 CRTurner::Turn270GC(PCTDIB pIn, PCTDIB pOut) {
632
uint32_t dLines = pOut->GetLinesNumber();
633
uint32_t sLines = pIn->GetLinesNumber(); //
634
uint32_t wPixSize = pIn->GetPixelSize() / 8;
638
for (dLine = 0, sX = dLines - 1; dLine < (int32_t) dLines; dLine++, sX--) {
639
CONTINUEPIXEL(dPix8 = (puchar)pOut->GetPtrToLine( dLine ));
641
for (sLine = 0, dX = 0; sLine < (int32_t) sLines; sLine++, dX++, dPix8++) {
642
CONTINUEPIXEL(sPix8 = (puchar)pIn->GetPtrToPixel( sX, sLine));
650
for (dLine = 0, sX = dLines - 1; dLine < static_cast<int32_t>(dLines); dLine++, sX--) {
651
CONTINUEPIXEL(dPix16 = (uint16_t*)pOut->GetPtrToLine( dLine ));
653
for (sLine = 0, dX = 0; sLine < static_cast<int32_t>(sLines); sLine++, dX++, dPix16++) {
654
CONTINUEPIXEL(sPix16 = (uint16_t *)pIn->GetPtrToPixel( sX, sLine));
662
for (dLine = 0, sX = dLines - 1; dLine < static_cast<int32_t>(dLines); dLine++, sX--) {
663
CONTINUEPIXEL(dPix8 = (puchar)pOut->GetPtrToLine( dLine ));
665
for (sLine = 0, dX = 0; sLine < static_cast<int32_t>(sLines); sLine++, dX++) {
666
CONTINUEPIXEL(sPix8 = (puchar)pIn->GetPtrToPixel( sX, sLine));
676
for (dLine = 0, sX = dLines - 1; dLine < (int32_t) dLines; dLine++, sX--) {
677
CONTINUEPIXEL(dPix32 = (uint32_t *)pOut->GetPtrToLine( dLine ));
679
for (sLine = 0, dX = 0; sLine < (int32_t) sLines; sLine++, dX++, dPix32++) {
680
CONTINUEPIXEL(sPix32 = (uint32_t *)pIn->GetPtrToPixel( sX, sLine));
694
Bool32 CRTurner::WriteDIBtoBMP(const char *cName, PCTDIB pDIB) {
763
695
#ifdef RIMAGE_DUMP_TO_FILE
764
Word32 wBMPSize = pDIB->GetDIBSize() + 14;
696
uint32_t wBMPSize = pDIB->GetDIBSize() + 14;
765
697
PumaMemoryToFileDumper BMPDump(cName);
767
699
BMPDump.AddDump("BM",2);