OSDN Git Service

implement NG word edit window's logic.
[bbk/bchan.git] / src / hmi.h
1 /*
2  * hmi.h
3  *
4  * Copyright (c) 2011 project bchan
5  *
6  * This software is provided 'as-is', without any express or implied
7  * warranty. In no event will the authors be held liable for any damages
8  * arising from the use of this software.
9  *
10  * Permission is granted to anyone to use this software for any purpose,
11  * including commercial applications, and to alter it and redistribute it
12  * freely, subject to the following restrictions:
13  *
14  * 1. The origin of this software must not be misrepresented; you must not
15  *    claim that you wrote the original software. If you use this software
16  *    in a product, an acknowledgment in the product documentation would be
17  *    appreciated but is not required.
18  *
19  * 2. Altered source versions must be plainly marked as such, and must not be
20  *    misrepresented as being the original software.
21  *
22  * 3. This notice may not be removed or altered from any source
23  *    distribution.
24  *
25  */
26
27 #include    <basic.h>
28 #include        <btron/dp.h>
29 #include        <btron/hmi.h>
30
31 #include        "postres.h"
32
33 #ifndef __HMI_H__
34 #define __HMI_H__
35
36 typedef struct datwindow_t_ datwindow_t;
37 typedef VOID (*datwindow_scrollcalback)(VP arg, W dh, W dv);
38
39 IMPORT VOID datwindow_scrollbyvalue(datwindow_t *wscr, W dh, W dv);
40 IMPORT W datwindow_setdrawrect(datwindow_t *window, W l, W t, W r, W b);
41 IMPORT W datwindow_setworkrect(datwindow_t *window, W l, W t, W r, W b);
42 IMPORT VOID datwindow_responsepasterequest(datwindow_t *window, W nak, PNT *pos);
43 IMPORT W datwindow_startredisp(datwindow_t *window, RECT *r);
44 IMPORT W datwindow_endredisp(datwindow_t *window);
45 IMPORT W datwindow_eraseworkarea(datwindow_t *window, RECT *r);
46 IMPORT W datwindow_scrollworkarea(datwindow_t *window, W dh, W dv);
47 IMPORT W datwindow_getworkrect(datwindow_t *window, RECT *r);
48 IMPORT W datwindow_requestredisp(datwindow_t *window);
49 IMPORT GID datwindow_startdrag(datwindow_t *window);
50 IMPORT W datwindow_getdrag(datwindow_t *window, PNT *pos, WID *wid, PNT *pos_butup);
51 IMPORT VOID datwindow_enddrag(datwindow_t *window);
52 IMPORT GID datwindow_getGID(datwindow_t *window);
53 IMPORT WID datwindow_getWID(datwindow_t *window);
54 IMPORT W datwindow_settitle(datwindow_t *window, TC *title);
55
56 typedef struct cfrmwindow_t_ cfrmwindow_t;
57
58 IMPORT W cfrmwindow_open(cfrmwindow_t* window);
59 IMPORT VOID cfrmwindow_setpostresdata(cfrmwindow_t *window, postresdata_t *post);
60
61 typedef struct ngwordwindow_t_ ngwordwindow_t;
62
63 IMPORT W ngwordwindow_open(ngwordwindow_t *window);
64 IMPORT W ngwordwindow_appendword(ngwordwindow_t *window, TC *str, W len);
65 IMPORT W ngwordwindow_removeword(ngwordwindow_t *window, TC *str, W len);
66
67 enum {
68         DATHMIEVENT_TYPE_NONE,
69         DATHMIEVENT_TYPE_COMMON_MOUSEMOVE,
70         DATHMIEVENT_TYPE_COMMON_KEYDOWN,
71         DATHMIEVENT_TYPE_COMMON_MENU,
72         DATHMIEVENT_TYPE_COMMON_TIMEOUT,
73         DATHMIEVENT_TYPE_THREAD_DRAW,
74         DATHMIEVENT_TYPE_THREAD_RESIZE,
75         DATHMIEVENT_TYPE_THREAD_CLOSE,
76         DATHMIEVENT_TYPE_THREAD_BUTDN,
77         DATHMIEVENT_TYPE_THREAD_PASTE,
78         DATHMIEVENT_TYPE_THREAD_SWITCH,
79         DATHMIEVENT_TYPE_THREAD_MOUSEMOVE,
80         DATHMIEVENT_TYPE_CONFIRM_CLOSE,
81         DATHMIEVENT_TYPE_NGWORD_APPEND,
82         DATHMIEVENT_TYPE_NGWORD_REMOVE,
83         DATHMIEVENT_TYPE_NGWORD_CLOSE,
84 };
85
86 struct dathmi_eventdata_mousemove_t_ {
87         PNT pos;
88 };
89
90 struct dathmi_eventdata_keydown_t_ {
91         TC keycode;
92         UH keytop;
93         UW stat;
94 };
95
96 struct dathmi_eventdata_menu_t_ {
97         PNT pos;
98 };
99
100 struct dathmi_eventdata_timeout_t_ {
101         W code;
102 };
103
104 struct datwindow_eventdata_draw_t_ {
105 };
106
107 struct datwindow_eventdata_resize_t_ {
108         SIZE work_sz;
109         Bool needdraw;
110 };
111
112 struct datwindow_eventdata_close_t_ {
113         Bool save;
114 };
115
116 struct datwindow_eventdata_butdn_t_ {
117         W type;
118         PNT pos;
119 };
120
121 struct datwindow_eventdata_paste_t_ {
122 };
123
124 struct datwindow_eventdata_switch_t_ {
125         Bool needdraw;
126 };
127
128 struct datwindow_eventdata_mousemove_t_ {
129         PNT pos;
130         UW stat;
131 };
132
133 struct cfrmwindow_eventdata_close_t_ {
134         Bool send;
135 };
136
137 struct ngwordwindow_eventdata_append_t_ {
138         TC *str;
139         W len;
140 };
141
142 struct ngwordwindow_eventdata_remove_t_ {
143         TC *str;
144         W len;
145 };
146
147 typedef struct dathmi_eventdata_mousemove_t_ dathmi_eventdata_mousemove_t;
148 typedef struct dathmi_eventdata_keydown_t_ dathmi_eventdata_keydown_t;
149 typedef struct dathmi_eventdata_menu_t_ dathmi_eventdata_menu_t;
150 typedef struct dathmi_eventdata_timeout_t_ dathmi_eventdata_timeout_t;
151 typedef struct datwindow_eventdata_draw_t_ datwindow_eventdata_draw_t;
152 typedef struct datwindow_eventdata_resize_t_ datwindow_eventdata_resize_t;
153 typedef struct datwindow_eventdata_close_t_ datwindow_eventdata_close_t;
154 typedef struct datwindow_eventdata_butdn_t_ datwindow_eventdata_butdn_t;
155 typedef struct datwindow_eventdata_paste_t_ datwindow_eventdata_paste_t;
156 typedef struct datwindow_eventdata_switch_t_ datwindow_eventdata_switch_t;
157 typedef struct datwindow_eventdata_mousemove_t_ datwindow_eventdata_mousemove_t;
158 typedef struct cfrmwindow_eventdata_close_t_ cfrmwindow_eventdata_close_t;
159 typedef struct ngwordwindow_eventdata_append_t_ ngwordwindow_eventdata_append_t;
160 typedef struct ngwordwindow_eventdata_remove_t_ ngwordwindow_eventdata_remove_t;
161
162 struct dathmievent_t_ {
163         W type;
164         union  {
165                 dathmi_eventdata_mousemove_t common_mousemove;
166                 dathmi_eventdata_keydown_t common_keydown;
167                 dathmi_eventdata_menu_t common_menu;
168                 dathmi_eventdata_timeout_t common_timeout;
169                 datwindow_eventdata_draw_t main_draw;
170                 datwindow_eventdata_resize_t main_resize;
171                 datwindow_eventdata_close_t main_close;
172                 datwindow_eventdata_butdn_t main_butdn;
173                 datwindow_eventdata_paste_t main_paste;
174                 datwindow_eventdata_switch_t main_switch;
175                 datwindow_eventdata_mousemove_t main_mousemove;
176                 cfrmwindow_eventdata_close_t confirm_close;
177                 ngwordwindow_eventdata_append_t ngword_append;
178                 ngwordwindow_eventdata_remove_t ngword_remove;
179         } data;
180 };
181 typedef struct dathmievent_t_ dathmievent_t;
182
183 typedef struct dathmi_t_ dathmi_t;
184
185 IMPORT dathmi_t* dathmi_new();
186 IMPORT VOID dathmi_delete(dathmi_t *hmi);
187 IMPORT W dathmi_getevent(dathmi_t *hmi, dathmievent_t **evt);
188 IMPORT datwindow_t* dathmi_newmainwindow(dathmi_t *hmi, RECT *r, TC *title, PAT *bgpat, datwindow_scrollcalback scrollcallback, VP arg);
189 IMPORT cfrmwindow_t *dathmi_newconfirmwindow(dathmi_t *hmi, RECT *r, W dnum_title, W dnum_post, W dnum_cancel);
190 IMPORT ngwordwindow_t *dathmi_newngwordwindow(dathmi_t *hmi, PNT *p, W dnum_list, W dnum_delete, W dnum_input, W dnum_append);
191 IMPORT VOID dathmi_deletemainwindow(dathmi_t *hmi, datwindow_t *window);
192 IMPORT VOID dathmi_deleteconfirmwindow(dathmi_t *hmi, cfrmwindow_t *window);
193 IMPORT VOID dathmi_deletengwordwindow(dathmi_t *hmi, ngwordwindow_t *window);
194
195 #endif