Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. MODULE lib_img;
  2.  
  3. IMPORT sys := SYSTEM, KOSAPI, libimg, File;
  4.  
  5.  
  6. TYPE
  7.  
  8.   TWindow = RECORD
  9.  
  10.     Left, Top, Width, Height: INTEGER;
  11.     Color: INTEGER;
  12.     Header: ARRAY 256 OF CHAR
  13.  
  14.   END;
  15.  
  16. VAR
  17.  
  18.  img, rgb, width, height: INTEGER;
  19.  
  20.  
  21. PROCEDURE WindowRedrawStatus(p: INTEGER);
  22. VAR aux: INTEGER;
  23. BEGIN
  24.   aux := KOSAPI.sysfunc2(12, p)
  25. END WindowRedrawStatus;
  26.  
  27.  
  28. PROCEDURE DefineAndDrawWindow(x, y, width, height, color, style, hcolor, hstyle: INTEGER; htext: ARRAY OF CHAR);
  29. VAR aux: INTEGER;
  30. BEGIN
  31.   aux := KOSAPI.sysfunc6(0, x * 65536 + width, y * 65536 + height, color + LSL(style, 24), hcolor + LSL(hstyle, 24), sys.ADR(htext[0]))
  32. END DefineAndDrawWindow;
  33.  
  34.  
  35. PROCEDURE WaitForEvent(): INTEGER;
  36.   RETURN KOSAPI.sysfunc1(10)
  37. END WaitForEvent;
  38.  
  39.  
  40. PROCEDURE PutImage(x, y, rgb, width, height: INTEGER);
  41. VAR aux: INTEGER;
  42. BEGIN
  43.   aux := KOSAPI.sysfunc7(65, rgb + 8, width * 65536 + height, x * 65536 + y, 24, 0, 0)
  44. END PutImage;
  45.  
  46.  
  47. PROCEDURE draw_window(Window: TWindow);
  48. BEGIN
  49.   WindowRedrawStatus(1);
  50.   DefineAndDrawWindow(Window.Left, Window.Top, Window.Width, Window.Height, Window.Color, 51, 0, 0, Window.Header);
  51.   PutImage(10, 10, rgb, width, height);
  52.   WindowRedrawStatus(2)
  53. END draw_window;
  54.  
  55.  
  56. PROCEDURE LoadImage(FName: ARRAY OF CHAR);
  57. VAR data, size: INTEGER;
  58. BEGIN
  59.   data := File.Load(FName, size);
  60.   IF data # 0 THEN
  61.     img := libimg.img_decode(data, size, 0);
  62.     data := KOSAPI.free(data);
  63.     IF img # 0 THEN
  64.       rgb := libimg.img_to_rgb(img);
  65.       IF rgb # 0 THEN
  66.         sys.GET(img + 4, width);
  67.         sys.GET(img + 8, height)
  68.       END
  69.     END
  70.   END
  71. END LoadImage;
  72.  
  73.  
  74. PROCEDURE main;
  75. VAR Window: TWindow;
  76.     exit: BOOLEAN;
  77. BEGIN
  78.   Window.Left   := 200;
  79.   Window.Top    := 200;
  80.   Window.Width  := 400;
  81.   Window.Height := 300;
  82.   Window.Color  := 00C0C0C0H;
  83.   Window.Header := "libimg";
  84.   LoadImage("/rd/1/toolbar.png");
  85.   exit := FALSE;
  86.   REPEAT
  87.     CASE WaitForEvent() OF
  88.     |1: draw_window(Window)
  89.     |3: exit := TRUE
  90.     ELSE
  91.     END
  92.   UNTIL exit
  93. END main;
  94.  
  95. BEGIN
  96.   main
  97. END lib_img.