Subversion Repositories Kolibri OS

Rev

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

  1. // BOXLIB EXAMPLE (scrollbar, progressbar, editbox and checkbox)
  2. // Writed by maxcodehack and superturbocat2001
  3.  
  4. #include <sys/ksys.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <clayer/boxlib.h>
  8. #include <stdio.h>
  9.  
  10. #define WIN_W 640
  11. #define WIN_H 563
  12.  
  13. #define ED_BUFF_LEN 50
  14. #define TEXT_SIZE 0x10000000
  15. #define SCROLL_BUTTON_SIZE 15
  16. #define SCROLL_MAX_LEN 215
  17. #define BLACK 0x000000
  18. #define WHITE 0xFFFFFF
  19. #define BLUE  0x0000FF
  20. #define X_W(X, W) ((X<<16)+W)
  21. #define Y_H X_W
  22.  
  23. uint32_t wheels;
  24. char* title = "Boxlib example";
  25. char ed_buff[ED_BUFF_LEN];
  26.    
  27. scrollbar scroll = {15, WIN_W - 26, WIN_H - 29, 0, 0, 2, 215, SCROLL_BUTTON_SIZE, 0,0x707070,0xD2CED0,0x555555};
  28. progressbar pg = {0, 10, 10, 270, 35, 1, 0, 200, 0xB4B4B4, 0x2728FF, 0xA9A9A9};
  29. edit_box ed={WIN_W-140,10,60,0xFFFFFF,0x6a9480,0,0x6a9480, BLACK | TEXT_SIZE, ED_BUFF_LEN, ed_buff,NULL,ed_focus};
  30. check_box output_off={X_W(10, 15), Y_H(120,15), 10, WHITE, BLUE, BLACK | TEXT_SIZE, "Disable duplicate output",0};
  31.  
  32. void draw_window(){
  33.     _ksys_start_draw();
  34.     _ksys_create_window(215,100,WIN_W,WIN_H,title, 0x858585, 0x34);    
  35.         edit_box_draw(&ed);
  36.         check_box_draw2(&output_off);
  37.         if(!output_off.flags){
  38.                 _ksys_draw_text(ed_buff, 10, 90, strlen(ed_buff), BLACK | TEXT_SIZE);
  39.         }
  40.         scrollbar_v_draw(&scroll);
  41.     progressbar_draw(&pg);
  42.         _ksys_end_draw();
  43. }
  44.  
  45.  
  46. int main()
  47. {
  48.         kolibri_boxlib_init();
  49.         init_checkbox2(&output_off);
  50.         _ksys_set_event_mask(KSYS_EVM_REDRAW + KSYS_EVM_KEY + KSYS_EVM_BUTTON + KSYS_EVM_MOUSE+ KSYS_EVM_MOUSE_FILTER);
  51.         while(1){
  52.                 switch(_ksys_get_event()){
  53.                 case KSYS_EVENT_BUTTON:
  54.                         if (_ksys_get_button() == 1) return 0;
  55.                 break;
  56.                  
  57.                 case KSYS_EVENT_KEY:
  58.                         edit_box_key(&ed, _ksys_get_key().val);
  59.             draw_window();
  60.                 break;
  61.                          
  62.                 case KSYS_EVENT_REDRAW:
  63.                         draw_window();
  64.                 break;
  65.                
  66.                 case KSYS_EVENT_MOUSE:
  67.                         edit_box_mouse(&ed);
  68.                         scrollbar_v_mouse(&scroll);
  69.                         pg.value = scroll.position;
  70.                         progressbar_draw(&pg);
  71.                         check_box_mouse2(&output_off);
  72.                         unsigned int scroll_strong = 10;
  73.             wheels = _ksys_get_mouse_wheels();
  74.                         if(wheels & 0xFFFF){
  75.                                 if((short)wheels > 0){
  76.                                         scroll.position += scroll_strong;
  77.                                         if(scroll.position>scroll.max_area-scroll.cur_area){
  78.                                                 scroll.position=scroll.max_area-scroll.cur_area;
  79.                                         }
  80.                                 }else if((short)wheels < 0 && scroll.position > 0){
  81.                         scroll.position -= scroll_strong;
  82.                                         if((int)scroll.position<0){
  83.                                                 scroll.position=0;
  84.                                         }
  85.                                 }
  86.                 scrollbar_v_draw(&scroll);
  87.             }
  88.                         break;
  89.                 }
  90.         }
  91.         return 0;
  92. }