Subversion Repositories Kolibri OS

Rev

Rev 9640 | Rev 9644 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. //BOX_LIB - Asper
  2. #ifndef INCLUDE_BOX_LIB_H
  3. #define INCLUDE_BOX_LIB_H
  4.  
  5. #ifndef INCLUDE_KOLIBRI_H
  6. #include "../lib/kolibri.h"
  7. #endif
  8.  
  9. #ifndef INCLUDE_DLL_H
  10. #include "../lib/dll.h"
  11. #endif
  12.  
  13. dword boxlib = #aEdit_box_lib;
  14. char aEdit_box_lib[]="/sys/lib/box_lib.obj";
  15.  
  16. dword box_lib_init   = #aboxlib_init;
  17.  
  18. dword edit_box_draw     = #aEdit_box_draw;
  19. dword edit_box_key      = #aEdit_box_key;
  20. dword edit_box_mouse    = #aEdit_box_mouse;
  21. dword edit_box_set_text = #aEdit_box_set_text;
  22.  
  23. dword scrollbar_v_draw  = #aScrollbar_v_draw;
  24. dword scrollbar_v_mouse = #aScrollbar_v_mouse;
  25. dword scrollbar_h_draw  = #aScrollbar_h_draw;
  26. dword scrollbar_h_mouse = #aScrollbar_h_mouse;
  27.  
  28. dword PathShow_prepare  = #aPathShow_prepare;
  29. dword PathShow_draw     = #aPathShow_draw;
  30.  
  31. dword progressbar_draw = #aProgressbar_draw;
  32. dword progressbar_progress = #aProgressbar_progress;
  33.  
  34. dword frame_draw = #aFrame_draw;
  35.  
  36. $DD 2 dup 0
  37.  
  38. char aEdit_box_draw []    = "edit_box";
  39. char aEdit_box_key  []    = "edit_box_key";
  40. char aEdit_box_mouse[]    = "edit_box_mouse";
  41. char aEdit_box_set_text[] = "edit_box_set_text";
  42.  
  43. char aboxlib_init[]       = "lib_init";
  44. char aScrollbar_v_draw [] = "scrollbar_v_draw";
  45. char aScrollbar_v_mouse[] = "scrollbar_v_mouse";
  46. char aScrollbar_h_draw [] = "scrollbar_h_draw";
  47. char aScrollbar_h_mouse[] = "scrollbar_h_mouse";
  48.  
  49. char aPathShow_prepare [] = "PathShow_prepare";
  50. char aPathShow_draw    [] = "PathShow_draw";
  51.  
  52. char aProgressbar_draw    [] = "progressbar_draw";
  53. char aProgressbar_progress[] = "progressbar_progress";
  54.  
  55. char aFrame_draw[] = "frame_draw";
  56.  
  57.  
  58. struct PathShow_data
  59. {
  60. dword type;
  61. word  start_y;
  62. word  start_x;
  63. word  font_w;       // 6 - for font 0, 8 - for font 1
  64. word  area_size_x;
  65. dword font_number;  // 0 - monospace, 1 - variable
  66. dword background_flag;
  67. dword font_color;
  68. dword background_color;
  69. dword text_pointer;
  70. dword work_area_pointer;
  71. dword temp_text_length;
  72. };
  73. /*
  74. char temp[128];
  75. PathShow_data PathShow = {0, 100,20, 6, 200, 0, 1, 0x0, 0xFFFfff, #email_text, #temp, 0};
  76. PathShow_prepare stdcall(#PathShow);
  77. PathShow_draw stdcall(#PathShow);
  78. */
  79.  
  80. //editbox flags
  81. #define ed_pass                        1b
  82. #define ed_focus                      10b   //focused
  83. #define ed_shift                     100b   //flag is set when Shift is pressed
  84. #define ed_shift_on                 1000b
  85. #define ed_shift_bac               10000b   //bit for Shift reset, if set the smth is selected
  86. #define ed_left_fl                100000b
  87. #define ed_offset_fl             1000000b
  88. #define ed_insert               10000000b
  89. #define ed_mouse_on            100000000b
  90. #define ed_mouse_adn_b         100011000b
  91. #define ed_disabled         100000000000b
  92. #define ed_always_focus  100000000000000b
  93. #define ed_figure_only  1000000000000000b   //numbers only
  94. #define ed_shift_cl     1111111111100011b
  95. #define ed_shift_mcl    1111111111111011b
  96. #define ed_shift_off    1111111111111011b
  97. #define ed_shift_on_off 1111111111110111b
  98. #define ed_shift_bac_cl 1111111111101111b
  99. #define ed_right_fl     1111111111011111b
  100. #define ed_offset_cl    1111111110111111b
  101. #define ed_insert_cl    1111111101111111b
  102. #define ed_mouse_on_off 1111111011111111b
  103.  
  104. struct edit_box{
  105. dword width,
  106.         left,
  107.         top,
  108.         color,
  109.         shift_color,
  110.         focus_border_color,
  111.         blur_border_color,
  112.         text_color,
  113.         max,
  114.         text,
  115.         mouse_variable,
  116.         flags,
  117.         size,
  118.         pos,
  119.         offset,
  120.         cl_curs_x,
  121.         cl_curs_y,
  122.         shift,
  123.         shift_old,
  124.         height,
  125.         char_width;
  126. };
  127.  
  128. :void EditBox_UpdateText(dword ed, _flags)
  129. {
  130.         dword ed_text;
  131.         ESI = ed;
  132.         //ESI.edit_box.offset = ESI.edit_box.shift = ESI.edit_box.shift_old = 0; //no need because of 7904
  133.         ESI.edit_box.flags = _flags;
  134.         ed_text = ESI.edit_box.text;
  135.         //ESI.edit_box.pos =  //no need because of 7904
  136.         ESI.edit_box.size = strlen(ed_text);
  137. }
  138.  
  139. :dword EditBox_Create(dword eb, left, top, width, maxlen, text, flags)
  140. {
  141.         ESDWORD[eb] = width;
  142.         ESDWORD[eb + 4] = left;
  143.         ESDWORD[eb + 8] = top;
  144.         ESDWORD[eb + 12] = 0xffffff;
  145.         ESDWORD[eb + 16] = 0x94AECE;
  146.         ESDWORD[eb + 20] = 0xffffff;
  147.         ESDWORD[eb + 24] = 0xffffff;
  148.         ESDWORD[eb + 28] = 0x10000000;
  149.         ESDWORD[eb + 32] = maxlen;
  150.         ESDWORD[eb + 36] = text;
  151.         ESDWORD[eb + 40] = 0;
  152.         ESDWORD[eb + 44] = flags;
  153.         ESDWORD[eb + 48] = 0;
  154.         ESDWORD[eb + 52] = 0;
  155. }
  156.  
  157. struct scroll_bar
  158. {
  159.         word size_x, start_x, size_y, start_y;
  160.         dword btn_height, type, max_area, cur_area, position,
  161.         bckg_col, frnt_col, line_col, redraw;
  162.         word delta, delta2, r_size_x, r_start_x, r_size_y, r_start_y;
  163.         dword m_pos, m_pos_2, m_keys, run_size, position2, work_size, all_redraw, ar_offset;
  164. };
  165.  
  166. struct progress_bar
  167. {
  168.   dword
  169.         value,
  170.         left,
  171.         top,
  172.         width,
  173.         height,
  174.         style,
  175.         min,
  176.         max,
  177.         back_color,
  178.         progress_color,
  179.         frame_color;
  180. };
  181.  
  182. struct frame
  183. {
  184.         dword type;
  185.         word size_x; //start_x, size_x => Mario, WTF? Is this so complex to use x/y/w/h ?
  186.         word start_x;
  187.         word size_y;
  188.         word start_y;
  189.         dword ext_col;
  190.         dword int_col;
  191.         dword flags;  // see FR_FLAGS
  192.         dword text_pointer;
  193.         dword text_position;   //  0-up,1-bottom
  194.         dword font_number;     //  0-monospace,1-variable
  195.         dword font_size_y;
  196.         dword font_color;
  197.         dword font_backgr_color;
  198. };
  199.  
  200. // FR_FLAGS = [x][yyy][z]
  201. // z        -  Caption
  202. // yyy      -  BorderStyle
  203. // x        -  BackStyle
  204. #define FR_CAPTION 00001b // [z]
  205. #define FR_DOUBLE  00000b // [yyy]
  206. #define FR_RAISED  00010b // [yyy]
  207. #define FR_SUNKEN  00100b // [yyy]
  208. #define FR_ETCHED  00110b // [yyy]
  209. #define FR_RIDGED  01000b // [yyy]
  210. #define FR_FILLED  10000b // [x]
  211.  
  212. :frame frame123 = { 0, 260, 10, 60, 16, NULL, 0xFFFfff, 1, NULL, 0, 1, 12, 0x000111, 0xCCCccc };
  213. :void DrawFrame(dword x,y,w,h,text)
  214. {
  215.         frame123.font_color = sc.work_text;
  216.         frame123.ext_col = sc.line;
  217.         frame123.int_col = sc.light;
  218.         frame123.font_backgr_color = sc.work;
  219.  
  220.         frame123.start_x = x;
  221.         frame123.start_y = y;
  222.         frame123.size_x = w;
  223.         frame123.size_y = h;
  224.         frame123.text_pointer = text;
  225.         if (!text) frame123.flags=0; else frame123.flags=FR_CAPTION;
  226.         frame_draw stdcall (#frame123);
  227. }
  228.  
  229.  
  230. #endif