Subversion Repositories Kolibri OS

Rev

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

  1. ;
  2. ;OptionBox for MenuetOS
  3. ;
  4. ;by Harald Weber
  5. ;kitemaster@gmx.at
  6. ;
  7. ;16.02.07 Heavyiorn - optimizations for kolibri system functions
  8. ;
  9. ;######### USAGE ############
  10. ;include "optionbox.inc"
  11. ;
  12. ;//in end of draw_window procedure
  13. ;draw_optionboxes:      
  14. ; mov eax, [pos_x] shl 16 + [pos_y]
  15. ; mov cl, buttonid
  16. ; mov edx, Text         ;pointer to text beginning
  17. ;call optionbox
  18. ;
  19. ;
  20. ;Text db 'Optionbox Text',0
  21. ;
  22. ;//for more info see optxampl.asm
  23. ;##########################
  24.  
  25. optionbox:
  26.  
  27. mov [optionbox_pos_y],ax
  28. shr eax,16
  29. mov [optionbox_pos_x],ax
  30. mov [optionbox_text],edx
  31. mov [optionbox_id],cl
  32. ;######### Draw Checkbox ########
  33. optionbox_draw:
  34.  
  35.  mov eax, 13
  36.  mov bx, [optionbox_pos_x]
  37.  shl ebx, 16
  38.  add bx, 11
  39.  mov cx, [optionbox_pos_y]
  40.  shl ecx, 16
  41.  add cx, 11
  42.  mov edx,[sc.work_text]
  43.  int 0x40
  44.  
  45.  mov edx,[sc.work]
  46.  add ebx, 1 shl 16 - 2
  47.  add ecx, 1 shl 16 -2
  48.  int 0x40
  49.  
  50.  
  51. ;######### Draw Hidden Button ######
  52. optionbox_hid_button:
  53. mov eax,8
  54. mov bx,[optionbox_pos_x]
  55. sub bx,1
  56. shl ebx,16
  57. mov bx,13
  58. mov cx,[optionbox_pos_y]
  59. sub cx,1
  60. shl ecx,16
  61. mov cx,13
  62. mov dl,[optionbox_id]                      ;buttonid
  63. or  edx,0x60000000                         ;button in invisible without frame
  64. int 0x40
  65. ;######### Draw X #######
  66. optionbox_x_draw:
  67. mov al,[optionbox_id]
  68. cmp [optionbox_checked],al
  69. jne optionbox_dis
  70.  
  71.  mov eax, 13
  72.  mov bx, [optionbox_pos_x]
  73.  add bx, 3
  74.  shl ebx, 16
  75.  add bx, 5
  76.  mov cx, [optionbox_pos_y]
  77.  add cx, 3
  78.  shl ecx, 16
  79.  add cx, 5
  80.  mov edx,[sc.work_text]
  81.  int 0x40
  82.  
  83. optionbox_dis:
  84.  
  85. ;######### Checkbox Text #####
  86. optionbox_draw_text:
  87.       mov  eax,4                   ; function 4 : write text to window
  88.       mov  bx,[optionbox_pos_x]
  89.       add  bx, 14
  90.       shl  ebx,16
  91.       mov  bx,[optionbox_pos_y]
  92.       add  bx, 2                         ; [x start] *65536 + [y start]
  93.       mov  ecx,[sc.work_text]      ; color of text RRGGBB
  94.       or   ecx,0x80000000
  95.       mov  edx,[optionbox_text]      ; pointer to text beginning
  96.       int  0x40
  97.  
  98. ret
  99.  
  100. ;######### Set OptionBox #####
  101. set_optionbox:
  102.  mov [optionbox_checked],ah
  103.  call draw_optionboxes
  104. ret
  105.  
  106. ;########## Data Area ########
  107.  
  108. optionbox_pos_x dw ?
  109. optionbox_pos_y dw ?
  110. optionbox_text dd ?
  111. optionbox_checked db ?
  112. optionbox_id db ?