Subversion Repositories Kolibri OS

Rev

Rev 8860 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. MODULE HW;
  2.  
  3. IMPORT
  4.         SYSTEM, KOSAPI;
  5.  
  6.  
  7. PROCEDURE BeginDraw;
  8. BEGIN
  9.         KOSAPI.sysfunc2(12, 1)
  10. END BeginDraw;
  11.  
  12.  
  13. PROCEDURE EndDraw;
  14. BEGIN
  15.         KOSAPI.sysfunc2(12, 2)
  16. END EndDraw;
  17.  
  18.  
  19. PROCEDURE DefineAndDrawWindow (left, top, width, height, color, style, hcolor, hstyle: INTEGER; header: ARRAY OF CHAR);
  20. BEGIN
  21.         KOSAPI.sysfunc6(0, left*65536 + width, top*65536 + height, color + LSL(style, 24), hcolor + LSL(hstyle, 24), SYSTEM.ADR(header[0]))
  22. END DefineAndDrawWindow;
  23.  
  24.  
  25. PROCEDURE WriteTextToWindow (x, y, color: INTEGER; text: ARRAY OF CHAR);
  26. BEGIN
  27.         KOSAPI.sysfunc6(4, x*65536 + y, color + LSL(48, 24), SYSTEM.ADR(text[0]), LENGTH(text), 0)
  28. END WriteTextToWindow;
  29.  
  30.  
  31. PROCEDURE WaitForEvent (): INTEGER;
  32.         RETURN KOSAPI.sysfunc1(10)
  33. END WaitForEvent;
  34.  
  35.  
  36. PROCEDURE ExitApp;
  37. BEGIN
  38.         KOSAPI.sysfunc1(-1)
  39. END ExitApp;
  40.  
  41.  
  42. PROCEDURE draw_window (header, text: ARRAY OF CHAR);
  43. CONST
  44.         WHITE = 0FFFFFFH;
  45.         RED   = 0C00000H;
  46.         GREEN = 0008000H;
  47.         BLUE  = 00000C0H;
  48.         GRAY  = 0808080H;
  49. BEGIN
  50.         BeginDraw;
  51.         DefineAndDrawWindow(200, 200, 300, 150, WHITE, 51, 0, 0, header);
  52.         WriteTextToWindow( 5, 10, RED,   text);
  53.         WriteTextToWindow(35, 30, GREEN, text);
  54.         WriteTextToWindow(65, 50, BLUE,  text);
  55.         WriteTextToWindow(95, 70, GRAY,  text);
  56.         EndDraw
  57. END draw_window;
  58.  
  59.  
  60. PROCEDURE main (header, text: ARRAY OF CHAR);
  61. CONST
  62.         EVENT_REDRAW = 1;
  63.         EVENT_KEY    = 2;
  64.         EVENT_BUTTON = 3;
  65. BEGIN
  66.         WHILE TRUE DO
  67.                 CASE WaitForEvent() OF
  68.                 |EVENT_REDRAW: draw_window(header, text)
  69.                 |EVENT_KEY:    ExitApp
  70.                 |EVENT_BUTTON: ExitApp
  71.                 END
  72.         END
  73. END main;
  74.  
  75.  
  76. BEGIN
  77.         main("Hello", "Hello, world!")
  78. END HW.