Subversion Repositories Kolibri OS

Rev

Rev 8859 | Rev 9431 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
9174 akron1 1
(*
8859 leency 2
    Copyright 2021 Anton Krotov
3
 
4
    This file is part of CEdit.
5
 
6
    CEdit is free software: you can redistribute it and/or modify
7
    it under the terms of the GNU General Public License as published by
8
    the Free Software Foundation, either version 3 of the License, or
9
    (at your option) any later version.
10
 
11
    CEdit is distributed in the hope that it will be useful,
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
    GNU General Public License for more details.
15
 
16
    You should have received a copy of the GNU General Public License
17
    along with CEdit. If not, see .
18
*)
19
 
20
MODULE Icons;
21
 
22
IMPORT
23
    LibImg, K := KolibriOS, SYSTEM;
24
 
25
CONST
26
    fileName = "/rd/1/Icons16.png";
27
    SIZE* = 18;
28
 
29
VAR
30
    source: INTEGER;
31
 
32
 
33
PROCEDURE copy (src, dst: INTEGER);
34
VAR
35
    src_sizeX, src_sizeY, dst_sizeX, dst_sizeY,
36
    src_data, dst_data: INTEGER;
37
BEGIN
38
    LibImg.GetInf(src, src_sizeX, src_sizeY, src_data);
39
    LibImg.GetInf(dst, dst_sizeX, dst_sizeY, dst_data);
40
    ASSERT(src_sizeX = dst_sizeX);
41
    ASSERT(src_sizeY = dst_sizeY);
42
    SYSTEM.MOVE(src_data, dst_data, src_sizeX*src_sizeY*3)
43
END copy;
44
 
45
 
46
PROCEDURE load (): INTEGER;
47
VAR
48
    y: INTEGER;
49
BEGIN
50
    RETURN LibImg.LoadFromFile(fileName, SIZE, y)
51
END load;
52
 
53
 
54
PROCEDURE draw* (icons, n, x, y: INTEGER);
55
VAR
56
    sizeX, sizeY, data: INTEGER;
57
BEGIN
58
    LibImg.GetInf(icons, sizeX, sizeY, data);
59
    K.DrawImage(data + SIZE*SIZE*3*n, SIZE, SIZE, x, y)
60
END draw;
61
 
62
 
63
PROCEDURE gray (icons: INTEGER);
64
VAR
65
    sizeX, sizeY, data, x, y: INTEGER;
66
    b, g, r, gr: BYTE;
67
BEGIN
68
    LibImg.GetInf(icons, sizeX, sizeY, data);
69
    FOR y := 0 TO sizeY - 1 DO
70
        FOR x := 0 TO sizeX - 1 DO
71
            SYSTEM.GET8(data, b);
72
            SYSTEM.GET8(data + 1, g);
73
            SYSTEM.GET8(data + 2, r);
74
            gr := (r + g + b) DIV 3;
75
            SYSTEM.PUT8(data, gr);
76
            SYSTEM.PUT8(data + 1, gr);
77
            SYSTEM.PUT8(data + 2, gr);
78
            INC(data, 3);
79
        END
80
    END
81
END gray;
82
 
83
 
84
PROCEDURE iconsBackColor (icons: INTEGER);
85
VAR
86
    sizeX, sizeY, data, x, y: INTEGER;
87
    b, g, r: BYTE;
88
BEGIN
89
    LibImg.GetInf(icons, sizeX, sizeY, data);
90
    FOR y := 0 TO sizeY - 1 DO
91
        FOR x := 0 TO sizeX - 1 DO
92
            SYSTEM.GET8(data, b);
93
            SYSTEM.GET8(data + 1, g);
94
            SYSTEM.GET8(data + 2, r);
95
            IF b + g + r = 765 THEN
96
                b := K.toolbarColor MOD 256;
97
                g := K.toolbarColor DIV 256 MOD 256;
98
                r := K.toolbarColor DIV 65536 MOD 256
99
            END;
100
            SYSTEM.PUT8(data, b);
101
            SYSTEM.PUT8(data + 1, g);
102
            SYSTEM.PUT8(data + 2, r);
103
            INC(data, 3);
104
        END
105
    END
106
END iconsBackColor;
107
 
108
 
109
PROCEDURE get* (VAR icons, grayIcons: INTEGER);
110
BEGIN
111
    IF source = 0 THEN
112
        source := load();
113
        icons := load();
114
        grayIcons := load()
115
    ELSE
116
        copy(source, icons);
117
        copy(source, grayIcons)
118
    END;
119
    gray(grayIcons);
120
    iconsBackColor(icons);
121
    iconsBackColor(grayIcons)
122
END get;
123
 
124
 
125
BEGIN
126
    source := 0
127
END Icons.