Subversion Repositories Kolibri OS

Rev

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

  1. // writed by maxcodehack and superturbocat2001
  2. // adaptation of clayer for ktcc
  3. #ifndef KOLIBRI_BOXLIB_H
  4. #define KOLIBRI_BOXLIB_H
  5.  
  6. #include <stddef.h>
  7. #include <stdint.h>
  8. #include <sys/ksys.h>
  9.  
  10. typedef unsigned color_t;
  11. int kolibri_boxlib_init(void);
  12.  
  13. /*  flags meaning */
  14. #define ed_figure_only  0b1000000000000000 // одни символы
  15. #define ed_always_focus 0b100000000000000  // всегда с курсором (фокусом)
  16. #define ed_focus        0b10               // фокус ввода приложения, мышится самостоятельно
  17. #define ed_pass         0b1                // поле с паролем
  18. #define ed_shift_on     0b1000             // если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая //shift
  19. #define ed_shift_on_off 0b1111111111110111
  20. #define ed_shift        0b100 //включается при нажатии на shift т.е. если нажимаю
  21. #define ed_shift_off    0b1111111111111011
  22. #define ed_shift_bac    0b10000            //бит для очистки выделеного shift т.е. при установке говорит что есть выделение
  23. #define ed_shift_bac_cl 0b1111111111101111 //очистка при удалении выделения
  24. #define ed_shift_cl     0b1111111111100011
  25. #define ed_shift_mcl    0b1111111111111011
  26. #define ed_left_fl      0b100000
  27. #define ed_right_fl     0b1111111111011111
  28. #define ed_offset_fl    0b1000000
  29. #define ed_offset_cl    0b1111111110111111
  30. #define ed_insert       0b10000000
  31. #define ed_insert_cl    0b1111111101111111
  32. #define ed_mouse_on     0b100000000
  33. #define ed_mous_adn_b   0b100011000
  34. #define ed_mouse_off    ~ed_mouse_on
  35. #define ed_ctrl_on      0b1000000000
  36. #define ed_ctrl_off     ~ed_ctrl_on
  37. #define ed_alt_on       0b10000000000
  38. #define ed_alt_off      ~ed_alt_on
  39. #define ed_disabled     0b100000000000
  40.  
  41. // SCROLLBAR
  42. typedef struct {
  43.     uint16_t xsize;
  44.     uint16_t xpos;
  45.     uint16_t ysize;
  46.     uint16_t ypos;
  47.     uint32_t btn_height;
  48.     uint32_t type; // type 1 - stylish frame, type 2 - ?, type 0 - ?
  49.     uint32_t max_area;
  50.     uint32_t cur_area;
  51.     uint32_t position;
  52.     uint32_t back_color;
  53.     uint32_t front_color;
  54.     uint32_t line_color;
  55.     uint32_t redraw;
  56.     uint16_t delta;
  57.     uint16_t delta2;
  58.     uint16_t r_size_x;
  59.     uint16_t r_start_x;
  60.     uint16_t r_size_y;
  61.     uint16_t r_start_y;
  62.     uint32_t m_pos;
  63.     uint32_t m_pos2;
  64.     uint32_t m_keys;
  65.     uint32_t run_size;
  66.     uint32_t position2;
  67.     uint32_t work_size;
  68.     uint32_t all_redraw; // need to be set =1 before each redraw
  69.     uint32_t ar_offset;
  70. } __attribute__((__packed__)) scrollbar;
  71.  
  72. extern void __stdcall (*scrollbar_h_draw)(scrollbar*);
  73. extern void __stdcall (*scrollbar_h_mouse)(scrollbar*);
  74. extern void __stdcall (*scrollbar_v_draw)(scrollbar*);
  75. extern void __stdcall (*scrollbar_v_mouse)(scrollbar*);
  76.  
  77. // CHECKBOX
  78. typedef struct {
  79.     unsigned int left_s;
  80.     unsigned int top_s;
  81.     unsigned int ch_text_margin;
  82.     unsigned int color;
  83.     unsigned int border_color;
  84.     unsigned int text_color;
  85.     char* text;
  86.     unsigned int flags;
  87.  
  88.     /* Users can use members above this */
  89.     unsigned int size_of_str;
  90. } check_box;
  91.  
  92. extern void __stdcall (*check_box_draw2)(check_box*);
  93. extern void __stdcall (*check_box_mouse2)(check_box*);
  94. extern void __stdcall (*init_checkbox2)(check_box*);
  95.  
  96. // DBUTTON
  97. typedef struct {
  98.     uint32_t type;
  99.     uint32_t x_w;
  100.     uint32_t y_h;
  101.     uint32_t mouse_pos;
  102.     uint32_t mouse_keys;
  103.     uint32_t mouse_keys_old;
  104.     void* active_raw;        //active bitmap
  105.     void* passive_raw;       //passive bitmap
  106.     void* click_raw;         //pressed bitmap
  107.     uint32_t resolution_raw; // bpp, as esi fn65
  108.     void* palette_raw;       // palette, as edi fn65
  109.     uint32_t offset_raw;     // width as ebp fn65
  110.     uint32_t select;         // internal state: 0 - passive, 2 - pressed, 1 - clicked
  111.     uint32_t click;          // clicked - 1, zero it after tested
  112. } pict_button;
  113.  
  114. extern void __stdcall (*dynamic_button_draw)(pict_button*);
  115. extern void __stdcall (*dynamic_button_mouse)(pict_button*);
  116.  
  117. // EDITBOX
  118.  
  119. #pragma pack(push, 1)
  120. typedef struct edit_box_t {
  121.     unsigned int width;
  122.     unsigned int left;
  123.     unsigned int top;
  124.     unsigned int color;
  125.     unsigned int shift_color; // selected text color
  126.     unsigned int focus_border_color;
  127.     unsigned int blur_border_color;
  128.     unsigned int text_color;
  129.     unsigned int max;
  130.     char* text;
  131.     void* mouse_variable; // must be pointer edit_box** to save focused editbox
  132.     unsigned int flags;
  133.  
  134.     unsigned int size; // used symbols in buffer without trailing zero
  135.     unsigned int pos;  // cursor position
  136.                        /* The following struct members are not used by the users of API */
  137.     unsigned int offset;
  138.     unsigned int cl_curs_x;
  139.     unsigned int cl_curs_y;
  140.     unsigned int shift;
  141.     unsigned int shift_old;
  142.     unsigned int height;
  143.     unsigned int char_width;
  144. } edit_box;
  145. #pragma pack(pop)
  146.  
  147. extern void __stdcall (*edit_box_draw)(edit_box*);
  148. extern void __stdcall (*edit_box_key)(edit_box*, unsigned int key_val);
  149. extern void __stdcall (*edit_box_mouse)(edit_box*);
  150. extern void __stdcall (*edit_box_set_text)(edit_box*, char*);
  151.  
  152. extern void __stdcall (*edit_box_key_safe)(edit_box* e, ksys_oskey_t ch);
  153.  
  154. // FRAME
  155. typedef struct {
  156.     uint32_t type;
  157.     uint32_t x_w;
  158.     uint32_t y_h;
  159.     color_t ext_col;
  160.     color_t int_col;
  161.     uint32_t flags;
  162.     char* text_pointer;
  163.     uint32_t text_position;
  164.     uint32_t font_number;
  165.     uint32_t font_size_y;
  166.     color_t font_color;
  167.     color_t font_bg_color;
  168. } frame;
  169.  
  170. extern void __stdcall (*frame_draw)(frame*);
  171.  
  172. // MENUBAR
  173. typedef struct
  174. {
  175.     uint32_t type; // 1 åñëè íåò ïîäìåíþ, ïðîñòî ïóíêò
  176.  
  177.     uint32_t x_w; // âåðõíèé ïóíêò
  178.     uint32_t y_h;
  179.  
  180.     char* text_pointer;
  181.     char* pos_pointer;
  182.     char* text_end;
  183.     uint32_t mouse_pos;
  184.     uint32_t mouse_keys;
  185.  
  186.     uint32_t x_w1; // ïîäìåíþ
  187.     uint32_t y_h1;
  188.  
  189.     color_t bckg_col; // ôîí âåðõíåãî ïóêòà
  190.     color_t frnt_col; // ôîí âûáðàííîãî âåðõíåãî ïóíêòà
  191.     color_t menu_col; // ôîí âûïàäàþùåé ÷àñòè (ïîäïóêòû)
  192.     uint32_t select;
  193.     uint32_t out_select;
  194.     char* buf_adress;
  195.     char* procinfo;
  196.     uint32_t click;
  197.     uint32_t cursor;
  198.     uint32_t cursor_old;
  199.     uint32_t interval;
  200.     uint32_t cursor_max;
  201.     uint32_t extended_key;
  202.     color_t menu_sel_col;  // öâåò ôîíà âûáðàííîãî ïîäïóíêòà
  203.     color_t bckg_text_col; // öâåò øðèôòà íåâûáðàííîãî ïóíêòà
  204.     color_t frnt_text_col; // öâåò øðèôòà âûáðàííîãî ïóíêòà
  205.     uint32_t mouse_keys_old;
  206.     uint32_t font_height;
  207.     uint32_t cursor_out;
  208.     uint32_t get_mouse_flag;
  209. } menubar;
  210.  
  211. extern void __stdcall (*menu_bar_draw)(menubar*);
  212. extern void __stdcall (*menu_bar_mouse)(menubar*);
  213. extern void __stdcall (*menu_bar_activate)(menubar*);
  214.  
  215. // OPTIONBOX
  216. typedef struct option_box_t {
  217.     struct option_box_t** selected;
  218.     uint16_t posx;
  219.     uint16_t posy;
  220.     uint32_t text_margin; // = 4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè
  221.     uint32_t size;        // 12 ðàçìåð êâàäðàòà ÷åê áîêñà
  222.     color_t color;
  223.     color_t border_color; // individual border
  224.     color_t text_color;
  225.     char* text;
  226.     uint32_t text_len;
  227.     uint32_t flags;
  228. } __attribute__((__packed__)) option_box;
  229.  
  230. extern void __stdcall (*option_box_draw)(option_box**);
  231. extern void __stdcall (*option_box_mouse)(option_box**);
  232.  
  233. // PATHSHOW
  234. typedef struct {
  235.     uint32_t type;
  236.     uint32_t x_y;
  237.     uint16_t font_size_x; // 6 - for font 0, 8 - for font 1
  238.     uint16_t area_size_x;
  239.     uint32_t font_number;     // 0 - monospace, 1 - variable, as fn4 (2bit only 0-3)
  240.     uint32_t background_flag; // as fn4, if 0, bk_color unneeded
  241.     color_t font_color;       // as fn4
  242.     color_t background_color; // as fn4
  243.     char* text_pointer;       // 4096 ?
  244.     char* work_area_pointer;  // 4096 ?
  245.     uint32_t temp_text_length;
  246. } __attribute__((__packed__)) pathview;
  247.  
  248. extern void __stdcall (*path_show_prepare)(pathview*);
  249. extern void __stdcall (*path_show_draw)(pathview*);
  250.  
  251. // PROGRESSBAR
  252. typedef struct {
  253.     unsigned int value;
  254.     unsigned int left;
  255.     unsigned int top;
  256.     unsigned int width;
  257.     unsigned int height;
  258.     unsigned int style;
  259.     unsigned int min;
  260.     unsigned int max;
  261.     unsigned int back_color;
  262.     unsigned int progress_color;
  263.     unsigned int frame_color;
  264. } progressbar;
  265.  
  266. extern void __stdcall (*progressbar_draw)(progressbar*);
  267. extern void __stdcall (*progressbar_progress)(progressbar*);
  268.  
  269. #endif /* KOLIBRI_BOXLIB_H */
  270.