Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;Hello world example
  2.  
  3. use32
  4.         db      'MENUET01'
  5.         dd      1
  6.         dd      start
  7.         dd      i_end
  8.         dd      0x1000
  9.         dd      0x1000
  10.         dd      0
  11.         dd      0
  12.  
  13. TRUE    =     1
  14. FALSE   =     0
  15.  
  16. include 'libGUI.inc'
  17.  
  18. start:
  19.         ;load libGUI labrari
  20.         push NULL  ;use default system path to library
  21.         call LoadLibGUI
  22.         ;create main window
  23.         CreateWindow
  24.         mov [window],eax
  25.         ;change size of main window
  26.         SetWindowSizeRequest [window],220,142
  27.         ;set callback function for button close window
  28.         SetCallbackFunction [window],DELETE_EVENT,callback_func_delete_window,NULL
  29.  
  30.         ;create control Image
  31.         mov [imgdata.x],5
  32.         mov [imgdata.y],5
  33.         mov [imgdata.wight],200
  34.         mov [imgdata.height],100
  35.         mov [imgdata.bits_per_pixel],32
  36.         CreateImage imgdata
  37.         mov [image],eax
  38.  
  39.         ;copy data from pointer to local variable
  40.         ;for access to filds of structure
  41.         mov ecx,[image]
  42.         mov eax,[ecx+HEADER_SIZE+2] ;pointer to picture
  43.  
  44.         xor ecx,ecx
  45.         for_size_y:
  46.                 xor edx,edx
  47.                 for_size_x:
  48.                         ;generate color
  49.                         mov ebx,edx ;i
  50.                         mov esi,ecx ;j
  51.                         imul ebx,ebx ;i*i
  52.                         imul esi,esi ;j*j
  53.                         add ebx,esi  ;i*i+j*J
  54.                         mov esi,edx  ;i
  55.                         lea esi,[esi+2*esi] ;i*3
  56.                         sub ebx,esi  ;i*i+j*j-i*3
  57.                         mov esi,ecx  ;j
  58.                         shl esi,1    ;j*2
  59.                         add ebx,esi  ;i*i+j*j-i*3+2*j
  60.                         imul ebx,100 ;100*(i*i+j*j-i*3+2*j)
  61.  
  62.                         mov [eax],ebx
  63.                         add eax,4
  64.                 inc edx
  65.                 cmp edx,200
  66.                 jl for_size_x
  67.         inc ecx
  68.         cmp ecx,100
  69.         jl for_size_y
  70.  
  71.         ;pack control Text in window
  72.         PackControls [window],[image]
  73.  
  74.         ;start libGUI main loop
  75.         LibGUImain [window]
  76.  
  77.  
  78. ;void callback_func_delete_window(header_t *control,void *data)
  79. callback_func_delete_window:
  80.  
  81.         mov eax,[esp+4] ;control
  82.  
  83.         QuitLibGUI eax
  84.  
  85.         ret
  86. align 4
  87. ;----------------data-----------------
  88. imgdata         gui_image_data_t
  89. window          rd 1;parent_t *window
  90. image           rd 1
  91.  
  92. i_end: