Subversion Repositories Kolibri OS

Rev

Rev 9174 | Rev 9522 | 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, Graph, 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.                 Graph.getRGB(K.toolbarColor, r, g, b)
  97.             END;
  98.             SYSTEM.PUT8(data, b);
  99.             SYSTEM.PUT8(data + 1, g);
  100.             SYSTEM.PUT8(data + 2, r);
  101.             INC(data, 3);
  102.         END
  103.     END
  104. END iconsBackColor;
  105.  
  106.  
  107. PROCEDURE get* (VAR icons, grayIcons: INTEGER);
  108. BEGIN
  109.     IF source = 0 THEN
  110.         source := load();
  111.         icons := load();
  112.         grayIcons := load()
  113.     ELSE
  114.         copy(source, icons);
  115.         copy(source, grayIcons)
  116.     END;
  117.     gray(grayIcons);
  118.     iconsBackColor(icons);
  119.     iconsBackColor(grayIcons)
  120. END get;
  121.  
  122.  
  123. BEGIN
  124.     source := 0
  125. END Icons.