Subversion Repositories Kolibri OS

Rev

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

  1. #ifndef __WINLIB_H__
  2. #define __WINLIB_H__
  3.  
  4. #include "control.h"
  5.  
  6. typedef struct
  7. {
  8.     link_t      link;
  9.     link_t      child;
  10.  
  11.     handler_t  *handler;
  12.     ctrl_t     *parent;
  13.  
  14.     ctx_t      *ctx;
  15.     uint32_t    id;
  16.     uint32_t    style;
  17.  
  18.     rect_t      rc;
  19.     int         w;
  20.     int         h;
  21.  
  22.     rect_t      left;    /*  left  border            */
  23.     rect_t      right;   /*  right border            */
  24.     rect_t      bottom;  /*  bottom border           */
  25.  
  26.     button_t   *close_btn;
  27.     rect_t     *track;
  28. }frame_t;
  29.  
  30. typedef struct
  31. {
  32.     ctrl_t     ctrl;
  33.     ctx_t      ctx;
  34.     ctrl_t    *child_over;
  35.     button_t  *close_btn;
  36.     button_t  *minimize_btn;
  37.  
  38. }caption_t;
  39.  
  40. typedef struct
  41. {
  42.     ctrl_t      ctrl;
  43.     ctx_t       ctx;
  44.     rect_t      draw;
  45.     ctrl_t     *child_over;
  46.     progress_t *prg;
  47.     button_t   *play_btn;
  48. }panel_t;
  49.  
  50. typedef struct
  51. {
  52.     link_t       link;
  53.     link_t       child;
  54.  
  55.     handler_t   *handler;
  56.     ctrl_t      *parent;
  57.  
  58.     ctx_t       *ctx;
  59.     uint32_t     id;
  60.     uint32_t     style;
  61.  
  62.     rect_t       rc;
  63.     int          w;
  64.     int          h;
  65.  
  66.     rect_t       client;
  67.  
  68.     ctx_t        client_ctx;
  69.  
  70.     char        *caption_txt;
  71.     ctrl_t      *child_over;
  72.     ctrl_t      *child_focus;
  73.  
  74.     caption_t    caption;
  75.     panel_t      panel;
  76.     frame_t      frame;
  77.  
  78.     enum win_state{
  79.       NORMAL, MINIMIZED, ROLLED, MAXIMIZED
  80.     }win_state;
  81.     enum win_command{
  82.         WIN_CLOSED=1
  83.     }win_command;
  84.  
  85. }window_t;
  86.  
  87. #define get_parent_window(x) ((window_t*)((x)->parent))
  88.  
  89. ctrl_t *win_get_child(window_t *win, int x, int y);
  90.  
  91. void init_winlib(void);
  92.  
  93. void draw_caption(caption_t *cpt);
  94. void draw_panel(panel_t *panel);
  95. void blit_caption(caption_t *cpt);
  96. int  init_caption(window_t *win);
  97. int  init_panel(window_t *win);
  98.  
  99.  
  100.  
  101. window_t  *create_window(char *caption, int style, int x, int y,
  102.                             int w, int h, handler_t handler);
  103.  
  104. int show_window(window_t *win, int state);
  105.  
  106. int def_window_proc(ctrl_t  *ctrl, uint32_t msg, uint32_t arg1, uint32_t arg2);
  107.  
  108. void frame_run(window_t *win);
  109.  
  110. button_t *create_button(char *caption, int id, int x, int y,
  111.                             int w, int h, ctrl_t *parent);
  112. progress_t *create_progress(char *caption, int id, int x, int y,
  113.                         int w, int h, ctrl_t *parent);
  114.  
  115. scroller_t *create_scroller(uint32_t style, int id, int x, int y,
  116.                                 int w, int h, ctrl_t *parent);
  117.  
  118. //static uint32_t update_timers(uint32_t realtime);
  119.  
  120. int set_timer(ctrl_t *ctrl, ostimer_t *timer, uint32_t delay);
  121.  
  122. void update_rect(ctrl_t *ctrl);
  123.  
  124.  
  125. #endif
  126.