Subversion Repositories Kolibri OS

Rev

Rev 9174 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. (*
  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 <http://www.gnu.org/licenses/>.
  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.