#include #include #include #include #include #include #include #include #include #include #include #include #include "setup.h" static void *xlat256=NULL; static void *xlat16=NULL; static void *xlat64=NULL; static void create_xlats() { if (xlat256==NULL) xlat256=create_special_palette(); if (xlat16==NULL) xlat16=create_blw_palette16(); if (xlat64==NULL) xlat64=create_hixlat(); } static void initgr_common() { register_ms_cursor(&sipka); if (init_mysky()!=0) { closemode(); puts("Neni mys!\nMouse not found!"); exit(0); } // hranice_mysky(0,0,639,479); update_mysky(); schovej_mysku(); bar(0,0,639,479); showview(0,0,0,0); } int initgr_auto() { int vmode; create_xlats(); vmode=2; if (initmode32()) { vmode=5; if (initmode64(xlat64)) { vmode=1; if (initmode256(xlat256)) { vmode=0; initmode16(xlat16); } } } initgr_common(); return vmode; } int initgr_spec(int vmode) { int i=-1; create_xlats(); switch (vmode) { case 0:i=initmode_lo(xlat256);break; case 1:i=initmode256(xlat256);break; case 2:i=initmode32();break; case 5:i=initmode64(xlat64);break; } if (!i) initgr_common(); return i; } void initgr_low() { create_xlats(); initmode16(xlat16); initgr_common(); } void donegr() { closemode(); done_mysky(); } void kresli_okno(WINDOW *w) { int x,y; int xs,ys,xsr,ysr; int x1,y1,xs1,ys1; int i,j; xsr=ramecky[0][0]; ysr=ramecky[0][1]; x1=w->x-12; y1=w->y-12; xs1=w->xs+24; ys1=w->ys+24; xs=xs1/xsr; ys=ys1/ysr; curcolor=w->color; bar(w->x,w->y,w->x+w->xs,w->y+w->ys); for(j=0,y=y1;jx; y=waktual->y; } name; highlight(&ctl,WINCOLOR); ctl.bsize=2;ctl.ctldef=0; x+=20;y+=20; memcpy(fc,flat_color(0x7fe0),sizeof(FC_TABLE)); fc[0]=0x0000; if (x+xs>MAX_X-2) x=MAX_X-2-xs; if (y+ys>MAX_Y-2) y=MAX_Y-2-ys; p=create_window(x,y,xs,ys,WINCOLOR,&ctl); q=desktop_add_window(p); define(0,2,2,xs-5-20*(xs>=70),14,0,win_label,name); ctl.bsize=1;ctl.ctldef=1; o_end->autoresizex=1; property(&ctl,vga_font,&fc,LABELCOLOR); if (xs>=70) { define(1,1,1,19,16,1,button,"\x0f"); property(NULL,icones,&icone_color,WINCOLOR);on_control_change(close_current); } return q; } int def_dialoge(word x,word y,word xs, word ys, char *name,char modal) { CTL3D ctl; FC_TABLE fc; WINDOW *p; int i; memcpy(fc,flat_color(0x7fe0),sizeof(FC_TABLE)); if (modal & 0x2) { ctl.bsize=12; xs=((xs+6)/12)*12; ys=((ys+6)/12)*12; } else memcpy(&ctl,def_border(2,WINCOLOR),sizeof(CTL3D)); p=create_window(x,y,xs,ys,WINCOLOR,&ctl); i=desktop_add_window(p); if (modal & 1) set_window_modal(); memcpy(&ctl,def_border(5,WINCOLOR),sizeof(CTL3D)); if (name!=NULL) { define(0,2,2,xs-4,14,0,win_label,name); o_end->autoresizex=1; property(&ctl,vga_font,&fc,LABELCOLOR); } if (modal & 0x2) p->draw_event=kresli_okno; return i; } void def_listbox(int id,word x,word y,word xs,word ys,TSTR_LIST ls,int ofs,int color) { CTL3D b1,b2; word black[]={0,0,0,0,0,0}; memcpy(&b1,def_border(1,0),sizeof(CTL3D)); memcpy(&b2,def_border(5,WINCOLOR),sizeof(CTL3D)); define(id+1,x+xs+4,y+18,15,ys-35,0,scroll_bar_v,0,10,1,0x0200); property(&b2,NULL,NULL,WINCOLOR); define(id+2,x+xs+4,y,14,14,0,scroll_button,-1,0,"\x4"); property(&b1,icones,black,WINCOLOR);on_control_change(scroll_support); define(id+3,x+xs+4,y+ys-14,14,14,0,scroll_button,1,10,"\6"); property(&b1,icones,black,WINCOLOR);on_control_change(scroll_support); define(id,x,y,xs,ys,0,listbox,ls,color,ofs); property(&b2,NULL,NULL,WINCOLOR); }