source: svn/newcon3bcm2_21bu/dst/dmw/src/cc/cc_exec_708.c

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 28.2 KB
Line 
1
2#include "cc_config.h"
3#include "cc_type.h"
4#include "cc_def.h"
5#include "cc_private.h"
6
7static struct {
8        BOOL b_display_on;
9        int cur_win_id;
10        int cur_service;
11       
12        BOOL is_korean; //korean ccÀÎÁö¿¡ ´ëÇÑ flag.
13        BOOL is_unicode;
14        BOOL max_col; 
15        BOOL max_row;
16       
17        BOOL b_now_delayed; //DLY ó¸®.
18       
19        BOOL is_cc_wide;
20        BOOL is_src_wide;
21       
22        BOOL master_mode; 
23        UINT32 cc_mode; //1: user, 0: auto mode.
24       
25        int user_posx;
26        int user_posy;
27       
28        tDCC_WinAttr user_win_attr;
29        tDCC_PenUserAttr user_pen_attr;
30       
31        BOOL b_edm_rcvd;
32       
33        tDCC_InfoCallback info_cb;
34        char info_str_buf[64];
35       
36} p_exec708_info;
37
38#define INFO(i) p_exec708_info.i
39#define WIN(i) ((tDCC_DefWin *)DCCWin_GetWin(i))
40#define CWIN WIN(INFO(cur_win_id))
41
42#define UPINFO(i) INFO(user_pen_attr).i
43#define UWINFO(i) INFO(user_win_attr).i
44
45
46static tDCC_WinAttr p_predefined_ws_table[]=
47{
48        //j           pd             sd             ww de ed es fc fo            bt bc
49        {eDCC_J_LEFT, eDCC_D_LTTORT, eDCC_D_BTTOTP, 0, 0, 0, 0, 0, eDCC_O_SOLID, 0, 0},
50        {eDCC_J_LEFT, eDCC_D_LTTORT, eDCC_D_BTTOTP, 0, 0, 0, 0, 0, eDCC_O_TRANSPARENT, 0, 0},
51        {eDCC_J_CENTER, eDCC_D_LTTORT, eDCC_D_BTTOTP, 0, 0, 0, 0, 0, eDCC_O_SOLID, 0, 0},
52        {eDCC_J_LEFT, eDCC_D_LTTORT, eDCC_D_BTTOTP, 1, 0, 0, 0, 0, eDCC_O_SOLID, 0, 0},
53        {eDCC_J_LEFT, eDCC_D_LTTORT, eDCC_D_BTTOTP, 1, 0, 0, 0, 0, eDCC_O_TRANSPARENT, 0, 0},
54        {eDCC_J_CENTER, eDCC_D_LTTORT, eDCC_D_BTTOTP, 1, 0, 0, 0, 0, eDCC_O_SOLID, 0, 0},
55        {eDCC_J_LEFT, eDCC_D_TPTOBT, eDCC_D_RTTOLT, 0, 0, 0, 0, 0, eDCC_O_SOLID, 0, 0},
56};
57
58static tDCC_PenAttr p_predefined_ps_table[]=
59{
60        //s               fs tt o              u  i  et            fc   fo            bc bo            ec
61        {eDCC_S_STANDARD, 0, 0, eDCC_O_NORMAL, 0, 0, eDCC_ET_NONE, 0x7, eDCC_O_SOLID, 0, eDCC_O_SOLID, 0},
62        {eDCC_S_STANDARD, 1, 0, eDCC_O_NORMAL, 0, 0, eDCC_ET_NONE, 0x7, eDCC_O_SOLID, 0, eDCC_O_SOLID, 0},
63        {eDCC_S_STANDARD, 2, 0, eDCC_O_NORMAL, 0, 0, eDCC_ET_NONE, 0x7, eDCC_O_SOLID, 0, eDCC_O_SOLID, 0},
64        {eDCC_S_STANDARD, 3, 0, eDCC_O_NORMAL, 0, 0, eDCC_ET_NONE, 0x7, eDCC_O_SOLID, 0, eDCC_O_SOLID, 0},
65        {eDCC_S_STANDARD, 4, 0, eDCC_O_NORMAL, 0, 0, eDCC_ET_NONE, 0x7, eDCC_O_SOLID, 0, eDCC_O_SOLID, 0},
66        {eDCC_S_STANDARD, 3, 0, eDCC_O_NORMAL, 0, 0, eDCC_ET_UNIFORM, 0x7, eDCC_O_SOLID, 0, eDCC_O_TRANSPARENT, 0},
67        {eDCC_S_STANDARD, 4, 0, eDCC_O_NORMAL, 0, 0, eDCC_ET_UNIFORM, 0x7, eDCC_O_SOLID, 0, eDCC_O_TRANSPARENT, 0}
68};
69
70
71#if 0
72___UTIL__()
73#endif
74
75static struct {
76        UINT8 cmd;
77        char str[24];
78} p_cmd_str_table[]={
79        {255, "unknown"},
80        {eCMD_SET_TIMER, "set timer"},{eCMD_TIMER, "timer"},
81        {eCMD_TIMER_RESET, "timer reset"},{eCMD_SYNC, "sync"},
82        {eCMD_BUF_FULL, "buf full"},{eCMD_SERVICE_ON, "service on"},
83        {eCMD_USER_INIT, "user init"},{eCMD_USER_SET_DISPLAY, "user set display"},
84        {eCMD_USER_SET_SERVICE, "user set service"},{eCMD_USER_SET_SERVICE, "set korean"}, 
85        {eCMD_USER_SET_OPTION, "user set option"},{eCMD_USER_SET_ATTR, "user set attr"},
86        {eCMD_USER_SET_POSITION, "user set position"},
87        {eCMD_USER_SET_FEEDING, "set feeding"}, {eCMD_C0, "c0"},
88        {eCMD_CWX, "cwx"},{eCMD_DFX, "dfx"},
89        {eCMD_CLW, "clw"},{eCMD_DLW, "dlw"},
90        {eCMD_DSW, "dsw"},{eCMD_HDW, "hdw"},
91        {eCMD_TGW, "tgw"},{eCMD_SWA, "swa"},
92        {eCMD_SPA, "spa"},{eCMD_SPC, "spc"},
93        {eCMD_SPL, "spl"},{eCMD_DLY, "dly"},
94        {eCMD_DLC, "dlc"},{eCMD_RST, "rst"},
95        {eCMD_GX, "gx"}
96};
97
98
99static char *p_cmd_get_str(UINT8 cmd)
100{
101        int i;
102       
103        for(i=0; i<sizeof(p_cmd_str_table)/sizeof(p_cmd_str_table[0]); i++) {
104                if(cmd==p_cmd_str_table[i].cmd) {
105                        return p_cmd_str_table[i].str;
106                }
107        }
108       
109        return p_cmd_str_table[0].str;
110}
111
112
113static BOOL p_is_full_ch(UINT16 code)
114{
115        //ÇÑ±Û cc¿¡¼­ ÀüÀÚ/¹ÝÀÚ Ã³¸®
116        if(INFO(is_unicode)) {
117                if(code>=0x1100 && code<=0x1200) return TRUE;
118                if(code>=0x2113 && code<=0x2127) return TRUE;
119                if(code>=0x2e80 && code<=0xa500) return TRUE;
120                if(code>=0xac00 && code<=0xd800) return TRUE;
121                if(code>=0xf900 && code<=0xfb00) return TRUE;
122                if(code>=0xfe30 && code<=0xfe50) return TRUE;
123        }
124        else {
125                if(code>=0xa2de && code<=0xa2e5) return TRUE;
126                if(code>=0xa4a1 && code<=0xa4fe) return TRUE;
127                if(code>=0xa7a1 && code<=0xa7f0) return TRUE;
128                if(code>=0xa8b1 && code<=0xa8cd) return TRUE;
129                if(code>=0xa9b1 && code<=0xa9cd) return TRUE;
130                if(code>=0xaaa1 && code<=0xaaf4) return TRUE;
131                if(code>=0xaba1 && code<=0xabf7) return TRUE;
132                if(code>=0xb000) return TRUE;
133        }
134               
135        return FALSE;
136}
137
138
139static void p_adjust_display_attr(tDCC_DefWin *pwin, BOOL badjust_win, BOOL badjust_pen)
140{
141        if(badjust_win)
142                memcpy(&pwin->win_attr, &pwin->rcvd_win_attr, sizeof(pwin->win_attr));
143        if(badjust_pen)
144                memcpy(&pwin->pen_attr, &pwin->rcvd_pen_attr, sizeof(pwin->pen_attr));
145       
146        if(INFO(master_mode)) { /* user modeÀÎ °æ¿ì */
147                #define ADJ_WINFO(i) if(UWINFO(i)!=DCC_AUTO_SET) pwin->win_attr.i=UWINFO(i)
148                #define ADJ_PINFO(i) if(UPINFO(i)!=DCC_AUTO_SET) pwin->pen_attr.i=UPINFO(i)
149
150                if(badjust_win) {
151                        ADJ_WINFO(fc);
152                        ADJ_WINFO(fo);
153                        ADJ_WINFO(sd);
154                        //³ª¸ÓÁö attr¿¡ ´ëÇØ¼­´Â º¯°æÀÌ ¾ÈµÇµµ·Ï ÇÔ.
155                }
156               
157                if(badjust_pen) {
158                        ADJ_PINFO(s);
159                        ADJ_PINFO(fs);
160                        ADJ_PINFO(tt);
161                        ADJ_PINFO(o);
162                        ADJ_PINFO(u);
163                        ADJ_PINFO(i);
164                        ADJ_PINFO(et);
165                        ADJ_PINFO(fc);
166                        ADJ_PINFO(fo);
167                        ADJ_PINFO(bc);
168                        ADJ_PINFO(bo);
169                        ADJ_PINFO(ec);
170                }
171        }
172}
173
174
175#if 0
176__WINDOWS__()
177#endif
178
179
180static int p_adjust_c0_attr(tDCC_DefWin *attr)
181{
182        int temp;
183       
184        if(attr->cc>=INFO(max_col)) attr->cc=INFO(max_col)-1;
185        if(attr->rc>=INFO(max_row))    attr->rc=INFO(max_row)-1;
186       
187        //Àý´ë °ªÀ» »ó´ë °ªÀ¸·Î º¯°æÇÔ.
188        if(attr->rp==0) {
189                attr->av=attr->av*99/74;
190               
191                //wideÁ¤º¸ ÇÊ¿äÇÔ.
192                if(INFO(is_cc_wide)) attr->ah=attr->ah*99/209;
193                else            attr->ah=attr->ah*99/159;
194        }       
195       
196        //¹üÀ§ Ãʰú½Ã ap·Î av, ah ÀçÁ¶Á¤
197        if(attr->av>99) {
198                attr->av=attr->ap/3==0?0:attr->ap/3==1?49:99;
199        }
200       
201        if(attr->ah>99) {
202                attr->ah=attr->ap%3==0?0:attr->ap%3==1?49:99;
203        }
204       
205        //cc, rc ÀçÁ¶Á¤
206        attr->rc+=1;
207        attr->cc+=1;
208
209#if 0 //º¸Á¤ÇÏ´Â ÀÛ¾÷ÀÌ ½±Áö ¾ÊÀ½.
210        //ap¸¦ Áß½ÉÀ¸·Î box¸¦ ±×·ÈÀ» ¶§(cc, rc) È­¸éÀ» ¹þ¾î³ª¸é ¾ÈµÇ±â ¶§¹®¿¡
211        //¾Æ·¡ Äڵ忡¼­ cc, rc¸¦ º¸Á¤ÇÏ´Â ÀÛ¾÷À» ÇØ¾ß ÇÔ.
212        if(INFO(is_cc_wide)) temp=attr->ah*41/99;
213        else                                                    temp=attr->ah*31/99;
214               
215        if(attr->ap%3==0) {
216                if(temp+attr->cc > INFO(max_col))
217                        attr->cc=INFO(max_col)-temp;
218        }
219        else if(attr->ap%3==1) {
220                if(temp-(attr->cc)/2 < 0)
221                        attr->cc=temp*2;
222                else if(temp+(attr->cc+1)/2 > INFO(max_col))
223                        attr->cc=(INFO(max_col)-temp-1)*2;
224        }
225        else {
226                if(temp < attr->cc)
227                        attr->cc=temp;
228        }
229       
230        temp=attr->av*15/99;
231       
232        if(attr->ap/3==0) {
233                if(temp+attr->rc > INFO(max_row))
234                        attr->rc=INFO(max_row)-temp;
235        }
236        else if(attr->ap/3==1) {
237                if(temp-(attr->rc)/2 < 0)
238                        attr->rc=temp*2;
239                else if(temp+(attr->rc)/2 > INFO(max_row))
240                        attr->rc=(INFO(max_row)-temp)*2;
241        }
242        else {
243                if(temp < attr->rc)
244                        attr->rc=temp;
245        }
246
247#endif
248
249        return 0;
250}
251
252static BOOL p_same_win_attr(tDCC_DefWin *a_orig, tDCC_DefWin *a_new)
253{
254        if(a_orig->p!=a_new->p) return FALSE;
255        if(a_orig->ap!=a_new->ap) return FALSE;
256        if(a_orig->rp!=a_new->rp) return FALSE;
257        if(a_orig->av!=a_new->av) return FALSE;
258        if(a_orig->ah!=a_new->ah) return FALSE;
259        if(a_orig->rc!=a_new->rc) return FALSE;
260        if(a_orig->cc!=a_new->cc) return FALSE;
261        if(a_orig->rl!=a_new->rl) return FALSE;
262        if(a_orig->cl!=a_new->cl) return FALSE;
263        if(a_orig->v!=a_new->v) return FALSE;
264        if(a_orig->ws!=a_new->ws && a_new->ws!=0) return FALSE;
265        if(a_orig->ps!=a_new->ps && a_new->ps!=0) return FALSE;
266       
267        return TRUE;
268}
269
270
271static int p_update_win_attr(tDCC_DefWin *a_orig, tDCC_DefWin *a_new)
272{
273        a_orig->id=a_new->id;
274        a_orig->p=a_new->p;
275        a_orig->ap=a_new->ap;
276        a_orig->rp=a_new->rp;
277        a_orig->av=a_new->av;
278        a_orig->ah=a_new->ah;
279        a_orig->rc=a_new->rc;
280        a_orig->cc=a_new->cc;
281        a_orig->rl=a_new->rl;
282        a_orig->cl=a_new->cl;
283        a_orig->v=a_new->v;
284       
285        if(!a_orig->bcreated) {
286               
287                a_orig->ws=a_new->ws;
288                a_orig->ps=a_new->ps;
289               
290                if(a_orig->ws==0) a_orig->ws=1;
291                if(a_orig->ps==0) a_orig->ps=1;
292                       
293                memcpy(&a_orig->rcvd_win_attr, &p_predefined_ws_table[a_orig->ws-1], sizeof(a_orig->win_attr));
294                memcpy(&a_orig->rcvd_pen_attr, &p_predefined_ps_table[a_orig->ps-1], sizeof(a_orig->pen_attr));
295               
296                p_adjust_display_attr(a_orig, TRUE, TRUE);
297               
298        }
299        else {
300                //updateÀÇ °æ¿ì
301                if(a_new->ws!=0 && a_orig->ws!=a_new->ws)       {
302                        a_orig->ws=a_new->ws;
303                        memcpy(&a_orig->rcvd_win_attr, &p_predefined_ws_table[a_orig->ws-1], sizeof(a_orig->win_attr));
304                        p_adjust_display_attr(a_orig, TRUE, FALSE);
305                }
306               
307                if(a_new->ps!=0 && a_orig->ps!=a_new->ps)       {
308                        a_orig->ps=a_new->ps;
309                        memcpy(&a_orig->rcvd_pen_attr, &p_predefined_ps_table[a_orig->ps-1], sizeof(a_orig->pen_attr));
310                        p_adjust_display_attr(a_orig, FALSE, TRUE);
311                }
312        }       
313       
314        return 0;
315}
316
317
318#if 0
319__User_Proc__()
320#endif
321
322static void p_cc_data_proc(tDCC_CmdSet cmd, UINT32 opt, UINT32 param1, UINT32 param2)
323{
324        int i=0;
325       
326        if(cmd!=eCMD_TIMER) {
327                CCPRINT("708data", "p_cc_data_proc (cmd:%s(%d)),param1(0x%x),param2(0x%x)\n", 
328                        p_cmd_get_str(cmd), cmd, param1, param2);
329
330                if(INFO(info_cb)) {
331                        sprintf(INFO(info_str_buf), "%d %d %d", cmd, param1, param2);
332                        INFO(info_cb)(eDCC_IT_708_CMD, 0, (UINT32)&INFO(info_str_buf), 0);
333                }
334        }
335       
336        switch(cmd) {
337               
338                case eCMD_TIMER :
339                        if(param1==TIMER_ID_FLASH) {
340#if ENABLE_FLASH                               
341                                if(INFO(cur_win_id)==-1) break;
342                                if(!INFO(b_display_on)) break;
343
344                                DCCWin_ToggleFlashFlag();
345                                DCCWin_DrawFlashWins();
346#endif
347                        }
348                        else if(param1==TIMER_ID_CLEAR_SCREEN) {
349                                if (DCC_IsStarted() == TRUE)
350                                {
351                                DCCGrp_ClearScreen(); //¹«Á¶°Ç È­¸éÀ» Çѹø Áö¿öÁÜ.
352                                DCCMain_ResetQueue(); //queue¸¦ ÃʱâÈ­ÇÔ.
353                                }
354                               
355                                if(INFO(cur_win_id)==-1) {
356                                        break;
357                                }
358
359#if 0
360                                DCCWin_ResetAllWins(TRUE);
361                                INFO(cur_win_id)=-1;
362                                INFO(b_edm_rcvd)=FALSE;
363#else           //´ÜÁö È­¸é¸¸ Áö¿ò.
364                                DCCWin_ResetTextPos(INFO(cur_win_id));
365                                DCCWin_EraseWin(INFO(cur_win_id));
366                                //DCCWin_DrawWin(INFO(cur_win_id), TRUE, FALSE);
367                                INFO(b_edm_rcvd)=FALSE;
368#endif
369                        }
370                        break;
371               
372                case eCMD_C0 :
373                       
374                        if(INFO(cur_win_id)==-1) break;
375                       
376                        if(param1==eDCC_C0_BS) { //BS
377                                DCCWin_EraseCh(INFO(cur_win_id));
378                        }
379                        if(param1==eDCC_C0_FF) {
380                                //È­¸é Àüü¸¦ Áö¿ì°í Ä¿¼­¸¦ ¸Ç À§·Î °íÁ¤ÇÔ.
381                                DCCWin_ResetTextPos(INFO(cur_win_id));
382                                DCCWin_DrawWin(INFO(cur_win_id), TRUE, FALSE);
383                        }
384                        else if(param1==eDCC_C0_CR) {
385                                DCCWin_InsertCh(INFO(cur_win_id), 0, opt | eDCC_OPT_CH_CR);
386                        }
387                        else if(param1==eDCC_C0_HCR) {
388                                DCCWin_EraseCurLine(INFO(cur_win_id), opt&eDCC_OPT_IS608);
389                        }
390                        else if(param1==eDCC_C0_ETX) {
391                               
392                        }
393                       
394                        break;
395                       
396                case eCMD_GX :
397                       
398                        if(INFO(cur_win_id)==-1) break;
399                       
400                        if(param1==0) break;
401                               
402                        if(INFO(b_edm_rcvd)) {
403                                //ÇöÀç window¸¦ Áö¿ö¾ß ÇÔ
404                                DCCWin_EraseWin(INFO(cur_win_id));
405                                INFO(b_edm_rcvd)=FALSE;
406                        }
407                       
408                        //0x521(NBTSP)´Â 0x520(TSP)¿Í µ¿ÀÏÇÏ°Ô Ã³¸®ÇÔ.
409                        if(param1==0x521) param1=DCC_TRP_CODE;
410                               
411                        DCCWin_InsertCh(INFO(cur_win_id), param1, opt);
412                        break;
413                       
414                case eCMD_CWX :
415                               
416                        if(param1>=8) break;
417                       
418                        if(!WIN(param1)->bcreated) break;
419                       
420                        INFO(cur_win_id)=param1;
421                       
422                        if(INFO(info_cb)) 
423                                INFO(info_cb)(eDCC_IT_708_WIN, 0, INFO(cur_win_id), (UINT32)NULL);
424                        break;
425               
426                case eCMD_DFX :
427                        {
428                                tDCC_DefWin *pwin=(tDCC_DefWin *)param1;
429                               
430                                INFO(cur_win_id)=pwin->id;
431                                                               
432                                //1. °ªµé modify
433                                p_adjust_c0_attr(pwin);
434                               
435                                CCPRINT("dfx", "%s\n", WIN(pwin->id)->bcreated?"update":"create");
436                               
437                                //2. create/update ÆÇ´Ü.
438                                if(WIN(pwin->id)->bcreated) {//ÀÌ¹Ì createµÇ¾úÀ½ -> ±âÁ¸ °Í°ú ºñ±³
439                                       
440                                        if(!p_same_win_attr(WIN(pwin->id), pwin)) {
441                                                //update ½ÃÀÛ
442                                               
443                                                if(WIN(pwin->id)->v) { //visible
444                                                        DCCWin_EraseWin(pwin->id);
445                                                }
446                                               
447                                                p_update_win_attr(WIN(pwin->id), pwin);
448                                               
449                                                //win rect ¾÷µ¥ÀÌÆ®
450                                                DCCWin_UpdateWinRect(pwin->id);
451                                                DCCWin_UpdateWinAttr();
452                                               
453                                                if(WIN(pwin->id)->v) { //visible
454                                                        DCCWin_DrawWin(pwin->id, TRUE, TRUE);
455                                                }
456                                               
457                                        }
458                                }
459                                else {
460                                                                               
461                                        p_update_win_attr(WIN(pwin->id), pwin);
462                                       
463                                        //create
464                                        WIN(pwin->id)->bcreated=TRUE;
465                                       
466                                        //win rect ¾÷µ¥ÀÌÆ®
467                                        DCCWin_UpdateWinRect(pwin->id);
468                                        DCCWin_UpdateWinAttr();
469                                       
470                                        if(WIN(pwin->id)->v) { //visible
471                                                DCCWin_DrawWin(pwin->id, TRUE, TRUE);
472                                        }
473                                }
474                               
475                                if(INFO(info_cb)) 
476                                        INFO(info_cb)(eDCC_IT_708_WIN, 0, INFO(cur_win_id), (UINT32)DCCWin_GetWin(INFO(cur_win_id)));
477                               
478                                CCPRINT("dfx", "id(%d), p(%d), cl(%d), rl(%d), v(%d), ap(%d), av(%d), rp(%d), ah(%d), rc(%d), cc(%d)\n",
479                                        WIN(pwin->id)->id, WIN(pwin->id)->p, WIN(pwin->id)->cl, WIN(pwin->id)->rl, WIN(pwin->id)->v, 
480                                        WIN(pwin->id)->ap, WIN(pwin->id)->av, WIN(pwin->id)->rp, WIN(pwin->id)->ah, WIN(pwin->id)->rc,
481                                        WIN(pwin->id)->cc);
482                               
483                        }
484                        break;
485               
486                case eCMD_CLW :
487                        for(i=0; i<8; i++) {
488                                if((1<<i)&param1) {
489                                        if(!WIN(i)->bcreated) continue;
490                                        if(opt&eDCC_OPT_IS608) { /* ÁÂÇ¥´Â ³öµÎ°í ´Ü¼øÈ÷ Áö¿ì±â¸¸ ÇÔ */
491                                                DCCWin_ResetTextOnly(i);
492                                                INFO(b_edm_rcvd)=TRUE;
493                                        }
494                                        else {
495                                                DCCWin_ResetTextPos(i);
496                                                DCCWin_DrawWin(i, TRUE, FALSE);
497                                        }
498                                       
499                                }
500                        }
501                        break;
502               
503                case eCMD_DLW :
504                        if(opt&eDCC_OPT_IS608) { //608ÀÇ ENM 󸮿ë
505                                DCCWin_ResetTextOnly(param1);
506                                break;
507                        }
508                       
509                        for(i=0; i<8; i++) {
510                                if((1<<i)&param1) {
511                                        if(!WIN(i)->bcreated) continue;
512
513                                        DCCWin_EraseWin(i);
514                                        DCCWin_ResetWin(i);
515
516                                        DCCWin_UpdateWinAttr();
517                                       
518                                        if(INFO(info_cb)) 
519                                                INFO(info_cb)(eDCC_IT_708_WIN, 0, i, (UINT32)DCCWin_GetWin(i));
520                                        if(INFO(cur_win_id)==(int)i) {
521                                                INFO(cur_win_id)=-1; //unknown
522                                        }
523                                }
524                        }
525                        break;
526               
527                case eCMD_DSW :
528                        for(i=0; i<8; i++) {
529                                if((1<<i)&param1) {
530                                        if(WIN(i)->v) continue;
531                                        WIN(i)->v=TRUE;
532                                        DCCWin_UpdateWinAttr();
533                                        DCCWin_DrawWin(i, TRUE, TRUE);
534                                        if(INFO(info_cb)) 
535                                                INFO(info_cb)(eDCC_IT_708_WIN, 0, i, (UINT32)DCCWin_GetWin(i));
536                                }
537                        }
538                        break;
539               
540                case eCMD_HDW :
541                       
542                        for(i=0; i<8; i++) {
543                                if((1<<i)&param1) {
544                                        if(!WIN(i)->v) continue;
545                                        DCCWin_EraseWin(i);
546                                        DCCWin_UpdateWinAttr();
547                                        WIN(i)->v=FALSE;
548                                        if(INFO(info_cb)) 
549                                                INFO(info_cb)(eDCC_IT_708_WIN, 0, i, (UINT32)DCCWin_GetWin(i));
550                                }
551                        }
552                        break;
553               
554                case eCMD_TGW : // 2012.11.01 megakiss Áö¿öÁú âÀº ¸ÕÀú Áö¿ì°í ±×¸± âÀ» ±×¸®µµ·Ï ÇÔ
555                        for(i=0; i<8; i++) {
556                                if((1<<i)&param1) {
557                                        if(!WIN(i)->bcreated) continue;
558                                        if(WIN(i)->v) 
559                                        {
560                                                WIN(i)->v = FALSE;
561                                                DCCWin_EraseWin(i);
562                                                WIN(i)->v = TRUE;
563                                        }
564                                }
565                        }
566                        for(i=0; i<8; i++) {
567                                if((1<<i)&param1) {
568                                        if(!WIN(i)->bcreated) continue;
569                                        if(!WIN(i)->v) 
570                                        {
571                                                WIN(i)->v = TRUE;
572                                                DCCWin_DrawWin(i, TRUE, TRUE);
573                                                WIN(i)->v = FALSE;
574                                        }
575                                        }
576                        }
577                        for(i=0; i<8; i++) {
578                                if((1<<i)&param1) {
579                                        if(!WIN(i)->bcreated) continue;
580                                        WIN(i)->v = WIN(i)->v ? FALSE : TRUE;
581                                        if(INFO(info_cb)) 
582                                                INFO(info_cb)(eDCC_IT_708_WIN, 0, i, (UINT32)DCCWin_GetWin(i));
583                                }
584                        }
585                        DCCWin_UpdateWinAttr();
586                        break;
587               
588                case eCMD_SWA :
589                       
590                        if(INFO(cur_win_id)==-1) break;
591                               
592                        if(CWIN->bswa_rcvd) {
593                                if(memcmp(&CWIN->rcvd_win_attr, (tDCC_WinAttr *)param1, sizeof(CWIN->rcvd_win_attr))==0)
594                                        break;
595                        }
596                       
597                        CWIN->bswa_rcvd=TRUE;
598                       
599                        memcpy(&CWIN->rcvd_win_attr, (tDCC_WinAttr *)param1, sizeof(CWIN->rcvd_win_attr));
600                        p_adjust_display_attr(CWIN, TRUE, FALSE);
601                       
602#if REDRAW_WIN_WHEN_SWA_RECEIVED==0
603                        //SWA¸¦ ¹ÞÀ¸¸é text¸¦ ÃʱâÈ­ÇÔ
604                        DCCWin_ResetTextPos(INFO(cur_win_id));
605#endif
606
607                        DCCWin_DrawWin(INFO(cur_win_id), TRUE, TRUE);
608                       
609                        if(INFO(info_cb))
610                                INFO(info_cb)(eDCC_IT_708_WINATTR, 0, (UINT32)&CWIN->rcvd_win_attr, 0);
611
612                        break;
613               
614                case eCMD_SPA :
615                       
616                        if(INFO(cur_win_id)==-1) break;
617                               
618                        {
619                                tDCC_PenAttr *attr=(tDCC_PenAttr *)param1;
620                                tDCC_PenAttr *rattr=&CWIN->rcvd_pen_attr;
621                                BOOL is_redraw=FALSE;
622                               
623                                if(CWIN->bspa_rcvd) {
624                                        if(attr->s==rattr->s && attr->fs==rattr->fs && attr->tt==rattr->tt &&
625                                                attr->o==rattr->o && attr->u==rattr->u && attr->i==rattr->i &&
626                                                attr->et==rattr->et) break; //¸ðµç °ªÀÌ °°À¸¸é ó¸®ÇÒ ÇÊ¿ä ¾øÀ½
627                                }                                       
628                               
629                                CWIN->bspa_rcvd=TRUE;
630                               
631                                rattr->s=attr->s;
632                                rattr->fs=attr->fs;
633                                rattr->tt=attr->tt;
634                                rattr->o=attr->o;
635                                rattr->u=attr->u;
636                                rattr->i=attr->i;
637                                rattr->et=attr->et;
638                               
639                                p_adjust_display_attr(CWIN, FALSE, TRUE);
640                               
641                                is_redraw=(CWIN->v && DCCWin_CheckWinRect(INFO(cur_win_id)));
642                               
643                                if(is_redraw) { //visible
644                                        DCCWin_EraseWin(INFO(cur_win_id));
645                                }
646                               
647                                DCCWin_UpdateWinRect(INFO(cur_win_id));
648                               
649                                if(is_redraw) { //visible
650                                        DCCWin_DrawWin(INFO(cur_win_id), TRUE, TRUE);
651                                }
652                               
653                                if(INFO(info_cb))
654                                        INFO(info_cb)(eDCC_IT_708_PENATTR, 0, (UINT32)&CWIN->rcvd_pen_attr, 0);
655                        }
656                       
657                        break;
658               
659                case eCMD_SPC :
660                       
661                        if(INFO(cur_win_id)==-1) break;
662                               
663                        {
664                                tDCC_PenAttr *attr=(tDCC_PenAttr *)param1;
665                                tDCC_PenAttr *rattr=&CWIN->rcvd_pen_attr;
666                               
667                                if(CWIN->bspc_rcvd) {
668                                        if(attr->fc==rattr->fc && attr->fo==rattr->fo && attr->bc==rattr->bc &&
669                                                attr->bo==rattr->bo && attr->ec==rattr->ec) break;
670                                }
671                               
672                                CWIN->bspc_rcvd=TRUE;
673                               
674                                rattr->fc=attr->fc;
675                                rattr->fo=attr->fo;
676                                rattr->bc=attr->bc;
677                                rattr->bo=attr->bo;
678                                rattr->ec=attr->ec;
679                        }
680
681                        p_adjust_display_attr(CWIN, FALSE, TRUE);
682                       
683                        if(INFO(info_cb))
684                                INFO(info_cb)(eDCC_IT_708_PENATTR, 0, (UINT32)&CWIN->rcvd_pen_attr, (UINT32)NULL);
685                               
686                        break;
687               
688                case eCMD_SPL :
689                       
690                        if(INFO(cur_win_id)==-1) break;
691                               
692                        CCPRINT("spl", "row spl(%d,%d)\n", param2, param1);
693                               
694                        if(0/*opt&eDCC_OPT_IS608*/) { //opt°¡ 0ÀÌ ¾Æ´Ï¸é paramÀ» ´õÇϱâ ÇÔ.
695                                CWIN->cur_y+=param1;
696                                CWIN->cur_x+=param2;
697                                CCPRINT("spl", "update spl adding(%d,%d) total(%d,%d)\n", 
698                                        param2, param1, CWIN->cur_x, CWIN->cur_y);
699                        }
700                        else {
701                               
702                                int curx=0, cury=0;
703                               
704                                if(opt&eDCC_OPT_ROW_LOC_MODE) cury=CWIN->cur_y;
705                                if(opt&eDCC_OPT_COL_LOC_MODE) curx=CWIN->cur_x;
706
707#if 0
708                                if(((opt&eDCC_OPT_ROW_LOC_MODE==0) && param1>=INFO(max_row)) ||
709                                         ((opt&eDCC_OPT_COL_LOC_MODE==0) && param2>=INFO(max_col))) {
710                                        CCPRINT("spl", "SPL param is bad(%d>%d,%d>%d) !!\n",
711                                                param1, INFO(max_row), param2, INFO(max_col));
712                                        break;
713                                }
714#endif
715                                       
716                                cury+=param1;
717                               
718                                if(cury<0 || cury>=INFO(max_row)) {
719                                        break;
720                                }
721                               
722                                // CWIN->cur_y=cury; //2012.12.09 megakiss newcon2 #2185 football stream scroll pr
723                               
724                                if(CWIN->win_attr.j==eDCC_J_LEFT) { //left°¡ ¾Æ´Ï¸é ¹«½ÃµÊ
725                                        if(INFO(is_korean)) {
726                                                int sum;
727                                                for(i=0, sum=0; i<param2; i++) {
728                                                        if(p_is_full_ch(CWIN->text[cury].str[i].ch)) sum+=2;
729                                                        else                                                sum+=1;
730                                                       
731                                                        if(sum==param2)     {CWIN->text[cury].str[i].pos=0; break;}
732                                                        else if(sum>param2) {CWIN->text[cury].str[i].pos=1; break;}
733                                                }
734                                                curx=sum;
735                                        }
736                                        else {
737                                                curx=param2;
738                                        }
739                                       
740                                        if(curx<0 || curx>=INFO(max_col)) {
741                                                break;
742                                        }
743                                       
744#if ENABLE_SCROLL_BY_SPL       
745                                        if((CWIN->ws>=1 && CWIN->ws<=6) && ((unsigned int)(CWIN->cur_y)==param1+1 && CWIN->cur_x==0)) {
746                                                DCCWin_InsertCh(INFO(cur_win_id), 0, eDCC_OPT_CH_CR);
747                                        }
748#endif
749                                        CWIN->cur_x=curx; // 2012.11.01 megakiss newcon2 #2185 football stream scroll pr
750                                        CWIN->cur_y=cury; // 2012.10.09 megakiss newcon2 #2185 football stream scroll pr
751                                }
752                                else {
753                                        //ÇÑ ÁÙ Áö¿ì±â
754                                        DCCWin_EraseCurLine(INFO(cur_win_id), FALSE);
755                                }
756                               
757                        }
758                       
759                       
760                        DCCWin_FillTrpToLine(INFO(cur_win_id));
761                       
762                        DCCWin_UpdateLine(INFO(cur_win_id), CWIN->cur_y);
763
764                        CCPRINT("spl", "SPL row(%d), col(%d)\n", CWIN->cur_y, CWIN->cur_x);
765                       
766                        break;
767               
768                case eCMD_DLY :
769                        //p_cc_proc¿¡¼­ ó¸®ÇÔ
770                        break;
771               
772                case eCMD_DLC :
773                        //p_cc_proc¿¡¼­ ó¸®ÇÔ
774                        break; 
775               
776                case eCMD_RST :
777                        if (DCC_IsStarted() == TRUE)
778                        {
779                        //¸ðµç °ª ÃʱâÈ­.
780                        DCCWin_ResetAllWins(TRUE);
781                        INFO(cur_win_id)=-1; //ÇöÀç window id°¡ ¾Æ¹« °Íµµ ¾ø´Â »óÅÂÀÓ.
782                        //RST ¸í·ÉÀ» ¹ÞÀ¸¸é È­¸é Àüü¸¦ Áö¿ò.
783                        DCCGrp_ClearScreen();
784                        DCCMain_ResetQueue();
785                        }                                               
786                        break;
787                       
788                default:
789                        CCPRINT("data proc", "not processed type cmd(%d)\n", cmd);
790        }                       
791       
792        DCCDDI_Refresh();
793}
794
795
796static void p_cc_user_set_proc(tDCC_CmdSet cmd, UINT32 opt, UINT32 param1, UINT32 param2)
797{
798        CCPRINT("708user", "p_cc_user_set_proc(cmd:%s(%d)),param1(%d),param2(%d)\n",
799                p_cmd_get_str(cmd), cmd, param1, param2);
800       
801        switch(cmd) 
802        {
803                case eCMD_USER_INIT :
804                        //resolution, cmap Á¤º¸ init
805                        {
806                                tDCC_Config *cfg=(tDCC_Config *)param1;
807                               
808                                INFO(is_cc_wide)=cfg->is_cc_wide;
809                                INFO(is_src_wide)=cfg->is_src_wide;
810#if USE_KOR_CC
811                                INFO(is_korean)=cfg->is_korean;
812                                INFO(is_unicode)=cfg->is_unicode;
813#else
814                                INFO(is_korean)=FALSE;
815                                INFO(is_unicode)=TRUE;
816#endif
817                                DCCWin_ResetAllWins(FALSE);
818                               
819                                DCCGrp_Init(INFO(is_cc_wide), INFO(is_src_wide), INFO(is_korean), 
820                                        cfg->resolution, cfg->color_map);
821                               
822                                if(INFO(is_korean)) {
823                                        if(INFO(is_cc_wide))
824                                                INFO(max_col)=MAX_NUM_KOR_WIDE_COL;
825                                        else
826                                                INFO(max_col)=MAX_NUM_KOR_4X3_COL;
827                                       
828                                        INFO(max_row)=MAX_NUM_KOR_ROW;
829                                }
830                                else {
831                                        if(INFO(is_cc_wide))
832                                                INFO(max_col)=MAX_NUM_WIDE_COL;
833                                        else
834                                                INFO(max_col)=MAX_NUM_4X3_COL;
835                                       
836                                        INFO(max_row)=MAX_NUM_ROW;
837                                }
838                               
839                        }
840                        break;
841               
842                case eCMD_USER_SET_DISPLAY :
843               
844                        INFO(b_display_on)=param1;
845                       
846                        CCPRINT("708user", "bdisplay on %d\n", INFO(b_display_on));
847                       
848                        if(INFO(b_display_on)) {
849                                DCCMain_SendCmd(eCMD_TIMER_RESET, 0, 0, 0);
850#if ENABLE_FLASH
851                                DCCMain_SendCmd(eCMD_SET_TIMER, 0, TIMER_ID_FLASH, TIMER_ID_FLASH_DURATION);
852#endif                         
853                                DCCGrp_Start();
854                                //DCCGrp_ClearScreen();//¸¾´ë·Î È­¸éÀ» Áö¿ì¸é ¾ÈµÊ.
855                                DCCExec_Reset608Attr();
856                        }
857                        else {
858                                DCCMain_SendCmd(eCMD_TIMER_RESET, 0, 0, 0);
859                                DCCGrp_Stop();
860                                DCCWin_ResetAllWins(FALSE);
861                                INFO(b_now_delayed)=FALSE;
862                        }
863                        break;
864                       
865                case eCMD_USER_SET_SERVICE :
866                        //neverdai CC->CS, CS->CC·Î º¯°æÇÒ¶§ ÃʱâÈ­.. 090605.
867                        INFO(cur_service)=param1;
868                        DCCWin_ResetAllWins(FALSE);
869                        DCCExec_Reset608Attr();
870                        DCCGrp_SetService(param1);
871                       
872                        break;
873                       
874                case eCMD_USER_SET_KOREAN :
875                       
876#if USE_KOR_CC                 
877                        INFO(is_korean)=param1?TRUE:FALSE;
878                        INFO(is_unicode)=param2?TRUE:FALSE;
879#else
880                        INFO(is_korean)=FALSE;
881                        INFO(is_unicode)=TRUE;
882#endif
883                       
884                        DCCGrp_SetKorean(INFO(is_korean));
885                        DCCDDI_SetKoreanMode(INFO(is_unicode));
886                        if(INFO(is_korean)) {
887                                if(INFO(is_cc_wide))
888                                        INFO(max_col)=MAX_NUM_KOR_WIDE_COL;
889                                else
890                                        INFO(max_col)=MAX_NUM_KOR_4X3_COL;
891                               
892                                INFO(max_row)=MAX_NUM_KOR_ROW;
893                        }
894                        else {
895                                if(INFO(is_cc_wide))
896                                        INFO(max_col)=MAX_NUM_WIDE_COL;
897                                else
898                                        INFO(max_col)=MAX_NUM_4X3_COL;
899                               
900                                INFO(max_row)=MAX_NUM_ROW;
901                        }
902                       
903                        break;
904               
905                case eCMD_USER_SET_OPTION :
906                        param1=param1?TRUE:FALSE;
907                       
908                        if(INFO(master_mode)==param1) break;
909                       
910                        INFO(master_mode)=param1;
911                       
912                        if(INFO(cur_win_id))
913                                p_adjust_display_attr(CWIN, TRUE, TRUE);
914                       
915                        break;
916                       
917                case eCMD_USER_SET_ATTR :
918                        {
919                                tDCC_WinAttr *wattr=(tDCC_WinAttr *)param1;
920                                tDCC_PenUserAttr *pattr=(tDCC_PenUserAttr *)param2;
921                               
922                                if(wattr) {
923                                        UWINFO(fc)=wattr->fc;
924                                        UWINFO(fo)=wattr->fo;
925                                       
926                                        UWINFO(sd)=wattr->sd;
927                                       
928                                        if(INFO(cur_win_id))
929                                                p_adjust_display_attr(CWIN, TRUE, FALSE);
930                                }
931                               
932                                if(pattr) {
933                                        UPINFO(s)=pattr->s;
934                                        UPINFO(fs)=pattr->fs;
935                                        UPINFO(u)=pattr->u;
936                                        UPINFO(i)=pattr->i;
937                                        UPINFO(et)=pattr->et;
938                                        UPINFO(fc)=pattr->fc;
939                                        UPINFO(fo)=pattr->fo;
940                                        UPINFO(bc)=pattr->bc;
941                                        UPINFO(bo)=pattr->bo;
942                                        UPINFO(ec)=pattr->bc;
943                                       
944                                        if(INFO(cur_win_id))
945                                                p_adjust_display_attr(CWIN, FALSE, TRUE);
946                                }
947                        }
948                        break;
949               
950                case eCMD_USER_SET_POSITION :
951                        //user ¼³Á¤ position.
952                        //¹üÀ§´Â -100 ~ 100
953                        INFO(user_posx)=param1;
954                        INFO(user_posy)=param2;
955                       
956                        CCPRINT("708user", "user set position..param1(%d), param2(%d)\n", INFO(user_posx), INFO(user_posy));
957                       
958                        DCCWin_ResetAllWins(FALSE);
959                       
960                        if(INFO(user_posx)<-100) INFO(user_posx)=-100;
961                        if(INFO(user_posx)>100) INFO(user_posx)=100;
962                       
963                        if(INFO(user_posy)<-100) INFO(user_posy)=-100;
964                        if(INFO(user_posy)>100) INFO(user_posy)=100;
965                       
966                        DCCWin_SetUserPos(INFO(user_posx), INFO(user_posy));
967                       
968                        CCPRINT("708user", "user pos(%d,%d)\n", INFO(user_posx), INFO(user_posy));
969
970                        break;
971                       
972                default:
973                        CCPRINT("data proc", "not processed type cmd(%d)\n", cmd);
974        }
975       
976}
977
978
979static void p_cc_proc(tDCC_CmdSet cmd, UINT32 opt, UINT32 param1, UINT32 param2)
980{
981        switch(cmd) {
982               
983                case eCMD_USER_INIT :
984                case eCMD_USER_SET_DISPLAY :
985                case eCMD_USER_SET_SERVICE :
986                case eCMD_USER_SET_OPTION :
987                case eCMD_USER_SET_ATTR :
988                case eCMD_USER_SET_POSITION :
989                case eCMD_USER_SET_KOREAN :
990                        p_cc_user_set_proc(cmd, opt, param1, param2);           
991                        break;                         
992               
993                case eCMD_BUF_FULL :
994                        INFO(b_now_delayed)=FALSE;
995                        break;
996               
997                case eCMD_TIMER :
998                        if(param1==TIMER_ID_RST)
999                                INFO(b_now_delayed)=FALSE;
1000                        else if(INFO(b_display_on))
1001                                p_cc_data_proc(cmd, opt, param1, param2);
1002                        break;
1003               
1004                case eCMD_DLY :
1005                        INFO(b_now_delayed)=TRUE;
1006                        DCCMain_SendCmd(eCMD_SET_TIMER, eDCC_OPT_TIMER_ONESHOT, TIMER_ID_RST, param1*100);
1007                        break;
1008                       
1009                case eCMD_DLC :
1010                        INFO(b_now_delayed)=FALSE;
1011                        break;
1012               
1013                case eCMD_RST :
1014                        INFO(b_now_delayed)=FALSE;
1015                       
1016                        if(INFO(b_display_on))
1017                                p_cc_data_proc(cmd, opt, param1, param2);
1018                        break;
1019
1020                // cc data packetÀÌ ÆÄ½Ì µÇ±â Àü µ¥ÀÌÅ͸¦ application¿¡ ³Ñ°Ü ÁÜ
1021                case eCMD_CC_DATA_PACKETS:
1022                        if (INFO(info_cb)!=NULL)
1023                                INFO(info_cb)(eDCC_IT_CC_DATA_PACKETS, opt, param1, param2);
1024                        break;
1025                       
1026                default :
1027                        if(!INFO(b_display_on)) {
1028                                if(cmd==eCMD_USER_SET_DISPLAY && param2==TRUE);
1029                                else return;
1030                        }
1031                       
1032                        if(!INFO(b_now_delayed)) {
1033                                p_cc_data_proc(cmd, opt, param1, param2);
1034                        }
1035        }
1036
1037}
1038
1039
1040#if 0
1041__APIs__() {}
1042#endif         
1043
1044
1045void DCCExec_ProcessMsg(tDCC_CmdSet cmd, UINT32 opt, UINT32 param1, UINT32 param2)
1046{
1047        p_cc_proc(cmd, opt, param1, param2);
1048}
1049
1050
1051void DCCExec_Init()
1052{
1053        INFO(b_edm_rcvd)=FALSE;
1054}
1055
1056
1057void DCCExec_SetCallback(tDCC_InfoCallback func)
1058{
1059        INFO(info_cb)=func;
1060       
1061}
1062
1063
1064char* DCCExec_CmdGetStr(tDCC_CmdSet cmd)
1065{
1066        return p_cmd_get_str(cmd);
1067}
1068
1069BOOL DCCExec_IsCurDLY()
1070{
1071        return INFO(b_now_delayed);
1072}
1073
1074void DCCExec_ForceDLYRelease()
1075{
1076        INFO(b_now_delayed)=FALSE;
1077}
1078
1079
1080#if 0
1081__Debug__() {}
1082#endif
1083
1084void get_cc_info()
1085{
1086        DHL_OS_Printf("CC Info....\n");
1087        DHL_OS_Printf("  display -> %s\n", INFO(b_display_on)?"on":"off");
1088        DHL_OS_Printf("  cur_win_id -> %d\n", INFO(cur_win_id));
1089        DHL_OS_Printf("  cur_service -> %d\n", INFO(cur_service));
1090        DHL_OS_Printf("  mode -> %s\n", INFO(master_mode)?"user mode":"auto mode");
1091}
1092
1093
1094void get_win_attr(UINT8 win_id)
1095{
1096        tDCC_WinAttr *pattr=&WIN(win_id)->win_attr;
1097       
1098        DHL_OS_Printf("Win Attr....\n");
1099        DHL_OS_Printf("j(%d), pd(%d), sd(%d), ww(%d), de(%d), ed(%d)\n",
1100                pattr->j, pattr->pd, pattr->sd, pattr->ww, pattr->de, pattr->ed);
1101        DHL_OS_Printf("es(%d), fc(%d), fo(%d), bt(%d), bc(%d)\n",
1102                pattr->es, pattr->fc, pattr->fo, pattr->bt, pattr->bc);
1103}
1104
1105void get_pen_attr(UINT8 win_id)
1106{
1107        tDCC_PenAttr *pattr=&WIN(win_id)->pen_attr;
1108       
1109        DHL_OS_Printf("Pen Attr...\n");
1110        DHL_OS_Printf("s(%d),fs(%d),tt(%d), o(%d), u(%d), i(%d), et(%d)\n",
1111                pattr->s, pattr->fs, pattr->tt, pattr->o, pattr->u, pattr->i, pattr->et);
1112        DHL_OS_Printf("fc(%d), fo(%d), bc(%d), bo(%d), ec(%d)\n",
1113                pattr->fc, pattr->fo, pattr->bc, pattr->bo, pattr->ec);
1114}
1115
1116void get_def_win()
1117{
1118        int i;
1119       
1120        DHL_OS_Printf("-- win id -- : %d\n", INFO(cur_win_id));
1121       
1122        for(i=0; i<8; i++) {
1123                if(!WIN(i)->bcreated) continue;
1124               
1125                DHL_OS_Printf("Window(%d)....\n", i);
1126               
1127                DHL_OS_Printf("id(%d), p(%d), cl(%d), rl(%d), v(%d), ap(%d), av(%d)\n",
1128                        WIN(i)->id, WIN(i)->p, WIN(i)->cl, WIN(i)->rl, WIN(i)->v, WIN(i)->ap, 
1129                        WIN(i)->av);
1130               
1131                DHL_OS_Printf("rp(%d), ah(%d), rc(%d), cc(%d), ps(%d), ws(%d)\n",
1132                        WIN(i)->rp, WIN(i)->ah, WIN(i)->rc, WIN(i)->cc, WIN(i)->ps, WIN(i)->ws);
1133               
1134                get_win_attr(i);
1135                get_pen_attr(i);
1136        }
1137}
1138
1139void set_spl(int row, int col)
1140{
1141        p_cc_data_proc(eCMD_SPL, 0, row, col); 
1142}
1143
1144
1145/* end of file */
1146
1147
1148
Note: See TracBrowser for help on using the repository browser.