Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
6613 leency 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.