diff --git a/programs/develop/libGUI/examples/C example/interface.c b/programs/develop/libGUI/examples/C example/interface.c deleted file mode 100644 index a21ba52bdd..0000000000 --- a/programs/develop/libGUI/examples/C example/interface.c +++ /dev/null @@ -1,1270 +0,0 @@ - - -#include "./include/kolibrisys.h" -#include "./include/stdlib.h" - - -#define Cannot_load_libGUI 100 -#define ParendSize 44 -#define MessageSize 16 - -#define TOTAL_NUMBERS_OF_CONTROLS 150 - -#define WINDOW_POSX 50 -#define WINDOW_POSY 50 -#define WINDOW_SIZEX 512 -#define WINDOW_SIZEY 384 - -#define FONT_SIZEX 6 - -#define BOOKMARK1_POSX 0 -#define BOOKMARK1_POSY 55 -#define BOOKMARK1_SIZEX 210 -#define BOOKMARK2_POSX 215 -#define BOOKMARK2_POSY 55 - -#define SCREEN_SIZEX 1024 -#define SCREEN_SIZEY 768 - -#define CONTROLS_NUMBER_POS 4 - -#define DISTANCE1 130 - -struct WINDOW -{ - int posx; - int posy; - int sizex; - int sizey; -}; - -struct HEADER -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - -}__attribute__((packed));; - -struct MESSAGE -{ - dword type; - dword arg1; - dword arg2; - dword arg3; -}__attribute__((packed)); - -struct ControlButton -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - word x; - word y; - word width; - word height; - dword image; - word imageX; - word imageY; - word imageSizeX; - word imageSizeY; - dword transparentColor; - dword text; - word textX; - word textY; - dword textcolor; - dword color1; - dword color2; - word mouseX; - word mouseY; -}__attribute__((packed));; - -struct ControlScroller -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - word x; - word y; - word length; - dword color1; - float size; - float pos; - word buttons_flags; - dword ChildButton1; - dword ChildButton2; - word MouseX; - word MouseY; -}__attribute__((packed));; - -struct ControlProgressbar -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword color1; - dword color2; - dword x; - dword y; - dword sizex; - dword sizey; - float progress; - dword color3; -}__attribute__((packed));; - - -typedef struct InfoForButton -{ - byte type; //0 - byte flag; //1 - word x; //2 - word y; //4 - word width; //6 - word height; //8 - dword image; //10 - word imageX; //14 - word imageY; //16 - word imageSizeX; //18 - word imageSizeY; //20 - dword transparentColor;//24 - dword text; //28 - word textX; //32 - word textY; //34 - dword textcolor; //36 - dword color1; //40 - dword color2; - word mouseX; - word mouseY; -}__attribute__((packed)); - -struct InfoForScroller -{ - byte type; - word x; - word y; - word length; - dword color1; - float size; - float pos; - word buttons_flags; - dword ChildButton1; - dword ChildButton2; - word MouseX; - word MouseY; -}__attribute__((packed)); - -struct InfoForProgressbar -{ - byte type; - byte flag; - dword color1; - dword color2; - dword x; - dword y; - dword sizex; - dword sizey; - float progress; - dword color3; -}__attribute__((packed)); - - -struct InfoForImage -{ - byte type; - byte flag; - dword color1; - dword x; - dword y; - dword sizex; - dword sizey; - dword pointer; -}__attribute__((packed)); - -struct InfoForText -{ - byte type; - byte flag; - dword color1; - dword x; - dword y; - dword length; - dword text; -}__attribute__((packed)); - -struct InfoForNumber -{ - byte type; - byte flag; - dword color1; - dword x; - dword y; - float number; - dword format; -}__attribute__((packed)); - -struct ControlImage -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword color1; - dword x; - dword y; - dword sizex; - dword sizey; - dword pointer; -}__attribute__((packed)); - -struct ControlText -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword color1; - dword x; - dword y; - dword length; - dword text; -}__attribute__((packed)); - -struct ControlNumber -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword color1; - dword x; - dword y; - float number; - dword format; -}__attribute__((packed)); - -//////////////////////////////Info for Bookmark 1/////////////////////////////// -struct InfoForBookmark1 -{ - byte type; - byte flag; - dword x; - dword y; - dword sizex; - dword sizey; - dword color1; - dword reserved; - dword color2; - - dword number_lines_bookmarks; - dword number_lines_bookmarks_in_1; - dword number_lines_bookmarks_in_2; - - dword text_for_1; - dword number_controls_1; - dword type_control_10; - dword info_for_10_control; - - dword a1,b1; - dword a2,b2; - dword a3,b3; - dword a4,b4; - - dword a5,b5; - dword a6,b6; - dword a7,b7; - dword a8,b8; - - dword text_for_2; - dword number_controls_2; - dword type_control_20; - dword info_for_20_control; - - dword a9,b9; - dword a10,b10; - dword a11,b11; - dword a12,b12; - dword a13,b13; - dword a14,b14; - dword a15,b15; - - dword a16,b16; - dword a17,b17; - dword a18,b18; - dword a19,b19; - dword a20,b20; - dword a21,b21; - dword a22,b22; - - dword text_for_3; - dword number_controls_3; - dword type_control_30; - dword info_for_30_control; - -//filler 256 - dword a23,b23; - dword a24,b24; - dword a25,b25; - dword a26,b26; - dword a27,b27; - dword a28,b28; - dword a29,b29; - dword a30,b30; - dword a31,b31; - dword a32,b32; - dword a33,b33; - dword a34,b34; - dword a35,b35; - dword a36,b36; - dword a37,b37; - dword a38,b38; - - dword a39,b39; - dword a40,b40; - dword a41,b41; - dword a42,b42; - dword a43,b43; - dword a44,b44; - dword a45,b45; - dword a46,b46; - dword a47,b47; - dword a48,b48; - dword a49,b49; - dword a50,b50; - dword a51,b51; - dword a52,b52; - dword a53,b53; - dword a54,b54; - - dword text_for_4; - dword number_controls_4; - dword type_control_40; - dword info_for_40_control; - -//filler 64 - dword a55,b55; - dword a56,b56; - dword a57,b57; - dword a58,b58; - - dword a59,b59; - dword a60,b60; - dword a61,b61; - dword a62,b62; - - dword text_for_5; - dword number_controls_5; - dword type_control_50; - dword info_for_50_control; - -}__attribute__((packed)); - -struct ControlBookmark1 -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword x; - dword y; - dword sizex; - dword sizey; - dword color1; - dword reserved; - dword color2; - - dword number_lines_bookmarks; - dword number_lines_bookmarks_in_1; - dword number_lines_bookmarks_in_2; - - dword text_for_1; - dword number_controls_1; - dword type_control_10; - dword info_for_10_control; - -//filler 64 - dword a1,b1; - dword a2,b2; - dword a3,b3; - dword a4,b4; - - dword a5,b5; - dword a6,b6; - dword a7,b7; - dword a8,b8; - - dword text_for_2; - dword number_controls_2; - dword type_control_20; - dword info_for_20_control; - -//filller 112 bytes - dword a9,b9; - dword a10,b10; - dword a11,b11; - dword a12,b12; - dword a13,b13; - dword a14,b14; - dword a15,b15; - - dword a16,b16; - dword a17,b17; - dword a18,b18; - dword a19,b19; - dword a20,b20; - dword a21,b21; - dword a22,b22; - - dword text_for_3; - dword number_controls_3; - dword type_control_30; - dword info_for_30_control; - -//filler 256 - dword a23,b23; - dword a24,b24; - dword a25,b25; - dword a26,b26; - dword a27,b27; - dword a28,b28; - dword a29,b29; - dword a30,b30; - dword a31,b31; - dword a32,b32; - dword a33,b33; - dword a34,b34; - dword a35,b35; - dword a36,b36; - dword a37,b37; - dword a38,b38; - - dword a39,b39; - dword a40,b40; - dword a41,b41; - dword a42,b42; - dword a43,b43; - dword a44,b44; - dword a45,b45; - dword a46,b46; - dword a47,b47; - dword a48,b48; - dword a49,b49; - dword a50,b50; - dword a51,b51; - dword a52,b52; - dword a53,b53; - dword a54,b54; - - - dword text_for_4; - dword number_controls_4; - dword type_control_40; - dword info_for_40_control; - -//filler 64 - dword a55,b55; - dword a56,b56; - dword a57,b57; - dword a58,b58; - - dword a59,b59; - dword a60,b60; - dword a61,b61; - dword a62,b62; - - dword text_for_5; - dword number_controls_5; - dword type_control_50; - dword info_for_50_control; - -}__attribute__((packed)); -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////Info for Bookmark 2/////////////////////////////// -struct InfoForBookmark2 -{ - byte type; - byte flag; - dword x; - dword y; - dword sizex; - dword sizey; - dword color1; - dword reserved; - dword color2; - - dword number_lines_bookmarks; - dword number_lines_bookmarks_in_1; - - dword text_for_1; - dword number_controls_1; - dword type_control_10; - dword info_for_10_control; - dword type_control_11; - dword info_for_11_control; - - dword text_for_2; - dword number_controls_2; - dword type_control_20; - dword info_for_20_control; - -//filler 64 - dword a1,b1; - dword a2,b2; - dword a3,b3; - dword a4,b4; - - dword a5,b5; - dword a6,b6; - dword a7,b7; - dword a8,b8; - -}__attribute__((packed)); - -struct ControlBookmark2 -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword x; - dword y; - dword sizex; - dword sizey; - dword color1; - dword reserved; - dword color2; - - dword number_lines_bookmarks; - dword number_lines_bookmarks_in_1; - - dword text_for_1; - dword number_controls_1; - dword type_control_10; - dword info_for_10_control; - dword type_control_11; - dword info_for_11_control; - - dword text_for_2; - dword number_controls_2; - dword type_control_20; - dword info_for_20_control; - -//filler 64 - dword a1,b1; - dword a2,b2; - dword a3,b3; - dword a4,b4; - - dword a5,b5; - dword a6,b6; - dword a7,b7; - dword a8,b8; - -}__attribute__((packed)); -//////////////////////////////////////////////////////////////////////////////// - -// -// libGUI functions -// -void stdcall (*DestroyControl)(void *control); -void stdcall (*SendMessage)(struct HEADER *Parend,struct MESSAGE *Message); -int stdcall (*Version)(void); -void stdcall (*ResizeComponent)(void *Control,int new_sizex,int new_sizey); -void stdcall (*RemoveComponent)(void *Control,int new_x,int new_y); -void* stdcall (*CraeteButton)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteScroller)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteBookmark)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteImage)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteText)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteNumber)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteCheckbox)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteEditbox)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteProgressbar)(struct HEADER *Parend,void *Control); - -char* sys_libGUI_path="/sys/lib/libGUI.obj"; - -void link(char *exp){ - - char name_DestroyControl[]={"DestroyControl"}; - char name_SendMessage[]={"SendMessage"}; - char name_Version[]={"Version"}; - char name_ResizeComponent[]={"ResizeComponent"}; - char name_RemoveComponent[]={"RemoveComponent"}; - char name_CraeteButton[]={"CraeteButton"}; - char name_CraeteScroller[]={"CraeteScroller"}; - char name_CraeteBookmark[]={"CraeteBookmark"}; - char name_CraeteImage[]={"CraeteImage"}; - char name_CraeteText[]={"CraeteText"}; - char name_CraeteNumber[]={"CraeteNumber"}; - char name_CraeteCheckbox[]={"CraeteCheckbox"}; - char name_CraeteEditbox[]={"CraeteEditbox"}; - char name_CraeteProgressbar[]={"CraeteProgressbar"}; - - DestroyControl=(void stdcall (*)(void *control)) - _ksys_cofflib_getproc(exp,name_DestroyControl); - SendMessage=(void stdcall (*)(struct HEADER *Parend,struct MESSAGE *Message)) - _ksys_cofflib_getproc(exp,name_SendMessage); - Version=(int stdcall (*)(void)) - _ksys_cofflib_getproc(exp,name_Version); - ResizeComponent=(void stdcall(*)(void *Control,int new_sizex,int new_sizey)) - _ksys_cofflib_getproc(exp,name_ResizeComponent); - RemoveComponent=(void stdcall(*)(void *Control,int new_x,int new_y)) - _ksys_cofflib_getproc(exp,name_RemoveComponent); - CraeteButton=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteButton); - CraeteScroller=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteScroller); - CraeteBookmark=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteBookmark); - CraeteImage=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteImage); - CraeteText=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteText); - CraeteNumber=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteNumber); - CraeteCheckbox=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteCheckbox); - CraeteEditbox=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteEditbox); - CraeteProgressbar=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteProgressbar); - -} - -int Init_libGUI(void) -{ - char *Export; - - Export=(char *)_ksys_cofflib_load(sys_libGUI_path); - if (Export==0) return Cannot_load_libGUI; - - link(Export); - return(0); - -} - -void draw_window(struct WINDOW *win) -{ - _ksys_window_redraw(1); - _ksys_draw_window(win->posx,win->posy,win->sizex,win->sizey,0xaabbcc,3,0x5090d0,0,0x5080d0); - _ksys_window_redraw(2); - -} - -void CraeteInterface(dword *controls,struct HEADER *Parend,struct WINDOW *win) -{ - char *names_of_bookmarks1[]={"SINGLET","DOUBLET","SIXTET","P(H)","OTHER"}; - char *names_of_bookmarks2[]={"SPECTRA","INFORMATION"}; - - char *bookmark_singlet_text[]={"Isomer shift","Amplitude","Width","Xi^2"}; - char *bookmark_doublet_text[]={"Isomer shift","Quadrupol shift","Amplitude 1", - "Amplitude 2","Width 1","Width 2","Xi^2"}; - char *bookmark_sixtet_text[]={"Isomer shift","Quadrupol shift","Feld","Amplitude 1", - "Amplitude 2","Amplitude 3","Amplitude 4","Amplitude 5", - "Amplitude 6","Width 1","Width 2","Width 3","Width 4","Width 5", - "Width 6","Xi^2"}; - char *bookmark_P_text[]={"K","Maximum feld H","Amplitude","Xi^2"}; - char *bookmark_information_text[]={"Channels","Null channel","mm/s","Basis(impulses)"}; - - char button_crate_text[]={"Craete"}; - char button_autocolibrovka_text[]={"Auto colibrovka"}; - char button_combine_spectras_text[]={"To combine spectras"}; - - struct ControlButton *ButtonCraete; - struct InfoForButton *InfoButtonCraete; - struct ControlButton *ButtonAutoColibrovka; - struct InfoForButton *InfoButtonAutoColibrovka; - struct ControlButton *ButtonCombineSpectras; - struct InfoForButton *InfoButtonCombineSpectras; - - struct InfoForImage *InfoImage; - struct ControlImage *Image; - struct InfoForText *InfoText; - struct ControlText *Text; - struct InfoForNumber *InfoNumber; - struct ControlNumber *Number; - struct ControlProgressbar *Progressbar1; - struct InfoForProgressbar *InfoProgressbar1; - - struct ControlBookmark1 *Bookmark1; - struct InfoForBookmark1 *InfoBookmark1; - struct ControlBookmark2 *Bookmark2; - struct InfoForBookmark2 *InfoBookmark2; - - dword *ptr,*ptr2; - int skin_height; - int i; - int x,y; - dword textcolor; - - InfoButtonCraete=malloc(sizeof(InfoButtonCraete)); - InfoButtonAutoColibrovka=malloc(sizeof(InfoButtonAutoColibrovka)); - InfoButtonCombineSpectras=malloc(sizeof(InfoButtonCombineSpectras)); - InfoImage=malloc(sizeof(InfoImage)); - InfoText=malloc(sizeof(InfoText)); - InfoNumber=malloc(sizeof(InfoNumber)); - InfoProgressbar1=malloc(sizeof(InfoProgressbar1)); - - InfoBookmark1=malloc(sizeof(InfoBookmark1)); - InfoBookmark2=malloc(sizeof(InfoBookmark2)); - - skin_height=_ksys_get_skin_height(); - - - InfoButtonCraete->type=0x91;//10010001b - InfoButtonCraete->flag=0; - InfoButtonCraete->x=10; - InfoButtonCraete->y=10; - InfoButtonCraete->width=FONT_SIZEX*sizeof(button_crate_text)+10; - InfoButtonCraete->height=20; - InfoButtonCraete->text=(dword)button_crate_text; - InfoButtonCraete->textcolor=0; - InfoButtonCraete->color1=0xaabbcc; - - InfoButtonAutoColibrovka->type=0x91;//10010001b - InfoButtonAutoColibrovka->flag=0; - InfoButtonAutoColibrovka->x=10; - InfoButtonAutoColibrovka->y=30; - InfoButtonAutoColibrovka->width=FONT_SIZEX*sizeof(button_autocolibrovka_text)+10; - InfoButtonAutoColibrovka->height=20; - InfoButtonAutoColibrovka->text=(dword)button_autocolibrovka_text; - InfoButtonAutoColibrovka->textcolor=0; - InfoButtonAutoColibrovka->color1=0xaabbcc; - - InfoButtonCombineSpectras->type=0x91;//10010001b - InfoButtonCombineSpectras->flag=0; - InfoButtonCombineSpectras->x=10; - InfoButtonCombineSpectras->y=10; - InfoButtonCombineSpectras->width=FONT_SIZEX*sizeof(button_combine_spectras_text)+10; - InfoButtonCombineSpectras->height=20; - InfoButtonCombineSpectras->text=(dword)button_combine_spectras_text; - InfoButtonCombineSpectras->textcolor=0; - InfoButtonCombineSpectras->color1=0xaabbcc; - - //prepea text for bookmark SINGLET - textcolor=0xffffff; - x=10; - y=40; - ptr=58+(dword)InfoBookmark1; - ptr2=58+32+(dword)InfoBookmark1; - for(i=0;i<4;i++) - { - InfoText[i].type=0x80; - InfoText[i].flag=0; - InfoText[i].x=x; - InfoText[i].y=y; - InfoText[i].color1=textcolor; - InfoText[i].text=bookmark_singlet_text[i]; - InfoText[i].length=strlen(bookmark_singlet_text[i]); - - InfoNumber[i].type=0x82; - InfoNumber[i].flag=0; - InfoNumber[i].x=x+DISTANCE1; - InfoNumber[i].y=y; - InfoNumber[i].color1=textcolor; - InfoNumber[i].number=-0.1234567; - InfoNumber[i].format=10*65536+7; - - *ptr=(dword)5; - ptr++; - *ptr=(dword)&InfoText[i]; - ptr++; - - *ptr2=(dword)6; - ptr2++; - *ptr2=(dword)&InfoNumber[i]; - ptr2++; - - y=y+12; - } - //prepea text for bookmark DOUBLET - y=40; - ptr=58+64+16+(dword)InfoBookmark1; - ptr2=58+64+16+56+(dword)InfoBookmark1; - for(i=4;i<4+7;i++) - { - InfoText[i].type=0x80; - InfoText[i].flag=0; - InfoText[i].x=x; - InfoText[i].y=y; - InfoText[i].color1=textcolor; - InfoText[i].text=bookmark_doublet_text[i-4]; - InfoText[i].length=strlen(bookmark_doublet_text[i-4]); - - InfoNumber[i].type=0x82; - InfoNumber[i].flag=0; - InfoNumber[i].x=x+DISTANCE1; - InfoNumber[i].y=y; - InfoNumber[i].color1=textcolor; - InfoNumber[i].number=-0.1234567; - InfoNumber[i].format=10*65536+7; - - *ptr=(dword)5; - ptr++; - *ptr=(dword)&InfoText[i]; - ptr++; - - *ptr2=(dword)6; - ptr2++; - *ptr2=(dword)&InfoNumber[i]; - ptr2++; - y=y+12; - } - //prepea text for bookmark SIXTET - y=40; - ptr=58+64+16+112+16+(dword)InfoBookmark1; - ptr2=58+64+16+112+16+128+(dword)InfoBookmark1; - for(i=4+7;i<4+7+16;i++) - { - InfoText[i].type=0x80; - InfoText[i].flag=0; - InfoText[i].x=x; - InfoText[i].y=y; - InfoText[i].color1=textcolor; - InfoText[i].text=bookmark_sixtet_text[i-(4+7)]; - InfoText[i].length=strlen(bookmark_sixtet_text[i-(4+7)]); - - InfoNumber[i].type=0x82; - InfoNumber[i].flag=0; - InfoNumber[i].x=x+DISTANCE1; - InfoNumber[i].y=y; - InfoNumber[i].color1=textcolor; - InfoNumber[i].number=-0.1234567; - InfoNumber[i].format=10*65536+7; - - *ptr=(dword)5; - ptr++; - *ptr=(dword)&InfoText[i]; - ptr++; - - *ptr2=(dword)6; - ptr2++; - *ptr2=(dword)&InfoNumber[i]; - ptr2++; - y=y+12; - } - //prepea text for bookmark P(H) - y=40; - ptr=58+64+16+112+16+256+16+(dword)InfoBookmark1; - ptr2=58+64+16+112+16+256+16+32+(dword)InfoBookmark1; - for(i=4+7+16;i<4+7+16+4;i++) - { - InfoText[i].type=0x80; - InfoText[i].flag=0; - InfoText[i].x=x; - InfoText[i].y=y; - InfoText[i].color1=textcolor; - InfoText[i].text=bookmark_P_text[i-(4+7+16)]; - InfoText[i].length=strlen(bookmark_P_text[i-(4+7+16)]); - - InfoNumber[i].type=0x82; - InfoNumber[i].flag=0; - InfoNumber[i].x=x+DISTANCE1; - InfoNumber[i].y=y; - InfoNumber[i].color1=textcolor; - InfoNumber[i].number=-0.1234567; - InfoNumber[i].format=10*65536+7; - - *ptr=(dword)5; - ptr++; - *ptr=(dword)&InfoText[i]; - ptr++; - - *ptr2=(dword)6; - ptr2++; - *ptr2=(dword)&InfoNumber[i]; - ptr2++; - y=y+12; - } - - //prepea text for bookmark INFORMATION - textcolor=0xffffff; - x=10; - y=40; - ptr=78+(dword)InfoBookmark2; - ptr2=78+32+(dword)InfoBookmark2; - for(i=4+7+16+4;i<4+7+16+4+4;i++) - { - InfoText[i].type=0x80; - InfoText[i].flag=0; - InfoText[i].x=x; - InfoText[i].y=y; - InfoText[i].color1=textcolor; - InfoText[i].text=bookmark_information_text[i-(4+7+16+4)]; - InfoText[i].length=strlen(bookmark_information_text[i-(4+7+16+4)]); - - InfoNumber[i].type=0x82; - InfoNumber[i].flag=0; - InfoNumber[i].x=x+DISTANCE1; - InfoNumber[i].y=y; - InfoNumber[i].color1=textcolor; - InfoNumber[i].number=-0.1234567; - InfoNumber[i].format=10*65536+7; - - *ptr=(dword)5; - ptr++; - *ptr=(dword)&InfoText[i]; - ptr++; - - *ptr2=(dword)6; - ptr2++; - *ptr2=(dword)&InfoNumber[i]; - ptr2++; - - y=y+12; - } - - //-------------------Init bookmark 1-------------------------------- - InfoBookmark1->type=0x81; //10000001b - InfoBookmark1->x=BOOKMARK1_POSX; - InfoBookmark1->y=BOOKMARK1_POSY; - InfoBookmark1->sizex=BOOKMARK1_SIZEX; - InfoBookmark1->sizey=win->sizey-InfoBookmark1->y-skin_height-5; - InfoBookmark1->color1=0xaabbcc; - InfoBookmark1->color2=0xffffff; - InfoBookmark1->number_lines_bookmarks=2; - InfoBookmark1->number_lines_bookmarks_in_1=3; - InfoBookmark1->number_lines_bookmarks_in_2=2; - - //bookmark singlet - InfoBookmark1->text_for_1=(dword)names_of_bookmarks1[0]; - InfoBookmark1->number_controls_1=1+4+4; - InfoBookmark1->type_control_10=1; - InfoBookmark1->info_for_10_control=(dword)InfoButtonCraete; - - //bookmark doublet - InfoBookmark1->text_for_2=(dword)names_of_bookmarks1[1]; - InfoBookmark1->number_controls_2=1+7+7; - InfoBookmark1->type_control_20=1; - InfoBookmark1->info_for_20_control=(dword)InfoButtonCraete; - - //bookmark sixtet - InfoBookmark1->text_for_3=(dword)names_of_bookmarks1[2]; - InfoBookmark1->number_controls_3=1+16+16; - InfoBookmark1->type_control_30=1; - InfoBookmark1->info_for_30_control=(dword)InfoButtonCraete; - - //bookmark P(H) - InfoBookmark1->text_for_4=(dword)names_of_bookmarks1[3]; - InfoBookmark1->number_controls_4=1+4+4; - InfoBookmark1->type_control_40=1; - InfoBookmark1->info_for_40_control=(dword)InfoButtonCraete; - - //bookmark OTHER - InfoBookmark1->text_for_5=(dword)names_of_bookmarks1[4]; - InfoBookmark1->number_controls_5=1; - InfoBookmark1->type_control_50=1; - InfoBookmark1->info_for_50_control=(dword)InfoButtonCombineSpectras; - - //-----------------------Init bookmark 2-------------------------------- - InfoBookmark2->type=0x81; //10000001b - InfoBookmark2->x=BOOKMARK2_POSX; - InfoBookmark2->y=BOOKMARK2_POSY; - InfoBookmark2->sizex=win->sizex-InfoBookmark2->x-10; - InfoBookmark2->sizey=win->sizey-InfoBookmark2->y-skin_height-5; - InfoBookmark2->color1=0xaabbcc; - InfoBookmark2->color2=0xffffff; - InfoBookmark2->number_lines_bookmarks=1; - InfoBookmark2->number_lines_bookmarks_in_1=2; - - //bookmark SPECTRA - InfoBookmark2->text_for_1=(dword)names_of_bookmarks2[0]; - InfoBookmark2->number_controls_1=2; - InfoBookmark2->type_control_10=4; - InfoBookmark2->info_for_10_control=(dword)InfoImage; - InfoBookmark2->type_control_11=9; - InfoBookmark2->info_for_11_control=(dword)InfoProgressbar1; - - //bookmark INFORMATION - InfoBookmark2->text_for_2=(dword)names_of_bookmarks2[1]; - InfoBookmark2->number_controls_2=1+4+4; - InfoBookmark2->type_control_20=1; - InfoBookmark2->info_for_20_control=(dword)InfoButtonCraete; - - InfoImage->type=0x80;//10000000b - InfoImage->flag=0; - InfoImage->x=10; - InfoImage->y=10; - InfoImage->sizex=InfoBookmark2->sizex-20; - InfoImage->sizey=InfoBookmark2->sizey-44-16; - InfoImage->pointer=(dword)malloc(SCREEN_SIZEX*SCREEN_SIZEY*3); - - InfoProgressbar1->type=0x81;//10000001b; - InfoProgressbar1->flag=0; - InfoProgressbar1->color1=0xffffff; - InfoProgressbar1->color2=0xff0000; - InfoProgressbar1->x=10; - InfoProgressbar1->y=InfoBookmark2->sizey-16-26; - InfoProgressbar1->sizex=InfoBookmark2->sizex-20; - InfoProgressbar1->sizey=16; - InfoProgressbar1->progress=0.1; - InfoProgressbar1->color3=0xaabbcc; - - Bookmark1=CraeteBookmark(Parend,InfoBookmark1); - Bookmark2=CraeteBookmark(Parend,InfoBookmark2); - - ButtonAutoColibrovka=CraeteButton(Parend,InfoButtonAutoColibrovka); - - controls[0]=(dword)Bookmark1; - controls[1]=(dword)Bookmark2; - controls[2]=(dword)ButtonAutoColibrovka; - controls[3]=(dword)InfoImage->pointer; - - //copy child controls of bookmark1 to the array - //It's proved simple way for acces to the child controls of bookmark1. - ptr2=44+58+32+4+(dword)Bookmark1; - for(i=CONTROLS_NUMBER_POS;iposx=WINDOW_POSX; - win->posy=WINDOW_POSY; - win->sizex=WINDOW_SIZEX; - win->sizey=WINDOW_SIZEY; - - draw_window(win); - - controls=malloc(TOTAL_NUMBERS_OF_CONTROLS*100); - Parend=(struct HEADER *)malloc(ParendSize); - Message=(struct MESSAGE *)malloc(MessageSize); - ProcessInformation=malloc(sizeof(ProcessInformation)); - - CraeteInterface(controls,Parend,win); - - Message->type=1; - Message->arg1=0; - Message->arg2=0; - Message->arg3=0; - - SendMessage(Parend,Message); - - exit_status=0; - while(exit_status!=1) - { - switch(_ksys_wait_for_event(2)) - { - case 1: - { - _ksys_get_process_table(ProcessInformation,-1); - win->sizex=ProcessInformation->winx_size; - win->sizey=ProcessInformation->winy_size; - - draw_window(win); - skin_height=_ksys_get_skin_height(); - Bookmark1=controls[0]; - Bookmark2=controls[1]; - new_sizex1=Bookmark1->sizex; - new_sizey1=win->sizey-Bookmark1->y-skin_height-5; - new_sizex2=win->sizex-Bookmark2->x-10; - new_sizey2=win->sizey-Bookmark2->y-skin_height-5; - Image=Bookmark2->info_for_10_control; - new_sizex3=new_sizex2-20; - new_sizey3=new_sizey2-44-16; - Progressbar1=Bookmark2->info_for_11_control; - new_sizex4=new_sizex2-20; - new_sizey4=16; - new_x=Bookmark2->x+10; - new_y=Bookmark2->y+new_sizey2; - RemoveComponent(Progressbar1,new_x,new_y); - ResizeComponent(Bookmark1,new_sizex1,new_sizey1); - ResizeComponent(Image,new_sizex3,new_sizey3); - ResizeComponent(Progressbar1,new_sizex4,new_sizey4); - ResizeComponent(Bookmark2,new_sizex2,new_sizey2); - Message->type=1; - SendMessage(Parend,Message); - break; - } - - case 2: - { - exit_status=1; - break; - } - - case 3: { - if (_ksys_get_button_id()==1) {exit_status=1;} - break; - } - - case 6: - { - mouse_buttons=_ksys_GetMouseButtonsState(); - x=_ksys_GetMouseXY(); - y=x & 0xffff; - x=x >> 16; - Message->type=6; - Message->arg1=x; - Message->arg2=y; - Message->arg3=mouse_buttons; - SendMessage(Parend,Message); - - break; - } - - default: break; - - } - } -} diff --git a/programs/develop/libGUI/examples/C example/kolibri.ld b/programs/develop/libGUI/examples/C example/kolibri.ld deleted file mode 100644 index 398e8ceda3..0000000000 --- a/programs/develop/libGUI/examples/C example/kolibri.ld +++ /dev/null @@ -1,18 +0,0 @@ -/*OUTPUT_FORMAT("binary")*/ -ENTRY("start_") -SECTIONS -{ - .text 0x000000: - { - *(.text) - } - - .data : { - *(.data) - } - - .bss : - { - *(.bss) - } -} diff --git a/programs/develop/libGUI/examples/C example/makefile2 b/programs/develop/libGUI/examples/C example/makefile2 deleted file mode 100644 index bf487f5cee..0000000000 --- a/programs/develop/libGUI/examples/C example/makefile2 +++ /dev/null @@ -1,22 +0,0 @@ -OUTFILE = interface.kex -INPUT = interface.c -OUTPUT = interface.o -OBJS = start.o interface.o - - -.SUFFIXES: .asm .o - -$(OUTFILE) : $(OBJS) - fasm start.asm start.o - gcc -c $(INPUT) -nostdinc -I/home/andrew/kolibri/develop/include/ - ld -nostdlib -T kolibri.ld -n -L/home/andrew/kolibri/develop/lib/ -o $(OUTFILE) $(OBJS) -lck -lm - objcopy $(OUTFILE) -O binary - -.asm.o: - fasm $*.asm - -.c.o: - gcc -c $*.c - -clean : - del *.o diff --git a/programs/develop/libGUI/examples/C example/start.asm b/programs/develop/libGUI/examples/C example/start.asm deleted file mode 100644 index 3b78611e6f..0000000000 --- a/programs/develop/libGUI/examples/C example/start.asm +++ /dev/null @@ -1,136 +0,0 @@ -format MS COFF -section '.text' executable -public start_ -;extrn mf_init -extrn main -;include 'debug2.inc' -__DEBUG__=0 - -start_: -;virtual at 0 - db 'MENUET01' ; 1. Magic number (8 bytes) - dd 0x01 ; 2. Version of executable file - dd start ; 3. Start address - dd 0x0 ; 4. Size of image - dd 0x100000 ; 5. Size of needed memory - dd 0x100000 ; 6. Pointer to stack -hparams dd 0x0 ; 7. Pointer to program arguments -hpath dd 0x0 ; 8. Pointer to program path -;end virtual - -start: -;DEBUGF 'Start programm\n' - ;init heap of memory - mov eax,68 - mov ebx,11 - int 0x40 - -;DEBUGF ' path "%s"\n params "%s"\n', .path, .params -; check for overflow - mov al, [path+buf_len-1] - or al, [params+buf_len-1] - jnz .crash -; check if path written by OS - mov eax, [hparams] - test eax, eax - jz .without_path - mov eax, path -.without_path: - mov esi, eax - call push_param -; retrieving parameters - mov esi, params - xor edx, edx ; dl - шфИђ яр№рьхђ№(1) шыш №рчфхышђхыш(0) - ; dh - ёшьтюы ё ъюђю№юую эрїрыёџ яр№рьхђ№ (1 ъртћїъш, 0 юёђрыќэюх) - mov ecx, 1 ; cl = 1 - ; ch = 0 я№юёђю эюыќ -.parse: - lodsb - test al, al - jz .run - test dl, dl - jnz .findendparam - ;{хёыш сћы №рчфхышђхыќ - cmp al, ' ' - jz .parse ;чру№ѓцхэ я№юсхы, у№ѓчшь ёыхфѓўљшщ ёшьтюы - mov dl, cl ;эрїшэрхђёџ яр№рьхђ№ - cmp al, '"' - jz @f ;чру№ѓцхэћ ъртћїъш - mov dh, ch ;яр№рьхђ№ схч ъртћїхъ - dec esi - call push_param - inc esi - jmp .parse - - @@: - mov dh, cl ;яр№рьхђ№ т ъртћїхърѕ - call push_param ;хёыш эх я№юсхы чэрїшђ эрїшэрхђёџ ъръющ ђю яр№рьхђ№ - jmp .parse ;хёыш сћы №рчфхышђхыќ} - -.findendparam: - test dh, dh - jz @f ; схч ъртћїхъ - cmp al, '"' - jz .clear - jmp .parse - @@: - cmp al, ' ' - jnz .parse - -.clear: - lea ebx, [esi - 1] - mov [ebx], ch - mov dl, ch - jmp .parse - -.run: -;DEBUGF 'call main(%x, %x) with params:\n', [argc], argv -if __DEBUG__ = 1 - mov ecx, [argc] - @@: - lea esi, [ecx * 4 + argv-4] - DEBUGF '0x%x) "%s"\n', cx, [esi] - loop @b -end if - push [argc] - push argv - call main -.exit: -;DEBUGF 'Exit from prog\n'; - xor eax,eax - dec eax - int 0x40 - dd -1 -.crash: -;DEBUGF 'E:buffer overflowed\n' - jmp .exit -;============================ -push_param: -;============================ -;parameters -; esi - pointer -;description -; procedure increase argc -; and add pointer to array argv -; procedure changes ebx - mov ebx, [argc] - cmp ebx, max_parameters - jae .dont_add - mov [argv+4*ebx], esi - inc [argc] -.dont_add: - ret -;============================== -public params as '__argv' -public path as '__path' - -section '.bss' -buf_len = 0x400 -max_parameters=0x20 -argc rd 1 -argv rd max_parameters -path rb buf_len -params rb buf_len - -;section '.data' -;include_debug_strings ; ALWAYS present in data section \ No newline at end of file diff --git a/programs/develop/libGUI/examples/bookmarks/GETPROC.ASM b/programs/develop/libGUI/examples/bookmarks/GETPROC.ASM deleted file mode 100644 index 25853abdf3..0000000000 --- a/programs/develop/libGUI/examples/bookmarks/GETPROC.ASM +++ /dev/null @@ -1,47 +0,0 @@ - -_ksys_cofflib_getproc: - - mov ebx,[esp+4] - - next_name_check: - - mov ecx,[ebx] - test ecx,ecx - jz end_export - - ;cmp export string with name - mov esi,[esp+8] - xor edi,edi - next_simbol_check: - - xor eax,eax - mov al,[ecx] - test al,al - jz exit_check_simbol - - xor edx,edx - mov dl,[esi] - cmp al,dl - je simbols_equvalent - add edi,1 - jmp exit_check_simbol - simbols_equvalent: - - add ecx,1 - add esi,1 - jmp next_simbol_check - exit_check_simbol: - - test edi,edi - jnz function_not_finded - mov eax,[ebx+4] - jmp end_export - function_not_finded: - - add ebx,8 - - jmp next_name_check - - end_export: - - ret 8 diff --git a/programs/develop/libGUI/examples/bookmarks/bookmark.asm b/programs/develop/libGUI/examples/bookmarks/bookmark.asm deleted file mode 100644 index 84eab538e4..0000000000 --- a/programs/develop/libGUI/examples/bookmarks/bookmark.asm +++ /dev/null @@ -1,800 +0,0 @@ -; -; -; This is example using GUI component Bookmark from libGUI. -; -; - -include 'macros.inc' -use32 - db 'MENUET01' - dd 1 - dd start - dd i_end - dd 126*1024 - dd 126*1024 - dd 0 - dd path - -start: - ;init hepe of memory - mcall 68,11 - - ;set current dir as ./ - call GetPath - - ;load dll - mcall 68,19,path - - test eax,eax - jnz libGUI_loaded - - mcall 68,19,sys_libGUI_path - - test eax,eax - jnz libGUI_loaded - - mcall -1 - - libGUI_loaded: - - mov [myexport],eax - - ;load dll functions - - push fnDestroyControl - push [myexport] - call _ksys_cofflib_getproc - mov [destroy_control],eax - - push fnSendMessage - push [myexport] - call _ksys_cofflib_getproc - mov [send_message],eax - - push fnResizeComponent - push [myexport] - call _ksys_cofflib_getproc - mov [resize_component],eax - - push fnMoveComponent - push [myexport] - call _ksys_cofflib_getproc - mov [move_component],eax - - push fnCraeteButton - push [myexport] - call _ksys_cofflib_getproc - mov [craete_button],eax - - push fnCraeteScroller - push [myexport] - call _ksys_cofflib_getproc - mov [craete_scroller],eax - - push fnCraeteBookmark - push [myexport] - call _ksys_cofflib_getproc - mov [craete_bookmark],eax - - push fnCraeteImage - push [myexport] - call _ksys_cofflib_getproc - mov [craete_image],eax - - push fnCraeteText - push [myexport] - call _ksys_cofflib_getproc - mov [craete_text],eax - - push fnCraeteNumber - push [myexport] - call _ksys_cofflib_getproc - mov [craete_number],eax - - push fnCraeteCheckbox - push [myexport] - call _ksys_cofflib_getproc - mov [craete_check_box],eax - - push fnCraeteEditbox - push [myexport] - call _ksys_cofflib_getproc - mov [craete_edit_box],eax - - ;set events mask - mcall 40,1100111b - - ;get standart colors table - mcall 48,3,ColorsTable,40 - - ;********************************************* - ;****************Init Butttons**************** - ;********************************************* - - mov ecx,[ColorsTable+8] - and ecx,0xffffff - - mov [Button1.type],byte 10010001b - mov [Button1.x],120 - mov [Button1.y],120 - mov [Button1.width],word 70 - mov [Button1.height],word 20 - mov [Button1.color1],dword ecx - mov [Button1.color2],dword 0xffffff - mov [Button1.text],text1 - - - - mov [Button3.type],byte 10010001b - mov [Button3.x],165 - mov [Button3.y],320 - mov [Button3.width],word 70 - mov [Button3.height],word 20 - mov [Button3.color1],dword ecx - mov [Button3.color2],dword 0xffffff - mov [Button3.text],text3 - - - push Button3 - push Parend - call [craete_button] - mov [PointerToControlForButtonExit],eax - - mov ecx,[ColorsTable+8] - and ecx,0xffffff - - ;******************************************** - ;***************Init scrollers**************** - ;******************************************** - - ;init vertical scroller - mov ecx,[ColorsTable+8] - mov [VerticalScroller.type],byte 11110001b - mov [VerticalScroller.x],150 - mov [VerticalScroller.y],10 - mov [VerticalScroller.pos],0.2 - mov [VerticalScroller.length],200 - mov [VerticalScroller.size],0.3 - mov [VerticalScroller.color1],ecx - - ;******************************************** - ;******************Init Image**************** - ;******************************************** - - mov [Image.type],byte 10000000b - mov [Image.x],30 - mov [Image.y],10 - mov [Image.sizex],200 - mov [Image.sizey],200 - mov [Image.pointer],Picture - - ;******************************************** - ;******************Init Text***************** - ;******************************************** - - mov [Text.type],byte 10000000b - mov [Text.color],0xffffff - mov [Text.x],100 - mov [Text.y],100 - mov [Text.length],25 - mov [Text.pointer],text_for_text - - ;******************************************** - ;*****************Init Number**************** - ;******************************************** - - mov [Number.type],byte 10000010b - mov [Number.color],0xffffff - mov [Number.x],150 - mov [Number.y],100 - mov [Number.parameters],5*65536+4 - mov [Number.number],-1234.5678 - - ;******************************************** - ;***************Init CheckBox**************** - ;******************************************** - - mov ecx,[ColorsTable+8] - and ecx,0xffffff - - ;mov [CheckBox.ch_flags],word 10b - mov [CheckBox.ch_left],150 - mov [CheckBox.ch_top],330 - mov [CheckBox.ch_text_margin],4 - mov [CheckBox.ch_size],11 - mov [CheckBox.ch_color],0xffffff - mov [CheckBox.ch_border_color],ecx - mov [CheckBox.ch_text_color],0 - mov [CheckBox.ch_text_ptr],check_box_text - mov [CheckBox.ch_text_length],9 - - ;******************************************** - ;***************Init EditBox***************** - ;******************************************** - - mov ecx,[ColorsTable+8] - mov [EditBox.ed_flags],0b;1000000000000000b - mov [EditBox.ed_left],100 ;x - mov [EditBox.ed_top],100 ;y - mov [EditBox.ed_width],150 - mov [EditBox.ed_height],14 - mov [EditBox.ed_max],100 - mov [EditBox.ed_text],buffer_for_text - mov [EditBox.ed_color],dword 0xffffff - mov [EditBox.shift_color],dword 0xaabbcc - mov [EditBox.ed_focus_border_color],0 - mov [EditBox.ed_blur_border_color],ecx - mov [EditBox.ed_text_color],0 - - - - ;******************************************** - ;***************Init bookmark**************** - ;******************************************** - - - ;init bookmark - mov ecx,[ColorsTable+8] - mov [Bookmark.type],byte 10100001b - mov [Bookmark.x],10 - mov [Bookmark.y],10 - mov [Bookmark.sizex],350 - mov [Bookmark.sizey],270 - mov [Bookmark.color_1],dword ecx - mov [Bookmark.color2],dword 0xffffff - - mov [Bookmark.number_bookmarks],3 - mov [Bookmark.number_zak_in_1],2 - mov [Bookmark.number_zak_in_2],3 - mov [Bookmark.number_zak_in_3],1 - - mov [Bookmark.text_for_1],text4 - mov [Bookmark.number_contrl_1],1 - mov [Bookmark.type_control_1],1 - mov [Bookmark.info_1_control],dword Button1 - - mov [Bookmark.text_for_2],text5 - mov [Bookmark.number_contrl_2],1 - mov [Bookmark.type_control_2],6 - mov [Bookmark.info_2_control],dword Number - - mov [Bookmark.text_for_3],text6 - mov [Bookmark.number_contrl_3],1 - mov [Bookmark.type_control_3],8 - mov [Bookmark.info_3_control],dword EditBox - - mov [Bookmark.text_for_4],text7 - mov [Bookmark.number_contrl_4],1 - mov [Bookmark.type_control_4],4 - mov [Bookmark.info_4_control],dword Image - - mov [Bookmark.text_for_5],text8 - mov [Bookmark.number_contrl_5],1 - mov [Bookmark.type_control_5],2 - mov [Bookmark.info_5_control],dword VerticalScroller - - mov [Bookmark.text_for_6],text9 - mov [Bookmark.number_contrl_6],1 - mov [Bookmark.type_control_6],5 - mov [Bookmark.info_6_control],dword Text - - - push Bookmark - push Parend - call [craete_bookmark] - mov [PointerToControlForBookmark],eax - - call draw_window - - ;***************************************************** - ;**********Example of resize component**************** - ;***************************************************** - mov ebx,[PointerToControlForButtonExit] - push 30;270 - push 150;250 - push ebx - call [resize_component] - - ;***************************************************** - ;**********Example of remove component**************** - ;***************************************************** - mov ebx,[PointerToControlForButtonExit] - push 340;270 - push 120;250 - push ebx - call [move_component] - - ;send message 1 for redrawing ALL controls - mov [Message],dword 1 - - push Message - push Parend - call [send_message] - - -still: - mcall 10 - - ;check for redraw window - cmp eax,1 - jne no_window - - call draw_window - - mov eax,[PointerToControlForBookmark] - mov ebx,[Window_SizeX] - mov ecx,[Window_SizeY] - sub ebx,50 - sub ecx,130 - ;or [eax+44],byte 1000000b - mov [eax+32],ebx - mov [eax+36],ecx - - mov [Message],dword 1 - push Message - push Parend - call [send_message] - - jmp still - no_window: - - ;check for keys events - cmp eax,2 - jne no_keys - - mcall 2 - shr eax,8 - - mov [Message],dword 2 - mov [Message+4],eax - - push Message - push Parend - call [send_message] - - mov eax,[Message+4] - - cmp al,27 - je exit - - jmp still - no_keys: - - ;check for pressed butons - cmp eax,3 - jne no_buttons - - mcall 17 - shr eax,8 - - jmp still - no_buttons: - - ;check for mouse events - cmp eax,6 - jne no_mouse - - mov [Message],dword 6 - - mcall 37,1 - mov ebx,eax - shr eax,16 ;x - and ebx,0xffff ;y - - mov [Message+4],eax - mov [Message+8],ebx - - mcall 37,2 - mov [Message+12],eax - - ;send system events to control - push Message - push Parend - call [send_message] - - mov eax,[PointerToControlForButtonExit] - - xor ebx,ebx - mov bl,byte[eax+45] - cmp bl,11b - jne no_crossing_pressing_button - - mov [button_pressed],1 - - no_crossing_pressing_button: - - xor ebx,ebx - mov bl,byte[eax+45] - cmp bl,1b - jne no_crossing_button - - cmp [button_pressed],1 - jne no_crossing_button - - jmp exit - - no_crossing_button: - - jmp still - no_mouse: - - jmp still - -exit: - - push [PointerToControlForButtonExit] - call [destroy_control] - - push [PointerToControlForBookmark] - call [destroy_control] - - mcall -1 - - - -;********************************************** -;*******************Draw window**************** -;********************************************** - -draw_window: - mcall 9,IPC_table,-1 - mcall 12,1 - - mov eax,[IPC_table+34] - mov ebx,[IPC_table+38] - mov ecx,[IPC_table+42] - mov edx,[IPC_table+46] - mov [Window_CordinatX],eax - mov [Window_CordinatY],ebx - mov [Window_SizeX],ecx - mov [Window_SizeY],edx - - cmp [Window_SizeX],400 - jae no_minimum_size_x - - mov [Window_SizeX],400 - mov ecx,[Window_SizeX] - - no_minimum_size_x: - - cmp [Window_SizeY],400 - jae no_minimum_size_y - - mov [Window_SizeY],400 - mov edx,[Window_SizeY] - - no_minimum_size_y: - - xor eax,eax - mov ebx,[Window_CordinatX] - mov ecx,[Window_CordinatY] - shl ebx,16 - shl ecx,16 - add ebx,[Window_SizeX] - add ecx,[Window_SizeY] - mov edx,0x03aabbcc - mov esi,0x805080d0 - mov edi,0x005080d0 - mcall - - ;call print_controls_information - - mcall 12,2 - ret - - -GetPath: - - mov ebx,255 - mov ecx,path - - next_symvol: - mov edx,ecx - add edx,ebx - - xor eax,eax - mov al,[edx] - cmp eax,'/' - je exit_path - - dec ebx - jnz next_symvol - - exit_path: - - inc edx - mov esi,dll_name - mov edi,edx - mov ecx,10 - rep movsb - - ret - - -include 'getproc.asm' - -;************************************************************ -;***************************DATA***************************** -;************************************************************ - -align 4 - -dll_name db 'libGUI.obj',0 -sys_libGUI_path db '/sys/lib/libGUI.obj',0 - -check_box_text db 'Check box',0 - -text1 db 'text',0 -text3 db 'Exit',0 - -text4 db 'Bookmark_1',0 -text5 db 'Bookmark_2',0 -text6 db 'Bookmark_3',0 -text7 db 'Bookmark_4',0 - -text8 db 'Bookmark_5',0 -text9 db 'Bookmark_6',0 - -text_for_text db 'Hello world from bookmark',0 - -fnDestroyControl db 'DestroyControl',0 -fnSendMessage db 'SendMessage',0 -fnResizeComponent db 'ResizeComponent',0 -fnMoveComponent db 'MoveComponent',0 -fnCraeteButton db 'CraeteButton',0 -fnCraeteScroller db 'CraeteScroller',0 -fnCraeteBookmark db 'CraeteBookmark',0 -fnCraeteImage db 'CraeteImage',0 -fnCraeteText db 'CraeteText',0 -fnCraeteNumber db 'CraeteNumber',0 -fnCraeteCheckbox db 'CraeteCheckbox',0 -fnCraeteEditbox db 'CraeteEditbox',0 -fnCraeteProgressbar db 'CraeteProgressbar',0 - -myexport dd 0 - -destroy_control dd 0 -send_message dd 0 -resize_component dd 0 -move_component dd 0 -craete_button dd 0 -craete_scroller dd 0 -craete_bookmark dd 0 -craete_image dd 0 -craete_text dd 0 -craete_number dd 0 -craete_check_box dd 0 -craete_edit_box dd 0 -craete_progres_bar dd 0 - -PointerToControlForButton1 dd 0 -PointerToControlForButtonExit dd 0 - -PointerToControlForHorizontalScroller dd 0 -PointerToControlForVerticalScroller dd 0 - -PointerToControlForBookmark dd 0 - -PointerToControlForImage dd 0 - -PointerToControlForText dd 0 - -PointerToControlForCheckBox dd 0 - -PointerToControlForEditBox dd 0 - - -Window_CordinatX dd 0 -Window_CordinatY dd 0 - -Window_SizeX dd 0 -Window_SizeY dd 0 - -button_pressed dd 0 - -IPC_table rd 256 -path rb 256 - -Parend: dd 0,0,0,0,0,0,0,0,0,0,0,0 ;44 bytes -Message rd 4 - -ColorsTable rd 10 -buffer_for_text rb 100+2 - -struc BUTTON -{ - .type db 1 - .flag db 1 - .x dw 1 - .y dw 1 - .width dw 1 - .height dw 1 - .image dd 1 - .imageX dw 1 - .imageY dw 1 - .imageSizeX dw 1 - .imageSizeY dw 1 - .transparentColor dd 1 - .text dd 1 - .textX dw 1 - .textY dw 1 - .textcolor dd 1 - .color1 dd 1 - .color2 dd 1 - .mouseX dw 1 - .mouseY dw 1 -} - -struc SCROLLER -{ - .type rb 1 - .x rw 1 - .y rw 1 - .length rw 1 - .color1 rd 1 - .size rd 1 - .pos rd 1 - .buttons_flags rw 1 - .ChildButton1 rd 1 - .ChildButton2 rd 1 - .mouseX rw 1 - .mouseY rw 1 -} - -struc BOOKMARK -{ - .type rb 1 - .flag rb 1 - .x rd 1 - .y rd 1 - .sizex rd 1 - .sizey rd 1 - .color_1 rd 1 - .reserved rd 1 - .color2 rd 1 - - .number_bookmarks rd 1 - .number_zak_in_1 rd 1 - .number_zak_in_2 rd 1 - .number_zak_in_3 rd 1 - - .text_for_1 rd 1 - .number_contrl_1 rd 1 - .type_control_1 rd 1 - .info_1_control rd 1 - - .text_for_2 rd 1 - .number_contrl_2 rd 1 - .type_control_2 rd 1 - .info_2_control rd 1 - - .text_for_3 rd 1 - .number_contrl_3 rd 1 - .type_control_3 rd 1 - .info_3_control rd 1 - - .text_for_4 rd 1 - .number_contrl_4 rd 1 - .type_control_4 rd 1 - .info_4_control rd 1 - - .text_for_5 rd 1 - .number_contrl_5 rd 1 - .type_control_5 rd 1 - .info_5_control rd 1 - - .text_for_6 rd 1 - .number_contrl_6 rd 1 - .type_control_6 rd 1 - .info_6_control rd 1 - -} - -struc IMAGE -{ - .type rb 1 - .flag rb 1 - .color rd 1 - .x rd 1 - .y rd 1 - .sizex rd 1 - .sizey rd 1 - .pointer rd 1 -} - -struc TEXT -{ - .type rb 1 - .flag rb 1 - .color rd 1 - .x rd 1 - .y rd 1 - .length rd 1 - .pointer rd 1 -} - -struc NUMBER -{ - .type rb 1 - .flag rb 1 - .color rd 1 - .x rd 1 - .y rd 1 - .number rd 1 - .parameters rd 1 -} - -struc CHECKBOX -{ - .ch_flags rw 1 - .ch_left rw 1 - .ch_top rw 1 - .ch_text_margin rd 1 - .ch_size rd 1 - .ch_size_2 rw 1 - .ch_size_3 rw 1 - .ch_color rd 1 - .ch_border_color rd 1 - .ch_text_color rd 1 - .ch_text_ptr rd 1 - .ch_text_length rw 1 - .mouseX rd 1 - .mouseY rd 1 -} -struc EDITBOX -{ - .ed_width rd 1 ;? ? - .ed_left rd 1 ; ?? - .ed_top rd 1 ; ?? - .ed_color rd 1 ;??? ? - .shift_color rd 1 ;?????. ?? - .ed_focus_border_color rd 1 ;??? ? - .ed_blur_border_color rd 1 ;?? ? ? - .ed_text_color rd 1 ;???? - .ed_max rd 1 ;- ? ?? ?? ? - .ed_text rd 1 ;??? ?? - .ed_flags rw 1 ;? - .ed_size rd 1 ;- ? - .ed_pos rd 1 ;? ?? - .ed_offset rd 1 ;?? - .cl_curs_x rd 1 ;??? ???? ? - .cl_curs_y rd 1 ;??? ???? ? - .ed_shift_pos rd 1 ; ?? - .ed_shift_pos_old rd 1 ;?? ?? - .ed_height rd 1 - .mouseX rd 1 - .mouseY rd 1 -} - -struc PROGRESSBAR -{ - .type rb 1 - .flag rb 1 - .color1 rd 1 - .color2 rd 1 - .x rd 1 - .y rd 1 - .sizex rd 1 - .sizey rd 1 - .progres rd 1 - .color3 rd 1 -} - -Button1 BUTTON -Button3 BUTTON -VerticalScroller SCROLLER -Bookmark BOOKMARK -Image IMAGE -Text TEXT -Number NUMBER -CheckBox CHECKBOX -EditBox EDITBOX -EditBox2 EDITBOX -ProgressBar PROGRESSBAR - -antibug: rb 2000 - -Picture: -file 'image.raw' - -i_end: diff --git a/programs/develop/libGUI/examples/bookmarks/image.raw b/programs/develop/libGUI/examples/bookmarks/image.raw deleted file mode 100644 index 82b040ca44..0000000000 --- a/programs/develop/libGUI/examples/bookmarks/image.raw +++ /dev/null @@ -1,85 +0,0 @@ -џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџџўџџўџџўџџўџџўџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџ§џџ§џџ§ўўќџџ§џџ§џџћџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџ§ўўќ§§ћќќњ§§ћўўќџџћџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќ§§ћќќњќќњ§§ћџџ§џџћџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџ§§§ћќќњћћљќќњџџ§џџћџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџ§§§ћћћљјјіћћљ§§ћџџћџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќ§љѕєюШОЌ№ѕэ§ќїќџђџ§§§ќўџџўџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўћќљђ№ыn@:Ј„~њќђћќљ§ќў§ќљўў§ўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўћќјћљѕ{NPj - Њ•‰ћѕьїїїћћћќќћќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќ§љћћїЧЉ­_ dеКІ§јёљћ§њћћ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџўўўћњћіњјћp8=k X$хкЭї§ђћќњ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўўћњњійЯЪЃPH8^ €^WёњьњљїќќўўџјўџљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўўўўџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўћћјјќіЙЎЈƒC@GИš’ѓљієїјљћїўўљўў§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўўўўўўўўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўњћј§њїэюэt\_T"лвФѕњѕњљћў§ћќќњ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўћ§ќќ§ќ§ўў§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўћќќјєљ§А†X/jmC7ёшоњљјќњїќ§љўў§§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§џўљћћјћњћќќ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџўўўћ§§њэќ§‰@F9O6hЃ€yїіьњћѓњћіќ§њџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§џўхшшьяяћ§§ќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџќќњ§ќћќј§‰HNP,JZK Џœѕњьќ§јќўњќ§ћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќўў­ЕГЋАЎњњјќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§њћќБІZ >, -O щтијјєїќљ§§ћ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўќќ§ЃЎ­‹‰ћљѓћћќ§§џџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўѕ§љэщх\""MZ$]ogB@єъхћїњљћ§њњњўўўџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўћњњЏББ‚ihќћїћћћўўўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ўќљњЯГЇx 4O$V9–EГЁœћіїєњќћћћўўўџџџџџџџџџџџџџџџџџџџџџџџџўўўўўў§§ќбЬЭv@Bїієћћњўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§їџќМЉЉ` 5QI>g ~Eшпжіќїњњњўўўўўўџџџџџџџџџџџџџџџџџџџџџўўўўўў§§ќюыь`нйкћћјџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ўћќџзеЬ_4J$v.ns• L“vnїќ№їїї§§§ўўўџџџџџџџџџџџџџџџџџџџџџўўўўўўў§ќъьыW -ЬЦЩњћїџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§њяыъ\^+eE+;o.v kœBЭПЛїљєѕў§џќўўўўџџџџџџџџџџџџџџџџџџўўў§§§ћ§§рбЬ/ТЉЉѕјѓ§ћњўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§§љњіљ€€ZI>@ (yHG s wMMьџъѕѕяћ§јќќќўўўџџџџџџџџџџџџџџџўўў§§§§§§ъни1ЏŽјљѕўў§џўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§§јјіњддН$&tX 8 ‡ A†o‘d -ЫЕ­ћњїєјіќќќџџџџџџџџџџџџџџџџџџўўў§§§ќќќоаЮ6Њxyњјѕ§ўќў§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§ўљјјїцшбHI=1uD -4<Š IД!K—l?<шху§јћ§§§џџџџџџџџџџџџџџџџџџўўў§§§ќќћЎž2”TVќљїњўќџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћ§јћќєНРЂVX%L7 -V $Zƒ hЋjЄŒіљьњњњўўўџџџџџџџџџџџџџџџўўў§§§§§ћД› 9w.0њієјўћџ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§§ћћћїдиСIG<=X9F' gЃ{Ђk& чыојљєјќњўўџџџџџџџџџџџџџ§§§§§§њњї­˜›9lчцтќў§ўћ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџў§ќќњѓішUZFG!" b:;3Œ - -IЄs ŠŒjgюєъћћљ§ћ§ўўўўўўџџџўўўўўўћћћќ§ћžƒ„HdзЫЪћ§ќћў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ћќ§љћўєimUMR>=0) -sLO H -|]Єm|йбФѕћѓљљљќќќ§§§џџџџџџ§§§§§§јљњb>AJZЩАГћ§ќљ§ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўќќ§їїљійне85`a 99 - P?„'Utˆ x“ ŠƒMFіў№јћїћћћ§§§џџџџџџўўў§§§јњћT34DUНЁќўќ§њћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§њќѕћќ§зоА€†-X]"&p5~ -PІwІvrнЧОїјђ§§§ўўўўўўўўўџџџћћћіљіK438VЕ‰њ§љ§ќ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўќќћћіњњќБКw`e78\_ "%%Ut VЏc h ‹CAѓ№чўќћќ§§§ўўўўўўўўќќќїїюD23&YЃksіўќњќћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџћљњњљїРЦЏPQ @D!^b !9:ІsR ŠЈm Œ[ ТИЎўњѕћ§§ћўќџџў§§§ћћћмЮС?"Jžemєќўќ§ќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџў§§ќћљюьѓQP2NS<;54SX9/ GA -“8 -V › ‡ -t: -q?Gљњяїљї§њњ§§ќ§§§љљљЃ…ƒ+.J…=F№№ђ§ќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќњќњѕHF CDHO--jn62t0AИf\ KмвЧљњѕџќќћќћџџџќќќoq7Jn#ъчцќћ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўџќў§ћ§њњћэёђђ?=%DIQRSV-+ „ HLyD | -I=L’^Zіњёќћљ§ў§ќќќ§§§ƒghK] %эчт§ќџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџ§ў§§џќќќљтьЬ”›M\Z[Z5:D=˜L< [e @5lотиїћїќў§ўўўћћћ‰jk3Vm{шцмћћџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўќќќ§ћў­Бœ;>Y]WT;<PQ•J% QCP[Ÿugєћјљљїі§їѕўњgk6ophчхпќќ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўў§§геХ=>EH - -)'  -[au}FJea -ŽƒX…P -bP~!ыєьњњљјќј§ќї“hiBx piътпќќњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§њљљјXV8MO=?+& $% __ Š‹ rrOVŽ]9 -.Cq NŸ†|ќљіњњћпЯЫQ%"V{ -WNщрпќќљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќћћіїёИВЇDD`g"89(#a`ААzq@Hx0UO\V1&№щп§ћ§ПЎЌ'^vQW%%юьшў§ћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџўќўќ§њќіђql[9: enEE 6:**Z^ -­Ѕ‚„-0?L h[w ЫЏЄљљјЕЅЇhl^{&'ђьч§ќ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џњћјѕєіммЏLK"%Va^a?=9: VWЏД[[_4j] -e `VѓќєЫЙДm\Xhыуоўќўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ўќќћњќјсч†АЕ-RV<:~ ^^hdkhŽ’?E -R= -~R [RwэчнШЎЅi TV Uцоиў§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўћ§§љѕј№Ž”GB=@?//1. -+& -VT}€ †`\/3pyijZ(t™Њ…}nLF([JSZ фйгќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћќ§їіјё‹‘WWWLN641.14(/%'CF he FJDL Ž O!Š -ˆ -r;HF[€хпећќ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ўќќћћ§љЇ­76CBHKKL ;; -56?? DA -30A;%'\ari -L< žU ‘/3Lb˜спвћ§ўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџ§§ўїјјьюхsqR   AAkjˆŒˆ‰ sv8:4.hmRa ЌЅ‡+ŒIKUЌ"%сузљќћќў§џўџџўџќўџџўўџўўџ§џќџџўџўџў§џџўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§ќќќэђихфлqpZ#"  - - -,+EFFD,)! fkNH Є•T ˆ_N>Ё%$шцсњњєћўћ§ќўўўќќќџќўњјўљј§ћћўџћ§ћќўљўџќў§ўџўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§§§§ћќќќћјљпхБfn :;,, -60JG\] -dj bj UWb` ‚ЃŽЈIr"KKšьфуўњќљјіѓјѓїћыёяшйХЛхвШьѕщѕєюјћњњњљњћїџўўџўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§їќ§љђѕтЎЕ_kg vqw{V[__ TTTX\bLL Y\ šЅ vwЋА Ћ“x@-3GšчспѕјѕјљђњїягОЏ}MMJ`/*…TSМž—щѓьіњјљћѕўўќџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ќ§ќ§љочЪ^ips}QQ./3222#x}\W ­И› ~u[,Bœ&%ыяцєќяѓънЃ†H 8MRBf‡RLчмзњќѕ§§јџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўўўўў§і§§§ёљщ“Ÿ˜! - 1424 -DCee -IKDB ih -ŽЃ˜”•xC>/-ѓњя№юм…aU* -BUbkS… -kП”“њћѕќќїўўћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўџћћќіћњљцмфЕЖpk9=,*52A=YZ__6=-,ee Ё ЎЎ –• -‘‚N&._(Гv?"Hl„Ір>:Й–ŸŒЎŠєњі§§ќџћњў§ћљџћџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўџџџўџџќџџўџџџџўџџџџџџўўўўўўўўўўўўўўўўџўќџџ§ўўџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўћћќїњћѕёіхЅПj]cCBILW^SVNQ35$"-&š -ЛИЊЉƒ kW C 2(03 ->@yЄБ™G Е$,{ p-,њљяє§ї§ў§§ќ§ћџўџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўџџџџџўџџ§џўќџ§ћўўўўўўџџџўўјўџљџџљџўћџўќўў§џўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ќ§љќ§њзхд8c[l \[=;%&%#ttІЄЛИ ›š vvk; PG;?FDcŸ ˜%  #,ˆnЌ…|ьїыїћјќ§§§§џўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§џўћџ§ћќўўјўџѕћўѕњ§ѕћўіќџїќџќўўџўўџўќџў§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§ћњћќєљј?ZI !!*+14!"  GF -ЇЈДВ Ј“‘nX`\\EKLJ^u &jmWуйЭјј№њќњќћўўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўўћџўєћџцђњпюљкщікщѕкшћлщќмъќх№ќюі§јќџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўќњўќќђђЛОМ(.0 -),BB?B>?+)  -qsГЗТФЌБІЁ„r…> † -vˆioŽƒ g0KSCKFe:5юузњќєќќћўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўіћ§р№ћацїЭшќЪхњЬчќЭш§ЫцњЫцњЫцњЪфњЯфњмыќюѓј§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќќќћњџљѕѓљѓX{^"OIY ?G%"    @@АЖЧЦНСœšЁЋ‡m~‰ž†ƒsw …| _hTW&H œyqєјёњќњўљќўўћњўџџџџџџџџџџџџ§§џџўўџџ§ќўўўёћџйыћачћЭчќЬчўЭчўЭчўЬчўЬшћЬшћЬшћЭш§Эц§Яцћечњхёўћўўўўќўў§ўўўћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§§§ќњ§§љѓљєgum  35'( -*ŸЂ ЭЮ%бг-ЄЄ ДВЏЊЌp  -Е ВЗБЌ ­Ћ~iV=s Пš“њѕяњјћєћї§њљџџџџџџџџџџў§џџџў§ўўўўђј§дцјЯч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эцўбцњфёљјўџџў§џў§ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џ§њ§љїљіллпqux 53 *0(' 1, -‹ŠЪЪ"ЫЭ#ЭЮ(ХП ЪЫЧЌХP!Ш+"м,8эA?р=8П ŠŒwlC - :4ЫТГіљяјіјїњѕ§§§ўўўџџџџ§џџ§§џўњѕќўкшіЯцћЫх§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЯхћЯцљфєў§ўўџўњџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћў§ќџ§§§ќџћќцяц/J/ ) *+VV˜™ед0ЬЮ#йл/жи.пр7фу<ьнFєЂKїTIёMUєNHђDEе-0мA=т7:П$&ŠJ3:-“6.аЖŸјњѓѓіљњњњ§§§џџџџ§џџќћћўўкьњахќЭцўЭчўЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЯчќЭч§ЬчџЮцћёљџџў§џџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§ўўћћћњјњѕњћdql 7777 -(+@?˜• -бЮ1фц=эяDчы?№ёKѓіOђўLјпOіLѕFQіQRѓOOєNMѓROь?DО ywOQЎ˜™ЎЁœo>Q/ D‘OFпзШїїєјјј§§§ўўўћўџџўќяїџЮцќЬх§Яц§ЮцќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЭшќЫцћЮчўЭцўо№§њ§џџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџўўџўўќў§ќ§ћ§§єііщmmh %$ IN -npЎЎвг$ююHђѓJјјOѕіKњќSќјWјљSѓВOѓD@с3Aд46м54Ь*-’KEбЛИћєјјћћњљљќљѓцгжeHSG”UNлбЛїјїњќљў§§њўўњќќкыќЬцќЮц§ацќЯхњЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЬчќЬчќЯхћЮцќЮцњэї§ўџўџџџџџџџџџџўўџџўџџ§џў§џџџўџџўџџџџџџўџџџўџџ§џџўџџўџў§џџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўўўўџџџўџўўџ§ћ§њњћћћќљђішЬЭШ558 89bd~€ЊЊ мл2ђёIљјPћњRљјPќћSњњPѕњQрФ?Ч["Ћ– ‹ rSWщйлћњјћњі§ќјјј№њћѓњњќыхюz€UЄcWъыољієїњњљў§ѓј§Яш§ЮхјЭцќЭцќЭцќЮч§Юч§Юч§Юч§Юч§Юч§ЭцќЭцќЭцќЮч§Юч§Юч§Юч§Юч§Юч§Юх§Юц§оюћќџўџџџџџџџџџўўќџўќџўќџў§јћўэѕќщёјъ№ї№іќїћўќў§ўџўџџўў§ћџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўўџўўџў§ў§ћќњќ§ћ§џќќўњћ§іћ§іљњњжии -52 rn~~Š‹ЛЛъщ@ѕєLњљQќћSњљQљјPєѓIтф4ЇЈ”…Љ@z&˜ktсак§јџќќћ§ўњџџћўўћџўќќќќќќќњќќ№јіУ dЅueхшоєќјќ§§уыњЭхўЭхћЭцќЭцќЭцќЮч§Юч§Юч§Юч§Юч§Юч§ЬхћЭцќЭцќЮч§Юч§Юч§Юч§Юч§Юч§Юц§Юц§дцїіќўџџџџџџџџџџўў§џџіќўхёќищјахїЯш§ЬшўЫч§Ючњпяћёљ§§џџўўўџџџўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§§§ўќќўћћ§њћ§њњћљњќљњ§їћ§їјњјјњљь№э -Q]Œ‹†ƒš› -ЪЫ$єєKјїOћњRћњRћњRљјPфу;ЉІ -ЁЂ‘™…S#бЈВэя№ѕњіјќћѕћіќўћџџ§§§ћ§§ў§ќџўўќ§§њјёїѓєѓЕ’—jЛ›ˆїї№њњћдтїЯхџЬхќЭцќЭцќЭцќЮч§Юч§Юч§Юч§Юч§Юч§ЭцќЭцќЭцќЮч§Юч§Юч§Юч§Юч§Юч§ЮцћЮчќЯфїэі§џџџџџџўўўџўўљўџт№ќацњЪхћЪц§ЬшўЬч§Ьч§Ыч§Ьхћишіђљўќџџўџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќќљ§јј§їј§їњ§љјњїњќљњћјќ§ќћќ§іњђxx *Mgoœ™ ФФ чщ?ћћSћњRћњRќћSћњRѓђJзе/ЇЄŒŠŠ‚ДЎ”ќјњѓјїќќѓњћєћўћќў§ўџџўџџўџџўўў§§§§џќјќћіљјќѕљК™}Ч ”ёёъШоєацќЫфњЭцќЭцќЭцќЮч§Юч§Юч§Юч§Юч§Юч§ЯшўЮч§ЭцќЮч§Юч§Юч§Юч§Юч§Юч§ЮцљЭчњЭхќпэќ§§§џџџџџџў§ўчёћЮхњЭшўЭшўЭч§ЯцњахљахљЮцћЯшџбцћкъљіќў§џџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўћћћіњііћѕїќіњ§љїљіљћјіїіќ§ўћќћофж' =azГБии-ѕїLњћSќћSћњRњљQћњRяюFОНžž ™Є›6цумєќѕўњџњћќќ§ў§ў§§ўў§џўўџџ§ў§ўўќџџџњќ§ќќљљјљљјћїєєЇ†(ШЏЄЦріЮфіЬцћЭцќЭцќЭцќЮч§Юч§Юч§Юч§Юч§Юч§бъџЯшўЭцќЮч§Юч§Юч§Юч§Юч§Юч§ЯчњЫцјЭчўйщћќќќџџџџџџњњќнщіЫчўЫц§ЭхњахїЯхњЭцќЮц§ЮцќЯхќЯц§вцњьѕњ§џџџўќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўњўћўќўѕљяЂТ•VoK1 -8?a3œЙецЫђ§ьє§№†Ž… .J{СЭ&я№KўїVљќSљћRњќSњњTііLнп9““‘—“ОК‘њћіјљєќ§јўў§ўўўўўўџџџџџџџџџџџџџџџџџџџџџ§§§§§§§§§јјїњјќptt44ЙгЪЩфяЭфєЩчњЮш§ЯцћЮч§Юч§Юч§Ьц§вцѕєљћўў§сюјЮцќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ашќєњќўўћќўўђљ§бх§ЯцќЫх§ЯцўахћЪхћЭц§ЮцњЫчќЮч§Юч§Эч§зъќќўўџ§ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўњќјћќјСаЖ&P  CM:~ˆuтьж#)+qУ%чђOїўTњќSјњQјњQјјQђђGУХœœ œœЃ 7ээеќ§јќ§јўџњўў§ўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ћћіїњ№туsAD”opПзнаућдтћЮуљЯш§Юч§Юч§Юч§Эч§иъљњ§ўўўўьі§ЯчћЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Ячќёљќўўћ§ўўэі§ахўацћЬх§ЯцўахћвчљйыљбхјЮчўЮч§Юч§Юч§дшњњ§џџў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўў§ћјњљHYP 8  +XŒ ЃЅз4љћQ§ќTњќSљћRєєMзз-ДЖƒ‚Ђ ТСѕњі§§ћџџ§џџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ўљ§ќёѓђФШеh>EЎБЌХнэЪрѕашњЬцќЮч§Юч§Юч§Юч§мюњќў§џўџіќџЮцљЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ъѕќўўќўџўхёћЮхўацњЭц§Яц§ахћчєћѕќўйчљЯцўЮч§Юч§Юч§ахјїћўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўў§§§§§њљј§7=QO‚›•ZКэѓR§§XљћRјњQѓѓMЪЪ ЏБ —–ЃЂопОјћљќќќўўўўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§јќљ№љњЫрјš‘žj4:МвЭЦцёШцњЮч§Юч§Юч§Юч§Яцћпяњќ§ћўўўљћўЮфїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§цѓ§§ўќўџ§рюћЮцџбцљЮцўЯх§бцћ№љќўџўнъњЮцўЮч§Юч§Эч§Яхљѕњўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§ќќќќќќћќњљѕїїєћЖХЮ’›, - Gw˜ЂЅ%Г ”н9юіSњќSіјOфх>ТТЂЄ’’ЂЃOћћїћњіќќќўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџњўќљќіѓїќбцїЯољ„o{oNGЧвкЫъќЮцљЮч§Юч§ЮчќЮфјфђќўўќќ§ўћћќЯхјЬч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Ьч§тђ§§ў§ўў§няќЭцўбцјЮц§Юх§бцћђљўўўўоюќЬшўЮч§Юч§Эч§Яцњѕњўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџќ§ўљќіў§ћѕњљђ§ыђ§ючяђБЗХcg~) 3l‰™ЅЇЇ.ЏІл;їќQѕіMйм/ЖЗЁЂ›žЧЪЄћќћў§њўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќ§ќћћњѓјћЫрёЭуњОарaAIœš–ЭнјЮцјЪціЩщћЮч§Эхќшђћўџ§ўўўћў§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§с№ќўў§ўў§ою§ЬчќашљЬцќЮцќЯчќ№љџў§ќнэњЧшўЫцўЫцўЬчўЭхњѓњџџўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќ§ўќњ§њїї№рхь™žЗCCj6$/ -8^˜ ЈЈІ™^ПщѓNюцJ­ЖŸЂ˜‘­Ђ^ъьтљјћўўќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўќ§§ќђљћЯхљЭујЭріГЕЪZ5:НЬЩЭрїбтјЯфњЭц§Ьцўщђњўџ§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юц§ряћџў§ўўўоэќЫцќЮчњЬц§ЭцќЮч§ъіџ§ќћуэїЮчњвцљвцљвцљбхіѓњўџўќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћћћћќњїћѓухфVZs%  9y—ЂІЊЇЋЁ*Ў Із3ги<БЕЂІ˜7шнињњњќћўўўњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўќ§ў§ѓњќЯцљЭфјЬріЩмє‰uƒ†rdЧмьЪрїдрќЯхћЬцўщђњўџ§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ряћџў§ўўўпэћЭц§ЮцљЭч§ЭцќЮч§п№§ћўџёєљчђћчѓћчѓћчѓћхєћјўўўўљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџќќќјљїёєѓOQr! /:   $TœЃІЊЈЈІЃ+ЄvЉСИ Ќ˜7ьрзіћќњљ§ћћўўўћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўќ§ў§ѓњќЯшњЬхљЮфјЪхєФрѕb9?ЅЈЄПчяЯрћЭфјЬцўщђњўџ§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§пюћџў§§ўўфёћЭцћЯхњЭч§ЭцќЭцќацљшѕўћўџ§ўџ§ўџ§ўџ§ўџћџџўџўўўњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќћњјвгм@%+ $3:'@mŒ—ЁЄЈЈЇІ ‚(lŸŸрЭИѕіѓјћњќќј§§ќџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўќ§ў§ѓњќЭцјЭчћЩрєЩхѓЩтіЁ ЎpQOСйкЯфќЪфјЬцўщђњўџ§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§пюћџ§§§ўўшѕќЮцњахњЭч§ЭцќЭцќЫфљгцљэїўќ§џџўўџўўџўўџўўўўўўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ћќќќљњШЧоL!  - -+Petˆ ЄЈІŸ•d NЇАˆћћіј§їќјјќќіўўњџў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўќ§ў§ђљќЬцљЬцњЯшћафћахєШпѓuR[œ‹‰ЫсєЫцќЬц§шђњўў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§нюћўў§§ўўюљўЮцњахћЭч§Эц§Яч§Яч§Ячќгціыє§њ§џџўџџў§ўўўў§џўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џќџњїњќ§іїфф№R =W -r Zy–›ЂЅЃŠ I–gэьыњњњћћћџџџўўў§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яїўЭхћЬхћЬхћЭфћЮфћЩпѕЊЉЙuONОйоЮфњЬцќшёњўўўџўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§ляќўџ§ўўўіќџгшћЮфћЭцўЬх§Ях§ЮцќЮч§Юч§гшћчђ§љ§џўў§§џџ§ўџџ§ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§џ§ў§јћќќќђёѕђuwЖ -(  -0``c%dЃ— i m‹h№јхўћќ§§§ўўўџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яїўЭхћЬхћЬхћЭфћЯхќЪрѕЮфїzcjžššЩрєЬцќч№љўўўџўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§люќўџ§ўўўўўќцєўЭхћЭхќЭхќЭхћЮц§Юч§Юч§Яч§бфјоьљі§џџ§ћџў§џўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўњњћљќљї§ѕѓј§pmЏ#!?C!* ZD$Fd}Š~u -`M€Eчьфљњјќљњ§§§џџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яїўЭцќЭцќЭцќЮхќацћЭуїЧсјЋВНtUXЫсюШтїц№їўџ§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§кэќўџ§ўўўџўљѕќџкэўафљацќЮц§Эц§Юч§Юч§ЭцўЮч§Яхїтђ§ў§ќџќљ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ќ§њќіЬефLQj;<V[4:U0U' <C F -$\!i„^чёрќіњќ§ќ§ќњ§§§ўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яїўЭцќЭцќЭцќЯч§ЮфјЬуєЮуѕТтѓ}eqЈЌДЪфїч№іќ§ћџўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§кэћ§џ§ўўў§ўћџџќёљўишјЯујЮцўЭчўЮч§Юч§ЮчўЬцўЬчќЯчњьіўџ§ќќўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџќњќњќѕ]f8 -Hb@(>)ResF3  lorЧбЪьыюѕјњ§ћњљўљўќљџџџџџџџџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яїўЭцќЭцќЭцќЮхњбчњЬуєЭу№ФрљЈЌЛ{irШтѕшёї§§ћџўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§йьћ§ў§ўўўћџўџўјќўўьјўдцљЭцўЬцўЮч§Юч§ЭхќЮчўЬцќЫчќжыќ§§§§ўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћ§љЮдз R71c0  *5Z„€qrvљњіћќјћћћ§§§§§§§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яї§Юч§Юч§Юч§Юч§ЬхћЫфњЮфљЧсљЯсіmW^КУЫр№њќ§јў§§ћџ§ахіЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§иыњўџ§џџў§џџџўћџ§њўўљёћўды§Ьч§Ых§Эх§Эц§Юч§Юч§Яц§Юцћёљћџў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ќ§њ‡Œ“B/*  H]f– ЊrЯагћќјќќљ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яї§Юч§Юч§Юч§Юч§ЭцќЬхћЭфћЫхќЫрєЉЁА‘•ряєќћњў§§ћџ§ахіЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§иыњўџ§џџўџџџўўќџўќџўѕўџњђїћкщјахћЯц§ЭхќЮч§Юч§ЯцќЮцќюіњџ§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўћћћљllxA "7Tf~Œ Oegfіјљљњї§ўњџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яї§Юч§Юч§Юч§Юч§Юч§ЭцќЭц§ЭфњЭфїПвщq^eсщщњјњ§ќ§ћў§ахіЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§иыњўџ§џџў§§§њџџќџџћџўњ§ќќџўєћўнъјбцљЭчќЮч§Юч§ЮчќЬцќч№јўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўћљљј}„ I; (.L‚‚‰R  ЭЯЭјљљќ§љўўћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яї§Юч§Юч§Юч§Юч§ЭцќЭцќЫуќбш§ЦрёЧчћ‡tƒСЛКћљќќћќњў§ахіЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§иыњўџ§џџўёѕјпюјсэімэћп№§нюљђљ§ѓњўешјЮч§Юч§Юч§ЮчћЬчќуьњўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћ§ћћњљіѓ№ББЮ8??вваѓѓђ №№ёЭЭЯ@@?АЏБ‡†ЅUЅЉТњћѕќњёћћћќ§їўў§ўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яї§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЭчўщђњ§ў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§иыњўџ§џџўџџџџџџџџџџџџџџџџџџџў§џўќџўќџџ§џџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ўџњћќїїљѓђіяnpm !ЧШШіљђMPJ^]aѕєяљљїюю№љљњ№№ђЂЁЅђђэПСЩbвеућћ§ўќ§џџ§џџќўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яї§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЭчўщђњ§ў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§иыњўџ§џџўџџџџџџџџџўўўџџџўўўўќўџќџџќџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§ўјњћѕіјёжмг*+*gciїљјЧЪР?A?ЉЇЎћћѓ§ћљћњ§ўўўћћ§њјљїєїіїѕ~}›јїѓ§ќ§ќ§ћ§§њ§§§ўўќџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўў§яї§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЭчўщђњ§ў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§иыњўџ§џџўџџџџџџџџџўўўџџџџџџџџўўџ§ўџ§џџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџ§ўџњћњїњјљѓ§ёq~s.17ТОРїїѕ…‹VX[ввбњњє§ќњќќќ§§ќћћњјјѕјїіћќќээєќќїўўќўџќўџ§џџџўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§ўќяі§ЮцќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЭчўщђњ§ў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§йьћ§ў§ўўўџџџџџџџџџџџџџџџџџџџџўўџ§ўџ§џџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§ўњ§ўњ§ћќћћїФаОANMvy‚ћњіэ№цGQFpqvѕіёќ§ј§§ћўўќўўќќќњћћљ§§ћўўўўўџ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўџ§ўќ№і§ЮцќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЭчўщђњ§ў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§йэћ§џ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўћќјќќњљњњіћюnzj:BMклтњњѓЮеП0:2ИИОћћјўўћўў§ўў§ўўќўўќџџ§џџ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§џ§ўќ№ї§ЯцќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЭчўщђњ§ў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§кэћ§џ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўћћї§ўћј§ѕХбУ8B;Œіїљљњё†•x>HKііјћћј§§ќџџџџџ§џџ§џџ§џџ§ўўќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§џ§џ§ёј§ЯцќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЭчўщђњ§ў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§люќўџ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўћќјќ§єѓќыetmJO]орфњќљїљяQaLfpљљјќћљ§§§џџџџџўџџ§џџ§ўўќўўќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§џ§џ§ёј§Яч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцќЭчўщђњ§ў§џўџћџ§ахїЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§люќўџ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ќ§§љћ§ѓДРА7HH—›Џєє№љћѓЯйЪ ..НСбљјјўўњўў§џџџџўўџџўџџ§џџ§џџўџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§ў§ђљ§ЯчќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮчќЭчўшёњ§ў§џўџћџўбхјЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§мюћўў§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§ўќўћќ§њјћџљs‚€ix|ыэяћќ№јњєД˜FMhяч№ќњњћ§љўўћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џ§ќў§ѓљќЯцћЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Яч§Эцўшёњ§ў§џўџќџџбцљЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§оюјў§§ўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§ў§§љ§љљѕЎЛЉ\mlИПЧ§ќќћќїыѓчe{c–œЌ§њєўўњ§ўњўџћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џ§§ў§єњќЯчќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Яч§Эцўшёњ§ў§џўџћџџахјЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§пяњў§§ўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќўќћћќѓљ№‚•‚u„„ъыёќјљљ§љЬиЩIZNлнуњљя§ўјўџћџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џ§ќў§ѕњ§ачќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Яч§Эцўшёњ§ў§џўџњўџахјЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юц§с№ћўў§ўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўћ§њљќђЙХЙZmiОЦЧњјїћћ§єќѓ†˜…u~ˆњњїќ§ј§ўњџџћџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џ§ќў§ѕћўбш§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Яч§Эцўшёњ§ў§џўџњўџахјЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юц§уёќџў§§ў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўћ§љђјх|Œ}{Œ•ѓієќћђіњ§яљыcxdЊЏНў§ѕљњ§ќўћџџњџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џ§ќў§іћўбш§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Яч§Эцўшёњ§ў§џўџљ§џахјЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юц§уђќџў§§ў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџўў§§§§§њјћєІЖnzƒжен§њћќќљќћюФЭПk{wлусљљљ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџў§ќјќўјќўњќўўўќјџўў§ўўўўўўњќўќќџџџўџњћќі§џї§џў§ўјў§ј§џ§ћњњ§ўѕќўќўќџ§ћўўџ§ўџџўўўўў§ўџќ§ќљќ§іћ§џ§јџџџџџџџџџџџџўўўќќќдъћЭцџЯцћЮцљЮч§Юч§Юч§Юч§Юч§Яч§афќс№§ћџ§њў§ёћџвцїЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Яц§шєџ§џњџўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўјњњќљњљъѓрzˆƒŽ•јїїћћњќќљіљы‚‘‚ƒŒїјљћћћўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўќъєќньљьёћџўќ§џќџ§ќџў§џџћўџћўџ§ўўџђіћоэјуяїђїњзьјо№§єћўрыїрыіќ§§џў§ў§ўџўџџџ§ўўћўџ§іњќлэњмю§ћџўџџџџџџџџџџџџџџџўўўжыњЮцџЮцћЮчњЮч§Юч§Юч§Юч§Юч§Юч§Ях§т№ћўўњўўњёљўацњЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Яцќыі§ўџћџўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§ќћ§§ўѓљэ–Ї†rzŽюьёљњѓјћљћћјЫжХe|jИОНњєїўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўќр№ќЫчўуяќўџўќ§њџўљўў§ќџў§џ§џџ§§ўўыєўЮфќжщіяљќвчњиыќэіќбцўдхљќўџћўџџ§§ўў§ќџўќўќўџћёїњвчљешњћўўџџџџџџџџџџџџџџџџџџмэљацўЭцќЭчћЮч§Юч§Юч§Юч§Юч§Юч§Яшўлъї§ќњџ§љшёњЮчќЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ацњђљќўўќўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§њџњћїдоЪ\lW™œЉћїїћ§ѕќ§ќљќљ‰ ‹y}я№ё§јћўўўџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўќояќШх§о№ќѕљ§ђњ§§ўќљ§џьіўъѓќєњўќџџщѕџЬхўжщњєћўшѕўъіўіјљЬхўац§№љўцѓ§љћўњќџ№њџђќџѕћќѕњ§цѕўчѓќў§§џџџџџџџџџџџџџџџџџџтёћбцќЮч§ЭчћЮч§Юч§Юч§Юч§Юч§ЭцќЬчћгцјђїўјўўрюќЮчўЭч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§гшћїћќўўў§џ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўњїіђѕуkwhcj|юэщћљіњќњўњћш№ъo–{ЕЦЖўќўћњћ§§§ўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџў§§у№ћгщћпђ§оыєвшњѓќўт№їафїЭфњжшњѕћ§ыѕќЫхћжцљёіўбућищњ№їњЯчќЫчћдъїЭцљуэѕюіќвцљешћнщїх№ћбцќжцї§§§џџџџџџџџџўўўџџџўўўъѕћвхљЯчўЬчќЮч§Юч§Юч§Юч§Юч§ЮчќЬчљЬчџвцўахјЭуњЮчџЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§жыќќўўџўџќџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџ§ўџљћќјњћэЛЮБ[ikЋЊПќћі§§њњћљћљќЦдЯyœ„крзќћњћќќќќќ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўў§т№ћЯхњмяќеъњзыћєќџгщјЮхљмыњЭхњтёќыѕњЬцќзчћ№ї§ЮхўгшћэјћЯцњЬчњмыіЭч§йъјэі§ЮхћЮцћЮшћцёќЭх§бхјќўџџџџџџџџџџџџџџџџџџџѕљ§вхјЮшўЭцќЮч§Юч§Юч§Юч§Юч§ЮчќЭцћЭшўЭц§Юч§ЮчўЮчўЮч§Юч§Юч§Юч§Юч§Юч§ЯцћЫч§Ыч§тяњўџџџўџўџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§џќ§§ћўњх№кv‰x‚Š”ћљћ§§ћћћљџќ§ѓі№Ђ”Šјљє§§ћќќќ§§§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§иыћашќоюќђїўЮцњвщ§щѓќЬц§йьњыѕћЭч§жшќяїќЮц§дщћюјћЭфњЭчћыѕ§Ячўжъњюі§ЮцќЮцќЫчћшёћЮхќбхјќџџџџџџџџџџџџџџџџџџџџќўџиъљЮч§ЭцќЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ачћЫч§Эчќ№їќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§§ќќўњ§ўёњэšЏ“ltvЯЮињћјќќњћћљњљєвмЬKbZЕМХљњѕ§§ќўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§вчњЮцћцєўёі§ЮцњгъўьіўЬч§иъљыѕћЭч§жшќяїќЮц§дщћюјћЮцћЭчћяјџЮчўжъњюі§ЯчўЭцќдчљшёћЮхќбхјќџџџџџџџџџџџџџџџџџџџџўџџхёћЮхјЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЯчќЬцќгшњјќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќќќўєѕќьПЮЖ]sbЛМФќљћњќє§§љќ§јєљф†“Š[i{ѕѕѕќ§јџџ§ўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§ЯчћЯчќьїўёїќЮцћвщўъє§ЬцќйыњыѕќЭч§жшќяїќЮц§дщћюјћЯчќЬцћюїўЮц§жъњюі§Яцќачќѕ§џюіўЮхќбхјќџџџџџџџџџџџџџџџџџџџџџџџіћўдхіЯшўЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Яхљу№њ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§ћћћќўіэїсasgz„Œђѓєљњѕћ§їўџљњћѕуэлM]\šŸДќћђќ§ј§§ќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§Юч§Юч§ыѕ§№ѕћЮцћгъўыє§ЬцќйыњыѕќЭч§жшќяїќЮц§дщћюјћЮцћЭчћяјџЮчўжъњюі§ЯцќачћўўўюіўЮхќбхјќџџџџџџџџџџџџџџџџџџџџўўў§§ўсяћЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Эч§дщћђљ§ўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўў§§ў§ќњљїѕјђ˜І–]kxаауќќљќџјњ§њ§ќњіњюŠš“crzсушќћђќ§њўў§џџџџџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§ЯчќЬцќхёќ№іћЮчќгщќьѕќЭчќзъњъѕќЭч§жшќяїќЮц§дщћюјћЮчќЯчќяїўЯчўжщљэі§Яхћгщ§џўќяїўЮхќбхјќџџџџџџџџџџџџџџџџџџџџџџџџўўђњўвшћЮч§Юч§ЯчќЯцњЮцћЮч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§Юч§ЮцўЯцћЯцћЭчќЭцћс№§ћўџўў§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўќќ§§ќњўќћќћєжпЮr‚|ІЌКјјљўўўўўўћўќћіќуэиPgd—Їіњј§ўјќќќўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§жщњЬч§пяўёїћЪфќдшјьєќЭш§жъћъѕќЭч§жшќяїќЮц§дщћюјћЭцќбфћяї§Яц§жшљьї§Юхћвш§ўўќ№ї§ЮхќбхјќџџџџџџџџџџџџџџџџџџџџўўўўўўўўўтюљацњЮч§ЮхћахљацњЮчќЮч§Юч§Юч§Юч§Юч§Юч§ЫцћЬхќЮфџЯхћЭхјЮшќгчїєћўўџџџўќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§§ќќњїјѓіјљюір„’‰‘œЁѕѕѕ§ќ§ўўўќќќ§§ќћјѓžЌL^eмншќћљџўњўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§йьћЯшќиыќяіћЭхќдшљщі§ЭчќкыњъѕќЭч§жшќяїќЮц§дщћюјћЯчќафќэјўацўишљюї§Юхћвш§ўўќ№ї§Юхќбхјќџџџџџџџџџџџџџџџџџџџџџџџўўўџџџљ§џпьїЮфјЫшўЪчўЬцќЮфљЮч§Юч§Юч§Юч§Юч§Юч§Эч§ЬхќЯх§Ъц§Ьш§бхѕыїўћџџўџџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўў§§§ћќћљќќ№њѓЈК–[khХЩг§ћє§ќ§ўўўќќќњјіїќэYka‰•ћљ§§ќјџ§ћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§мяќдшћвшћяї§бцћвчћсєўЮцћтюњыѕќЭч§жшќяїќЮц§дщћюјћЯцћах§хєўЯцўишїэіћЯцћвш§ўўќ№ї§ЮхќбхјќџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўѕњўйъњЬцћЫшџЮчўЯхњЮч§Юч§Юч§Юч§Юч§Юч§Эц§Яч§бчќЭчќЬхјхёњњўџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќќљњћѕќљЭоЧBYN‹”šљјјњљї§§§ўўў§§§љћїАСЎGVVддкћћљњћєўўќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§рё§йъљЮчќ№љ§жчњЯхњЯцљацњьѕќыѕћЭч§жшќяїќЮц§дщћюјћЮхјЮфќешѕЯцќоэћяіћацћвш§ўўќ№ї§Юхќбхјќџџџџџџџџџџџџџџџџџџџџўўўўўўўўўџўў§ўўѕћўпэљгчјЭхљЬц§Юч§Юч§Юч§Юч§Юч§Юч§ацџац§бхїечѕшѕ§ќџўџў§џџўўўџќ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќќљњљэіш~”rJ^zавм§њ№љћ§ћ§§ўўўўўўёїђc}i€’їђђњћєљќєћў§џџџџџџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџўџ§с№ќЮц§пё§мыјЭш§ьіћуђџацћЭчћиэ§іќџыѕќЭч§жшќяїќЮц§дщћюјћбцњЯхўл№ќЮхќцѓџёїћацњвш§ўўќ№ї§ЮхќбхјќџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџўџўўџўџџјќўшѓќдщћЫчўЮч§Юч§Юч§Юч§Юч§Юч§Яхўахќлюќэјќћўџџўћџўњџўќўўџ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўў§ўўќўўўћџ§§§§§љєѕљфŽ™…XbzІЄУћћљћћљўўќћўљ§іџћћѓЋПЈQ_hУХЬљјљћќїўўњџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўќќќ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџўўўѓіљс№§ньћньћлъњмыћоэќы№іјњ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§ќ§њќўѕћљџњњљКЩЊN_Zu€•ллыќќњќќњ§§ћћњјќјћэѕф]pcfrіјћќќћ§ўљўџњџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўўўџџџўўўќџќњ§ќћўќњќ§ћ§ўћўўћўџўџџўўџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўќ§ї§ќљљњђицж_xe]r~ЎЖХњњњџџ§ўўќњњјћјјљќєžБ”6FHЕМЩљћўў§ћџџ§џџ§џџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџљџўљџџњўўћўџћўџћќ§ў§§џў§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџ§ќўѕјїђђњчЉƒe}~~˜шъ№ќќї§§ћўўќќќњќћјц№рKaGWaoъюђћќќў§ќџџўџџўџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџџџџџџ§ўўћџўќџўќџўњўџњўџњўџўџџџџџџўўџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўџўўќјњяјћъЂЕ”FcDVgmЗККўљљ§ўњўўќ§§ћќќњєћё•Ќ‘2E7ЂЄЙћ§ѓћћљќќќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўџўўџўўџўџџ§џџ§џ§§ўўўџџў§џџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўњїјђыѕс8L0>QTYdqццсќљјћћћўўћќћ§ћћљкюХ@ZF7AEэьђњќѓўўћўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўџўўџўўџўџџўџџўџџџџџџџџџўџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§§ў§ќњћјЈБЁ$%>СЧвћќїљљїўўў§ќќћ§ќъђуVmK)-~€”ќњњќ§јџџќџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўўќџѕієV[T.UTqѓѓїљњѕ§§ћќќќ§њ§єћёГЧЇ/&4?OРСЮ§ќћ§ўњџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў§џў§§тут//9&">ЯЫкњљј§§љўўќ§§§ўћ§іћё -} - -macro print message -{ - dps message - newline -} - -macro pregs -{ - dps "EAX: " - dpd eax - dps " EBX: " - dpd ebx - newline - dps "ECX: " - dpd ecx - dps " EDX: " - dpd edx - newline -} - -macro debug_print_hex arg -{ - pushf - pushad - if ~arg eq eax - mov eax, arg - end if - call debug_outhex - popad - popf -} -dph fix debug_print_hex - -debug_outhex: - ; eax - number - mov edx, 8 - .new_char: - rol eax, 4 - movzx ecx, al - and cl, 0x0f - mov cl, [__hexdigits + ecx] - pushad - mcall 63, 1 - popad - dec edx - jnz .new_char -ret - -__hexdigits: - db '0123456789ABCDEF' \ No newline at end of file diff --git a/programs/develop/libGUI/src/draw.inc b/programs/develop/libGUI/src/draw.inc deleted file mode 100644 index 744c90a995..0000000000 --- a/programs/develop/libGUI/src/draw.inc +++ /dev/null @@ -1,595 +0,0 @@ - -DrawLine: - - mov eax,38 - mov ebx,[Line.x1] - mov ecx,[Line.y1] - mov edx,[Line.color] - shl ebx,16 - shl ecx,16 - add ebx,[Line.x2] - add ecx,[Line.y2] - mcall - - ret - -DrawPixel: - - xor eax,eax - inc al - mov ebx,[Pixel.x] - mov ecx,[Pixel.y] - mov edx,[Pixel.color] - mcall - - ret - -RectangleContour: - - mov eax,38 - mov ebx,[Rectangle.x] - mov ecx,[Rectangle.y] - mov edx,[Rectangle.color] - mov esi,ebx - mov edi,ecx - shl ebx,16 - shl ecx,16 - add ebx,esi - add ecx,edi - add ebx,[Rectangle.width] - mcall - - mov eax,38 - mov ebx,[Rectangle.x] - mov ecx,[Rectangle.y] - mov edx,[Rectangle.color] - add ecx,[Rectangle.height] - mov esi,ebx - mov edi,ecx - shl ebx,16 - shl ecx,16 - add ebx,esi - add ecx,edi - add ebx,[Rectangle.width] - mcall - - mov eax,38 - mov ebx,[Rectangle.x] - mov ecx,[Rectangle.y] - mov edx,[Rectangle.color] - mov esi,ebx - mov edi,ecx - shl ebx,16 - shl ecx,16 - add ebx,esi - add ecx,edi - add ecx,[Rectangle.height] - mcall - - mov eax,38 - mov ebx,[Rectangle.x] - mov ecx,[Rectangle.y] - mov edx,[Rectangle.color] - add ebx,[Rectangle.width] - mov esi,ebx - mov edi,ecx - shl ebx,16 - shl ecx,16 - add ebx,esi - add ecx,edi - add ecx,[Rectangle.height] - mcall - - ret - -;eax -first color -;ebx- second color -;OUT -;eax - averege color -calculate_average_color: - - and eax,0xffffff - and ebx,0xffffff - - mov [b_min],al - mov [b_max],bl - shr eax,8 - shr ebx,8 - mov [g_min],al - mov [g_max],bl - shr eax,8 - shr ebx,8 - mov [r_min],al - mov [r_max],bl - - xor eax,eax - xor ebx,ebx - mov al,[r_max] - mov bl,[r_min] - add eax,ebx - shr eax,1 - mov [r],al - - xor eax,eax - xor ebx,ebx - mov al,[g_max] - mov bl,[g_min] - add eax,ebx - shr eax,1 - mov [g],al - - xor eax,eax - xor ebx,ebx - mov al,[b_max] - mov bl,[b_min] - add eax,ebx - shr eax,1 - mov [b],al - - xor eax,eax - mov al,[r] - shl eax,8 - mov al,[g] - shl eax,8 - mov al,[b] - - ret - -;eax -color -;ebx- sub value -;OUT -;eax - sabved color -calculate_sabved_color: - - and eax,0xffffff - - mov [b],al - shr eax,8 - mov [g],al - shr eax,8 - mov [r],al - - sub [r],bl - sub [g],bl - sub [b],bl - - xor eax,eax - mov al,[r] - shl eax,8 - mov al,[g] - shl eax,8 - mov al,[b] - - ret - -DrawString: - - mov ebx,[Button.text] - call GetLengthString - mov esi,eax - - mov eax,4 - mov ebx,[Font.x] - shl ebx,16 - add ebx,[Font.y] - mov ecx,[Button.textcolor] - mov edx,[Button.text] - mcall - - ret - -;eax -first color -;ebx- second color -;ecx- x coordinat of rectangle -;edx- y coordinat of rectangle -;esi- rectangle size x -;edi- rectangle size y - -rectangle_gradient_right: - - mov [line_coordinat_x],ecx - mov [line_coordinat_y],edx - mov [line_size_x],esi - mov [line_size_y],edi - - mov ecx,esi - mov edx,dword pointer - call gradient - - mov ecx,[line_coordinat_y] - shl ecx,16 - add ecx,[line_coordinat_y] - add ecx,[line_size_y] - - mov eax,[line_size_x] - add [line_coordinat_x],eax - - mov esi,dword pointer - mov edi,[line_size_x] - - next_vertical_line_draw_right: - - mov eax,38 - mov ebx,[line_coordinat_x] - shl ebx,16 - add ebx,[line_coordinat_x] - mov edx,[esi] - and edx,0xffffff - mcall - - add esi,3 - sub [line_coordinat_x],1 - - dec edi - jnz next_vertical_line_draw_right - - ret - -;eax -first color -;ebx- second color -;ecx- x coordinat of rectangle -;edx- y coordinat of rectangle -;esi- rectangle size x -;edi- rectangle size y - -rectangle_gradient_left: - - mov [line_coordinat_x],ecx - mov [line_coordinat_y],edx - mov [line_size_x],esi - mov [line_size_y],edi - - mov ecx,esi - mov edx,dword pointer - call gradient - - mov ecx,[line_coordinat_y] - shl ecx,16 - add ecx,[line_coordinat_y] - add ecx,[line_size_y] - - mov esi,dword pointer - mov edi,[line_size_x] - - next_vertical_line_draw_left: - - mov eax,38 - mov ebx,[line_coordinat_x] - shl ebx,16 - add ebx,[line_coordinat_x] - mov edx,[esi] - and edx,0xffffff - mcall - - add esi,3 - add [line_coordinat_x],1 - - dec edi - jnz next_vertical_line_draw_left - - ret - -;eax -first color -;ebx- second color -;ecx- x coordinat of rectangle -;edx- y coordinat of rectangle -;esi- rectangle size x -;edi- rectangle size y - -rectangle_gradient_up: - - mov [line_coordinat_x],ecx - mov [line_coordinat_y],edx - mov [line_size_x],esi - mov [line_size_y],edi - - mov ecx,edi - mov edx,dword pointer - call gradient - - mov ebx,[line_coordinat_x] - shl ebx,16 - add ebx,[line_coordinat_x] - add ebx,[line_size_x] - - mov eax,[line_size_y] - add [line_coordinat_y],eax - - mov esi,dword pointer - mov edi,[line_size_y] - - next_horizontal_line_draw_up: - - mov eax,38 - mov ecx,[line_coordinat_y] - shl ecx,16 - add ecx,[line_coordinat_y] - mov edx,[esi] - and edx,0xffffff - mcall - - add esi,3 - sub [line_coordinat_y],1 - - dec edi - jnz next_horizontal_line_draw_up - - ret - -;eax -first color -;ebx- second color -;ecx- x coordinat of rectangle -;edx- y coordinat of rectangle -;esi- rectangle size x -;edi- rectangle size y - -rectangle_gradient_down: - - mov [line_coordinat_x],ecx - mov [line_coordinat_y],edx - mov [line_size_x],esi - mov [line_size_y],edi - - mov ecx,edi - mov edx,dword pointer - call gradient - - mov ebx,[line_coordinat_x] - shl ebx,16 - add ebx,[line_coordinat_x] - add ebx,[line_size_x] - - mov esi,dword pointer - mov edi,[line_size_y] - - next_horizontal_line_draw_down: - - mov eax,38 - mov ecx,[line_coordinat_y] - shl ecx,16 - add ecx,[line_coordinat_y] - mov edx,[esi] - and edx,0xffffff - mcall - - add esi,3 - add [line_coordinat_y],1 - - dec edi - jnz next_horizontal_line_draw_down - - ret - -;eax -first color -;ebx- second color -;ecx- length of line -;edx- pointer to memory for colors of gradient - -gradient: - - mov [length],ecx - - and eax,0xffffff - and eax,0xffffff - - mov [b_min],al - mov [b_max],bl - shr eax,8 - shr ebx,8 - mov [g_min],al - mov [g_max],bl - shr eax,8 - shr ebx,8 - mov [r_min],al - mov [r_max],bl - - mov eax,[length] - dec eax - mov [v],eax - fild [v] - - xor eax,eax - mov al,[r_max] - sub al,[r_min] - mov [v],eax - fild [v] - fdiv st0,st1 - fstp [step_r] - - xor eax,eax - mov al,[g_max] - sub al,[g_min] - mov [v],eax - fild [v] - fdiv st0,st1 - fstp [step_g] - - xor eax,eax - mov al,[b_max] - sub al,[b_min] - mov [v],eax - fild [v] - fdiv st0,st1 - fstp [step_b] - - fstp [v] - - xor eax,eax - mov al,[r_min] - mov [r],al - mov [v],eax - fild [v] - fstp [r_f] - - xor eax,eax - mov al,[g_min] - mov [g],al - mov [v],eax - fild [v] - fstp [g_f] - - xor eax,eax - mov al,[b_min] - mov [b],al - mov [v],eax - fild [v] - fstp [b_f] - - next_gradient_color_save: - - xor ebx,ebx - xor eax,eax - mov al,[r] - mov bl,al - shl eax,8 - mov al,[g] - shl eax,8 - mov al,[b] - - mov [edx],ax - mov [edx+2],bl - - fld [step_r] - fld [r_f] - fadd st0,st1 - fst [r_f] - fistp [v] - xor eax,eax - mov eax,[v] - mov [r],al - fstp [v] - - fld [step_g] - fld [g_f] - fadd st0,st1 - fst [g_f] - fistp [v] - xor eax,eax - mov eax,[v] - mov [g],al - fstp [v] - - fld [step_b] - fld [b_f] - fadd st0,st1 - fst [b_f] - fistp [v] - xor eax,eax - mov eax,[v] - mov [b],al - fstp [v] - - add edx,3 - - dec ecx - jnz next_gradient_color_save - - ret - -;IN -;NON -;OUT -;variable [skin_height] - -get_skin_height: - - pushad - - mov eax,48 - mov ebx,4 - int 0x40 - - mov [skin_height],eax - popad - - ret -;eax - x -;ebx - y -;ecx - size x -;edx - size y -;esi - pointer to memory for rectangle -SaveFonForRectangle: - - mov [Rectangle.x],eax - mov [Rectangle.y],ebx - mov [Rectangle.width],ecx - mov [Rectangle.height],edx - mov [PointerToMem],esi - - ;get bytes per string - mov eax,61 - mov ebx,2 - mcall - mov [BitsPerPixel],eax - - mov eax,61 - mov ebx,3 - mcall - mov [BytesPerString],eax - - - ;get window coordinats - mov eax,9 - mov ebx,dword IPC_table - or ecx,-1 - mcall - - mov eax,dword[IPC_table+34] - mov ebx,dword[IPC_table+38] - ;mov ecx,dword[IPC_table+42] - ;mov edx,dword[IPC_table+46] - ;mov [WindowCoordinatX],eax - ;mov [WindowCoordinatY],ebx - ;mov [WindowSizeX],ecx - ;mov [WindowSizeY],edx - - add eax,[Rectangle.x] - add ebx,[Rectangle.y] - - imul ebx,[BytesPerString] - mov esi,[Rectangle.width] - - cmp [BitsPerPixel],24 - jne no_24 - - lea eax,[eax+eax*2] - lea esi,[esi+esi*2] - mov edi,3 - jmp exit_bits_per_pixel - no_24: - - shl eax,2 - shl esi,2 - mov edi,4 - exit_bits_per_pixel: - - add eax,ebx - - mov ebx,[BytesPerString] - sub ebx,esi - mov [offset],ebx - - mov esi,[PointerToMem] - mov edx,[Rectangle.height] - next_string_pixels_save: - - mov ecx,[Rectangle.width] - next_pixel_save: - - mov ebx,[gs:eax] - and ebx,0xffffff - mov [esi],bx - shr ebx,16 - mov [esi+2],bl - - add esi,3 - add eax,edi - dec ecx - jnz next_pixel_save - - add eax,[offset] - dec edx - jnz next_string_pixels_save - - exit_: - ret diff --git a/programs/develop/libGUI/src/edit_box.inc b/programs/develop/libGUI/src/edit_box.inc deleted file mode 100644 index 6736effbd5..0000000000 --- a/programs/develop/libGUI/src/edit_box.inc +++ /dev/null @@ -1,267 +0,0 @@ - -eb_control_data_size = 82 - -;**************************************************** -;******************craete EditBox********************* -;**************************************************** -;IN -;pointer to parend -;pointer to EditBox's structure -;OUT -;pointer to initialized control -align 4 - -craete_edit_box: - - push ebx - push ecx - push edx - push esi - push edi - push ebp - - mov ebx,[esp+24+4] - mov eax,[esp+24+8] - - mov [PointerToStructureForEditBox],eax - - mov eax,control_header_size+eb_control_data_size - call craete_control - - ;set all EditBox's parameters in control - mov [eax],dword edit_box - - mov ecx,eb_control_data_size - mov esi,[PointerToStructureForEditBox] - mov edi,eax - add edi,control_header_size - rep movsb - - call get_skin_height - - mov ebx,[PointerToStructureForEditBox] - mov ecx,[ebx+4] ;x - mov edx,[ebx+8] ;y - mov esi,[ebx] ;size x - mov edi,[ebx+70] ;size y - add ecx,border_width - add edx,[skin_height] - ;copy information to control - mov [eax+24],ecx - mov [eax+28],edx - mov [eax+32],esi - mov [eax+36],edi - - - pop ebp - pop edi - pop esi - pop edx - pop ecx - pop ebx - - ret 8 - -;**************************************************** -;******************Draw EditBox********************** -;**************************************************** -;include 'editbox_mac.inc' -;IN -;pointer to control of EditBox -;message -;OUT -;not returned value -align 4 - -include 'editbox_mac.inc' - -edit_box: - ;;;;;;;;;;;; - ;Structure from libGui  сЎцЈ цЈя струЊтур - ;;;;;;;;;;;; - - ;get message - mov eax,[esp+8] - - ;get pointer to control of button - mov esi,[esp+4] - mov [PointerForEditBox],esi - - ;copy control to local control - add esi,control_header_size - mov edi,dword EditBox - mov ecx,eb_control_data_size - rep movsb - - ;;;;;;;;;;;; - ;Structure from libGui  сЎцЈ цЈя струЊтур - ;;;;;;;;;;;; - srt_ed_libgui - - push eax - ;load coordinats and size from control - mov eax,[PointerForEditBox] - mov ebx,[eax+24] ;x - mov ecx,[eax+28] ;y - mov edx,[eax+32] ;size x - mov esi,[eax+36] ;size y - ;set current coordinats and sizes in EeditBox - mov [EditBox.ed_left],ebx - mov [EditBox.ed_top],ecx - mov [EditBox.ed_width],edx - mov [EditBox.ed_height],esi - pop eax - - ;events of redraw all EditBox - - cmp [eax],dword 1 - jne .no_redraw_all_edit_box - - - call .draw_border - .draw_bg_cursor_text: - - call .check_offset - - call .draw_bg - - call .draw_shift - .draw_cursor_text: - - test word[EditBox.ed_flags],ed_focus - je @f - call .draw_cursor - @@: - call .draw_text - - jmp .editbox_exit;exit_edit_box - .no_redraw_all_edit_box: - - - ;events of keys for EditBox - - cmp [eax],dword 2 - jne .no_keys_edit_box - - mov ebx,[eax+4] - shl ebx,8 - mov eax,ebx - - test word [EditBox.ed_flags],ed_focus - je .editbox_exit;exit_edit_box;@b - - call .check_shift - - ;---------------------------------------------------------- - ;--- ЏрЎЂЅряЅЌ, чтЎ ­ І тЎ -------------------------------- - ;---------------------------------------------------------- - - use_key_process backspase,delete,left,right,home,end,insert - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;‡ ЃЋушЊ  ­  ЎЁр ЁЎтЊу ЊЋ ЂЈш ЂЂЅрх Ј Ђ­ЈЇ т.Ѕ. ЏрЈ - ;ЎЁ­ руІЅ­ЈЈ этЈх ЊЎЄЎЂ ЏрЎЈсхЎЄЈт ЂыхЎЄ ЈЇ ЎЁр ЁЎтчЈЊ  - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - srt_ed_libgui - use_key_no_process up,down,esc - - ;--- ­ І т  ЄруЃ я ЊЋ ЂЈш  --- - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;рЎЂЅрЊ  уст ­ЎЂЋЅ­ ЋЈ фЋ Ѓ ЏрЈ ЊЎтЎрЎЌ ­уІ­Ў ЂыЂЎЄЈть - ;тЎЋьЊЎ цЈфры Ђ ­уІ­ЎЌ ЁЎЊсЅ ЅсЋЈ т ЊЎЉ ­ЅЎЁхЎЄЈЌЎстЈ ­Ѕт - ;­уІ­Ў Ї ЊЎЌЅ­тЈрЎЂ ть Ќ ЊрЎс - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - use_key_figures_only - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;ЏрЎЂЅрЊ  ­  shift ЁыЋ ЋЈ ­ І т - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - are_key_shift_press - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ; ЏрЎЂЅряЅЌ, ­ хЎЄЈтся ЋЈ ЊурсЎр Ђ ЊЎ­цЅ + Є Ћь­ЅЉш я ЎЁр ЁЎтЊ  - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - are_key_cur_end - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;ŽЁр ЁЎтЊ  ЊЋ ЂЈш insert,delete.backspase,home,end,left,right - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - use_work_key - - - .no_keys_edit_box: - - cmp [eax],dword 3 - je exit_edit_box - - ;events of mouse for EditBox - - cmp [eax],dword 6 - jne .editbox_exit - - mov esi,[eax+4] - mov edi,[eax+8] - mov ecx,[eax+12] - mov [EditBox.mouseX],esi - mov [EditBox.mouseY],edi - mov [ButtonsOfMouse],ecx - - mov eax,ecx - - test eax,1 - jnz .mouse_left_button - and word [EditBox.ed_flags],ed_mouse_on_off - jmp .editbox_exit - - .mouse_left_button: - - mov eax,[EditBox.mouseX] - shl eax,16 - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;”у­ЊцЈя ЎЁр ЁЎтЊЈ ЌышЊЈ ЏЎЋучЅ­ЈЅ ЊЎЎрЄЈ­ т Ј ЏрЎЂЅрЊ  Јх + ЂыЄЅЋЅ­Јя - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - use_work_mouse ;scr_h,scr_w - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;ŽЁщЈЅ фу­ЊцЈЈ ЎЁр ЁЎтЊЈ - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - use_general_func - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;”у­ЊцЈЈ ЄЋя р ЁЎты с key - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - use_key_func - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;”у­ЊцЈЈ ЄЋя р ЁЎты с mouse - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - use_mouse_func ;scr_w - - ;;;;;;;;;;;;;;;;;;;;;;;;;; - ;ŽЁщЈЉ ЂыхЎЄ ЈЇ editbox ЄЋя ЂсЅх фу­ЊцЈЉ Ј ЏЎст ЎЁр ЁЎтчЈЊЎЂ - ;;;;;;;;;;;;;;;;;;;;;;;;;; - - .editbox_exit: - - exit_edit_box: - - ;save resulatat of work in control - mov esi,dword EditBox - mov edi,[PointerForEditBox] - add edi,control_header_size - mov ecx,eb_control_data_size - rep movsb - - ret 8 - diff --git a/programs/develop/libGUI/src/editbox_mac.inc b/programs/develop/libGUI/src/editbox_mac.inc deleted file mode 100644 index 201dbb19bc..0000000000 --- a/programs/develop/libGUI/src/editbox_mac.inc +++ /dev/null @@ -1,1143 +0,0 @@ -;Œ ЊрЎс ЄЋя ЂыЂЎЄ  Ўс­ЎЂ­ых фу­ЊцЈЉ ЊЎтЎрыЅ ЈсЏЋьЇуются ЁЎЊсЎЌ -macro use_general_func -{ -;debug_func -;---------------------------------------------------------- -;--- ЏрЎцЅЄур  ЏрЎрЈсЎЂЊЈ ЂыЄЅЋЅ­ЎЉ ч стЈ ----------------- -;---------------------------------------------------------- -.draw_shift: - test word [EditBox.ed_flags],ed_shift_bac ;уст ­ЎЂЊ  фЋ Ѓ , ЂыЄЅЋЅ­­ЎЉ ЎЁЋ стЈ - jz @f - mov ebp,[EditBox.shift_color] - mov ebx,dword ed_shift_pos - call .sh_cl_ -@@: ret -;---------------------------------------------------------- -;--- ЏрЎцЅЄур  ЏрЎрЈсЎЂЊЈ тЅЊст  -------------------------- -;---------------------------------------------------------- -.draw_text: -;--- ЂычЈсЋяЅЌ, сЊЎЋьЊЎ ЏЎЌЅщ Ѕтся сЈЌЂЎЋЎЂ --- -;--- чтЎЁы ЌусЎр ­Ѕ рЈсЎЂ ть --- - call .get_n - mov esi,[EditBox.ed_size] - mov ebx,ed_offset - sub esi,ebx - cmp eax,esi - jae @F - mov esi,eax ;чтЎЁы ­Ѕ ЂыхЎЄЈть Ї  ЏрЅЄЅЋы эЊр ­  -;--- рЈсуЅЌ тЅЊст --- -@@: mov eax,4 - mov ebx,[EditBox.ed_left] - mov edx,ed_offset - add ebx,2 - shl ebx,16 - add ebx,[EditBox.ed_top] - mov ecx,[EditBox.ed_text_color] - add ebx,4 - add edx,[EditBox.ed_text] - mcall -ret -;---------------------------------------------------------- -;--- ЏрЎцЅЄур  ЏрЎрЈсЎЂЊЈ фЎ­  ---------------------------- -;ЂхЎЄ­ыЅ Є ­­ыЅ -;eax -;edx - color -;---------------------------------------------------------- -;ЂхЎЄ тЎЋьЊЎ цЂЅт edx -.draw_bg: - mov ebx,[EditBox.ed_left] - add ebx,1 - mov edx,[EditBox.ed_color] - shl ebx,16 - add ebx,[EditBox.ed_width] - sub ebx,1 -.draw_bg_eax: - mov ecx,[EditBox.ed_top] - mov eax,13 - add ecx,1 - shl ecx,16 - add ecx,ed_height - dec ecx - mcall -ret - -;---------------------------------------------------------- -;--- ЏрЎцЅЄур  ЏЎЋучЅ­Јя ЊЎЋЈчЅстЂ  сЈЌЂЎЋЎЂ Ђ тЅЊущЅЉ щЈрЈ­Ѕ ЊЎЌЏЎ­Ѕ­т  -;---------------------------------------------------------- -.get_n: - mov eax,[EditBox.ed_width] ;ЏЎЋучЅЌ шЈрЈ­у ЊЎЌЏЎ­Ѕ­т  - xor edx,edx ;рЅЇуЋьт т р сЏЎЋЎЃ Ѕтся Ђ Џ рЅ edx:eax Ђ eax - Ўст тЎЊ - sub eax,4 ;ЂычтЈЌ 4 - mov ebx,6 ;Ї ЃруЇЌЈ ЄЅЋЈтЅЋь - div ebx ;р ЇЌЄЅЋЈЌ ­  6 -ret -;---------------------------------------------------------- -;--- ЏрЎцЅЄур  рЈсЎЂ ­Јя ЊурсЎр  -------------------------- -;---------------------------------------------------------- -;ЂхЎЄ­ыЅ ebp- цЂЅт -.clear_cursor: - mov edx,ebp - mov ebx,cl_curs_x - mov ecx,cl_curs_y - jmp .draw_curs -.draw_cursor: - mov edx,[EditBox.ed_text_color] - mov ebx,ed_pos - mov ecx,ed_offset - sub ebx,ecx - - lea ebx,[ebx*2+ebx] - shl ebx,1 - ;imul ebx,6 - add ebx,[EditBox.ed_left] - mov ecx,[EditBox.ed_top] - inc ebx - add ecx,2 - mov ebp,ebx - shl ebx,16 - mov bx,bp - mov ebp,ecx - - shl ecx,16 - mov cx,bp - add ecx,ed_height-4 - - mov cl_curs_x,ebx - mov cl_curs_y,ecx -.draw_curs: - mcall 38 -ret -;---------------------------------------------------------- -;--- ЏрЎцЅЄур  рЈсЎЂ ­Јя р ЌЊЈ ---------------------------- -;---------------------------------------------------------- -.draw_border: -;--- цЂЅт р ЌЊЈ --- - test word [EditBox.ed_flags],ed_focus - mov edx,[EditBox.ed_focus_border_color] - jne @f - mov edx,[EditBox.ed_blur_border_color] -@@: -;--- сЂЅрху --- - mov eax,38 - mov ebx,[EditBox.ed_left] - mov ecx,ebx - shl ebx,16 - mov bx,cx - add ebx,[EditBox.ed_width] - mov ecx,[EditBox.ed_top] - mov esi,ecx - shl ecx,16 - mov cx,si - mcall -;--- с­ЈЇу --- - mov esi,ecx - add ecx,ed_height - mov ebp,ecx - shl ecx,16 - mov cx,bp - mcall -;--- сЋЅЂ  --- - mov cx,si - mov ebp,ebx - sub ebx,[EditBox.ed_width] - mcall -;--- сЏр Ђ  --- - mov ebx,ebp - shl ebx,16 - mov bx,bp - mcall -ret -;---------------------------------------------------------- -;--- ЏрЎЂЅрЊ , Ї шЅЋ ЋЈ ЊурсЎр Ї  Ѓр ­Јцы Ј, ЅсЋЈ ­ ЄЎ, --- -;--- ЈЇЌЅ­яЅЌ сЌЅщЅ­ЈЅ ------------------------------------ -;--- ЅсЋЈ сЌЅщЅ­ЈЅ ЁыЋЎ уст ­ЎЂЊ  фЋ Ѓ  ed_offset_cl Ј­ чЅ -; ЅсЋЈ ­ЈчЅЃЎ ­Ѕ ЈЇЌЅ­ЈЋЎсь тЎ Ђыст ЂЋЅ­ЈЅ ed_offset_fl -; Ђ ЎЁщЅЉ ЁЈтЎЂЎЉ Ќ ррЈцЅ сЎстЎя­Јя ЊЎЌЏЎ­Ѕ­тЎЂ word [EditBox.ed_flags] -;---------------------------------------------------------- -.check_offset: -pusha - mov ecx,ed_pos - mov ebx,ed_offset - cmp ebx,ecx - ja .sub_8 - - push ebx - call .get_n ;ЏЎЋучЈЌ ЊЎЋ-ЂЎ сЈЌЂЎЋЎЂ Ђ Џ рЅ рЅЃЈстрЎЂ edx:eax - pop ebx - mov edx,ebx - add edx,eax ;ed_offset+width editbox - inc edx ;­ЅЎЁхЎЄЈЌЎ ЄЋя ­ЎЌ Ћь­ЎЃЎ ЏЎЋЎІЅ­Јя ЊурсЎр  Ђ Њр Љ­ЅЉ ЋЅЂЎЉ ЏЎЇЈцЈЈ - cmp edx,ecx - ja @f - - mov edx,[EditBox.ed_size] - cmp edx,ecx - je .add_end - - sub edx,ecx - cmp edx,8 - jbe .add_8 - add ebx,8 - jmp .chk_d - -.sub_8: cmp ecx,0 - je .sub_min - cmp ebx,8 - jbe .sub_min - sub ebx,8 ;ebx=ed_offset - jmp .chk_d -.sub_min: - xor ebx,ebx - jmp .chk_d - -.add_end:sub edx,eax - mov ebx,edx - jmp .chk_d -.add_8: add ebx,edx -.chk_d: mov ed_offset,ebx - call .draw_bg - and word [EditBox.ed_flags],ed_offset_cl -edit_ex -@@: - or word [EditBox.ed_flags],ed_offset_fl -edit_ex -} - -macro use_key_func -{ -;ŽЁр ЁЎтЊ  Shift ЄЋя с­ятЈя ЂыЄЅЋЅ­Јя ­ЅЈЇЂЅст­ЎЉ ЎЁЋ стЈ -.shift: ;;;;;;;SHIFT - test word [EditBox.ed_flags],ed_shift - je .f_exit - -@@: mov ebp,[EditBox.shift_color] - or word [EditBox.ed_flags],ed_shift_bac ;уст ­ЎЂЊ  фЋ Ѓ , ЂыЄЅЋЅ­­ЎЉ ЎЁЋ стЈ - mov ebx,dword ed_shift_pos - call .sh_cl_ - jmp .draw_cursor_text -;;;;;;;;;;;;;;;;;;;;; -.f_exit:call .check_offset - and word [EditBox.ed_flags],ed_shift_cl - call .enable_null - jmp .draw_cursor_text -.sh_cl_: -;;;;;;SHIFT end -;ЎЁр ЁЎтЊ  ЎчЈстЊЈ, ЏрЈ ЋЅЂЎЌ - Џр ЂЎЌ ЄЂЈІЅ­ЈЈ ЂыЄЅЋЅ­Јя -;ЄЋя ЎЁр ЁЎтЊЈ с­ятЈя ЂыЄЅЋЅ­Јя -;ЂхЎЄ­ыЅ Џ р ЌЅтры ebp=color ebx=ed_shift_pos - mov eax,dword ed_pos - cmp eax,ebx - - jae .sh_n - push eax ;ЌЅ­ьшЅЅ Ђ eax - push ebx ;ЁЎЋьшЅЅ - jmp .sh_n1 - ;ЅсЋЈ Ј­ чЅ -.sh_n: push ebx - push eax -.sh_n1: - call .check_offset - call .get_n - mov edx,eax ;size of ed_box - mov ecx,ed_offset - add eax,ecx ;eax = w_off= ed_offset+width - mov edx,eax ;save - pop ebx ;ЁЎЋьшЅЅ - pop eax ;ЌЅ­ьшЅЅ - - cmp eax,ecx ;ср Ђ­Ѕ­ЈЅ с ЌЅ­ьшЅЃЎ с offset. - jae .f_f ;ЅсЋЈ ЁЎЋьшЅ - xor eax,eax - cmp edx,ebx ;cр Ђ­ЈЌ р ЇЌЅр w_off с ЁЎЋьшЈЌ - jb @f - sub ebx,ecx - jmp .nxt_f -@@: mov ebx,edx - sub ebx,ecx - jmp .nxt_f -.f_f: - sub eax,ecx - cmp edx,ebx ;cр Ђ­ЈЌ р ЇЌЅр w_off с ЁЎЋьшЈЌ - jle @f - sub ebx,ecx - sub ebx,eax - jmp .nxt_f -@@: - mov ebx,edx - sub ebx,ecx - sub ebx,eax -.nxt_f: - mov edx,ebx - lea ebx,[eax*2+eax] - shl ebx,1 - add ebx,[EditBox.ed_left] - inc ebx - shl ebx,16 - lea ecx,[edx*2+edx] - shl ecx,1 - mov bx,cx - inc ebx - mov edx,ebp;[EditBox.shift_color] - - call .draw_bg_eax -@@: call .enable_null - ret -;;;;;;;;;;;;;;;;;;;;; -;“ст ­ЎЂЊ - с­ятЈЅ ЂыЄЅЋЅ­Јя Ђ ЎЄЈ­ сЈЌЂЎЋ -;;;;;;;;;;;;;;;;;;;;; -.drw_sim: - mov eax,dword ed_pos - call .draw_rectangle ;­ рЈсЎЂ ть ЏряЌЎуЃЎЋь­ЈЊ с Ї Є ­­ыЌ цЂЅтЎЌ - jmp @b -;;;;;;;;;;;;;;;;;;;;; -;”уЊцЈя уст ­ЎЂЊЈ ЂыЄЅЋЅ­Јя ЏрЈ ЄЂЈІЅ­Јя ЂЋЅЂЎ Ј ЂЏр ЂЎ Ј ­ І тЈЈ shift -;‹ЎЃЈЊ : -;;;;;;;;;; -.draw_wigwag: -;фу­ЊцЈя уст ­ЎЂЊЈ ЏЅрЅЌЅ­­ых - mov ebp,[EditBox.shift_color] - call .clear_cursor - - or word [EditBox.ed_flags],ed_shift_bac ;уст ­ЎЂЊ  фЋ Ѓ , ЂыЄЅЋЅ­­ЎЉ ЎЁЋ стЈ - mov ebp,[EditBox.shift_color] - mov eax,dword ed_pos - test word [EditBox.ed_flags],ed_left_fl - jz .low - jmp @f -;;;;;;;;;; -;”уЊцЈя уЄ ЋЅ­Јя ЂыЄЅЋЅ­Јя ЏрЈ ЄЂЈІЅ­Јя ЂЋЅЂЎ Ј ЂЏр ЂЎ Ј ­ І тЈЈ shift -;‹ЎЃЈЊ : -;;;;;;;;;; -.draw_wigwag_cl: -;фу­ЊцЈя уст ­ЎЂЊЈ ЏЅрЅЌЅ­­ых - mov ebp,[EditBox.ed_color] - call .clear_cursor - - mov ebp,[EditBox.ed_color] - mov eax,dword ed_pos - test word [EditBox.ed_flags],ed_left_fl - jz .low -@@: call .draw_rectangle ;­ рЈсЎЂ ть ЏряЌЎуЃЎЋь­ЈЊ Ї Њр шЈЂ ЅЌЎЉ ЎЁЋ стЈ - ret -.low: dec eax - jmp @b -;ЂхЎЄ­ЎЉ Џ р ЌЅтр ebx - ed_pos -.sh_first_sh: - test word [EditBox.ed_flags],ed_shift - je @f - mov dword ed_shift_pos_old,ebx - test word [EditBox.ed_flags],ed_shift_on - jne @f - mov dword ed_shift_pos,ebx - or word [EditBox.ed_flags],ed_shift_on -@@: ret -;ŽЁр ЁЎтЊ  Њр Љ­Јх ЏЎЋЎІЅ­ЈЉ Ђ editbox ЏрЈ ­ І тЎЌ shift -;ЏрЎЈЇЂЎЄЈт с­ятЈЅ ЂыЄЅЋЅ­ЈЅ, ЅсЋЈ ­Ѕт shift -;Ј­ чЅ ЂЎЎЁщЅ ЂыхЎЄЈт -.sh_st_of: - test word [EditBox.ed_flags],ed_shift - jne @f - test word [EditBox.ed_flags],ed_shift_bac - je @f - mov ebp,[EditBox.ed_color] - mov ebx,dword ed_shift_pos - call .sh_cl_ ;ЎчЈстЊ  ЂыЄЅЋЅ­ЎЃЎ фр ЃЌЅ­т  - and word [EditBox.ed_flags],ed_shift_cl ; ЎчЈстЊ  Ўт тЎЃЎ чтЎ уЁр ЋЈ ЂыЄЅЋЅ­ЈЅ - jmp .draw_cursor_text -@@: - and word [EditBox.ed_flags],ed_shift_off -edit_ex -;ЏрЎЂЅрЊ  сЎстЎя­Јя shift ЁыЋ ЋЈ Ў­ ­ І т р ­ьшЅ? -.sh_enable: - test word [EditBox.ed_flags],ed_shift - jne .sh_ext_en ;­ рЈсЎЂ ть Ї Њр шЅ­ыЉ ЏряЌЎуЃЎЋь­ЈЊ - - test word [EditBox.ed_flags],ed_shift_bac - je @f - call .check_offset - - mov ebp,[EditBox.ed_color] - mov ebx,dword ed_shift_pos - call .sh_cl_ ;ЎчЈстЊ  ЂыЄЅЋЅ­ЎЃЎ фр ЃЌЅ­т  - call .draw_wigwag_cl - and word [EditBox.ed_flags],ed_shift_cl ; 1Ђ р ­Ѕ ­уІ­Ў - ret - -@@: mov ebp,[EditBox.ed_color] - call .clear_cursor - call .check_offset - ret -.sh_ext_en: - call .check_offset - test word [EditBox.ed_flags],ed_offset_fl - je @f -;ЈсЎЂ ­ЈЅ Ї Њр шЅ­ых ЏряЌЎуЃЎЋь­ЈЊЎЂ Ј ЎчЈстЊ  Јх - mov eax,dword ed_shift_pos - mov ebx,dword ed_pos - mov ecx,dword ed_shift_pos_old -;ЏрЎЂЅрЊ  Ј рЈсЎЂ ­ЈЅ Ї Њр шЅ­ых ЎЁЋ стЅЉ - cmp eax,ecx - je .1_shem - jb .smaller - cmp ecx,ebx - ja .1_shem - call .draw_wigwag_cl ;clear - jmp .sh_e_end -.smaller: - cmp ecx,ebx - jb .1_shem - call .draw_wigwag_cl ;clear - jmp .sh_e_end -;alike = -.1_shem: call .draw_wigwag -.sh_e_end: and word [EditBox.ed_flags],ed_shift_off - ret -@@: mov ebp,[EditBox.shift_color] - mov ebx,dword ed_shift_pos - call .sh_cl_ - jmp .sh_e_end -;фу­ЊцЈя ЄЋя ЎЁр ЁЎтЊЈ shift ЏрЈ ­ І тЈЈ home and end -.sh_home_end: - mov ebp,[EditBox.ed_color] - call .clear_cursor - test word [EditBox.ed_flags],ed_shift_bac - je @f - mov ebp,[EditBox.ed_color] - mov ebx,dword ed_shift_pos_old - call .sh_cl_ - -@@: test word [EditBox.ed_flags],ed_shift - je .sh_exit_ ;ЂыЉтЈ - mov ebp,[EditBox.shift_color] - mov ebx,dword ed_shift_pos - call .sh_cl_ - or word [EditBox.ed_flags],ed_shift_bac ;уст ­ЎЂЊ  фЋ Ѓ , ЂыЄЅЋЅ­­ЎЉ ЎЁЋ стЈ - jmp .sh_e_end -.sh_exit_: call .check_offset - ret -;фу­ЊцЈя Ђ­ЅсЅ­Јя 0 ЏЎ  ЄрЅсу [EditBox.ed_size]+1 -.enable_null: - pusha - mov eax,[EditBox.ed_size] - mov ebx,[EditBox.ed_text] - test eax,eax - add eax,ebx - jne @f - inc eax -@@: xor ebx,ebx - mov [eax],bl -edit_ex -;- уЄ ЋЅ­ЈЅ сЈЌЂЎЋ  -;‚хЎЄ­ыЅ Є ­­ыЅ edx=[EditBox.ed_size];ecx=ed_pos -.del_char: - mov esi,[EditBox.ed_text] - test word [EditBox.ed_flags],ed_shift_on - je @f - mov eax,dword ed_shift_pos - mov ebx,esi - cmp eax,ecx - jae .dh_n - - mov ed_pos,eax ;чтЎ Ёы ­Ѕ ЁыЋЎ уЁЅЃ ­Јя ЊурсЎр  - mov ebp,ecx - sub ebp,eax - add ebx,eax ;eax ЌЅ­ьшЅ - sub edx,ecx - add esi,ecx - - mov dword ed_shift_pos,ebp - jmp .del_ch_sh - ;ЅсЋЈ Ј­ чЅ -.dh_n: - mov ebp,eax - sub ebp,ecx - add ebx,ecx - sub edx,eax - add esi,eax - mov dword ed_shift_pos,ebp - jmp .del_ch_sh - -@@: add esi,ecx ;уЊ Ї тЅЋь + сЌЅщЅ­ЈЅ Њ рЅ Ћь­ЎЌу ЁуффЅру - mov ebx,esi - inc esi - cld - - sub edx,ecx -.del_ch_sh: - - push edi - mov edi,ebx -@@: - lodsb - stosb - dec edx - jns @b - - pop edi - ret -;ЂычЈсЋЈть Ї Њр шЈЂ ЅЌую ЎЁЋ сть -;сЎЃЋ шЅ­ЈЅ Ђ ebp - ЏЅрЅЄ Ѕтся [EditBox.ed_size] -.clear_bg: - call .get_n ;ЏЎЋучЈть р ЇЌЅр Ђ сЈЌЂЎЋ х шЈрЈ­ы ЊЎЌЏЎ­Ѕ­т  - push eax - mov ebx,ed_offset - add eax,ebx ;eax = w_off= ed_offset+width - mov ebx,ebp ;[EditBox.ed_size] - - cmp eax,ebx - jb @f - mov eax,ed_pos - sub ebx,eax - mov ecx,ed_offset - sub eax,ecx - jmp .nxt -@@: mov ebx,ed_pos - push ebx - sub eax,ebx - mov ebx,eax ;It is don't optimal - - pop eax ;ed_pos - mov ecx,ed_offset - sub eax,ecx -.nxt: - mov ebp,eax ;ЏрЎЂЅрЊ  ­  ЂыхЎЄ Ї Њр шЈЂ ЅЌЎЉ ЎЁЋ стЈ Ї  ЏрЅЄЅЋы ЄЋЈ­ы - add ebp,ebx - pop edx - cmp ebp,edx - je @f - inc ebx - -@@: mov edx,ebx - lea ebx,[eax*2+eax] - shl ebx,1 - add ebx,[EditBox.ed_left] - inc ebx - shl ebx,16 - lea ecx,[edx*2+edx] - shl ecx,1 - mov bx,cx - mov edx,[EditBox.ed_color] - call .draw_bg_eax - ret -;;;;;;;;;;;;;;;;;;; -;;; ŽЁр ЁЎтЊ  ЏрЈЌЈтЈЂЎЂ -;;;;;;;;;;;;;;;;;;;; -; рЈсЎЂ ть ЏряЌЎуЃЎЋь­ЈЊ, цЂЅт ЏЅрЅЄ Ѕтся Ђ ebp -;ЂхЎЄ­ыЅ Џ р ЌЅтры: -;eax=dword ed_pos -;ebp=-цЂЅт [EditBox.ed_color] or [EditBox.shift_color] -.draw_rectangle: - mov ecx,dword ed_offset - sub eax,ecx - lea ebx,[eax*2+eax] - shl ebx,1 - inc ebx - add ebx,[EditBox.ed_left] - shl ebx,16 - add ebx,6 - mov edx,ebp - call .draw_bg_eax - ret -;;;;;;;;;;;;;;;;;; -;;рЎЂЅрЊ  ­ І т ЋЈ shift -;;;;;;;;;;;;;;;;;; -.check_shift: -pusha ;сЎхр ­ЈЌ ЂсЅ рЅЃЈстры - mcall 66,3,1 - test al,0x03 - je @f - or word [EditBox.ed_flags],ed_shift ;уст ­ЎЂЈЌ фЋ Ѓ -@@:edit_ex -} -;Ќ ЊрЎс ЊЋ ЂЈш ­  ЊЎтЎрыЅ ЏрЎЈсхЎЄЈт рЅ ЊцЈя -macro use_key_process backspase,delete,left,right,home,end,insert -{ -if backspase eq -else - cmp ah,8 - jz .backspace -end if -if delete eq -else - cmp ah,0xb6 - jz .delete -end if -if left eq -else - cmp ah,176 - jz .left -end if -if right eq -else - cmp ah,179 - jz .right -end if -if home eq -else - cmp ah,180 - jz .home -end if -if home eq -else - cmp ah,181 - jz .end -end if -if insert eq -else - cmp ah,185 ;insert - jz .insert -end if -} -macro use_key_no_process up,down,esc -{ -if up eq -else - cmp ah,177 - jz .editbox_exit -end if -if down eq -else - cmp ah,178 - jz .editbox_exit -end if -if esc eq -else - cmp ah,27 ;ESC - ЊЋ ЂЈш  )) - jz .editbox_exit -end if -} - -macro use_key_figures_only -{ - test word [EditBox.ed_flags],ed_figure_only ; тЎЋьЊЎ цЈфры ? - jz @f - cmp ah,'0' - jb .editbox_exit - cmp ah,'9' - ja .editbox_exit -@@: -} -macro are_key_shift_press -{ - test word [EditBox.ed_flags],ed_shift_on - je @f - ;‚хЎЄ­ыЅ Є ­­ыЅ edx=[EditBox.ed_size];ecx=ed_pos - push eax - mov edx,[EditBox.ed_size] - mov ecx, ed_pos - pusha -;;;;;;;;;;;;;;;;;;;;; - mov ebp,[EditBox.ed_color] - mov ebx,dword ed_shift_pos - call .sh_cl_ -;;;;;;;;;;;;;;;;;;;;; - popa - call .del_char -;;;; - mov eax,dword ed_shift_pos - mov ebx,[EditBox.ed_size] - sub ebx,eax - mov [EditBox.ed_size],ebx - pop eax -@@: -} -macro are_key_cur_end -{ - mov ecx,[EditBox.ed_size] - mov edx, [EditBox.ed_max] - test word [EditBox.ed_flags],ed_insert - jne @f - cmp ecx,edx - jae .editbox_exit -@@: mov ebx, ed_pos - cmp ebx,edx - jl @f ; ЅсЋЈ ЌЅ­ьшЅ ЈЋЈ р Ђ­Ў - jmp .editbox_exit - -@@: ; сЄЂЈЃ ЅЌ сЈЌЂЎЋы ЏЎсЋЅ ЊурсЎр  ЂЏр ЂЎ - mov ecx,[EditBox.ed_size] - push edi eax - mov ebp,edi - mov esi,[EditBox.ed_text] ; “Њ Ї тЅЋь ­  ЁуфЅр - ;уЄЅЌ р ЁЎт ть сЎ стрЎЊЎЉ - add esi,ecx ;add [EditBox.ed_size] ЄЎЁ ЂЈЌ max size - mov edi,esi - - cmp ecx,ebx ;…сЋЈ у ­ с ЏЎЇЈцЈя ЊурсЎр  = тЅЊущЅЌу р ЇЌЅру ­ ЏЅч т ­­ых сЈЌЂЎЋЎЂ т.Ѕ. ЊурсЎр стЎЈт Ђ ЊЎ­цЅ - je .In_k - - test word [ebp+40],ed_insert ;IF insert is enable т.Њ. edi ЈЇЌЅ­Ѕ­  ЄрЅсуЅЌ чЅрЅЇ ebp - jne .ins_v -;clear -pusha - mov edi,ebp - mov ebp,[EditBox.ed_size] - call .clear_bg -popa - sub ecx,ebx ; ЉЄЅЌ ЊЎЋ-ЂЎ сЈЌЂЎЋЎЂ ЄЋя ЏЅрЅЄЂЈІЅ­Јя. - inc edi ;‘ЌЅстЈЌ ­ шЈ сЈЌЂЎЋы Ђ Џр ЂЎ - std - inc ecx - @@: - ;-------- - lodsb - stosb - ;-------- - loop @b -.In_k: cld - pop eax - mov al,ah - stosb - pop edi -; Ђст ЂЋяЅЌ ЊЎЄ ЊЋ ЂЈшЈ туЄ , ЃЄЅ ЊурсЎр - ; уЂЅЋЈчЈЂ ЅЌ Ї­ чЅ­ЈЅ р ЇЌЅр  Ј ЏЎЇЈцЈЈ - inc dword [EditBox.ed_size] - inc dword ed_pos - call .draw_all2 - jmp .shift -} -macro use_work_key -{ -.insert: test word [EditBox.ed_flags],ed_insert ;not word ed_insert - je @f - and word [EditBox.ed_flags],ed_insert_cl - jmp .editbox_exit -@@: - or word [EditBox.ed_flags],ed_insert - jmp .editbox_exit -.ins_v: - dec dword [ebp+42];[EditBox.ed_size] ;processing is insert - sub esi,ecx - add esi,ebx - mov edi,esi -;clear -pusha - mov edi,ebp - mov ebp,ed_pos - call .clear_bg -popa - jmp .In_k -;;;;;;;;;;;;;;;;;;;;;;;;;;;; -.delete: - mov edx,[EditBox.ed_size] - mov ecx,ed_pos - cmp edx,ecx - jg .bac_del - test word [EditBox.ed_flags],ed_shift_on - jne .del_bac -edit_ex -.bac_del: - call .del_char - jmp .draw_all -;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;--- ­ І т  ЊЋ ЂЈш  backspace --- -.backspace: - ; ЏрЎЂЅряЅЌ, ЊурсЎр у ЋЅЂЎЃЎ Њр я ? - mov ecx,ed_pos - test ecx,ecx - jnz .del_bac - test word [EditBox.ed_flags],ed_shift_on - jne .bac_del - -edit_ex -.del_bac: - mov edx,[EditBox.ed_size] - cmp edx,ecx ;if ed_pos=[EditBox.ed_size] - je @f - dec ecx - call .del_char -@@: test word [EditBox.ed_flags],ed_shift_on - jne .bac_del - dec dword ed_pos -.draw_all: - push .shift;.draw_cursor_text;eax - - test word [EditBox.ed_flags],ed_shift_on - je @f - mov eax,dword ed_shift_pos - mov ebx,[EditBox.ed_size] - sub ebx,eax - mov [EditBox.ed_size],ebx - - mov ebp,[EditBox.ed_color] - call .clear_cursor - call .check_offset - call .draw_bg - ret -@@: dec dword [EditBox.ed_size] - -.draw_all2: - and word [EditBox.ed_flags],ed_shift_cl - mov ebp,[EditBox.ed_color] - call .clear_cursor - call .check_offset - mov ebp,[EditBox.ed_size] - call .clear_bg - ret -;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;--- ­ І т  ЊЋ ЂЈш  left --- -.left: mov ebx,ed_pos - test ebx,ebx - jz .sh_st_of - or word [EditBox.ed_flags],ed_left_fl - call .sh_first_sh - dec dword ed_pos - call .sh_enable - jmp .draw_cursor_text -;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;--- ­ І т  ЊЋ ЂЈш  right --- -.right: mov ebx,ed_pos - cmp ebx,[EditBox.ed_size] - je .sh_st_of - and word [EditBox.ed_flags],ed_right_fl - call .sh_first_sh - inc dword ed_pos - call .sh_enable - jmp .draw_cursor_text -;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -.home: - mov ebx,ed_pos - test ebx,ebx - jz .sh_st_of - call .sh_first_sh - xor eax,eax - mov ed_pos,eax - call .sh_home_end - jmp .draw_cursor_text -;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -.end: - mov ebx,ed_pos - cmp ebx,dword [EditBox.ed_size] - je .sh_st_of - call .sh_first_sh - mov eax,[EditBox.ed_size] - mov ed_pos,eax - call .sh_home_end - jmp .draw_cursor_text -} - -macro use_mouse_func scr_w -{ -;---------------------------------------------------------- -;--- ŽЁр ЁЎтЊ  .mouse_wigwag -;---------------------------------------------------------- -.mouse_wigwag: - shr eax,16 - or word [EditBox.ed_flags],ed_shift_bac+ed_shift_on+ed_shift -;;;;;;;;;;;;;;;;;; -;;ЏрЎцЅЄур  ЎЁр ЁЎтЊЈ ЏЎЋЎІЅ­Јя ЂыЄЅЋЅ­­ЎЃЎ тЅЊст , ЊЎЃЄ  ЏрЎЈсхЎЄЈт ЂыхЎЄ Ї  ЏрЅЄЅЋы editbox -;;;;;;;;;;;;;;;;;; - ;mov ebx,[IPC_table.box.left] - mov ebx,[EditBox.ed_left] -;if scr_w eq -;else -; add ebx,dword scr_w -;end if - cmp eax,ebx - jb .mleft - - add ebx,[EditBox.ed_width] - cmp eax,ebx - ja .mright - - sub ebx,[EditBox.ed_width] - - xor edx,edx - sub eax,ebx ; ЂычтЈЌ ЈЇ ЊЎЎрЄЈ­ т ЌышЊЈ ЏЎ ЎсЈ х ЊЎЎрЄЈ­ ты ЄЎ editbox ЏЎ ЎсЈ х - mov ebx,6 - div ebx -;;;;;;;;;;;;;;;;;; -;;ЏрЎцЅЄур  ЎЁр ЁЎтЊЈ ЏЎЋЎІЅ­Јя ЂыЄЅЋЅ­­ЎЃЎ тЅЊст , Ђ ЏрЅЄЅЋ х ЎЁЋ стЈ editbox -;;;;;;;;;;;;;;;;;; -;ЎЋучЈЋЈ ЊЎЎрЄЈ­ ты Ђ eax ЌышЊЈ, т.Ѕ. ЊуЄ  Ў­  ЏЅрЅЌЅстЈЋ сь -;ЈсЎЂ ­ЈЅ Ї Њр шЅ­ых ЏряЌЎуЃЎЋь­ЈЊЎЂ Ј ЎчЈстЊ  Јх - add eax,ed_offset ;ЄЎЁ ЂЈЌ сЌЅщЅ­ЈЅ - cmp eax,dword [EditBox.ed_size] ;ЅсЋЈ ЂышЋЈ Ї  ЏрЅЄЅЋы, тЎ ­ЈчЅЃЎ ­Ѕ ЄЅЋ ть - ja .mwigvag -.mdraw: - mov dword ed_pos,eax ;сЎхр ­ЈЌ ­ЎЂЎЅ Ї­ чЅ­ЈЅ -;ЈсЎЂ ­ЈЅ Ї Њр шЅ­ых ЏряЌЎуЃЎЋь­ЈЊЎЂ Ј ЎчЈстЊ  Јх - mov ecx,dword ed_shift_pos - mov ebx,dword ed_shift_pos_old - mov dword ed_shift_pos_old,eax ;Ђ­ЅсЅЌ ­ЎЂЎЅ Ї­ чЅ­ЈЅ ст рЎЉ ЏЎЇЈцЈЈ ЊурсЎр  -;ЏрЎЂЅрЊ  Ј рЈсЎЂ ­ЈЅ Ї Њр шЅ­ых ЎЁЋ стЅЉ - cmp ecx,ebx ;Ђыяс­яЅЌ ЊуЄ  ЁыЋЎ ЄЂЈІЅ­ЈЅ ­  ЎЄЈ­ ш Ѓ ­ Ї Є - je .m1_shem ;ЄЂЈІЅ­Јя ­Ѕ ЁыЋЎ р ­ЅЅ - jb .msmaller ;ЄЂЈІЅ­ЈЅ ЁыЋЎ -> - cmp ebx,eax ;ЄЂЈІЅ­ЈЅ ЁыЋЎ ЄЎ этЎЃЎ <- Ј тут Ќы ЏрЎЂЅряЅЌ сЅЉч с ЊуЄ  ЄЂЈІЅ­ЈЅ ЏрЎЈсхЎЄЈт - ja .m1_shem ;ЅсЋЈ ЁыЋЎ ЄЂЈІЅ­ЈЅ <- тЎ ­уІ­Ў Ї Њр сЈть ЎЁЋ сть - je .mwigvag ;ЅсЋЈ ЈЇЌЅ­Ѕ­Јя ­Ѕ ЁыЋЎ, тЎ ­ЈчЅЃЎ ­Ѕ ЄЅЋ ть - mov ebp,[EditBox.ed_color] ;тут ­уІ­Ў ЎчЈстЈть ЎЁЋ сть c ed_pos ed_shift_pos_old -;ЂхЎЄ­ыЅ Џ р ЌЅтры ebp=color ebx=ed_shift_pos - call .sh_cl_ - jmp .mwigvag -.msmaller: - cmp ebx,eax - jb .m1_shem - mov ebp,[EditBox.ed_color] -;ЂхЎЄ­ыЅ Џ р ЌЅтры ebp=color ebx=ed_shift_pos - call .sh_cl_ - jmp .mwigvag -;alike = -.m1_shem: - mov ebp,[EditBox.shift_color] -;ЂхЎЄ­ыЅ Џ р ЌЅтры ebp=color ebx=ed_shift_pos - mov ebx,ecx - call .sh_cl_ - jmp .mwigvag -.mwigvag: - and word [EditBox.ed_flags],ed_shift_mcl - jmp .draw_cursor_text -; popa -; ret -.mleft: - mov eax,ed_pos - cmp eax,0 - jbe .mwigvag - dec eax - call .check_offset - push eax - mov ebx,ed_shift_pos - mov ebp,[EditBox.shift_color] - call .sh_cl_ - pop eax - jmp .mdraw -.mright: - mov eax,ed_pos - mov ebx,[EditBox.ed_size] - cmp eax,ebx - jae .mwigvag - inc eax - call .check_offset - mov ebx,ed_shift_pos - mov ebp,[EditBox.shift_color] - push eax - call .sh_cl_ - pop eax - jmp .mdraw -} - -macro use_work_mouse scr_h,scr_w -;---------------------------------------------------------- -;--- € ­Ѕ уЄЅрІЈЂ ЅЌ ЋЈ Ќы ЊЋ ЂЈшу ЌышЊЈ, ЏЅрЅЌЅщ я ЊурсЎр, ЂЎ ЂсЅ р Ї­ыЅ стЎрЎ­ы? -;---------------------------------------------------------- -{ - test word [EditBox.ed_flags],ed_mouse_on - jne .mouse_wigwag -;---------------------------------------------------------- -;--- ЏрЎЂЅряЅЌ, ЏЎЏ Є Ѕт ЋЈ ЊурсЎр Ђ edit box ------------- -;---------------------------------------------------------- - ;mov ebx,[IPC_table.box.top] - - mov eax,[EditBox.ed_left] - mov ebx,[EditBox.ed_top] - mov ecx,[EditBox.ed_width] - mov edx,[EditBox.ed_height] - mov esi,[EditBox.mouseX] - mov edi,[EditBox.mouseY] - - call CheckCrossingBox - - cmp eax,0xffffff - jne ._blur - -;if scr_h eq -;else -; add ebx,scr_h -;end if - ;cmp ax,bx - ;jl ._blur;.mouse_end_no_focus - - ;add ebx,ed_height - ;cmp ax,bx - ;jg ._blur;.mouse_end_no_focus - - ;shr eax,16 - - ;mov ebx,[IPC_table.box.left] - ;add ebx,[EditBox.ed_left] -;if scr_w eq -;else -; add ebx,scr_w -;end if - ;cmp ax,bx - ;jl ._blur;.mouse_end_no_focus - - ;add ebx,[EditBox.ed_width] - ;cmp ax,bx - ;jg ._blur;.mouse_end_no_focus - - ;mov eax,[EditBox.mouseX] - -;--- ЈЇЌЅ­яЅЌ ЏЎЇЈцЈю ЊурсЎр  --- - ;push eax - mov ebp,[EditBox.ed_color] - call .clear_cursor - ;pop eax - mov eax,[EditBox.mouseX] -._mvpos: - ;mov ebx,dword [IPC_table.box.left] - xor edx,edx - sub eax,[EditBox.ed_left] - ;sub eax,ebx -;if scr_w eq -;else -; add ebx,scr_w -; sub eax,2 -;end if - mov ebx,6 - div bx - add eax,ed_offset - cmp eax,[EditBox.ed_size] - jna ._mshift - mov eax,[EditBox.ed_size] -._mshift: -;;;;;;; -;;‘ЅЊцЈя ЎЁр ЁЎтЊЈ shift Ј ЂыЄЅЋЅ­Јя ЏЎ shift -;;;;;;; - test word [EditBox.ed_flags],ed_shift_bac - je @f - mov ebp,dword [EditBox.ed_color] - mov ebx,dword ed_shift_pos - push eax - call .sh_cl_ - and word [EditBox.ed_flags],ed_shift_bac_cl - pop eax -@@: - test word [EditBox.ed_flags],ed_mouse_on - jne @f - - mov dword ed_shift_pos,eax - or word [EditBox.ed_flags],ed_mouse_on - mov dword ed_pos,eax - ;mov dword [mouse_flag],edi ;уст ­ЎЂЈЌ ЈЄЅ­тЈфЈЊ тЎр - bts word [EditBox.ed_flags],1 ;уст ­ЎЂЊ  фЎЊус  - jmp .m_sh -@@: - cmp eax,dword ed_shift_pos ;ЅсЋЈ ЏЎЇЈцЈЈ ­Ѕ ЈЇЌЅ­ЈЋЈсь - je .editbox_exit - mov ed_pos,eax - mov ebp,dword [EditBox.shift_color] - mov ebx,dword ed_shift_pos - call .sh_cl_ - or word [EditBox.ed_flags],ed_mous_adn_b ;уст ­ЎЂЈЌ ЁЈт чтЎ Ќы ЂыЄЅЋЈЋЈ +shift_on + -.m_sh: call .draw_text - call .draw_cursor -;---------------------------------------------------------- -;--- ЏрЎцЅЄур  уст ­ЎЂЊЈ фЎЊус  --------------------------- -;---------------------------------------------------------- - jmp .drc -._blur: - test word [EditBox.ed_flags],ed_always_focus - jne .editbox_exit - btr word [EditBox.ed_flags],1 ; ЅсЋЈ ­Ѕ Ђ фЎЊусЅ, ЂыхЎЄЈЌ - jnc .editbox_exit - - mov ebp,[EditBox.ed_color] - call .clear_cursor -.drc: call .draw_border - jmp .editbox_exit -} - - -; Œ ЊрЎс ЂыхЎЄ  -macro edit_ex -{ -popa -ret -} -macro debug -{ - ;----------- ЎтЋ ЄЊ  - pushad -; mov dword [ed_buffer.2],0 -; mov eax,edi - mov eax,dword [ed_buffer.2] - mov edi,ed_buffer.3 - call .str - ;рЈсЎЂ ­ЈЅ фЎ­  - mov eax,13 - mov ebx,178*65536+70 - mov ecx,28*65536+10 - xor edx,edx - int 0x40 - ;ЂыЂЎЄ Ї­ чЅ­Јя ­  эЊр ­ - mov eax,4 - mov ebx,180*65536+30 - mov ecx,0x10DDBBCC - mov edx,ed_buffer.3 - mov esi,8 - int 0x40 - popad - ;----------- ЎтЋ ЄЊ  -} -macro debug_func -{ -.str: - mov ecx,0x0a ;Ї Є Ѕтся сЈстЅЌ  счЈсЋЅ­Јя ЈЇЌЅ­яются рЅЃЈстры ebx,eax,ecx,edx ЂхЎЄ­ыЅ Џ р ЌЅтры eax - чЈсЋЎ - ;ЏрЅрЅЂЎЄ чЈсЋ  Ђ ASCII стрЎЊу ЂЇЎЄ­ыЅ Є ­­ыЅ ecx=сЈстЅЌ  счЈсЋЅ­я edi  ЄрЅс ЊуЄ  Ї ЏЈсыЂ ть, ЁуЄЅЌ стрЎЊу, ЏрЈчЅЌ ЊЎ­Ѕц ЏЅрЅЌЅ­­ЎЉ - cmp eax,ecx ;ср Ђ­Јть ЅсЋЈ Ђ eax ЌЅ­ьшЅ чЅЌ Ђ ecx тЎ ЏЅрЅЉтЈ ­  @@-1 т.Ѕ. ­  pop eax - jb @f - xor edx,edx ;ЎчЈстЈть edx - div ecx ;р ЇЄЅЋЈть - Ўст тЎЊ Ђ edx - push edx ;ЏЎЋЎІЈть Ђ стЅЊ - ;dec edi ;сЌЅщЅ­ЈЅ ­ЅЎЁхЎЄЈЌЎЅ ЄЋя Ї ЏЈсЈ с ЊЎ­ц  стрЎЊЈ - call .str;ЏЅрЅЉтЈ ­  с Ќу сЅЁя т.Ѕ. ЂыЇЂ ть с Ќу сЅЁя Ј т Њ ЄЎ тЎЃЎ ЌЎЌЅ­т  ЏЎЊ  Ђ eax ­Ѕ ст ­Ѕт ЌЅ­ьшЅ чЅЌ Ђ ecx - pop eax - @@: ;cmp al,10 ;ЏрЎЂЅрЈть ­Ѕ ЌЅ­ьшЅ ЋЈ Ї­ чЅ­ЈЅ Ђ al чЅЌ 10 (ЄЋя сЈстЅЌы счЈсЋЅ­я 10 Є ­­ я ЊЎЌ ­Є  - ЋЈш­ я)) - ;sbb al,$69 ;- чЅст­Ў Є ­­ я Ј­струЊцЈя ЌЅ­я Ї ст ЂЋяЅт Ї ЄуЌ ться т.Ѕ. я ­Ѕ Ї­ ю Њ Њ этЎ р ЁЎт Ѕт - ;das ;ЏЎсЋЅ Є ­­ЎЉ ЊЎЌ ­Єы Њ Њ Ёы ЏрЎЈсхЎЄЈт уЌЅ­ьшЅ­ЈЅ al ­  66h (Ђ Њ­ЈЃЅ ­ ЏЈс ­Ў ЄруЃЎЅ) - or al,0x30 ;Є ­­ я ЊЎЌ ­Є  ЊЎрЎчЅ чЅЌ ЄЂЅ ЂышЅ - stosb ;Ї ЏЈс ть эЋЅЌЅ­т ЈЇ рЅЃЈстр  al Ђ ячЅЊу Џ ЌятЈ es:edi - - ret ;ЂЅр­уться чЅ­ь Ј­тЅрЅс­ыЉ хЎЄ т.Њ. ЏЎЊ  Ђ стЅЊЅ хр ­Јться ЊЎЋ-ЂЎ ЂыЇЎЂЎЂ тЎ стЎЋьЊЎ р Ї Ќы Ј ЁуЄЅЌ ЂыЇыЂ ться -} - -;;;;;;;;;;;;;;; -;For LibGui -;;;;;;;;;;;;;;; -macro srt_ed_libgui -{ -;[EditBox.ed_width] equ [EditBox.ed_width] ;шЈрЈ­  ЊЎЌЏЎ­Ѕ­т  -;[EditBox.ed_left] equ [EditBox.ed_left] ;ЏЎЋЎІЅ­ЈЅ ЏЎ ЎсЈ х -;[EditBox.ed_top] equ [EditBox.ed_top] ;ЏЎЋЎІЅ­ЈЅ ЏЎ ЎсЈ у -;[EditBox.ed_color] equ [EditBox.ed_color] ;цЂЅт фЎ­  ЊЎЌЏЎ­Ѕ­т  -;[EditBox.shift_color] equ [EditBox.shift_color] ;=0x6a9480 -;[EditBox.ed_focus_border_color] equ [EditBox.ed_focus_border_color] ;цЂЅт р ЌЊЈ ЊЎЌЏЎ­Ѕ­т  -;[EditBox.ed_blur_border_color] equ [EditBox.ed_blur_border_color] ;цЂЅт ­Ѕ  ЊтЈЂ­ЎЃЎ ЊЎЌЏЎ­Ѕ­т  -;[EditBox.ed_text_color] equ [EditBox.ed_text_color] ;цЂЅт тЅЊст  -;[EditBox.ed_max] equ [EditBox.ed_max] ;ЊЎЋ-ЂЎ сЈЌЂЎЋЎЂ ЊЎтЎрыЅ ЌЎІ­Ў Ќ ЊсЈЌ Ћь­Ў ЂЂЅстЈ -;[EditBox.ed_text] equ [EditBox.ed_text] ;уЊ Ї тЅЋь ­  ЁуфЅр -;[EditBox.ed_flags] equ [EditBox.ed_flags] ;фЋ ЃЈ -;[EditBox.ed_size] equ [EditBox.ed_size] ;ЊЎЋ-ЂЎ сЈЌЂЎЋЎЂ -ed_pos equ [EditBox.ed_pos] ;ЏЎЇЈцЈя ЊурсЎр  -ed_offset equ [EditBox.ed_offset] ;сЌЅщЅ­ЈЅ -cl_curs_x equ [EditBox.cl_curs_x] ;ЏрЅЄыЄущЅЅ ЊЎЎрЄЈ­ т  ЊурсЎр  ЏЎ х -cl_curs_y equ [EditBox.cl_curs_y] ;ЏрЅЄыЄущЅЅ ЊЎЎрЄЈ­ т  ЊурсЎр  ЏЎ у -ed_shift_pos equ [EditBox.ed_shift_pos] ;ЏЎЋЎІЅ­ЈЅ ЊурсЎр  -ed_shift_pos_old equ [EditBox.ed_shift_pos_old] ;ст рЎЅ ЏЎЋЎІЅ­ЈЅ ЊурсЎр  -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;Bit mask from editbox -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -ed_figure_only= 1000000000000000b ;ЎЄ­Ј сЈЌЂЎЋы -ed_always_focus= 100000000000000b -ed_focus= 10b ;фЎЊус ЏрЈЋЎІЅ­Јя -ed_shift_on= 1000b ;ЅсЋЈ ­Ѕ уст ­ЎЂЋЅ­ -Ї­ чЈт ЂЏЅрЂыЅ ­ І т shift,ЅсЋЈ ЁыЋ уст ­ЎЂЋЅ­, Ї­ чЈт Ќы уІЅ чтЎ - тЎ ЄЅЋ ЋЈ уЄЅрІЈЂ я shift -ed_shift_on_off=1111111111110111b -ed_shift= 100b ;ЂЊЋюч Ѕтся ЏрЈ ­ І тЈЈ ­  shift т.Ѕ. ЅсЋЈ ­ ІЈЌ ю -ed_shift_off= 1111111111111011b -ed_shift_bac= 10000b ;ЁЈт ЄЋя ЎчЈстЊЈ ЂыЄЅЋЅ­ЎЃЎ shift т.Ѕ. ЏрЈ уст ­ЎЂЊЅ ЃЎЂЎрЈт чтЎ Ѕсть ЂыЄЅЋЅ­ЈЅ -ed_shift_bac_cl=1111111111101111b ;ЎчЈстЊ  ЏрЈ уЄ ЋЅ­ЈЈ ЂыЄЅЋЅ­Јя -ed_shift_cl= 1111111111100011b -ed_shift_mcl= 1111111111111011b -ed_left_fl= 100000b -ed_right_fl= 1111111111011111b -ed_offset_fl= 1000000b -ed_offset_cl= 1111111110111111b -ed_insert= 10000000b -ed_insert_cl= 1111111101111111b -ed_mouse_on = 100000000b -ed_mous_adn_b= 100011000b -ed_mouse_on_off=1111111011111111b -ed_height=14 ; ЂысЎт  -} \ No newline at end of file diff --git a/programs/develop/libGUI/src/image.inc b/programs/develop/libGUI/src/image.inc deleted file mode 100644 index 99ac06d048..0000000000 --- a/programs/develop/libGUI/src/image.inc +++ /dev/null @@ -1,160 +0,0 @@ - -im_control_data_size = 26 -im_redraw_all = 10000000b -im_redraw_all_off = 01111111b -;im_special_redraw_on = 00000001b -;im_special_redraw_off = 11111110b - -;**************************************************** -;*******************craete Image********************** -;**************************************************** -;IN -;pointer to parend -;pointer to Image's structure -;OUT -;pointer to initialized Image's structure -align 4 - -craete_image: - - push ebx - push ecx - push edx - push esi - push edi - push ebp - - mov ebx,[esp+24+4] - mov eax,[esp+24+8] - - mov [PointerToStructureForImage],eax - - mov eax,control_header_size+im_control_data_size - call craete_control - - ;set all image's parameters in control - mov [eax],dword image - - mov ecx,im_control_data_size - mov esi,[PointerToStructureForImage] - mov edi,eax - add edi,control_header_size - rep movsb - - call get_skin_height - - mov ebx,[PointerToStructureForImage] - mov ecx,[ebx+6] ;x - mov edx,[ebx+10] ;y - mov esi,[ebx+14] ;size x - mov edi,[ebx+18] ;size y - add ecx,border_width - add edx,[skin_height] - ;copy information to control - mov [eax+24],ecx - mov [eax+28],edx - mov [eax+32],esi - mov [eax+36],edi - - pop ebp - pop edi - pop esi - pop edx - pop ecx - pop ebx - - ret 8 - -;**************************************************** -;********************Draw Image********************** -;**************************************************** -;IN -;pointer to control of button -;message -;OUT -;not returned value -align 4 - -image: - - ;get message - mov eax,[esp+8] - - ;get pointer to control of image - mov esi,[esp+4] - mov [PointerForImage],esi - ;copy control to local control - add esi,control_header_size - mov edi,dword Image - mov ecx,im_control_data_size - rep movsb - - - cmp [eax],dword 1 - jne no_redraw_all_image - - or [Image.type],im_redraw_all - no_redraw_all_image: - - cmp [eax],dword 3 - jne no_special_message_image - - xor eax,eax - mov al,[Image.type] - and al,activate_trap - test al,al - jz no_activate_redraw_image - - and [Image.type],deactivate_trap - or [Image.type],im_redraw_all - no_activate_redraw_image: - - no_special_message_image: - - ;load coordinats and size from control - mov eax,[PointerForImage] - mov ebx,[eax+24] ;x - mov ecx,[eax+28] ;y - mov edx,[eax+32] ;size x - mov esi,[eax+36] ;size y - ;set current coordinats and sizes in zakladka - mov [Image.x],ebx - mov [Image.y],ecx - mov [Image.sizex],edx - mov [Image.sizey],esi - - xor eax,eax - mov al,[Image.type] - and al,im_redraw_all - test al,al - jz no_redraw_image_ - - and [Image.type],im_redraw_all_off - - mov esi,dword Image - mov edi,[PointerForImage] - add edi,control_header_size - mov ecx,2 - rep movsb - - mov eax,7 - mov ebx,[Image.pointer] - mov ecx,[Image.sizex] - shl ecx,16 - add ecx,[Image.sizey] - mov edx,[Image.x] - shl edx,16 - add edx,[Image.y] - mcall - - no_redraw_image_: - - exit_image: - - mov edi,[PointerForImage] - add edi,control_header_size - mov esi,dword Image - mov ecx,im_control_data_size - rep movsb - - ret 8 diff --git a/programs/develop/libGUI/src/libGUI.asm b/programs/develop/libGUI/src/libGUI.asm deleted file mode 100644 index 31e5550118..0000000000 --- a/programs/develop/libGUI/src/libGUI.asm +++ /dev/null @@ -1,548 +0,0 @@ -;********************************************************************** -; library of Graphics Universal Interface for Kolibri operation system -; -; version 071119 -; 2007 year -; -;autors: -; -;andrew_programmer polynki@mail.ru -; -;menegement of controls : destroy_control, send_message,move_component -; resize_component,activate_trap_for_specialized_message -;GUI components : button,scroller,Bookmark,text,image,number,progres_bar -; -; and Maxxxx32 -; -;GUI components : CheckBox,EditBox -; -;********************************************************************** - -format MS COFF - -public EXPORTS - -control_header_size = 44 - -border_width = 5 - -activate_trap = 01000000b -deactivate_trap = 10111111b - -section '.flat' code readable align 16 - - include 'macros.inc' - include 'debug.inc' - - ;GUI components - - include 'button.inc' - - include 'scroller.inc' - - include 'bookmark.inc' - - include 'image.inc' - - include 'text.inc' - - include 'number.inc' - - include 'check_box.inc' - - include 'edit_box.inc' - - include 'progress_bar.inc' - - ;engen of libGUI(menegment of controls) - - include 'menegment_of_controls.inc' - - ;functions which proved work of GUI components - - include 'draw.inc' - - include 'string.inc' - - include 'check_crossing_box.inc' - - include 'memory.inc' - - ;function for get version of library - include 'version.inc' - - ;function for resize GUI component - include 'resize_component.inc' - - ;function for move GUI component - include 'move_component.inc' - - ;function for activate trap for specialized messages - include 'activate_trap.inc' - -align 16 -EXPORTS: - dd szDestroyControl,destroy_control - dd szSendMessage,send_message - dd szVersion,get_version - dd szResizeComponent,resize_component - dd szMoveComponent,move_component - dd szActivateTrap,activate_trap_for_specialized_message - dd szcraeteButton,craete_button - dd szcraeteScroller,craete_scroller - dd szcraeteBookmark,craete_Bookmark - dd szcraeteImage,craete_image - dd szcraeteText,craete_text - dd szcraeteNumber,craete_number - dd szcraeteCheckBox,craete_check_box - dd szcraeteEditBox,craete_edit_box - dd szcraeteProgressBar,craete_progress_bar - dd 0,0 - -szDestroyControl db 'DestroyControl',0 -szSendMessage db 'SendMessage',0 -szVersion db 'Version',0 -szResizeComponent db 'ResizeComponent',0 -szMoveComponent db 'MoveComponent',0 -szActivateTrap db 'ActivateTrapForSpecializedMessage',0 -szcraeteButton db 'CraeteButton',0 -szcraeteScroller db 'CraeteScroller',0 -szcraeteBookmark db 'CraeteBookmark',0 -szcraeteImage db 'CraeteImage',0 -szcraeteText db 'CraeteText',0 -szcraeteNumber db 'CraeteNumber',0 -szcraeteCheckBox db 'CraeteCheckbox',0 -szcraeteEditBox db 'CraeteEditbox',0 -szcraeteProgressBar db 'CraeteProgressbar',0 - -section '.data' data readable writable align 16 -;************************************************ -;******************DLL DATA********************** -;************************************************ - -point db '.',0 -signum db '-',0 - -BitsPerPixel rd 1 -BytesPerString rd 1 -WindowCoordinatX rd 1 -WindowCoordinatY rd 1 -WindowSizeX rd 1 -WindowSizeY rd 1 - -PointerToMem rd 1 -offset rd 1 - -v rd 1 -v2 rd 1 -v3 rd 1 - -r_min rb 1 -r_max rb 1 -g_min rb 1 -g_max rb 1 -b_min rb 1 -b_max rb 1 -r rb 1 -g rb 1 -b rb 1 -r_f rd 1 -g_f rd 1 -b_f rd 1 -step_r rd 1 -step_g rd 1 -step_b rd 1 -length rd 1 -length2 rd 1 -Color rd 1 -AveregeColor rd 1 - -line_coordinat_x rd 1 -line_coordinat_y rd 1 -line_size_x rd 1 -line_size_y rd 1 -line_size_y_f rd 1 - -x rd 1 -y rd 1 -xo rd 1 -yo rd 1 -x_ctl rd 1 -y_ctl rd 1 - -;ReturnAddresButton rd 1 -;ReturnAddresScroller rd 1 -;ReturnAddresBookmark rd 1 -;ReturnAddresImage rd 1 -;ReturnAddresText rd 1 -;ReturnAddresNumber rd 1 -;ReturnAddresCheckBox rd 1 -;ReturnAddresEditBox rd 1 -;ReturnAddresProgressBar rd 1 - -Button_Flag rb 1 - -Scrollersize rd 1 -ControlID rd 1 -Message rd 4 -Parend rd 1 -Control rd 1 -ReturnControl rd 1 -PointerToControl rd 1 -ActiveControl rd 1 -ActiveControlForKeys rd 1 -ButtonsOfMouse rd 1 - -PointerToStructureForBookmark rd 1 -ParendForBookmark rd 1 -PointerToStructureForButton rd 1 -ParendForButton rd 1 -PointerToStructureForScroller rd 1 -ParendForScroller rd 1 -PointerToStructureForImage rd 1 -PointerToStructureForText rd 1 -PointerToStructureForNumber rd 1 -PointerToStructureForCheckBox rd 1 -PointerToStructureForEditBox rd 1 -PointerToStructureForProgressBar rd 1 - -PointerForButton rd 1 -PointerForScroller rd 1 -PointerForBookmark rd 1 -PointerForImage rd 1 -PointerForText rd 1 -PointerForNumber rd 1 -PointerForCheckBox rd 1 -PointerForEditBox rd 1 -PointerForProgressBar rd 1 - -ChisloZakladok rd 1 - -integer_part rd 1 -float_part rd 1 -tochnost1 rd 1 -tochnost2 rd 1 -signum_float_number rb 1 - -skin_height rd 1 - -;********************************* -;**********GUI structures********* -;********************************* - -;struc CONTROL -;{ -; .ctrl_proc rd 0 ;0 -; .ctrl_fd rd 0 ;4 -; .ctrl_bk rd 0 ;8 -; .child_fd rd 0 ;12 -; .child_bk rd 0 ;16 -; .parend rd 0 ;20 -; .x rd 0 ;24 -; .y rd 0 ;28 -; .sizex rd 0 ;32 -; .sizey rd 0 ;36 -; .ID rd 0 ;40 -;} - -struc BUTTON -{ - .ctrl_proc rd 1 - .ctrl_fd rd 1 - .ctrl_bk rd 1 - .child_fd rd 1 - .child_bk rd 1 - .parend rd 1 - .ctrl_x rd 1 - .ctrl_y rd 1 - .ctrl_sizex rd 1 - .ctrl_sizey rd 1 - .ctrl_ID rd 1 - - .type rb 1 - .flag rb 1 - .x rw 1 - .y rw 1 - .width rw 1 - .height rw 1 - .image rd 1 - .imageX rw 1 - .imageY rw 1 - .imageSizeX rw 1 - .imageSizeY rw 1 - .transparentColor rd 1 - .text rd 1 - .textX rw 1 - .textY rw 1 - .textcolor rd 1 - .color1 rd 1 - .color2 rd 1 - .mouseX rw 1 - .mouseY rw 1 -} - -struc SCROLLER -{ - .ctrl_proc rd 1 - .ctrl_fd rd 1 - .ctrl_bk rd 1 - .child_fd rd 1 - .child_bk rd 1 - .parend rd 1 - .ctrl_x rd 1 - .ctrl_y rd 1 - .ctrl_sizex rd 1 - .ctrl_sizey rd 1 - .ctrl_ID rd 1 - - .type rb 1 - .x rw 1 - .y rw 1 - .length rw 1 - .color1 rd 1 - .size rd 1 - .pos rd 1 - .buttons_flags rw 1 - .ChildButton1 rd 1 - .ChildButton2 rd 1 - .mouseX rw 1 - .mouseY rw 1 -} - -;******************************** -;*********Child Buttons********** -;******************************** -struc CHILDBUTTON -{ - .type rb 1 - .flag rb 1 - .x rw 1 - .y rw 1 - .width rw 1 - .height rw 1 - .image rd 1 - .imageX rw 1 - .imageY rw 1 - .imageSizeX rw 1 - .imageSizeY rw 1 - .transparentColor rd 1 - .text rd 1 - .textX rw 1 - .textY rw 1 - .textcolor rd 1 - .color1 rd 1 - .color2 rd 1 - .mouseX rw 1 - .mouseY rw 1 -} - -struc BOOKMARK -{ - .type rb 1 - .flag rb 1 - .x rd 1 - .y rd 1 - .sizex rd 1 - .sizey rd 1 - .color1 rd 1 - .reserved rd 1 - .color2 rd 1 - - .FullBookmarkSizeX rd 1 - .BookmarkSizeX rd 1 - .PointerToTextForBookmark rd 1 - .BookmarkX rd 1 - .BookmarkY rd 1 - .ChildButtonsForBookmark rd 1 - .CounterChildButtons rd 1 - .ChisloZakladok rd 1 - .ChisloStrokeZakladok rd 1 - .MessageForChildButton rd 5 - .ChildControlForBookmark rd 1 - .NumberBookmarksInActiveString rd 1 - .NumberBookmarksInEndString rd 1 - .PointerToActiveBookmarks rd 1 - .PointerToEndBookmarks rd 1 - .BookmarkFlag rb 1 - .y_end_stroke rd 1 - - .CounterChildControls rd 1 - .ActiveChildControl rd 1 - .AddresOfActiveChildControl rd 1 - .MouseX rd 1 - .MouseY rd 1 - - .DefectSizeX rd 1 - .ControlAddres rd 1 - - .counter1 rd 1 - .counter2 rd 1 - - .NumberActiveControl rd 1 - - .WorkPlace_x rd 1 - .WorkPlace_y rd 1 - .WorkPlace_sizex rd 1 - .WorkPlace_sizey rd 1 - .WorkPlace_windowx rd 1 - .WorkPlace_windowsizex rd 1 - -} - -struc IMAGE -{ - .type rb 1 - .flag rb 1 - .color rd 1 - .x rd 1 - .y rd 1 - .sizex rd 1 - .sizey rd 1 - .pointer rd 1 -} - -struc TEXT -{ - .type rb 1 - .flag rb 1 - .color rd 1 - .x rd 1 - .y rd 1 - .length rd 1 - .pointer rd 1 - .background_color rd 1 -} - -struc NUMBER -{ - .type rb 1 - .flag rb 1 - .color rd 1 - .x rd 1 - .y rd 1 - .number rd 1 - .parameters rd 1 -} - -struc CHECKBOX -{ - .ch_flags rw 1 - .ch_left rw 1 - .ch_top rw 1 - .ch_text_margin rd 1 - .ch_size rd 1 - .ch_size_2 rw 1 - .ch_size_3 rw 1 - .ch_color rd 1 - .ch_border_color rd 1 - .ch_text_color rd 1 - .ch_text_ptr rd 1 - .ch_text_length rw 1 - .mouseX rd 1 - .mouseY rd 1 -} - -struc EDITBOX -{ - .ed_width rd 1 - .ed_left rd 1 - .ed_top rd 1 - .ed_color rd 1 - .shift_color rd 1 - .ed_focus_border_color rd 1 - .ed_blur_border_color rd 1 - .ed_text_color rd 1 - .ed_max rd 1 - .ed_text rd 1 - .ed_flags rw 1 - .ed_size rd 1 - .ed_pos rd 1 - .ed_offset rd 1 - .cl_curs_x rd 1 - .cl_curs_y rd 1 - .ed_shift_pos rd 1 - .ed_shift_pos_old rd 1 - .ed_height rd 1 - .mouseX rd 1 - .mouseY rd 1 -} - -struc PROGRESSBAR -{ - .type rb 1 - .flag rb 1 - .color1 rd 1 - .color2 rd 1 - .x rd 1 - .y rd 1 - .sizex rd 1 - .sizey rd 1 - .progress rd 1 - .color3 rd 1 -} - -;******************************** -;*Graphics primitives structures* -;******************************** -struc LINE -{ - .x1 rd 1 - .y1 rd 1 - .x2 rd 1 - .y2 rd 1 - .color rd 1 -} - -struc PIXEL -{ - .x rd 1 - .y rd 1 - .color rd 1 -} - -struc FONT1 -{ - .sizeX rd 6 - .sizeY rd 9 - .x rd 1 - .y rd 1 -} - -struc RECTANGLE -{ - .x rd 1 - .y rd 1 - .width rd 1 - .height rd 1 - .color rd 1 -} - -struc SCROLLBAR -{ - .x rd 1 - .y rd 1 -} - -Line LINE -Pixel PIXEL -Font FONT1 -Rectangle RECTANGLE -ScrollBar SCROLLBAR -ChildButton CHILDBUTTON - -Button BUTTON -Scroller SCROLLER -Bookmark BOOKMARK -Image IMAGE -Text TEXT -Number NUMBER -CheckBox CHECKBOX -EditBox EDITBOX -ProgressBar PROGRESSBAR - -pointer rd 50 -pointer2 rd 13 -IPC_table process_information; rb 1024 -colors_table1 rd 15 -colors_table2 rd 15 - diff --git a/programs/develop/libGUI/src/macros.inc b/programs/develop/libGUI/src/macros.inc deleted file mode 100644 index 14185dbfce..0000000000 --- a/programs/develop/libGUI/src/macros.inc +++ /dev/null @@ -1,269 +0,0 @@ -; new application structure -macro meos_app_start - { - use32 - org 0x0 - - db 'MENUET01' - dd 0x01 - dd __start - dd __end - dd __memory - dd __stack - - if used __params & ~defined __params - dd __params - else - dd 0x0 - end if - - dd 0x0 - } -MEOS_APP_START fix meos_app_start - -macro code - { - __start: - } -CODE fix code - -macro data - { - __data: - } -DATA fix data - -macro udata - { - if used __params & ~defined __params - __params: - db 0 - __end: - rb 255 - else - __end: - end if - __udata: - } -UDATA fix udata - -macro meos_app_end - { - align 32 - rb 2048 - __stack: - __memory: - } -MEOS_APP_END fix meos_app_end - - -; macro for defining multiline text data -struc mstr [sstring] - { - forward - local ssize - virtual at 0 - db sstring - ssize = $ - end virtual - dd ssize - db sstring - common - dd -1 - } - - -; strings -macro sz name,[data] { ; from MFAR [mike.dld] - common - if used name - label name - end if - forward - if used name - db data - end if - common - if used name - .size = $-name - end if -} - -macro lsz name,[lng,data] { ; from MFAR [mike.dld] - common - if used name - label name - end if - forward - if (used name)&(lang eq lng) - db data - end if - common - if used name - .size = $-name - end if -} - - - -; easy system call macro -macro mpack dest, hsrc, lsrc -{ - if (hsrc eqtype 0) & (lsrc eqtype 0) - mov dest, (hsrc) shl 16 + lsrc - else - if (hsrc eqtype 0) & (~lsrc eqtype 0) - mov dest, (hsrc) shl 16 - add dest, lsrc - else - mov dest, hsrc - shl dest, 16 - add dest, lsrc - end if - end if -} - -macro __mov reg,a,b { ; mike.dld - if (~a eq)&(~b eq) - mpack reg,a,b - else if (~a eq)&(b eq) - mov reg,a - end if -} - -macro mcall a,b,c,d,e,f { ; mike.dld - __mov eax,a - __mov ebx,b - __mov ecx,c - __mov edx,d - __mov esi,e - __mov edi,f - int 0x40 -} - - - -; optimize the code for size -__regs fix - -macro add arg1,arg2 - { - if (arg2 eqtype 0) - if (arg2) = 1 - inc arg1 - else - add arg1,arg2 - end if - else - add arg1,arg2 - end if - } - -macro sub arg1,arg2 - { - if (arg2 eqtype 0) - if (arg2) = 1 - dec arg1 - else - sub arg1,arg2 - end if - else - sub arg1,arg2 - end if - } - -macro mov arg1,arg2 - { - if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0')) - if (arg2) = 0 - xor arg1,arg1 - else if (arg2) = 1 - xor arg1,arg1 - inc arg1 - else if (arg2) = -1 - or arg1,-1 - else if (arg2) > -128 & (arg2) < 128 - push arg2 - pop arg1 - else - mov arg1,arg2 - end if - else - mov arg1,arg2 - end if - } - - -macro struct name - { - virtual at 0 - name name - sizeof.#name = $ - name - end virtual - } - -; structures used in MeOS -struc process_information - { - .cpu_usage dd ? ; +0 - .window_stack_position dw ? ; +4 - .window_stack_value dw ? ; +6 - .not_used1 dw ? ; +8 - .process_name rb 12 ; +10 - .memory_start dd ? ; +22 - .used_memory dd ? ; +26 - .PID dd ? ; +30 - .x_start dd ? ; +34 - .y_start dd ? ; +38 - .x_size dd ? ; +42 - .y_size dd ? ; +46 - .slot_state dw ? ; +50 - dw ? ; +52 - reserved - .client_left dd ? ; +54 - .client_top dd ? ; +58 - .client_width dd ? ; +62 - .client_height dd ? ; +66 - .wnd_state db ? ; +70 - rb (1024-71) - } -struct process_information - -struc system_colors - { - .frame dd ? - .grab dd ? - .grab_button dd ? - .grab_button_text dd ? - .grab_text dd ? - .work dd ? - .work_button dd ? - .work_button_text dd ? - .work_text dd ? - .work_graph dd ? - } -struct system_colors - - -; constants - -; events -EV_IDLE = 0 -EV_TIMER = 0 -EV_REDRAW = 1 -EV_KEY = 2 -EV_BUTTON = 3 -EV_EXIT = 4 -EV_BACKGROUND = 5 -EV_MOUSE = 6 -EV_IPC = 7 -EV_STACK = 8 - -; event mask bits for function 40 -EVM_REDRAW = 1b -EVM_KEY = 10b -EVM_BUTTON = 100b -EVM_EXIT = 1000b -EVM_BACKGROUND = 10000b -EVM_MOUSE = 100000b -EVM_IPC = 1000000b -EVM_STACK = 10000000b \ No newline at end of file diff --git a/programs/develop/libGUI/src/memory.inc b/programs/develop/libGUI/src/memory.inc deleted file mode 100644 index fcbf74ff7a..0000000000 --- a/programs/develop/libGUI/src/memory.inc +++ /dev/null @@ -1,32 +0,0 @@ -;eax - size -;OUT -;eax - pointer -malloc: - - push ebx - push ecx - - mov ecx,eax - mov eax,68 - mov ebx,12 - mcall - - pop ecx - pop ebx - - ret - -;eax - pointer -free: - push ebx - push ecx - - mov ecx,eax - mov eax,68 - mov ebx,13 - mcall - - pop ecx - pop ebx - - ret \ No newline at end of file diff --git a/programs/develop/libGUI/src/menegment_of_controls.inc b/programs/develop/libGUI/src/menegment_of_controls.inc deleted file mode 100644 index 3b0ba3f45f..0000000000 --- a/programs/develop/libGUI/src/menegment_of_controls.inc +++ /dev/null @@ -1,535 +0,0 @@ -;**************************************************************** -;***************Elements of menegment for Controls*************** -;**************************************************************** - -;********************************************************** -;********************craete control************************* -;********************************************************** - -;IN -;eax - ctructure's size -;ebx - Parend(pointer to structure for parend) -;OUT -;eax - pointer to new control - -craete_control: - - test eax,eax - jnz no_null_size - - mov eax,1 - no_null_size: - - call malloc - mov [ReturnControl],eax - - push ebx ;parend - push eax ;control - call AddObject - - mov eax,[ReturnControl] - - ;information about craete control output to debug board - call new_line - mov [s_p],s_craete - call print_string - debug_print_dec [ReturnControl] - mov [s_p],s_parend - call print_string - debug_print_dec dword[eax+20] - mov [s_p],s_last - call print_string - debug_print_dec dword[eax+4] - ;-------------------------------- - - ret - -AddObject: - - mov ecx,[esp+4] ;control - mov edx,[esp+8] ;parend - - mov eax,[edx+12] ;eax=parend->child_fd - test eax,eax - jnz else_parend_add_object - - add [ControlID],1 - mov esi,[ControlID] - - mov [edx+12],ecx ;Parend->child_fd=control - mov [edx+16],ecx ;Parend->child_bk=control - - mov [ecx+20],edx ;control->parend=Parend - mov [ecx+4],edx ;control->ctrl_fd=Parend - mov [ecx+40],esi ;control->ctrl_ID=ID - - jmp exit_if_parend_add_object - else_parend_add_object: - - add [ControlID],1 - mov esi,[ControlID] - - mov edi,[edx+16] ;last_control=Parend->child_bk - mov [edx+16],ecx ;Parend->child_bk=control - - mov [edi+8],ecx ;last_control->ctrl_bk=control - mov [ecx+4],edi ;control->ctrl_fd=last_control; - mov [ecx+20],edx ;control->parend=Parend; - mov [ecx+40],esi ;control->ctrl_ID=ID - - exit_if_parend_add_object: - - ret 8 - - -;************************************************************ -;***********************Destroy control********************** -;************************************************************ - -;Delete Control. -;IN -;pointer to control for delete -;OUT -;not returned value -align 4 - -destroy_control: - - push eax - push ebx - push ecx - push edx - push esi - push edi - push ebp - - mov eax,[esp+28+4] - - mov ebx,[eax+20] ;get parend for control - - ;checking pointer of control to 0 - test eax,eax - jz exit_destroy_control - - ;checking parend to main parend(parend of window) - ;if parend equ main parend than exit - test ebx,ebx - jz exit_destroy_control - - mov ecx,[ebx+12] ;Parend->child_fd - test ecx,ecx - jz exit_destroy_control - - mov ecx,[ebx+12] ;Parend->child_fd - mov edx,[ebx+16] ;Parend->child_bk - - cmp ecx,edx - jne no_if_parend_child_fd_child_bk - - cmp ecx,eax - jne no_if_parend_child_fd_control - - mov [ebx+12],dword 0 ;Parend->child_fd=0 - mov [ebx+16],dword 0 ;Parend->child_bk=0 - - ;send message to control for deleting - push eax - - mov [Message],dword -1 - mov ebx,[eax] ;load .... for control - push Message - push eax - call ebx - - pop eax - - push eax - call free - pop eax - - call new_line - mov [s_p],s_destroy - call print_string - debug_print_dec eax - mov [s_p],s_1 - call print_string - - jmp exit_destroy_control - no_if_parend_child_fd_control: - - no_if_parend_child_fd_child_bk: - ;---------------------------------------------- - mov esi,ecx ;seek_control=Parend->child_fd - - while_seek_control: - cmp esi,0 - je exit_destroy_control - ;******************************************************************* - cmp esi,eax - jne no_if_seek_control_control - ;*************************************************************** - mov edi,[esi+8] - test edi,edi - jz no_if_seek_control_ctrl_bk - ;*********************************************************** - mov ecx,[esi+4] - mov edx,[esi+8] - mov [edx+4],ecx - - cmp ecx,ebx - je no_if_last_control_parend - ;******************************************************* - mov [ecx+8],edx - jmp else_seek_control_ctrl_bk - ;******************************************************* - no_if_last_control_parend: - - mov [ebx+12],edx - - jmp else_seek_control_ctrl_bk - ;********************************************************* - no_if_seek_control_ctrl_bk: - ;********************************************************** - - mov ecx,[esi+4] ;last_control=seek_control->ctrl_fd - mov [ecx+8],dword 0 ;last_control->ctrl_bk=0 - mov [ebx+16],ecx ;Parend->child_bk=last_control - - else_seek_control_ctrl_bk: - ;********************************************************** - - ;send message to control for deleting - push eax - - mov [Message],dword -1 - mov ebx,[eax] ;load .... for control - push Message - push eax - call ebx - - pop eax - - push eax - call free - pop eax - - call new_line - mov [s_p],s_destroy - call print_string - debug_print_dec eax - mov [s_p],s_2 - call print_string - - jmp exit_destroy_control - - no_if_seek_control_control: - ;**************************************************************** - - mov edi,[esi+8] ;exchange_control=seek_control->ctrl_bk - mov esi,edi ;seek_control=exchange_control - - jmp while_seek_control - ;******************************************************************* - exit_destroy_control: - - pop ebp - pop edi - pop esi - pop edx - pop ecx - pop ebx - pop eax - - ret 4 - -;*********************************************************** -;*****************Send message to Control******************* -;*********************************************************** - -;IN -;pointer to message -;pointer to parend(structure) -;OUT -;not returned value -align 4 - -send_message: - - push eax - push ebx - push ecx - push edx - push esi - push edi - push ebp - - ;get pointer to parend - mov eax,[esp+28+4] - mov [Parend],eax - - ;get message - mov esi,[esp+28+8] - mov edi,dword Message - mov ecx,4 - rep movsd - - ;load event type - mov eax,[Message] - - - ;check for event type and get parameters for Control - dec eax - jnz no_window_redraw - - mov ebx,[Parend] - mov esi,[ebx+12] ;get pointer to first child control of parend - mov ebx,esi - - send_message_for_redraw_to_next_control: - - ;if esi=0 than exit - test esi,esi - jz exit_check_event_type - - push ebx - push esi - - mov eax,ebx - mov ebx,[eax] ;load .... for control - push Message - push eax - call ebx - - pop esi - pop ebx - - mov esi,[ebx+8] - mov ebx,esi - - jmp send_message_for_redraw_to_next_control - - no_window_redraw: - - dec eax - jnz no_keys - - - ;if have active control than send message - ;checking for active control - mov ebx,[ActiveControlForKeys] - test ebx,ebx - jz exit_check_event_type - - mov eax,[ActiveControlForKeys] - mov ebx,[eax] ;load proc for control - push Message - push eax - call ebx - - jmp exit_check_event_type - no_keys: - - dec eax - jnz no_special_system_message - - mov ebx,[Parend]; - mov esi,[ebx+12] - mov ebx,esi - - send_special_message_to_next_control: - - ;if esi=0 than exit - test esi,esi - jz exit_check_event_type - - push ebx - push esi - - mov eax,ebx - mov ebx,[eax] ;load .... for control - push Message - push eax - call ebx - - pop esi - pop ebx - - mov esi,[ebx+8] - mov ebx,esi - - jmp send_special_message_to_next_control - - no_special_system_message: - - ;************************************************* - ;****************Mouse send message*************** - ;************************************************* - - cmp eax,3 - jne no_mouse - - ;check childrens of parend for crossing - mov ebx,[Parend] - mov esi,[ebx+12] ;esi =first child control - mov ebx,esi ;ebx =first child control - - mov eax,[Message+12] - and eax,1b - test eax,eax - jz left_button_of_mouse_not_pressed - - mov eax,[ActiveControl] - test eax,eax - jz havent_active_control - - mov eax,[ActiveControl] - mov ebx,[eax] ;load proc for control - push Message - push eax - call ebx - - jmp exit_check_event_type - havent_active_control: - - jmp exit_if_left_button_of_mouse__pressed - left_button_of_mouse_not_pressed: - - mov eax,[ActiveControl] - test eax,eax - jz havent_active_control_ - - mov [ActiveControl],dword 0 - - havent_active_control_: - - exit_if_left_button_of_mouse__pressed: - - - next_conrol_check_for_crossing_with_mouse: - - test esi,esi - jz exit_next_conrol_check_for_crossing_with_mouse - - mov [PointerToControl],ebx - - - push ebx - push esi - - mov eax,[ebx+28] ;eax = y coordinat of control - mov [y_ctl],eax - mov eax,[ebx+24] ;eax = x coordinat of control - - mov ecx,[ebx+32] ;ecx = size x of control - mov edx,[ebx+36] ;edx = size y of control - mov esi,[Message+4] ;mouse x - mov edi,[Message+8] ;mouse y - mov ebx,[y_ctl] - - call CheckCrossingBox - - cmp eax,0xffffff - jne no_activate_control - - mov eax,[Message+12] - and eax,1b - test eax,eax - jz no_activate_control - - mov eax,[PointerToControl] - mov [ActiveControl],eax - mov [ActiveControlForKeys],eax - - no_activate_control: - - mov eax,[PointerToControl] - mov ebx,[eax] ;load proc for control - push Message - push eax - call ebx - - pop esi - pop ebx - - mov esi,[ebx+8] ;16 but not 8 - mov ebx,esi - - jmp next_conrol_check_for_crossing_with_mouse - - exit_next_conrol_check_for_crossing_with_mouse: - - no_mouse: - - exit_check_event_type: - - pop ebp - pop edi - pop esi - pop edx - pop ecx - pop ebx - pop eax - - ret 8 - - -new_line: - - pushad - - mov eax,63 - mov ebx,1 - xor ecx,ecx - mov cl,13 - int 0x40 - - mov eax,63 - mov ebx,1 - xor ecx,ecx - mov cl,10 - int 0x40 - - popad - - ret - -print_string: - - pushad - - xor esi,esi - - next_symbol_print: - - mov edi,[s_p] - add edi,esi - - xor edx,edx - mov dl,byte[edi] - test dl,dl - jz exit_print_str - - mov eax,63 - mov ebx,1 - xor ecx,ecx - mov cl,byte[edi] - int 0x40 - - inc esi - jmp next_symbol_print - - exit_print_str: - - popad - - - ret - -s_p dd 0 -s_craete db 'craete ',0 -s_destroy db 'destroy ',0 -s_parend db ' parend ',0 -s_last db ' ctrl_fd ',0 -s_next db ' ctrl_bk ',0 -s_1 db ' 1',0 -s_2 db ' 2',0 \ No newline at end of file diff --git a/programs/develop/libGUI/src/move_component.inc b/programs/develop/libGUI/src/move_component.inc deleted file mode 100644 index 0173fbfc5a..0000000000 --- a/programs/develop/libGUI/src/move_component.inc +++ /dev/null @@ -1,34 +0,0 @@ -;**************************************************** -;*****************move of GUI component************** -;**************************************************** -;IN -;MoveComponent(dword Parend,dword Control,dword newx,dword newy) -;newy -;newx -;Control -;Parend -;OUT -;not - -align 4 - -move_component: - - push ebx - push ecx - push edx - push ebp - - mov ebx,[esp+16+4] ;Control - mov ecx,[esp+16+8] ;new x - mov edx,[esp+16+12] ;new y - - mov [ebx+24],ecx - mov [ebx+28],edx - - pop ebp - pop edx - pop ecx - pop ebx - - ret 12 diff --git a/programs/develop/libGUI/src/number.inc b/programs/develop/libGUI/src/number.inc deleted file mode 100644 index 5a3154231d..0000000000 --- a/programs/develop/libGUI/src/number.inc +++ /dev/null @@ -1,397 +0,0 @@ - - nm_control_data_size = 22 - nm_redraw_all = 10000000b - nm_redraw_off = 01111111b - ;nm_special_redraw_on = 00000100b - ;nm_special_redraw_off = 11111011b - nm_integer_type = 00000010b - nm_no_show_number = 00000001b - -;**************************************************** -;********************craete Number********************** -;**************************************************** -;IN -;pointer to parend -;pointer to Number's structure -;OUT -;pointer to initialized Number's structure -align 4 - -craete_number: - - push ebx - push ecx - push edx - push esi - push edi - push ebp - - mov ebx,[esp+24+4] - mov eax,[esp+24+8] - - mov [PointerToStructureForNumber],eax - - mov eax,control_header_size+nm_control_data_size - call craete_control - - ;set all image's parameters in control - mov [eax],dword number - - mov ecx,nm_control_data_size - mov esi,[PointerToStructureForNumber] - mov edi,eax - add edi,control_header_size - rep movsb - - call get_skin_height - - mov ebx,[PointerToStructureForNumber] - mov ecx,[ebx+6] ;x - mov edx,[ebx+10] ;y - add ecx,border_width - add edx,[skin_height] - ;copy information to control - mov [eax+24],ecx - mov [eax+28],edx - - pop ebp - pop edi - pop esi - pop edx - pop ecx - pop ebx - - ret 8 - -;**************************************************** -;********************Draw Number********************* -;**************************************************** -;IN -;pointer to control of number -;message -;OUT -;not returned value -align 4 - -number: - - ;get message - mov eax,[esp+8] - - ;get pointer to control of image - mov esi,[esp+4] - mov [PointerForNumber],esi - ;copy control to local control - add esi,control_header_size - mov edi,dword Number - mov ecx,nm_control_data_size - rep movsb - - - cmp [eax],dword 1 - jne no_redraw_all_number - - xor ebx,ebx - mov bl,[Number.type] - and bl,nm_no_show_number - test bl,bl - jnz no_redraw_all_number - - or [Number.type],nm_redraw_all - - no_redraw_all_number: - - cmp [eax],dword 3 - jne no_special_message_for_number - - xor ebx,ebx - mov bl,[Number.type] - and bl,activate_trap - test bl,bl - jz no_special_message_for_number - - or [Number.type],nm_redraw_all - and [Number.type],deactivate_trap - - no_special_message_for_number: - - cmp [eax],dword -1 - jne no_destroy_control_of_number - - jmp exit_number - no_destroy_control_of_number: - - ;load coordinats and size from control - mov eax,[PointerForNumber] - mov ebx,[eax+24] ;x - mov ecx,[eax+28] ;y - ;set current coordinats and sizes in zakladka - mov [Number.x],ebx - mov [Number.y],ecx - - xor eax,eax - mov al,[Number.type] - and al,nm_redraw_all - test al,al - jz no_redraw_number_ - - and [Number.type],nm_redraw_off - - mov esi,dword Number - mov edi,[PointerForNumber] - add edi,control_header_size - mov ecx,2 - rep movsb - - ;get standart colors table - mov eax,48 - mov ebx,3 - mov ecx,dword pointer2 - mov edx,40 - mcall - - xor eax,eax - mov al,[Number.type] - and al,nm_integer_type - test al,al - jnz no_integer_number - - mov eax,47 - mov ebx,[Number.parameters] - mov ecx,[Number.number] - mov edx,[Number.x] - shl edx,16 - add edx,[Number.y] - mov esi,[Number.color] - mov edi,[pointer2+8] - mcall - - jmp no_redraw_number_ - no_integer_number: - ;--------------------------------------- - - mov ebx,[Number.parameters] - mov ecx,ebx - shr ebx,16 ;format for integer - and ecx,0xffff ;format for float - - ;get integer part of float number - mov eax,1 - mov edi,ecx - pow_10__: - - ;eax=eax*10 - lea eax,[eax+eax*4] - shl eax,1 - - dec edi - jnz pow_10__ - mov edx,eax - - ;check for signum - mov [v2],0 - fld [Number.number] - fcom [v2] - fstsw ax - sahf - jae no_signum_float_number - - fabs - mov [signum_float_number],byte 1 - - no_signum_float_number: - fstp [Number.number] - - mov [v2],edx ;v2=10^ecx - fild [v2] - fld [Number.number] - fmul st0,st1 - fistp [v] - fstp st0 - - mov esi,edx - mov eax,[v] - cdq - idiv esi - mov [v],eax - - and [integer_part],0 - and [tochnost1],0 - - ;save v in v2 - mov eax,[v] - mov [v2],eax - - mov [Number.flag],0 - mov esi,ebx - get_next_razryd_of_number_integer: - - mov eax,1 - - mov edi,esi - pow_10_integer: - - ;eax=eax*10 - lea eax,[eax+eax*4] - shl eax,1 - - dec edi - jnz pow_10_integer - - mov edi,eax - mov eax,[v] - cdq - idiv edi - and eax,0xf - - test eax,eax - jz no_save_pos_for_integer - - cmp [Number.flag],0 - jne no_save_pos_for_integer - - mov [Number.flag],1b - mov [tochnost1],esi - add [tochnost1],1 - - no_save_pos_for_integer: - - imul eax,edi - sub [v],eax - add [integer_part],eax - - dec esi - jnz get_next_razryd_of_number_integer - mov eax,[v] - add [integer_part],eax - - cmp [tochnost1],0 - jnz all_ok_with_tochnost - - mov [tochnost1],1 - all_ok_with_tochnost: - - ;get float part of float number - mov eax,[v2] - mov [v],eax - - mov eax,1 - mov edi,ecx - pow_10_float__: - - ;eax=eax*10 - lea eax,[eax+eax*4] - shl eax,1 - - dec edi - jnz pow_10_float__ - - mov [v2],eax ;v2=10^ecx - - fild [v2] - fild [v] - fld [Number.number] - fsub st0,st1 - fmul st0,st2 - fistp [v] - fstp st0 - fstp st0 - - and [float_part],0 - - mov esi,ecx - get_next_razryd_of_number_float: - - mov eax,1 - - mov edi,esi - pow_10_float: - - ;eax=eax*10 - lea eax,[eax+eax*4] - shl eax,1 - - dec edi - jnz pow_10_float - - mov edi,eax - mov eax,[v] - cdq - idiv edi - and eax,0xf - imul eax,edi - sub [v],eax - add [float_part],eax - - dec esi - jnz get_next_razryd_of_number_float - mov eax,[v] - add [float_part],eax - - mov [tochnost2],ecx - cmp [signum_float_number],byte 1 - jne no_draw_signum_for_float_number - - ;draw signum - mov eax,4 - mov ebx,[Number.x] - mov ecx,[Number.color] - mov edx,dword signum - mov esi,1 - mov edi,[pointer2+8] - shl ebx,16 - add ebx,[Number.y] - mcall - - add [Number.x],6 - mov [signum_float_number],0 - no_draw_signum_for_float_number: - - ;draw integer part of float number - mov eax,47 - mov ebx,[tochnost1] - mov ecx,[integer_part] - mov edx,[Number.x] - mov esi,[Number.color] - mov edi,[pointer2+8] - shl edx,16 - shl ebx,16 - add edx,[Number.y] - mcall - - mov edx,[tochnost1] - add edx,1 - lea edx,[edx+edx*2] - shl edx,1 ;edx=edx*6 - add edx,[Number.x] - mov [x],edx - - ;draw float part of float number - mov eax,47 - mov ebx,[tochnost2] - mov ecx,[float_part] - mov esi,[Number.color] - mov edi,[pointer2+8] - shl edx,16 - shl ebx,16 - add edx,[Number.y] - mcall - - ;draw point betwen integer part of number and float part of number - mov eax,4 - mov ebx,[x] - mov ecx,[Number.color] - mov edx,dword point - mov esi,1 - mov edi,[pointer2+8] - sub ebx,6 - shl ebx,16 - add ebx,[Number.y] - mcall - - no_redraw_number_: - ;----------------------------------------- - - exit_number: - - ret 8 diff --git a/programs/develop/libGUI/src/progress_bar.inc b/programs/develop/libGUI/src/progress_bar.inc deleted file mode 100644 index b56f0d116e..0000000000 --- a/programs/develop/libGUI/src/progress_bar.inc +++ /dev/null @@ -1,484 +0,0 @@ - -pb_control_data_size = 34 -pb_redraw_all = 10000000b -pb_redraw_all_off = 01111111b -;pb_special_progress_on = 00000001b -;pb_special_progress_off = 11111110b - -;**************************************************** -;****************craete ProgressBar******************** -;**************************************************** -;IN -;pointer to parend -;pointer to ProgressBar's structure -;OUT -;pointer to initialized control -align 4 - -craete_progress_bar: - - push ebx - push ecx - push edx - push esi - push edi - push ebp - - mov ebx,[esp+24+4] - mov eax,[esp+24+8] - - mov [PointerToStructureForProgressBar],eax - - mov eax,control_header_size+pb_control_data_size - call craete_control - - ;set all EditBox's parameters in control - mov [eax],dword progress_bar - - mov ecx,pb_control_data_size - mov esi,[PointerToStructureForProgressBar] - mov edi,eax - add edi,control_header_size - rep movsb - - call get_skin_height - - mov ebx,[PointerToStructureForProgressBar] - mov ecx,[ebx+10] ;x - mov edx,[ebx+14] ;y - mov esi,[ebx+18] ;size x - mov edi,[ebx+22] ;size y - add ecx,border_width - add edx,[skin_height] - ;copy information to control - mov [eax+24],ecx - mov [eax+28],edx - mov [eax+32],esi - mov [eax+36],edi - - pop ebp - pop edi - pop esi - pop edx - pop ecx - pop ebx - - ret 8 - -;**************************************************** -;*****************Draw ProgressBar******************** -;**************************************************** -;IN -;pointer to control of ProgressBar -;message -;OUT -;not returned value -align 4 - -progress_bar: - - ;get message - mov eax,[esp+8] - - ;get pointer to control of button - mov esi,[esp+4] - mov [PointerForProgressBar],esi - - ;copy control to local control - add esi,control_header_size - mov edi,dword ProgressBar - mov ecx,pb_control_data_size - rep movsb - - - push eax - ;load coordinats and size from control - mov eax,[PointerForProgressBar] - mov ebx,[eax+24] ;x - mov ecx,[eax+28] ;y - mov edx,[eax+32] ;size x - mov esi,[eax+36] ;size y - ;set current coordinats and sizes in EeditBox - mov [ProgressBar.x],ebx - mov [ProgressBar.y],ecx - mov [ProgressBar.sizex],edx - mov [ProgressBar.sizey],esi - - pop eax - - - cmp [eax],dword -1 - jne no_destroy_progress_bar - - jmp exit_progress_bar - no_destroy_progress_bar: - - cmp [eax],dword 1 - jne no_redraw_all_progress_bar - - or [ProgressBar.type],pb_redraw_all - - no_redraw_all_progress_bar: - - cmp [eax],dword 3 - jne no_special_message_progress_bar - - xor eax,eax - mov al,[ProgressBar.type] - and al,activate_trap - test al,al - jz no_draw_progress_bar - - and [ProgressBar.type],deactivate_trap - - cmp [ProgressBar.progress],dword 0.02 - jae nofull_redraw - call draw_all_progress_bar - nofull_redraw: - - call draw_progress - - no_draw_progress_bar: - jmp exit_progress_bar - - no_special_message_progress_bar: - - xor eax,eax - mov al,[ProgressBar.type] - and al,pb_redraw_all - test al,al - jz no_draw_all_progress_bar - - and [ProgressBar.type],pb_redraw_all_off - - call draw_all_progress_bar - - jmp exit_progress_bar - - no_draw_all_progress_bar: - - - exit_progress_bar: - - mov edi,[PointerForProgressBar] - add edi,control_header_size - mov esi,dword ProgressBar - mov ecx,pb_control_data_size - rep movsb - - ret 8 - -draw_all_progress_bar: - - mov eax,[ProgressBar.color3] - mov ebx,dword 0xffffff - mov ecx,20 - mov edx,dword colors_table1 - call gradient - - mov eax,13 - mov ebx,[ProgressBar.x] - mov ecx,[ProgressBar.y] - mov edx,[ProgressBar.color1] - shl ebx,16 - shl ecx,16 - add ebx,[ProgressBar.sizex] - add ecx,[ProgressBar.sizey] - mcall - - mov eax,[ProgressBar.x] - mov ebx,[ProgressBar.y] - add eax,[ProgressBar.sizex] - add ebx,[ProgressBar.sizey] - mov [v],eax ;v=x+sizex - mov [v2],ebx ;v2=y+sizey - - ;dark lines - mov eax,[ProgressBar.color3] - and eax,0xffffff - mov [Line.color],eax - mov [Pixel.color],eax - - ;(x+1,y)-(x+sizex-1,y) - mov eax,[ProgressBar.x] - mov ebx,[ProgressBar.y] - mov ecx,[v] - add eax,1 - sub ecx,1 - mov [Line.x1],eax - mov [Line.x2],ecx - mov [Line.y1],ebx - mov [Line.y2],ebx - call DrawLine - - ;(x+sizex,y+1)-(x+sizex,y+sizey-1) - mov eax,[v] - mov ebx,[v2] - mov ecx,[ProgressBar.y] - add ecx,1 - sub ebx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ecx - mov [Line.y2],ebx - call DrawLine - - ;(x+1,y+sizey)-(x+sizex-1,y+sizey) - mov eax,[ProgressBar.x] - mov ebx,[v] - mov ecx,[v2] - add eax,1 - sub ebx,1 - mov [Line.x1],eax - mov [Line.x2],ebx - mov [Line.y1],ecx - mov [Line.y2],ecx - call DrawLine - - ;(x,y+1)-(x,y_sizey-1) - mov eax,[ProgressBar.x] - mov ebx,[ProgressBar.y] - mov ecx,[v2] - add ebx,1 - sub ecx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ecx - call DrawLine - - ;(x+1,y+1)-(x+1,y+2) - mov eax,[ProgressBar.x] - mov ebx,[ProgressBar.y] - mov ecx,ebx - add eax,1 - add ebx,1 - add ecx,2 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ecx - call DrawLine - - ;(x+2,y+1) - mov eax,[ProgressBar.x] - mov ebx,[ProgressBar.y] - add eax,2 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;(x+1,y+sizey-1)-(x+1,y+sizey-2) - mov eax,[ProgressBar.x] - mov ebx,[v2] - mov ecx,ebx - add eax,1 - sub ebx,1 - sub ecx,2 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ecx - call DrawLine - - ;(x+2,y+sizey-1) - mov eax,[ProgressBar.x] - mov ebx,[v2] - add eax,2 - sub ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;(x+sizex-1,y+1)-(x+sizex-1,y+2) - mov eax,[v] - mov ebx,[ProgressBar.y] - mov ecx,ebx - sub eax,1 - add ebx,1 - add ecx,2 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ecx - call DrawLine - - ;(x+sizex-2,y+1) - mov eax,[v] - mov ebx,[ProgressBar.y] - sub eax,2 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;(x+sizex-1,y+sizey-2)-(x+sizex-1,y+sizey-1) - mov eax,[v] - mov ebx,[v2] - mov ecx,ebx - sub eax,1 - sub ebx,2 - sub ecx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ecx - call DrawLine - - ;(x+sizex-2,y+sizey-1) - mov eax,[v] - mov ebx,[v2] - sub eax,2 - sub ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[colors_table1+10*3] - and eax,0xffffff - mov [Line.color],eax - mov [Pixel.color],eax - - ;(x+3,y+1)-(x+sizex-3,y+1) - mov eax,[ProgressBar.x] - mov ebx,[v] - mov ecx,[ProgressBar.y] - add ecx,1 - add eax,3 - sub ebx,3 - mov [Line.x1],eax - mov [Line.x2],ebx - mov [Line.y1],ecx - mov [Line.y2],ecx - call DrawLine - - ;(x+2,y+2) - mov eax,[ProgressBar.x] - mov ebx,[ProgressBar.y] - add eax,2 - add ebx,2 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;(x+sizex-1,y+3)-(x+sizex-1,y+sizey-3) - mov eax,[v] - mov ebx,[v2] - mov ecx,[ProgressBar.y] - sub eax,1 - sub ebx,3 - add ecx,3 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ecx - mov [Line.y2],ebx - call DrawLine - - ;(x+sizex-2,y+2) - mov eax,[v] - mov ebx,[ProgressBar.y] - sub eax,2 - add ebx,2 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;(x+3,y+sizey-1)-(x+sizex-3,y+sizey-1) - mov eax,[ProgressBar.x] - mov ebx,[v] - mov ecx,[v2] - sub ebx,3 - sub ecx,1 - add eax,3 - mov [Line.x1],eax - mov [Line.x2],ebx - mov [Line.y1],ecx - mov [Line.y2],ecx - call DrawLine - - ;(x+sizex-2,y+sizey-2) - mov eax,[v] - mov ebx,[v2] - sub eax,2 - sub ebx,2 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;(x+1,y+3)-(x+1,y+sizey-3) - mov eax,[ProgressBar.x] - mov ebx,[ProgressBar.y] - mov ecx,[v2] - add eax,1 - add ebx,3 - sub ecx,3 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ecx - call DrawLine - - ;(x+2,y+sizey-2) - mov eax,[ProgressBar.x] - mov ebx,[v2] - add eax,2 - sub ebx,2 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ret - -draw_progress: - - cmp [ProgressBar.progress],dword 0.02 - jae min_size_ok - - mov [ProgressBar.progress],dword 0.02 - min_size_ok: - - cmp [ProgressBar.progress],dword 1.0 - jle max_size_ok - - mov [ProgressBar.progress],dword 1.0 - max_size_ok: - - mov eax,[ProgressBar.sizex] - sub eax,6 - mov [v2],eax - - fld [ProgressBar.progress] - fild [v2] - fmul st0,st1 - fistp [v3] - fstp st0 - - mov eax,[ProgressBar.color2] - mov ebx,0xffffff - mov ecx,[ProgressBar.x] - mov edx,[ProgressBar.y] - mov esi,[v3] - mov edi,[ProgressBar.sizey] - sub edi,4 - shr edi,1 - add ecx,3 - add edx,1 - - call rectangle_gradient_up - - mov eax,[ProgressBar.color2] - mov ebx,0xffffff - mov ecx,[ProgressBar.x] - mov edx,[ProgressBar.y] - mov esi,[v3] - mov edi,[ProgressBar.sizey] - sub edi,4 - shr edi,1 - add ecx,3 - add edx,2 - add edx,edi - - call rectangle_gradient_down - - ret \ No newline at end of file diff --git a/programs/develop/libGUI/src/resize_component.inc b/programs/develop/libGUI/src/resize_component.inc deleted file mode 100644 index ebbb4ec155..0000000000 --- a/programs/develop/libGUI/src/resize_component.inc +++ /dev/null @@ -1,34 +0,0 @@ -;**************************************************** -;***************Resize of GUI component************** -;**************************************************** -;IN -;ResizeComponent(dword Parend,dword Control,dword newx,dword newy) -;newy -;newx -;Control -;Parend -;OUT -;not - -align 4 - -resize_component: - - push ebx - push ecx - push edx - push ebp - - mov ebx,[esp+16+4] ;Control - mov ecx,[esp+16+8] ;new size x - mov edx,[esp+16+12] ;new size y - - mov [ebx+32],ecx - mov [ebx+36],edx - - pop ebp - pop edx - pop ecx - pop ebx - - ret 12 diff --git a/programs/develop/libGUI/src/scroller.inc b/programs/develop/libGUI/src/scroller.inc deleted file mode 100644 index 77a40b7f06..0000000000 --- a/programs/develop/libGUI/src/scroller.inc +++ /dev/null @@ -1,4210 +0,0 @@ - -;scroller's flags -sc_check_vertical = 00000001b -sc_check_horizontal = 00000010b -sc_check_init_child_buttons = 00000100b -sc_active = 00001000b -sc_check_3D_type = 00010000b -sc_scroll_bar_move = 00100000b - -sc_redraw = 10000000b -sc_redraw_off = 01111111b -sc_full_redraw = 10101000b -sc_scroll_bar_move_off = 11011111b -sc_move_active_off = 11010111b - -sc_first_child_button_pressed = 00000001b -sc_first_child_button_pressed_off = 11111110b -sc_second_child_button_pressed = 00010000b -sc_second_child_button_pressed_off = 11101111b - -sc_control_data_size = 29 -sc_child_button_type = 10001000b - -;**************************************************** -;******************Crate Scroller********************* -;**************************************************** -;IN -;pointer to parend -;pointer to Scroller's structure -;OUT -;pointer to initialized Scroller's structure -align 4 - -craete_scroller: - - push ebx - push ecx - push edx - push esi - push edi - push ebp - - mov ebx,[esp+24+4] - mov eax,[esp+24+8] - - mov [PointerToStructureForScroller],eax - - mov eax,control_header_size+sc_control_data_size - call craete_control - - ;set all button's parameters in control - mov [eax],dword scroller - - mov ecx,sc_control_data_size - mov esi,[PointerToStructureForScroller] - mov edi,eax - add edi,control_header_size - rep movsb - - mov ebx,[PointerToStructureForScroller] - - xor ecx,ecx - mov cl,byte[ebx] - and cl,sc_check_vertical - jz type_horizontal_scroller - - ;if we here than scroller vertical - mov esi,16 ;scroller size x - xor edi,edi - mov di,[ebx+5] ;scroller size y - jmp exit_type_scroller - type_horizontal_scroller: - - xor esi,esi - mov si,[ebx+5] ;scroller size x - mov edi,16 ;scroller size y - exit_type_scroller: - - xor ecx,ecx - xor edx,edx - mov cx,[ebx+1] ;scroller x - mov dx,[ebx+3] ;scroller y - - call get_skin_height - add ecx,border_width - add edx,[skin_height] - ;copy information to control - mov [eax+24],ecx - mov [eax+28],edx - mov [eax+32],esi - mov [eax+36],edi - - pop ebp - pop edi - pop esi - pop edx - pop ecx - pop ebx - - ret 8 - -;**************************************************** -;*******************Draw Scroller********************* -;**************************************************** -;IN -;pointer to control of scroller -;message -;OUT -;not returned value -align 4 - -scroller: - - - ;get message - mov eax,[esp+8] - - ;copy message - mov esi,eax - mov edi,dword Message - mov ecx,4 - rep movsd - - ;get pointer to control of scroller - mov esi,[esp+4] - mov [PointerForScroller],esi - ;copy control to local control - mov edi,dword Scroller - mov ecx,control_header_size+sc_control_data_size - rep movsb - - - cmp [eax],dword 1 - jne no_redraw_all_scroller - - or [Scroller.type],sc_full_redraw - no_redraw_all_scroller: - - cmp [eax],dword 2 - jne no_keys_scroller - - jmp exit_scroller - no_keys_scroller: - - cmp [eax],dword 3 - jne no_pressed_button_scroller - - jmp exit_scroller - no_pressed_button_scroller: - - cmp [eax],dword 6 - jne no_mouse_scroller - - mov esi,[eax+4] - mov edi,[eax+8] - mov ecx,[eax+12] - mov [Scroller.mouseX],si - mov [Scroller.mouseY],di - mov [ButtonsOfMouse],ecx - no_mouse_scroller: - - - cmp [eax],dword -1 - jne no_delete_scroller - - mov eax,[Scroller.ChildButton1] - call free - - mov eax,[Scroller.ChildButton2] - call free - - ;push [Scroller.ChildButton1] - ;call destroy_control - - ;push [Scroller.ChildButton2] - ;call destroy_control - - jmp exit_scroller - no_delete_scroller: - - ;load coordinats and size from control - mov eax,[PointerForScroller] - mov ebx,[eax+24] ;x - mov ecx,[eax+28] ;y - mov edx,[eax+32] ;size x - mov esi,[eax+36] ;size y - ;set current coordinats and sizes in scroller - mov [Scroller.x],bx - mov [Scroller.y],cx - - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz set_for_horizontal - - mov [Scroller.length],si - - jmp exit_if_vertical - set_for_horizontal: - - mov [Scroller.length],dx - - exit_if_vertical: - - ;checking to craete child buttons - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_init_child_buttons - jnz child_buttons_craeted - - or [Scroller.type],sc_check_init_child_buttons - - mov [ChildButton.type],byte sc_child_button_type - mov [ChildButton.width],16 - mov [ChildButton.height],16 - xor ebx,ebx - xor ecx,ecx - mov bx,[Scroller.x] - mov cx,[Scroller.y] - mov [ChildButton.x],bx - mov [ChildButton.y],cx - - push ChildButton - push [PointerForScroller] - - call craete_button - - mov [Scroller.ChildButton1],eax - - xor ebx,ebx - xor ecx,ecx - mov bx,[Scroller.x] - mov cx,[Scroller.y] - - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz init_buttons_for_horizontal_scroller - - - add cx,[Scroller.length] - sub ecx,16 - - - jmp exit_if_init_buttons_for_horizontal_scroller - init_buttons_for_horizontal_scroller: - - - add bx,[Scroller.length] - sub ebx,16 - - exit_if_init_buttons_for_horizontal_scroller: - - mov [ChildButton.x],bx - mov [ChildButton.y],cx - - push ChildButton - push [PointerForScroller] - - call craete_button - - mov [Scroller.ChildButton2],eax - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - child_buttons_craeted: - - ;checking for redraw all control - ;if it is true than change koordinats of child buttons - xor eax,eax - mov al,[Scroller.type] - and al,sc_redraw - test al,al - jz no_change_koordinats_of_child_buttons - - xor ebx,ebx - xor ecx,ecx - mov bx,[Scroller.x] - mov cx,[Scroller.y] - - ;first child button - mov eax,[Scroller.ChildButton1] - mov [eax+24],ebx ;x - mov [eax+28],ecx ;y - - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz change_koordinats_of_buttons_for_horizontal_scroller - - add cx,[Scroller.length] - sub ecx,16 - - jmp exit_if_change_koordinats_of_buttons_for_horizontal_scroller - change_koordinats_of_buttons_for_horizontal_scroller: - - add bx,[Scroller.length] - sub ebx,16 - - exit_if_change_koordinats_of_buttons_for_horizontal_scroller: - - ;second child button - mov eax,[Scroller.ChildButton2] - mov [eax+24],ebx ;x - mov [eax+28],ecx ;y - - no_change_koordinats_of_child_buttons: - - ;is a 3D scroller ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_3D_type - test al,al - jz no_3D_scroller - - - mov eax,[Scroller.color1] - mov ebx,0xffffff - mov ecx,16 - mov edx,dword pointer - call gradient - - mov eax,[pointer+9] - and eax,0xffffff - mov [Color],eax - - mov eax,[pointer] - mov ebx,0xffffff - call calculate_average_color - mov [AveregeColor],eax - - ;is a vertical 3D scroller ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz no_vertical_scroller_3D - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov cx,16 - mov dx,[Scroller.length] - mov si,[Scroller.mouseX] - mov di,[Scroller.mouseY] - add ebx,17 - sub edx,17+17 - call CheckCrossingBox - - cmp eax,0xffffff - jne no_crossing_vertical_scroller_3D - - or [Scroller.type],sc_active - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_crossing_vertical_scroller_3D: - - ;is a vertical 3D scroller active ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_active - test al,al - jz no_vertical_scroller_active - - ;calculate size of scroll bar - xor eax,eax - mov ax,[Scroller.length] - sub eax,16+16 - mov [v],eax - fld [Scroller.size] - fild [v] - fmul st0,st1 - fistp [Scrollersize] - fstp [v] - - cmp [Scrollersize],4 - jae no_minimum_size_vertical_3D_scroller - - mov [Scrollersize],4 - no_minimum_size_vertical_3D_scroller: - - ;if scroller is not active than use this is coordinats. - xor eax,eax - mov ax,[Scroller.length] - sub eax,17+17 - sub eax,[Scrollersize] - mov [yo],eax - fld [Scroller.pos] - fild [yo] - fmul st0,st1 - fistp [v] - fstp [v2] - - xor eax,eax - mov ax,[Scroller.y] - add ax,17 - add eax,[v] - mov [ScrollBar.y],eax - - ;check button of mouse - mov eax,[ButtonsOfMouse] - and eax,1b - test al,al - jz no_vertical_scroller_move - ;calculate in pixels length of scroll bar - - xor eax,eax - xor edx,edx - xor ecx,ecx - mov ax,[Scroller.y] - mov cx,[Scroller.length] - mov dx,[Scroller.mouseY] - mov ebx,edx - add ecx,eax - add eax,17 - sub ecx,17 - mov esi,ecx - - sub ebx,eax - jns no_minimum_scroller_y - - mov [Scroller.mouseY],ax - no_minimum_scroller_y: - - sub ecx,edx - jns no_maximum_scroller_y - - mov [Scroller.mouseY],si - no_maximum_scroller_y: - - - mov eax,[Scrollersize] - shr eax,1 - xor ebx,ebx - mov bx,[Scroller.mouseY] - sub bx,[Scroller.y] - sub ebx,17 - xor ecx,ecx - mov cx,[Scroller.y] - add cx,[Scroller.length] - sub cx,17 - sub cx,[Scroller.mouseY] - - cmp ebx,eax - jae no_correct_y - xor edx,edx - mov dx,[Scroller.y] - add dx,17 - add edx,eax - no_correct_y: - - cmp ecx,eax - jae no_correct_y_ - xor edx,edx - mov dx,[Scroller.y] - add dx,[Scroller.length] - sub dx,17 - sub edx,eax - no_correct_y_: - - mov [ScrollBar.y],edx - sub [ScrollBar.y],eax - sub dx,[Scroller.y] - sub edx,17 - sub edx,eax - mov [v],edx - - shl eax,1 - xor ebx,ebx - mov bx,[Scroller.length] - sub ebx,17+17 - sub ebx,[Scrollersize] - mov [v2],ebx - - fild [v2] - fild [v] - fdiv st0,st1 - fstp [Scroller.pos] - fistp [v2] - - ;put 5 bit(scroll bar move) - or [Scroller.type],sc_scroll_bar_move - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - jmp no_vertical_scroller_active - no_vertical_scroller_move: - - no_vertical_scroller_active: - - ;if bit 7 is a true than redraw all scroller. - - xor eax,eax - mov al,[Scroller.type] - and al,sc_redraw - test al,al - jz no_redraw_all_vertical_scroller - - and [Scroller.type],sc_redraw_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - call DrawButtonsOfVertical3DScroller - - no_redraw_all_vertical_scroller: - - xor eax,eax - mov al,[Scroller.type] - and al,sc_scroll_bar_move - test al,al - jz no_move_vertical_scroller_bar_3D - - xor eax,eax - mov ax,[Scroller.x] - mov ebx,[ScrollBar.y] - mov ecx,[Scrollersize] - call DrawVertical3DScrollBar - - and [Scroller.type],sc_scroll_bar_move_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_move_vertical_scroller_bar_3D: - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov cx,16 - mov dx,[Scroller.length] - mov si,[Scroller.mouseX] - mov di,[Scroller.mouseY] - add ebx,17 - sub edx,17+17 - call CheckCrossingBox - - cmp eax,0xffffff - jne no_crossing_vertical_scroller_3D_ - - or [Scroller.type],sc_active - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - jmp exit_crossing_vertical_scroller_3D - no_crossing_vertical_scroller_3D_: - - ;check button of mouse - mov eax,[ButtonsOfMouse] - - and eax,1b - test al,al - jnz mouse_button_pressed_vertical - - and [Scroller.type],sc_move_active_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - mouse_button_pressed_vertical: - - exit_crossing_vertical_scroller_3D: - - - xor eax,eax - mov al,[Scroller.type] - and al,sc_active - test al,al - jz no_change_vertical_scroller_3D - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.mouseX] - - sub eax,ebx - jns no_signum_1 - neg eax - no_signum_1: - - cmp eax,110 - jle no_change_bits_vertical_scroller_3D - - and [Scroller.type],sc_move_active_off - no_change_bits_vertical_scroller_3D: - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_change_vertical_scroller_3D: - - no_vertical_scroller_3D: - - ;****************Horinzontal scroller************** - - ;is a horizontal 3D scroller ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_horizontal - test al,al - jz no_horizontal_scroller_3D - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov cx,[Scroller.length] - mov dx,16 - mov si,[Scroller.mouseX] - mov di,[Scroller.mouseY] - add eax,17 - sub ecx,17+17 - call CheckCrossingBox - - cmp eax,0xffffff - jne no_crossing_horizontal_scroller_3D - - or [Scroller.type],sc_active - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_crossing_horizontal_scroller_3D: - - ;is a vertical 3D scroller active ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_active - test al,al - jz no_horizontal_scroller_active - - ;calculate size of scroll bar - xor eax,eax - mov ax,[Scroller.length] - sub eax,16+16 - mov [v],eax - fld [Scroller.size] - fild [v] - fmul st0,st1 - fistp [Scrollersize] - fstp [v] - - cmp [Scrollersize],4 - jae no_minimum_size_horizontal_3D_scroller - - mov [Scrollersize],4 - no_minimum_size_horizontal_3D_scroller: - - ;if scroller is not active than use this is coordinats. - xor eax,eax - mov ax,[Scroller.length] - sub eax,17+17 - sub eax,[Scrollersize] - mov [xo],eax - fld [Scroller.pos] - fild [xo] - fmul st0,st1 - fistp [v] - fstp [v2] - - xor eax,eax - mov ax,[Scroller.x] - add ax,17 - add eax,[v] - mov [ScrollBar.x],eax - - ;check button of mouse - mov eax,[ButtonsOfMouse] - - and eax,1b - test al,al - jz no_horizontal_scroller_move - ;calculate in pixels length of scroll bar - - xor eax,eax - xor edx,edx - xor ecx,ecx - mov ax,[Scroller.x] - mov cx,[Scroller.length] - mov dx,[Scroller.mouseX] - mov ebx,edx - add ecx,eax - add eax,17 - sub ecx,17 - mov esi,ecx - - sub ebx,eax - jns no_minimum_scroller_x_ - - mov [Scroller.mouseX],ax - no_minimum_scroller_x_: - - sub ecx,edx - jns no_maximum_scroller_x_ - - mov [Scroller.mouseX],si - no_maximum_scroller_x_: - - - mov eax,[Scrollersize] - shr eax,1 - xor ebx,ebx - mov bx,[Scroller.mouseX] - sub bx,[Scroller.x] - sub ebx,17 - xor ecx,ecx - mov cx,[Scroller.x] - add cx,[Scroller.length] - sub cx,17 - sub cx,[Scroller.mouseX] - - cmp ebx,eax - jae no_correct_x_ - xor edx,edx - mov dx,[Scroller.x] - add dx,17 - add edx,eax - no_correct_x_: - - cmp ecx,eax - jae no_correct_x__ - xor edx,edx - mov dx,[Scroller.x] - add dx,[Scroller.length] - sub dx,17 - sub edx,eax - no_correct_x__: - - mov [ScrollBar.x],edx - sub [ScrollBar.x],eax - sub dx,[Scroller.x] - sub edx,17 - sub edx,eax - mov [v],edx - - xor ebx,ebx - mov bx,[Scroller.length] - sub ebx,17+17 - sub ebx,[Scrollersize] - mov [v2],ebx - - fild [v2] - fild [v] - fdiv st0,st1 - fstp [Scroller.pos] - fistp [v2] - - ;put 5 bit(scroll bar move) - or [Scroller.type],sc_scroll_bar_move - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - jmp no_horizontal_scroller_active - no_horizontal_scroller_move: - - no_horizontal_scroller_active: - - ;if bit 7 is a true than redraw all scroller. - - xor eax,eax - mov al,[Scroller.type] - and al,sc_redraw - test al,al - jz no_redraw_all_horizontal_scroller - - and [Scroller.type],sc_redraw_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - call DrawButtonsOfHorizontal3DScroller - - no_redraw_all_horizontal_scroller: - - xor eax,eax - mov al,[Scroller.type] - and al,sc_scroll_bar_move - test al,al - jz no_move_horizontal_scroller_bar_3D - - xor ebx,ebx - mov bx,[Scroller.y] - mov eax,[ScrollBar.x] - mov ecx,[Scrollersize] - call DrawHorizontal3DScrollBar - - and [Scroller.type],sc_scroll_bar_move_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_move_horizontal_scroller_bar_3D: - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov dx,16 - mov cx,[Scroller.length] - mov si,[Scroller.mouseX] - mov di,[Scroller.mouseY] - add eax,17 - sub ecx,17+17 - call CheckCrossingBox - - cmp eax,0xffffff - jne no_crossing_horizontal_scroller_3D_ - - or [Scroller.type],sc_active - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - jmp exit_crossing_horizontal_scroller_3D - no_crossing_horizontal_scroller_3D_: - - ;check button of mouse - mov eax,[ButtonsOfMouse] - - and eax,1b - test al,al - jnz mouse_button_pressed_horizontal - - and [Scroller.type],sc_move_active_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - mouse_button_pressed_horizontal: - - exit_crossing_horizontal_scroller_3D: - - - xor eax,eax - mov al,[Scroller.type] - and al,sc_active - test al,al - jz no_change_horizontal_scroller_3D - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.y] - mov bx,[Scroller.mouseY] - - sub eax,ebx - jns no_signum_1_x - neg eax - no_signum_1_x: - - cmp eax,110 - jle no_change_bits_horizontal_scroller_3D - - and [Scroller.type],sc_move_active_off - no_change_bits_horizontal_scroller_3D: - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_change_horizontal_scroller_3D: - - no_horizontal_scroller_3D: - - no_3D_scroller: - - ;**************************************************** - ;********************2D scrollers********************* - ;**************************************************** - - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_3D_type - test al,al - jnz no_2D_scroller - - mov eax,[Scroller.color1] - mov ebx,0xffffff - mov ecx,16 - mov edx,dword pointer - call gradient - - mov eax,[pointer+9] - and eax,0xffffff - mov [Color],eax - - mov eax,[pointer] - mov ebx,0xffffff - call calculate_average_color - mov [AveregeColor],eax - - ;is a vertical 2D scroller ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz no_vertical_scroller_2D - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov cx,16 - mov dx,[Scroller.length] - mov si,[Scroller.mouseX] - mov di,[Scroller.mouseY] - add ebx,17 - sub edx,17+17 - call CheckCrossingBox - - cmp eax,0xffffff - jne no_crossing_vertical_scroller_2D - - or [Scroller.type],sc_active - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_crossing_vertical_scroller_2D: - - ;is a vertical 2D scroller active ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_active - test al,al - jz no_vertical_scroller_active_2D - - ;calculate size of scroll bar - xor eax,eax - mov ax,[Scroller.length] - sub eax,16+16 - mov [v],eax - fld [Scroller.size] - fild [v] - fmul st0,st1 - fistp [Scrollersize] - fstp [v] - - cmp [Scrollersize],4 - jae no_minimum_size_vertical_2D_scroller - - mov [Scrollersize],4 - no_minimum_size_vertical_2D_scroller: - - ;if scroller is not active than use this is coordinats. - xor eax,eax - mov ax,[Scroller.length] - sub eax,17+17 - sub eax,[Scrollersize] - mov [yo],eax - fld [Scroller.pos] - fild [yo] - fmul st0,st1 - fistp [v] - fstp [v2] - - xor eax,eax - mov ax,[Scroller.y] - add ax,16 - add eax,[v] - mov [ScrollBar.y],eax - - ;check button of mouse - mov eax,[ButtonsOfMouse] - - and eax,1b - test al,al - jz no_vertical_scroller_move_2D - ;calculate in pixels length of scroll bar - - xor eax,eax - xor edx,edx - xor ecx,ecx - mov ax,[Scroller.y] - mov cx,[Scroller.length] - mov dx,[Scroller.mouseY] - mov ebx,edx - add ecx,eax - add eax,17 - sub ecx,17 - mov esi,ecx - - sub ebx,eax - jns no_minimum_scroller_y_2D - - mov [Scroller.mouseY],ax - no_minimum_scroller_y_2D: - - sub ecx,edx - jns no_maximum_scroller_y_2D - - mov [Scroller.mouseY],si - no_maximum_scroller_y_2D: - - - mov eax,[Scrollersize] - shr eax,1 - xor ebx,ebx - mov bx,[Scroller.mouseY] - sub bx,[Scroller.y] - sub ebx,17 - xor ecx,ecx - mov cx,[Scroller.y] - add cx,[Scroller.length] - sub cx,17 - sub cx,[Scroller.mouseY] - - cmp ebx,eax - jae no_correct_y_2D_ - xor edx,edx - mov dx,[Scroller.y] - add dx,16 - add edx,eax - no_correct_y_2D_: - - cmp ecx,eax - jae no_correct_y_2D - xor edx,edx - mov dx,[Scroller.y] - add dx,[Scroller.length] - sub dx,16 - sub edx,eax - no_correct_y_2D: - - mov [ScrollBar.y],edx - sub [ScrollBar.y],eax - sub dx,[Scroller.y] - sub edx,16 - sub edx,eax - mov [v],edx - - shl eax,1 - xor ebx,ebx - mov bx,[Scroller.length] - sub ebx,16+16 - sub ebx,[Scrollersize] - mov [v2],ebx - - fild [v2] - fild [v] - fdiv st0,st1 - fstp [Scroller.pos] - fistp [v2] - - ;put 5 bit(scroll bar move) - or [Scroller.type],sc_scroll_bar_move - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - jmp no_vertical_scroller_active_2D - no_vertical_scroller_move_2D: - - no_vertical_scroller_active_2D: - - ;if bit 7 is a true than redraw all scroller. - - xor eax,eax - mov al,[Scroller.type] - and al,sc_redraw - test al,al - jz no_redraw_all_vertical_scroller_2D - - and [Scroller.type],sc_redraw_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - call DrawButtonsOf2DVerticalScroller - - no_redraw_all_vertical_scroller_2D: - - xor eax,eax - mov al,[Scroller.type] - and al,sc_scroll_bar_move - test al,al - jz no_move_vertical_scroller_bar_2D - - xor eax,eax - mov ax,[Scroller.x] - mov ebx,[ScrollBar.y] - mov ecx,[Scrollersize] - call DrawVertical2DScrollBar - - and [Scroller.type],sc_scroll_bar_move_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_move_vertical_scroller_bar_2D: - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov cx,16 - mov dx,[Scroller.length] - mov si,[Scroller.mouseX] - mov di,[Scroller.mouseY] - add ebx,17 - sub edx,17+17 - call CheckCrossingBox - - cmp eax,0xffffff - jne no_crossing_vertical_scroller_2D_ - - or [Scroller.type],sc_active - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - jmp exit_crossing_vertical_scroller_2D - no_crossing_vertical_scroller_2D_: - - ;check button of mouse - mov eax,[ButtonsOfMouse] - - and eax,1b - test al,al - jnz mouse_button_pressed_vertical_2D - - and [Scroller.type],sc_move_active_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - mouse_button_pressed_vertical_2D: - - exit_crossing_vertical_scroller_2D: - - - xor eax,eax - mov al,[Scroller.type] - and al,sc_active - test al,al - jz no_change_vertical_scroller_2D - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.mouseX] - - sub eax,ebx - jns no_signum_1_y_2D - neg eax - no_signum_1_y_2D: - - cmp eax,110 - jle no_change_bits_vertical_scroller_2D - - and [Scroller.type],sc_move_active_off - no_change_bits_vertical_scroller_2D: - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_change_vertical_scroller_2D: - - no_vertical_scroller_2D: - - ;****************Horinzontal scroller************** - - ;is a horizontal 2D scroller ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_horizontal - test al,al - jz no_horizontal_scroller_2D - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov cx,[Scroller.length] - mov dx,16 - mov si,[Scroller.mouseX] - mov di,[Scroller.mouseY] - add eax,17 - sub ecx,17+17 - call CheckCrossingBox - - cmp eax,0xffffff - jne no_crossing_horizontal_scroller_2D - - or [Scroller.type],sc_active - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_crossing_horizontal_scroller_2D: - - ;is a vertical 3D scroller active ? - xor eax,eax - mov al,[Scroller.type] - and al,sc_active - test al,al - jz no_horizontal_scroller_active_2D - - ;calculate size of scroll bar - xor eax,eax - mov ax,[Scroller.length] - sub eax,16+16 - mov [v],eax - fld [Scroller.size] - fild [v] - fmul st0,st1 - fistp [Scrollersize] - fstp [v] - - cmp [Scrollersize],4 - jae no_minimum_size_horizontal_2D_scroller - - mov [Scrollersize],4 - no_minimum_size_horizontal_2D_scroller: - - ;if scroller is not active than use this is coordinats. - xor eax,eax - mov ax,[Scroller.length] - sub eax,17+17 - sub eax,[Scrollersize] - mov [yo],eax - fld [Scroller.pos] - fild [yo] - fmul st0,st1 - fistp [v] - fstp [v2] - - xor eax,eax - mov ax,[Scroller.x] - add ax,16 - add eax,[v] - mov [ScrollBar.x],eax - - ;check button of mouse - mov eax,[ButtonsOfMouse] - - and eax,1b - test al,al - jz no_horizontal_scroller_move_2D - ;calculate in pixels length of scroll bar - - xor eax,eax - xor edx,edx - xor ecx,ecx - mov ax,[Scroller.x] - mov cx,[Scroller.length] - mov dx,[Scroller.mouseX] - mov ebx,edx - add ecx,eax - add eax,17 - sub ecx,17 - mov esi,ecx - - sub ebx,eax - jns no_minimum_scroller_x_2D - - mov [Scroller.mouseX],ax - no_minimum_scroller_x_2D: - - sub ecx,edx - jns no_maximum_scroller_x_2D - - mov [Scroller.mouseX],si - no_maximum_scroller_x_2D: - - - mov eax,[Scrollersize] - shr eax,1 - xor ebx,ebx - mov bx,[Scroller.mouseX] - sub bx,[Scroller.x] - sub ebx,17 - xor ecx,ecx - mov cx,[Scroller.x] - add cx,[Scroller.length] - sub cx,17 - sub cx,[Scroller.mouseX] - - cmp ebx,eax - jae no_correct_x_2D - xor edx,edx - mov dx,[Scroller.x] - add dx,16 - add edx,eax - no_correct_x_2D: - - cmp ecx,eax - jae no_correct_x__2D - xor edx,edx - mov dx,[Scroller.x] - add dx,[Scroller.length] - sub dx,16 - sub edx,eax - no_correct_x__2D: - - mov [ScrollBar.x],edx - sub [ScrollBar.x],eax - sub dx,[Scroller.x] - sub edx,16 - sub edx,eax - mov [v],edx - - xor ebx,ebx - mov bx,[Scroller.length] - sub ebx,16+16 - sub ebx,[Scrollersize] - mov [v2],ebx - - fild [v2] - fild [v] - fdiv st0,st1 - fstp [Scroller.pos] - fistp [v2] - - ;put 5 bit(scroll bar move) - or [Scroller.type],sc_scroll_bar_move - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - jmp no_horizontal_scroller_active_2D - no_horizontal_scroller_move_2D: - - no_horizontal_scroller_active_2D: - - ;if bit 7 is a true than redraw all scroller. - - xor eax,eax - mov al,[Scroller.type] - and al,sc_redraw - test al,al - jz no_redraw_all_horizontal_scroller_2D - - and [Scroller.type],sc_redraw_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - call DrawButtonsOf2DHorizontalScroller - - no_redraw_all_horizontal_scroller_2D: - - xor eax,eax - mov al,[Scroller.type] - and al,sc_scroll_bar_move - test al,al - jz no_move_horizontal_scroller_bar_2D - - xor ebx,ebx - mov bx,[Scroller.y] - mov eax,[ScrollBar.x] - mov ecx,[Scrollersize] - call DrawHorizontal2DScrollBar - - and [Scroller.type],sc_scroll_bar_move_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_move_horizontal_scroller_bar_2D: - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov dx,16 - mov cx,[Scroller.length] - mov si,[Scroller.mouseX] - mov di,[Scroller.mouseY] - add eax,17 - sub ecx,17+17 - call CheckCrossingBox - - cmp eax,0xffffff - jne no_crossing_horizontal_scroller_2D_ - - or [Scroller.type],sc_active - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - jmp exit_crossing_horizontal_scroller_2D - no_crossing_horizontal_scroller_2D_: - - ;check button of mouse - mov eax,[ButtonsOfMouse] - - and eax,1b - test al,al - jnz mouse_button_pressed_horizontal_2D - - and [Scroller.type],sc_move_active_off - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - mouse_button_pressed_horizontal_2D: - - exit_crossing_horizontal_scroller_2D: - - - xor eax,eax - mov al,[Scroller.type] - and al,sc_active - test al,al - jz no_change_horizontal_scroller_2D - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.y] - mov bx,[Scroller.mouseY] - - sub eax,ebx - jns no_signum_1_x_2D - neg eax - no_signum_1_x_2D: - - cmp eax,110 - jle no_change_bits_horizontal_scroller_2D - - and [Scroller.type],sc_move_active_off - no_change_bits_horizontal_scroller_2D: - - mov esi,dword Scroller - mov edi,[PointerForScroller] - add esi,control_header_size - add edi,control_header_size - mov ecx,sc_control_data_size - rep movsb - - no_change_horizontal_scroller_2D: - - no_horizontal_scroller_2D: - - no_2D_scroller: - - ;checking to mouse events - cmp [Message],dword 6 - jne no_send_message_to_child_buttons_of_scroller - - ;checking first child button - mov eax,[Scroller.ChildButton1] - mov ebx,[eax] - - push Message - push eax - call ebx - - mov eax,[Scroller.ChildButton1] - - xor ebx,ebx - mov bl,[eax+45] - and bl,bt_crossing - test bl,bl - jz no_crossing_first_child_button_of_scroller - - xor ebx,ebx - mov bl,[eax+45] - and bl,10b - test bl,bl - jz no_crossing_first_child_button_of_scroller - - or [Scroller.buttons_flags],sc_first_child_button_pressed - or [Scroller.buttons_flags],10b - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [x],eax - mov [y],ebx - - ;-------------------------------------- - ;---Checking stcroler to 2D or 3D types - ;-------------------------------------- - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_3D_type - test al,al - jnz type_3D_first_child_button_crossing - - ;if we here than scroller 2D type - - ;---------------------------------------------------- - ;---Chcecking scroller to horizontal or vertical types - ;---------------------------------------------------- - - call DrawPressedButtonOf2DScroller - - jmp else_type_3D_first_child_button_crossing - - type_3D_first_child_button_crossing: - - ;if we here than scroller 3D type - - call DrawPressedButtonOf3DScroller - - else_type_3D_first_child_button_crossing: - - jmp crossing_first_child_button_of_scroller - no_crossing_first_child_button_of_scroller: - - and [Scroller.buttons_flags],sc_first_child_button_pressed_off - - xor eax,eax - mov ax,[Scroller.buttons_flags] - and ax,10b - test ax,ax - jz no_put_first_child_button - - ;-------------------------------------- - ;---Checking stcroler to 2D or 3D types - ;-------------------------------------- - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_3D_type - test al,al - jnz type_3D_first_child_button_not_crossing - - ;if we here than scroller 2D type - - ;---------------------------------------------------- - ;---Chcecking scroller to horizontal or vertical types - ;---------------------------------------------------- - - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz type_horizontal_first_child_2D_button - - ;put vertical first child button - call DrawButtonsOf2DVerticalScroller - - jmp exit_else_type_horizontal_first_child_2D_button - type_horizontal_first_child_2D_button: - - ;put horizontal first child button - call DrawButtonsOf2DVerticalScroller - - exit_else_type_horizontal_first_child_2D_button: - - jmp else_type_3D_first_child_button_not_crossing - - type_3D_first_child_button_not_crossing: - - ;if we here than scroller 3D type - - ;---------------------------------------------------- - ;---Chcecking scroller to horizontal or vertical types - ;---------------------------------------------------- - - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz type_horizontal_first_child_3D_button - - ;put vertical first child button - call DrawButtonsOfVertical3DScroller - - jmp else_type_3D_first_child_button_not_crossing - - type_horizontal_first_child_3D_button: - - ;put horizontal first child button - call DrawButtonsOfHorizontal3DScroller - - else_type_3D_first_child_button_not_crossing: - - and [Scroller.buttons_flags],11111101b - - no_put_first_child_button: - - crossing_first_child_button_of_scroller: - - ;checking second child button - mov eax,[Scroller.ChildButton2] - mov ebx,[eax] - - push Message - push eax - call ebx - - mov eax,[Scroller.ChildButton2] - - xor ebx,ebx - mov bl,[eax+45] - and bl,bt_crossing - test bl,bl - jz no_crossing_second_child_button_of_scroller - - xor ebx,ebx - mov bl,[eax+45] - and bl,10b - test bl,bl - jz no_crossing_second_child_button_of_scroller - - or [Scroller.buttons_flags],sc_second_child_button_pressed - or [Scroller.buttons_flags],100000b - - xor eax,eax - xor ebx,ebx - xor ecx,ecx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [x],eax - mov [y],ebx - - mov cx,[Scroller.length] - sub ecx,16 - - ;---------------------------------------------------- - ;---Chcecking scroller to horizontal or vertical types - ;---------------------------------------------------- - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz calculate_pos_horizontal_second_child_button - - add [y],ecx - - jmp exit_else_calculate_pos_horizontal_second_child_button - calculate_pos_horizontal_second_child_button: - - add [x],ecx - - exit_else_calculate_pos_horizontal_second_child_button: - - ;-------------------------------------- - ;---Checking stcroler to 2D or 3D types - ;-------------------------------------- - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_3D_type - test al,al - jnz type_3D_second_child_button_crossing - - ;if we here than scroller 2D type - - ;---------------------------------------------------- - ;---Chcecking scroller to horizontal or vertical types - ;---------------------------------------------------- - - call DrawPressedButtonOf2DScroller - - jmp else_type_3D_second_child_button_crossing - - type_3D_second_child_button_crossing: - - ;if we here than scroller 3D type - - call DrawPressedButtonOf3DScroller - - else_type_3D_second_child_button_crossing: - - jmp crossing_second_child_button_of_scroller - no_crossing_second_child_button_of_scroller: - - and [Scroller.buttons_flags],sc_second_child_button_pressed_off - - xor eax,eax - mov ax,[Scroller.buttons_flags] - and ax,100000b - test ax,ax - jz no_put_second_child_button - - ;-------------------------------------- - ;---Checking stcroler to 2D or 3D types - ;-------------------------------------- - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_3D_type - test al,al - jnz type_3D_second_child_button_not_crossing - - ;if we here than scroller 2D type - - ;---------------------------------------------------- - ;---Chcecking scroller to horizontal or vertical types - ;---------------------------------------------------- - - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz type_horizontal_second_child_2D_button - - ;put vertical first child button - call DrawButtonsOf2DVerticalScroller - - jmp exit_else_type_horizontal_second_child_2D_button - type_horizontal_second_child_2D_button: - - ;put horizontal first child button - call DrawButtonsOf2DVerticalScroller - - exit_else_type_horizontal_second_child_2D_button: - - jmp else_type_3D_second_child_button_not_crossing - - type_3D_second_child_button_not_crossing: - - ;if we here than scroller 3D type - - ;---------------------------------------------------- - ;---Chcecking scroller to horizontal or vertical types - ;---------------------------------------------------- - - xor eax,eax - mov al,[Scroller.type] - and al,sc_check_vertical - test al,al - jz type_horizontal_second_child_3D_button - - ;put vertical first child button - call DrawButtonsOfVertical3DScroller - - jmp else_type_3D_second_child_button_not_crossing - - type_horizontal_second_child_3D_button: - - ;put horizontal first child button - call DrawButtonsOfHorizontal3DScroller - - else_type_3D_second_child_button_not_crossing: - - and [Scroller.buttons_flags],11011111b - - no_put_second_child_button: - - crossing_second_child_button_of_scroller: - - no_send_message_to_child_buttons_of_scroller: - - exit_scroller: - - ;save resultat of work in control - mov esi,dword Scroller - mov edi,[PointerForScroller] - mov ecx,sc_control_data_size - add esi,control_header_size - add edi,control_header_size - rep movsb - - ret 8 - - -DrawPressedButtonOf2DScroller: - - and [Line.color],0;eax - - ;draw horizontal up light line - mov eax,[x] - mov ebx,[y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - ;draw vertical up light line - mov eax,[x] - mov ebx,[y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],14 - call DrawLine - - ;mov eax,[colors_table2+8*3] - ;and eax,0xffffff - mov [Line.color],0xffffff ;eax - - ;draw vertical up dark line - mov eax,[x] - mov ebx,[y] - add eax,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - ;draw horizontal up dark line - mov eax,[x] - mov ebx,[y] - add ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - ret - -DrawPressedButtonOf3DScroller: - - and [Line.color],0;eax - - ;draw horizontal up light line - mov eax,[x] - mov ebx,[y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],16 - call DrawLine - - ;draw vertical up light line - mov eax,[x] - mov ebx,[y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],16 - call DrawLine - - ;mov eax,[colors_table2+8*3] - ;and eax,0xffffff - mov [Line.color],0xffffff ;eax - - ;draw vertical up dark line - mov eax,[x] - mov ebx,[y] - add eax,16 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],16 - call DrawLine - - ;draw horizontal up dark line - mov eax,[x] - mov ebx,[y] - add ebx,16 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],16 - call DrawLine - - ret - -DrawButtonsOf2DHorizontalScroller: - - ;generate colors tables - mov eax,[Scroller.color1] - mov ebx,0xffffff - mov ecx,20 - mov edx,dword colors_table1 - call gradient - - xor eax,eax - mov ebx,[Scroller.color1] - mov ecx,20 - mov edx,dword colors_table2 - call gradient - - ;draw vertical up rectangle - xor ebx,ebx - xor ecx,ecx - mov eax,13 - mov bx,[Scroller.x] - mov cx,[Scroller.y] - shl ebx,16 - shl ecx,16 - add ebx,16 - add ecx,16 - mov edx,[Color] - and edx,0xffffff - mcall - - mov eax,[colors_table1+15*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw horizontal up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - ;draw vertical up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - mov eax,[colors_table2+8*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw vertical up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - ;draw horizontal up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],14 - call DrawLine - - and [Line.color],0 - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],5 - add [Line.x2],9 - add [Line.y1],8 - add [Line.y2],4 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],6 - add [Line.x2],9 - add [Line.y1],8 - add [Line.y2],5 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],5 - add [Line.x2],9 - add [Line.y1],8 - add [Line.y2],12 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],6 - add [Line.x2],9 - add [Line.y1],8 - add [Line.y2],11 - call DrawLine - - ;draw vertical down rectangle - xor ebx,ebx - xor ecx,ecx - mov eax,13 - mov edx,[Color] - mov bx,[Scroller.x] - mov cx,[Scroller.y] - add bx,[Scroller.length] - sub bx,16 - shl ebx,16 - shl ecx,16 - add ebx,16 - add ecx,16 - and edx,0xffffff - mcall - - mov eax,[colors_table1+15*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw horizontal up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ax,[Scroller.length] - sub eax,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - ;draw vertical up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ax,[Scroller.length] - sub eax,16 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - mov eax,[colors_table2+8*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw vertical up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ax,[Scroller.length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - ;draw horizontal up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ax,[Scroller.length] - sub eax,15 - add ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - xor eax,eax - mov ax,[Scroller.length] - sub eax,16 - mov [length],eax - - and [Line.color],0 - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],12 - add [Line.x2],8 - add [Line.y1],8 - add [Line.y2],4 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],11 - add [Line.x2],8 - add [Line.y1],8 - add [Line.y2],5 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],12 - add [Line.x2],8 - add [Line.y1],8 - add [Line.y2],12 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],11 - add [Line.x2],8 - add [Line.y1],8 - add [Line.y2],11 - call DrawLine - - ret - -DrawButtonsOf2DVerticalScroller: - - ;generate colors tables - mov eax,[Scroller.color1] - mov ebx,0xffffff - mov ecx,20 - mov edx,dword colors_table1 - call gradient - - xor eax,eax - mov ebx,[Scroller.color1] - mov ecx,20 - mov edx,dword colors_table2 - call gradient - - ;draw vertical up rectangle - mov eax,13 - mov edx,[Color] - xor ebx,ebx - xor ecx,ecx - mov bx,[Scroller.x] - mov cx,[Scroller.y] - shl ebx,16 - shl ecx,16 - add ebx,16 - add ecx,16 - and edx,0xffffff - mcall - - mov eax,[colors_table1+15*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw horizontal up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],14 - call DrawLine - - ;draw vertical up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],14 - call DrawLine - - mov eax,[colors_table2+8*3];[pointer] - and eax,0xffffff - mov [Line.color],eax - - ;draw vertical up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - ;draw horizontal up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - and [Line.color],0 - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],4 - add [Line.x2],8 - add [Line.y1],9 - add [Line.y2],5 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],4 - add [Line.x2],8 - add [Line.y1],10 - add [Line.y2],6 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],8 - add [Line.x2],12 - add [Line.y1],5 - add [Line.y2],9 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],8 - add [Line.x2],12 - add [Line.y1],6 - add [Line.y2],10 - call DrawLine - - ;draw vertical down rectangle - xor ebx,ebx - xor ecx,ecx - mov eax,13 - mov edx,[Color] - and edx,0xffffff - mov bx,[Scroller.x] - mov cx,[Scroller.y] - add cx,[Scroller.length] - sub cx,16 - shl ebx,16 - shl ecx,16 - add ebx,16 - add ecx,16 - mcall - - mov eax,[colors_table1+15*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw horizontal up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add bx,[Scroller.length] - sub ebx,16 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - ;draw vertical up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add bx,[Scroller.length] - sub ebx,16 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - mov eax,[colors_table2+8*3];[pointer] - and eax,0xffffff - mov [Line.color],eax - - ;draw vertical up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add bx,[Scroller.length] - sub ebx,16 - add eax,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - ;draw horizontal up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add bx,[Scroller.length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - xor eax,eax - mov ax,[Scroller.length] - sub eax,16 - mov [length],eax - - and [Line.color],0 - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],4 - add [Line.x2],8 - add [Line.y1],7 - add [Line.y2],11 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],4 - add [Line.x2],8 - add [Line.y1],6 - add [Line.y2],10 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],12 - add [Line.x2],8 - add [Line.y1],7 - add [Line.y2],11 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],12 - add [Line.x2],8 - add [Line.y1],6 - add [Line.y2],10 - call DrawLine - - ret - -DrawButtonsOfHorizontal3DScroller: - - ;draw vertical up rectangle - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Rectangle.x],eax - mov [Rectangle.y],ebx - mov [Rectangle.width],16 - mov [Rectangle.height],16 - - mov eax,[pointer] - and eax,0xffffff - mov [Rectangle.color],eax - call RectangleContour - - ;draw gradient right - mov eax,[Scroller.color1] - mov ebx,dword 0xffffff - and eax,0xffffff - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov cx,[Scroller.x] - mov dx,[Scroller.y] - mov si,(16-1) - mov di,(16-2) - add cx,1 - add dx,1 - call rectangle_gradient_up - - mov eax,[pointer+10*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw horizontal up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],14 - call DrawLine - - ;draw vertical up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],14 - call DrawLine - - mov eax,[Color] - mov [Line.color],eax - - ;draw vertical up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,16 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y1],1 - add [Line.y2],14 - call DrawLine - - ;draw horizontal up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],14 - call DrawLine - - xor eax,eax - mov eax,[AveregeColor] - mov [Pixel.color],eax - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - mov ax,[Scroller.x] - add eax,16 - mov [Pixel.x],eax - call DrawPixel - - xor eax,eax - mov ax,[Scroller.x] - mov [Pixel.x],eax - add [Pixel.y],16 - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,16 - add ebx,16 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;---------------- - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,15 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - add ebx,15 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov [Line.color],0 - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],5 - add [Line.x2],9 - add [Line.y1],8 - add [Line.y2],4 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],6 - add [Line.x2],9 - add [Line.y1],8 - add [Line.y2],5 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],5 - add [Line.x2],9 - add [Line.y1],8 - add [Line.y2],12 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],6 - add [Line.x2],9 - add [Line.y1],8 - add [Line.y2],11 - call DrawLine - - ;draw vertical down rectangle - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ax,[Scroller.length] - sub ax,16 - mov [Rectangle.x],eax - mov [Rectangle.y],ebx - mov [Rectangle.width],16 - mov [Rectangle.height],16 - - mov eax,[pointer] - and eax,0xffffff - mov [Rectangle.color],eax - call RectangleContour - - ;draw gradient right - mov eax,[Scroller.color1] - mov ebx,dword 0xffffff - and eax,0xffffff - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov cx,[Scroller.x] - mov dx,[Scroller.y] - add cx,[Scroller.length] - sub cx,16 - mov si,(16-1) - mov di,(16-2) - add cx,1 - add dx,1 - call rectangle_gradient_up - - mov eax,[pointer+10*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw horizontal up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ax,[Scroller.length] - sub eax,15 - add ebx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - ;draw vertical up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,1 - add ax,[Scroller.length] - sub eax,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],14 - call DrawLine - - mov eax,[Color];[pointer] - mov [Line.color],eax - - ;draw vertical up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ax,[Scroller.length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - ;draw horizontal up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ax,[Scroller.length] - sub eax,15 - add ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],14 - call DrawLine - - xor eax,eax - mov ax,[Scroller.length] - sub eax,16 - mov [length],eax - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - add [Pixel.x],16 - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,16 - add eax,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,16 - add ebx,16 - add eax,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;---------------- - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,1 - add eax,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - add ebx,1 - add eax,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,15 - add eax,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - add ebx,15 - add eax,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - mov ax,[Scroller.length] - sub eax,16 - mov [length],eax - - and [Line.color],0 - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],12 - add [Line.x2],8 - add [Line.y1],8 - add [Line.y2],4 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],11 - add [Line.x2],8 - add [Line.y1],8 - add [Line.y2],5 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],12 - add [Line.x2],8 - add [Line.y1],8 - add [Line.y2],12 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],11 - add [Line.x2],8 - add [Line.y1],8 - add [Line.y2],11 - call DrawLine - - ret - -DrawButtonsOfVertical3DScroller: - - ;draw vertical up rectangle - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Rectangle.x],eax - mov [Rectangle.y],ebx - mov [Rectangle.width],16 - mov [Rectangle.height],16 - - mov eax,[pointer] - and eax,0xffffff - mov [Rectangle.color],eax - call RectangleContour - - ;draw gradient right - mov eax,[Scroller.color1] - mov ebx,dword 0xffffff - and eax,0xffffff - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov cx,[Scroller.x] - mov dx,[Scroller.y] - mov si,(16-1) - mov di,(16-2) - add cx,1 - add dx,1 - call rectangle_gradient_right - - mov eax,[pointer+10*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw horizontal up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],14 - call DrawLine - - ;draw vertical up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],14 - call DrawLine - - mov eax,[Color] - mov [Line.color],eax - - ;draw vertical up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y1],1 - add [Line.y2],14 - call DrawLine - - ;draw horizontal up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],14 - call DrawLine - - xor eax,eax - mov eax,[AveregeColor] - mov [Pixel.color],eax - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - mov ax,[Scroller.x] - add eax,16 - mov [Pixel.x],eax - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,16 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,16 - add ebx,16 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;---------------- - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,15 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - add ebx,15 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - and [Line.color],0 - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],4 - add [Line.x2],8 - add [Line.y1],9 - add [Line.y2],5 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],4 - add [Line.x2],8 - add [Line.y1],10 - add [Line.y2],6 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],8 - add [Line.x2],12 - add [Line.y1],5 - add [Line.y2],9 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],8 - add [Line.x2],12 - add [Line.y1],6 - add [Line.y2],10 - call DrawLine - - ;draw vertical down rectangle - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add bx,[Scroller.length] - sub bx,16 - mov [Rectangle.x],eax - mov [Rectangle.y],ebx - mov [Rectangle.width],16 - mov [Rectangle.height],16 - - mov eax,[pointer] - and eax,0xffffff - mov [Rectangle.color],eax - call RectangleContour - - ;draw gradient right - mov eax,[Scroller.color1] - mov ebx,dword 0xffffff - and eax,0xffffff - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - mov cx,[Scroller.x] - mov dx,[Scroller.y] - add dx,[Scroller.length] - sub dx,(16-1) - mov si,(16-1) - mov di,(16-2) - add cx,1 - call rectangle_gradient_right - - mov eax,[pointer+10*3] - and eax,0xffffff - mov [Line.color],eax - - ;draw horizontal up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add bx,[Scroller.length] - sub ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],1 - add [Line.x2],15 - call DrawLine - - ;draw vertical up light line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add bx,[Scroller.length] - sub ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],14 - call DrawLine - - mov eax,[Color];[pointer] - mov [Line.color],eax - - ;draw vertical up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add bx,[Scroller.length] - sub ebx,15 - add eax,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],14 - call DrawLine - - ;draw horizontal up dark line - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add bx,[Scroller.length] - add eax,1 - sub ebx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],14 - call DrawLine - - xor eax,eax - mov ax,[Scroller.length] - sub eax,16 - mov [length],eax - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - mov ax,[Scroller.x] - add eax,16 - mov [Pixel.x],eax - call DrawPixel - - xor eax,eax - mov ax,[Scroller.x] - mov [Pixel.x],eax - add [Pixel.y],16 - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,16 - add ebx,16 - add ebx,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - ;---------------- - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,1 - add ebx,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - add ebx,1 - add ebx,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,1 - add ebx,15 - add ebx,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add eax,15 - add ebx,15 - add ebx,[length] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - xor eax,eax - mov ax,[Scroller.length] - sub eax,16 - mov [length],eax - - and [Line.color],0 - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],4 - add [Line.x2],8 - add [Line.y1],7 - add [Line.y2],11 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],4 - add [Line.x2],8 - add [Line.y1],6 - add [Line.y2],10 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],12 - add [Line.x2],8 - add [Line.y1],7 - add [Line.y2],11 - call DrawLine - - xor eax,eax - xor ebx,ebx - mov ax,[Scroller.x] - mov bx,[Scroller.y] - add ebx,[length] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x1],12 - add [Line.x2],8 - add [Line.y1],6 - add [Line.y2],10 - call DrawLine - - ret - -;eax - x -;ebx - y -;ecx - size y in pixels -DrawVertical3DScrollBar: - - mov [x],eax - mov [y],ebx - mov [length2],ecx - - mov eax,[x] - mov ebx,[y] - mov ecx,[length2] - mov edx,[pointer] - and edx,0xffffff - mov [Rectangle.x],eax - mov [Rectangle.y],ebx - mov [Rectangle.width],16 - mov [Rectangle.height],ecx - mov [Rectangle.color],edx - call RectangleContour - - ;draw gradient right - mov eax,[Scroller.color1] - mov ebx,dword 0xffffff - and eax,0xffffff - xor esi,esi - xor edi,edi - mov ecx,[x] - mov edx,[y] - add edx,1 - mov si,(16-1) - mov edi,[length2] - sub edi,2 - call rectangle_gradient_right - - ;------------------ - xor eax,eax - mov eax,[AveregeColor] - mov [Pixel.color],eax - - mov eax,[x] - mov ebx,[y] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - add eax,16 - mov [Pixel.x],eax - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add ebx,[length2] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add eax,16 - add ebx,[length2] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add eax,1 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add eax,15 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add eax,1 - add ebx,[length2] - sub ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add eax,16 - add ebx,[length2] - sub eax,1 - sub ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - cmp [length2],12 - jl no_draw_reliev_vertical_3D - - mov ebx,[x] - mov eax,[length2] - shr eax,1 - add eax,[y] - add ebx,5 - sub eax,3 - - mov [Line.x1],ebx - mov [Line.x2],ebx - mov [Line.y1],eax - mov [Line.y2],eax - mov [Line.color],0xffffff - add [Line.x2],6 - - mov esi,4 - next_light_line_draw_r_vertical_3D: - - call DrawLine - add [Line.y1],2 - add [Line.y2],2 - - dec esi - jnz next_light_line_draw_r_vertical_3D - - mov ebx,[x] - mov eax,[length2] - shr eax,1 - add eax,[y] - add ebx,6 - sub eax,2 - - mov ecx,[Scroller.color1] - mov [Line.x1],ebx - mov [Line.x2],ebx - mov [Line.y1],eax - mov [Line.y2],eax - mov [Line.color],ecx - add [Line.x2],6 - - mov esi,4 - next_dark_line_draw_r_vertical_3D: - - call DrawLine - add [Line.y1],2 - add [Line.y2],2 - - dec esi - jnz next_dark_line_draw_r_vertical_3D - - no_draw_reliev_vertical_3D: - - - xor eax,eax - mov ax,[Scroller.y] - mov ebx,[y] - add eax,17 - - sub ebx,eax - jz no_draw_up_rectangle_vertical_3D - js no_draw_up_rectangle_vertical_3D - - sub ebx,1 - - mov edi,ebx - - mov eax,0xe4e4e4 - mov ebx,0xffffff - xor edx,edx - mov ecx,[x] - mov dx,[Scroller.y] - add edx,17 - sub ecx,1 - mov esi,17 - call rectangle_gradient_right - no_draw_up_rectangle_vertical_3D: - - xor eax,eax - mov ax,[Scroller.y] - add ax,[Scroller.length] - mov ebx,[y] - add ebx,[length2] - sub eax,17 - - sub eax,ebx - jz no_draw_down_rectangle_vertical_3D - js no_draw_down_rectangle_vertical_3D - - sub eax,1 - mov edi,eax - - mov eax,0xe4e4e4 - mov ebx,0xffffff - mov ecx,[x] - xor edx,edx - mov edx,[y] - add edx,[length2] - add edx,1 - sub ecx,1 - mov esi,17 - call rectangle_gradient_right - - no_draw_down_rectangle_vertical_3D: - - ret - -;eax - x -;ebx - y -;ecx - size y in pixels -DrawHorizontal3DScrollBar: - - mov [x],eax - mov [y],ebx - mov [length2],ecx - - mov eax,[x] - mov ebx,[y] - mov ecx,[length2] - mov edx,[pointer] - and edx,0xffffff - mov [Rectangle.x],eax - mov [Rectangle.y],ebx - mov [Rectangle.width],ecx - mov [Rectangle.height],16 - mov [Rectangle.color],edx - call RectangleContour - - ;draw gradient right - mov eax,[Scroller.color1] - mov ebx,dword 0xffffff - and eax,0xffffff - xor esi,esi - xor edi,edi - mov ecx,[x] - mov edx,[y] - add ecx,1 - mov edi,(16-1) - mov esi,[length2] - sub esi,2 - call rectangle_gradient_up - - ;------------------ - xor eax,eax - mov eax,[AveregeColor] - mov [Pixel.color],eax - - mov eax,[x] - mov ebx,[y] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov ebx,[y] - add ebx,16 - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add eax,[length2] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add ebx,16 - add eax,[length2] - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add eax,1 - add ebx,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add ebx,15 - add eax,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add ebx,1 - add eax,[length2] - sub eax,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - mov eax,[x] - mov ebx,[y] - add ebx,15 - add eax,[length2] - sub eax,1 - mov [Pixel.x],eax - mov [Pixel.y],ebx - call DrawPixel - - cmp [length2],12 - jl no_draw_reliev_horizontal_3D - - mov ebx,[y] - mov eax,[length2] - shr eax,1 - add eax,[x] - add ebx,5 - sub eax,3 - - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - mov [Line.color],0xffffff - add [Line.y2],6 - - mov esi,4 - next_light_line_draw_r_horizontal_3D: - - call DrawLine - add [Line.x1],2 - add [Line.x2],2 - - dec esi - jnz next_light_line_draw_r_horizontal_3D - - mov ebx,[y] - mov eax,[length2] - shr eax,1 - add eax,[x] - add ebx,6 - sub eax,2 - - mov ecx,[Scroller.color1] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - mov [Line.color],ecx - add [Line.y2],6 - - mov esi,4 - next_dark_line_draw_r_horizontal_3D: - - call DrawLine - add [Line.x1],2 - add [Line.x2],2 - - dec esi - jnz next_dark_line_draw_r_horizontal_3D - - no_draw_reliev_horizontal_3D: - - - xor eax,eax - mov ax,[Scroller.x] - mov ebx,[x] - add eax,17 - - sub ebx,eax - jz no_draw_up_rectangle_horizontal_3D - js no_draw_up_rectangle_horizontal_3D - - sub ebx,1 - - mov esi,ebx - - mov eax,0xe4e4e4 - mov ebx,0xffffff - xor ecx,ecx - mov edx,[y] - mov cx,[Scroller.x] - add ecx,17 - sub edx,1 - mov edi,17 - call rectangle_gradient_up - no_draw_up_rectangle_horizontal_3D: - - xor eax,eax - mov ax,[Scroller.x] - add ax,[Scroller.length] - mov ebx,[x] - add ebx,[length2] - sub eax,17 - - sub eax,ebx - jz no_draw_down_rectangle_horizontal_3D - js no_draw_down_rectangle_horizontal_3D - - sub eax,1 - mov esi,eax - - mov eax,0xe4e4e4 - mov ebx,0xffffff - mov edx,[y] - xor ecx,ecx - mov ecx,[x] - add ecx,[length2] - add ecx,1 - sub edx,1 - mov edi,17 - call rectangle_gradient_up - - no_draw_down_rectangle_horizontal_3D: - - ret - -;eax - x -;ebx - y -;ecx - size y in pixels -DrawVertical2DScrollBar: - - mov [x],eax - mov [y],ebx - mov [length2],ecx - - mov eax,13 - mov edx,[Color] - mov ebx,[x] - mov ecx,[y] - shl ebx,16 - shl ecx,16 - add ebx,16 - add ecx,[length2] - and edx,0xffffff - mcall - - ;draw horizontal up light line - mov eax,[x] - mov ebx,[y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - mov ecx,[colors_table1+15*3] - and ecx,0xffffff - mov [Line.color],ecx - call DrawLine - - ;draw vertical up light line - mov eax,[x] - mov ebx,[y] - mov ecx,[length2] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - add [Line.y2],ecx - call DrawLine - - ;draw vertical up dark line - mov eax,[x] - mov ebx,[y] - add eax,15 - mov ecx,[length2] - sub ecx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],ecx - mov ecx,[colors_table2+8*3];[pointer] - and ecx,0xffffff - mov [Line.color],ecx - call DrawLine - - ;draw horizontal up dark line - mov eax,[x] - mov ebx,[y] - mov ecx,[length2] - add ebx,ecx - sub ebx,1 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],15 - call DrawLine - - - xor eax,eax - mov ax,[Scroller.y] - mov ebx,[y] - add eax,16 - - sub ebx,eax - jz no_draw_up_rectangle_vertical_2D - js no_draw_up_rectangle_vertical_2D - - mov edi,ebx - - xor ecx,ecx - mov eax,13 - mov edx,0xe4e4e4 - mov ebx,[x] - mov cx,[Scroller.y] - add ecx,16 - shl ebx,16 - shl ecx,16 - add ebx,16 - add ecx,edi - mcall - - no_draw_up_rectangle_vertical_2D: - - xor eax,eax - mov ax,[Scroller.y] - add ax,[Scroller.length] - mov ebx,[y] - add ebx,[length2] - sub eax,16 - - sub eax,ebx - jz no_draw_down_rectangle_vertical_2D - js no_draw_down_rectangle_vertical_2D - - ;sub eax,1 - mov edi,eax - - xor ecx,ecx - mov eax,13 - mov edx,0xe4e4e4 - mov ebx,[x] - mov ecx,[y] - add ecx,[length2] - shl ebx,16 - shl ecx,16 - add ebx,16 - add ecx,edi - mcall - - no_draw_down_rectangle_vertical_2D: - - ret - -;eax - x -;ebx - y -;ecx - size x in pixels -DrawHorizontal2DScrollBar: - - mov [x],eax - mov [y],ebx - mov [length2],ecx - - mov eax,13 - mov edx,[Color] - mov ebx,[x] - mov ecx,[y] - shl ebx,16 - shl ecx,16 - add ebx,[length2] - add ecx,16 - and edx,0xffffff - mcall - - ;draw horizontal up light line - mov eax,[x] - mov ebx,[y] - mov ecx,[length2] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - sub ecx,1 - add [Line.x2],ecx - mov ecx,[colors_table1+15*3] - and ecx,0xffffff - mov [Line.color],ecx - call DrawLine - - ;draw vertical up light line - mov eax,[x] - mov ebx,[y] - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - call DrawLine - - ;draw vertical up dark line - mov eax,[x] - mov ebx,[y] - mov ecx,[length2] - sub ecx,1 - add eax,ecx - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.y2],15 - mov ecx,[colors_table2+8*3];[pointer] - and ecx,0xffffff - mov [Line.color],ecx - call DrawLine - - ;draw horizontal up dark line - mov eax,[x] - mov ebx,[y] - mov ecx,[length2] - sub ecx,1 - add ebx,15 - mov [Line.x1],eax - mov [Line.x2],eax - mov [Line.y1],ebx - mov [Line.y2],ebx - add [Line.x2],ecx - call DrawLine - - - xor eax,eax - mov ax,[Scroller.x] - mov ebx,[x] - add eax,16 - - sub ebx,eax - jz no_draw_up_rectangle_horizontal_2D - js no_draw_up_rectangle_horizontal_2D - - mov edi,ebx - - xor ecx,ecx - xor ebx,ebx - mov eax,13 - mov edx,0xe4e4e4 - mov bx,[Scroller.x] - mov cx,[Scroller.y] - add ebx,16 - shl ebx,16 - shl ecx,16 - add ecx,16 - add ebx,edi - mcall - - no_draw_up_rectangle_horizontal_2D: - - xor eax,eax - mov ax,[Scroller.x] - add ax,[Scroller.length] - mov ebx,[x] - add ebx,[length2] - sub eax,16 - - sub eax,ebx - jz no_draw_down_rectangle_horizontal_2D - js no_draw_down_rectangle_horizontal_2D - - ;sub eax,1 - mov edi,eax - - xor ecx,ecx - mov eax,13 - mov edx,0xe4e4e4 - mov ebx,[x] - mov ecx,[y] - add ebx,[length2] - shl ebx,16 - shl ecx,16 - add ebx,edi - add ecx,16 - mcall - - no_draw_down_rectangle_horizontal_2D: - - ret diff --git a/programs/develop/libGUI/src/string.inc b/programs/develop/libGUI/src/string.inc deleted file mode 100644 index 1f0b8d2ef9..0000000000 --- a/programs/develop/libGUI/src/string.inc +++ /dev/null @@ -1,19 +0,0 @@ -;ebx - pointer to string -GetLengthString: - - xor ecx,ecx - - next_simvol: - inc ecx - xor eax,eax - mov al,[ebx] - test al,al - jz null - inc ebx - jmp next_simvol - - null: - mov eax,ecx - dec eax - - ret \ No newline at end of file diff --git a/programs/develop/libGUI/src/struct.inc b/programs/develop/libGUI/src/struct.inc deleted file mode 100644 index 947a84e89a..0000000000 --- a/programs/develop/libGUI/src/struct.inc +++ /dev/null @@ -1,180 +0,0 @@ - -; Macroinstructions for defining data structures - -macro struct name - { fields@struct equ name - match child parent, name \{ fields@struct equ child,fields@\#parent \} - sub@struct equ - struc db [val] \{ \common fields@struct equ fields@struct,.,db, \} - struc dw [val] \{ \common fields@struct equ fields@struct,.,dw, \} - struc du [val] \{ \common fields@struct equ fields@struct,.,du, \} - struc dd [val] \{ \common fields@struct equ fields@struct,.,dd, \} - struc dp [val] \{ \common fields@struct equ fields@struct,.,dp, \} - struc dq [val] \{ \common fields@struct equ fields@struct,.,dq, \} - struc dt [val] \{ \common fields@struct equ fields@struct,.,dt, \} - struc rb count \{ fields@struct equ fields@struct,.,db,count dup (?) \} - struc rw count \{ fields@struct equ fields@struct,.,dw,count dup (?) \} - struc rd count \{ fields@struct equ fields@struct,.,dd,count dup (?) \} - struc rp count \{ fields@struct equ fields@struct,.,dp,count dup (?) \} - struc rq count \{ fields@struct equ fields@struct,.,dq,count dup (?) \} - struc rt count \{ fields@struct equ fields@struct,.,dt,count dup (?) \} - macro db [val] \{ \common \local anonymous - fields@struct equ fields@struct,anonymous,db, \} - macro dw [val] \{ \common \local anonymous - fields@struct equ fields@struct,anonymous,dw, \} - macro du [val] \{ \common \local anonymous - fields@struct equ fields@struct,anonymous,du, \} - macro dd [val] \{ \common \local anonymous - fields@struct equ fields@struct,anonymous,dd, \} - macro dp [val] \{ \common \local anonymous - fields@struct equ fields@struct,anonymous,dp, \} - macro dq [val] \{ \common \local anonymous - fields@struct equ fields@struct,anonymous,dq, \} - macro dt [val] \{ \common \local anonymous - fields@struct equ fields@struct,anonymous,dt, \} - macro rb count \{ \local anonymous - fields@struct equ fields@struct,anonymous,db,count dup (?) \} - macro rw count \{ \local anonymous - fields@struct equ fields@struct,anonymous,dw,count dup (?) \} - macro rd count \{ \local anonymous - fields@struct equ fields@struct,anonymous,dd,count dup (?) \} - macro rp count \{ \local anonymous - fields@struct equ fields@struct,anonymous,dp,count dup (?) \} - macro rq count \{ \local anonymous - fields@struct equ fields@struct,anonymous,dq,count dup (?) \} - macro rt count \{ \local anonymous - fields@struct equ fields@struct,anonymous,dt,count dup (?) \} - macro union \{ fields@struct equ fields@struct,,union,< - sub@struct equ union \} - macro struct \{ fields@struct equ fields@struct,,substruct,< - sub@struct equ substruct \} - virtual at 0 } - -macro ends - { match , sub@struct \{ restruc db,dw,du,dd,dp,dq,dt - restruc rb,rw,rd,rp,rq,rt - purge db,dw,du,dd,dp,dq,dt - purge rb,rw,rd,rp,rq,rt - purge union,struct - match name=,fields,fields@struct \\{ fields@struct equ - make@struct name,fields - fields@\\#name equ fields \\} - end virtual \} - match any, sub@struct \{ fields@struct equ fields@struct> \} - restore sub@struct } - -macro make@struct name,[field,type,def] - { common - if $ - display 'Error: definition of ',`name,' contains illegal instructions.',0Dh,0Ah - err - end if - local define - define equ name - forward - local sub - match , field \{ make@substruct type,name,sub def - define equ define,.,sub, \} - match any, field \{ define equ define,.#field,type, \} - common - match fields, define \{ define@struct fields \} } - -macro define@struct name,[field,type,def] - { common - local list - list equ - forward - if ~ field eq . - name#field type def - sizeof.#name#field = $ - name#field - else - rb sizeof.#type - end if - local value - match any, list \{ list equ list, \} - list equ list - common - sizeof.#name = $ - restruc name - match values, list \{ - struc name value \\{ - match any, fields@struct \\\{ fields@struct equ fields@struct,.,name, \\\} - match , fields@struct \\\{ label . - forward - match , value \\\\{ field type def \\\\} - match any, value \\\\{ field type value - if ~ field eq . - rb sizeof.#name#field - ($-field) - end if \\\\} - common \\\} \\} \} } - -macro enable@substruct - { macro make@substruct substruct,parent,name,[field,type,def] - \{ \common - \local define - define equ parent,name - \forward - \local sub - match , field \\{ match any, type \\\{ enable@substruct - make@substruct type,name,sub def - purge make@substruct - define equ define,.,sub, \\\} \\} - match any, field \\{ define equ define,.\#field,type, \\} - \common - match fields, define \\{ define@\#substruct fields \\} \} } - -enable@substruct - -macro define@union parent,name,[field,type,def] - { common - virtual at 0 - forward - if ~ field eq . - virtual at 0 - parent#field type def - sizeof.#parent#field = $ - parent#field - end virtual - if sizeof.#parent#field > $ - rb sizeof.#parent#field - $ - end if - else if sizeof.#type > $ - rb sizeof.#type - $ - end if - common - sizeof.#name = $ - end virtual - struc name [value] \{ \common - label .\#name - last@union equ - forward - match any, last@union \\{ virtual at .\#name - field type def - end virtual \\} - match , last@union \\{ match , value \\\{ field type def \\\} - match any, value \\\{ field type value \\\} \\} - last@union equ field - common rb sizeof.#name - ($ - .\#name) \} } - -macro define@substruct parent,name,[field,type,def] - { common - virtual at 0 - forward - if ~ field eq . - parent#field type def - sizeof.#parent#field = $ - parent#field - else - rb sizeof.#type - end if - local value - common - sizeof.#name = $ - end virtual - struc name value \{ - label .\#name - forward - match , value \\{ field type def \\} - match any, value \\{ field type value - if ~ field eq . - rb sizeof.#parent#field - ($-field) - end if \\} - common \} } diff --git a/programs/develop/libGUI/src/text.inc b/programs/develop/libGUI/src/text.inc deleted file mode 100644 index 8ccecdc976..0000000000 --- a/programs/develop/libGUI/src/text.inc +++ /dev/null @@ -1,183 +0,0 @@ - -tx_control_data_size = 26 -tx_no_show_text = 00000001b -tx_text_and_background = 00000010b -tx_redraw_all = 10000000b -tx_redraw_all_off = 01111111b -;tx_special_redraw_on = 00000100b -;tx_special_redraw_off = 11111011b - -;**************************************************** -;********************craete Text********************** -;**************************************************** -;IN -;pointer to parend -;pointer to Text's structure -;OUT -;pointer to initialized Texr's structure -align 4 - -craete_text: - - push ebx - push ecx - push edx - push esi - push edi - push ebp - - mov ebx,[esp+24+4] - mov eax,[esp+24+8] - - mov [PointerToStructureForText],eax - - mov eax,control_header_size+tx_control_data_size - call craete_control - - ;set all image's parameters in control - mov [eax],dword text - - mov ecx,tx_control_data_size - mov esi,[PointerToStructureForText] - mov edi,eax - add edi,control_header_size - rep movsb - - call get_skin_height - - mov ebx,[PointerToStructureForText] - mov ecx,[ebx+6] ;x - mov edx,[ebx+10] ;y - mov esi,[ebx+14] ;length x - imul esi,6 - add ecx,border_width - add edx,[skin_height] - ;copy information to control - mov [eax+24],ecx - mov [eax+28],edx - mov [eax+32],esi - mov [eax+36],dword 9 - - pop ebp - pop edi - pop esi - pop edx - pop ecx - pop ebx - - ret 8 - -;**************************************************** -;********************Draw Text********************** -;**************************************************** -;IN -;pointer to control of text -;message -;OUT -;not returned value -align 4 - -text: - - ;get message - mov eax,[esp+8] - - ;get pointer to control of image - mov esi,[esp+4] - mov [PointerForText],esi - ;copy control to local control - add esi,control_header_size - mov edi,dword Text - mov ecx,tx_control_data_size - rep movsb - - - cmp [eax],dword 1 - jne no_redraw_all_text - - xor ebx,ebx - mov bl,[Text.type] - and bl,tx_no_show_text - test bl,bl - jnz no_redraw_all_text - - or [Text.type],tx_redraw_all - - no_redraw_all_text: - - cmp [eax],dword 3 - jne no_special_message_for_text - - xor ebx,ebx - mov bl,[Text.type] - and bl,activate_trap - test bl,bl - jz no_special_message_for_text - - or [Text.type],tx_redraw_all - and [Text.type],deactivate_trap - - no_special_message_for_text: - - ;load coordinats and size from control - mov eax,[PointerForText] - mov ebx,[eax+24] ;x - mov ecx,[eax+28] ;y - ;set current coordinats and sizes in zakladka - mov [Text.x],ebx - mov [Text.y],ecx - - ;get standart colors table - mov eax,48 - mov ebx,3 - mov ecx,dword pointer2 - mov edx,40 - mcall - - xor eax,eax - mov al,[Text.type] - and al,tx_redraw_all - test al,al - jz no_redraw_text_ - - and [Text.type],tx_redraw_all_off - - - mov esi,dword Text - mov edi,[PointerForText] - add edi,control_header_size - mov ecx,2 - rep movsb - - mov ecx,[Text.color] - - xor eax,eax - mov al,[Text.type] - and al,tx_text_and_background - test al,al - jz no_background_color - - mov edi,[Text.background_color] - or ecx,01000000000000000000000000000000b - - no_background_color: - - mov eax,4 - mov ebx,[Text.x] - shl ebx,16 - add ebx,[Text.y] - mov edx,[Text.pointer] - mov esi,[Text.length] - mcall - - no_redraw_text_: - - exit_text: - - mov edi,[PointerForText] - add edi,control_header_size - mov esi,dword Text - mov ecx,tx_control_data_size - rep movsb - - ret 8 diff --git a/programs/develop/libGUI/src/version.inc b/programs/develop/libGUI/src/version.inc deleted file mode 100644 index becaa73519..0000000000 --- a/programs/develop/libGUI/src/version.inc +++ /dev/null @@ -1,16 +0,0 @@ -;**************************************************** -;****************get version of library************** -;**************************************************** -;IN -;not -;OUT -;version of library -;fersion format year:mouth:day -align 4 - -get_version: - - xor eax,eax - mov eax,dword 080204 ;4.02.08 - - ret \ No newline at end of file diff --git a/programs/develop/libGUI/whats new.txt b/programs/develop/libGUI/whats new.txt deleted file mode 100644 index 619b3c2a55..0000000000 --- a/programs/develop/libGUI/whats new.txt +++ /dev/null @@ -1,100 +0,0 @@ -4.02.08 -RUSSIAN -Фюсртыхэю ёюѕ№рэхэшх №хушёђ№ют яюёых тѕюфр т єѓэъішш: SendMessage() , DestroyControl(). - -ENGLISH -Save of registers after an entrance in function is added: SendMessage (), DestroyControl (). - -31.01.08 -RUSSIAN -Фюсртыхэю ёюѕ№рэхэшх №хушёђ№ют яюёых тѕюфр т єѓэъішш libGUI. - -ENGLISH -Save of registers after an entrance in function libGUI is added. - -16.12.07 - -RUSSIAN - -Шёя№ртыхэћ юјшсъш т ъюэђ№юырѕ: ProgressBar, Text, Image. - -ENGLISH - -Mistakes in controls are corrected: ProgressBar, Text, Image. - -28.11.07 - -RUSSIAN - -Фюсртыхэр яюффх№цър єюэютюую ітхђр фыџ control-р Text. - -ENGLISH - -Support of background color for control Text is added. - -19.11.07 - -RUSSIAN - -дѓэъішџ RemoveComponent ях№хшьхэютрэр т MoveComponent. -Фюсртыхэр эютрџ єѓэъішџ. -void ActivateTrapForSpecializedMessage(dword *control) - ръђштш№ютрђќ ыютѓјъѓ фыџ ёяхішрышчш№ютрээћѕ ёююсљхэшщ. - -ENGLISH - -Function RemoveComponent is renamed in MoveComponent. -New function is added. -void ActivateTrapForSpecializedMessage (dword *control) - to activate a trap for the specialized messages. - -15.10.07 - -RUSSIAN - -Тћјыр эютрџ тх№ёшџ сшсышюђхъш libGUI. - -зђю эютюую т §ђющ тх№ёшш: - -1) Ях№хфрїр яр№рьхђ№ют єѓэъішџь сшсышюђхъш ях№хяшёрэр эр ъюэтхэішў stdcall. - -2)вхях№ќ єѓэъішш ышэъѓўђёџ яю шьхэрь. - -3)вхях№ќ, хёыш эртхёђш ьћјќ эр ъюьяюэхэђ ш эрцрђќ ыхтѓў ъэюяъѓ ьћјш, ђю тёх ёююсљхэшџ юђ -ьћјш яюёћырўђёџ ђюыќъю §ђюьѓ ъюьяюэхэђѓ.Хёыш юђяѓёђшђќ ыхтѓў ъэюяъѓ ьћјш, ђю ёююсљхэшџ юђ -ьћјш тэютќ ёђрэютџђёџ фюёђѓяэћьш фыџ тёхѕ ъюьяюэхэђют. - -4) Т сшсышюђхъѓ фюсртыхэћ эютћх єѓэъішш. - int Version(void) - яюыѓїшђќ тх№ёшў сшсышюђхъш. Тх№ёшџ тючт№рљрхђёџ т єю№ьрђх: уюф + ьхёџі + фхэќ . вхъѓљрџ - сшсышюђхър шьххђ тх№ёшў 071014. - void RemoveComponent(void *Control,int new_x,int new_y) - ях№хьхљрхђ ъюьяюэхэђ т эютћх ъюю№фшэрђћ. - void ResizeComponent(void *Control,int new_sizex,int new_sizey) - шчьхэџхђ №рчьх№ ъюьяюэхэђр. - Я№шьх№ћ шёяюыќчютрэшџ §ђшѕ єѓэъішщ ёьюђ№шђх т я№шьх№х Bookmark. - -5)Фюсртыхэ я№шьх№ №рсюђћ ё libGUI т џчћъх я№юу№рььш№ютрэшџ C. нђюђ я№шьх№ џтыџхђёџ їрёђќў шэђх№єхщёр эряшёрээюую - ьэющ фыџ ьюхщ эрѓїэющ я№юу№рььћ. - -ENGLISH - -14.10.07 - -The new version of library libGUI has left. - -That new in this version: - -1) Transfer of parameters to functions of library is copied on the convention stdcall. - -2) Now functions link on names. - -3)Now, if to guide the mouse on a component and to press the left button of the mouse all -messages from the mouse are sent only to this component.If to release(let off) the left -button of the mouse messages from the mouse again become accessible to all components. - -4) In library new functions are added. - int Version (void) - to receive the version of library. The version comes back in a format: year + month + day. - The current library has version 71014. - void RemoveComponent (void *Control, int new_x, int new_y) - moves a component to new coordinates. - void ResizeComponent (void *Control, int new_sizex, int new_sizey) - changes the size of a component. - Examples of use of these functions look in example Bookmark. - -5) The example of work with libGUI in programming language C is added. This example is a part of the interface - written by me for my scientific program. - diff --git a/programs/develop/new libGUI_C/SDK/MinGW and Cygwin(windows)/libGUI.c b/programs/develop/new libGUI_C/SDK/MinGW and Cygwin(windows)/libGUI.c deleted file mode 100755 index a60f5c359b..0000000000 --- a/programs/develop/new libGUI_C/SDK/MinGW and Cygwin(windows)/libGUI.c +++ /dev/null @@ -1,243 +0,0 @@ -/* - libGUI dinamic library SDK - load library and link function - */ - -#include "libGUI.h" - - -struct IMPORT -{ - char *name; - void *function; -}__attribute__((packed)); - -typedef struct IMPORT import_t; - -static char *sys_libGUI_path="/sys/lib/libGUI.obj"; - -static char* funcnames[] = {"LibGUIversion","InitLibGUI","LibGUImain","QuitLibGUI", - - "CreateWindow","SetWindowSizeRequest", - - "PackControls","DestroyControl","SetControlSizeRequest","GetControlSizeX", - "GetControlSizeY","SetControlNewPosition","GetControlPositionX", - "GetControlPositionY","SetFocuse","RedrawControl","SpecialRedrawControl", - - "SetCallbackFunction","BlockCallbackFunction","UnblockCallbackFunction", - - "SetIDL_Function","DestroyIDL_Function", - - "SetTimerCallbackForFunction","DestroyTimerCallbackForFunction", - - "SetCallbackFunctionForEvent","DestroyCallbackFunctionForEvent", - - "CreateButton","CreateButtonWithText", - - "CreateProgressBar","SetProgressBarPulse","ProgressBarSetText","ProgressBarGetText", - - "CreateHorizontalScrollBar","CreateVerticalScrollBar", - - "CreateScrolledWindow","ScrolledWindowPackControls", - - "CreateImage", - - "CreateText","TextBackgroundOn","TextBackgroundOff", - - "LoadFont","FreeFont"}; - - -static inline void* gui_ksys_load_dll(char *path) -{ - void *dll_export; - - __asm__ __volatile__( - "int $0x40" - :"=a"(dll_export) - :"a"(68),"b"(19),"c"(path)); - - return(dll_export); -} - -static inline void gui_ksys_debug_out(int c) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(63),"b"(1),"c"(c)); -} - -static void gui_debug_out_str(char *s) -{ - - while(*s) - { - if (*s=='\n') gui_ksys_debug_out(13); - - gui_ksys_debug_out(*s); - s++; - } -} - -static int gui_strcmp(const char* string1, const char* string2) -{ - while (1) - { - if (*string1<*string2) - return -1; - if (*string1>*string2) - return 1; - if (*string1=='\0') - return 0; - string1++; - string2++; - } -} - -static void* gui_cofflib_getproc(import_t *lib, char *name) -{ - int i; - - for(i = 0; lib[i].name && gui_strcmp(name, lib[i].name); i++); - - if(lib[i].name) return lib[i].function; - else return NULL; -} - -static inline void gui_ksys_exit(int value) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(-1),"b"(value)); -} - -void link_libGUI(import_t *exp,char **imports) -{ - LibGUIversion=(DWORD (stdcall *)(void)) - gui_cofflib_getproc(exp,imports[0]); - InitLibGUI=(char (stdcall *)(void)) - gui_cofflib_getproc(exp,imports[1]); - LibGUImain=(void (stdcall *)(parent_t *WindowParent)) - gui_cofflib_getproc(exp,imports[2]); - QuitLibGUI=(void (stdcall *)(parent_t *window)) - gui_cofflib_getproc(exp,imports[3]); - CreateWindow=(void* (stdcall *)(void)) - gui_cofflib_getproc(exp,imports[4]); - SetWindowSizeRequest=(void (stdcall *)(parent_t *WindowParent,int size_x,int size_y)) - gui_cofflib_getproc(exp,imports[5]); - PackControls=(void (stdcall *)(void *Parent,void *control)) - gui_cofflib_getproc(exp,imports[6]); - DestroyControl=(void (stdcall *)(void *control)) - gui_cofflib_getproc(exp,imports[7]); - SetControlSizeRequest=(void (stdcall *)(void *Control,int new_size_x,int new_size_y)) - gui_cofflib_getproc(exp,imports[8]); - GetControlSizeX=(int (stdcall *)(void *Control)) - gui_cofflib_getproc(exp,imports[9]); - GetControlSizeY=(int (stdcall *)(void *Control)) - gui_cofflib_getproc(exp,imports[10]); - SetControlNewPosition=(void (stdcall *)(void *Control,int new_x,int new_y)) - gui_cofflib_getproc(exp,imports[11]); - GetControlPositionX=(int (stdcall *)(void *Control)) - gui_cofflib_getproc(exp,imports[12]); - GetControlPositionY=(int (stdcall *)(void *Control)) - gui_cofflib_getproc(exp,imports[13]); - SetFocuse=(void* (stdcall *)(void *Control)) - gui_cofflib_getproc(exp,imports[14]); - RedrawControl=(void (stdcall *)(void *Control)) - gui_cofflib_getproc(exp,imports[15]); - SpecialRedrawControl=(void (stdcall *)(void *Control)) - gui_cofflib_getproc(exp,imports[16]); - SetCallbackFunction=(gui_callback_t* (stdcall *)(void *Control, - int event_name,void *callback_func,void *callback_func_data)) - gui_cofflib_getproc(exp,imports[17]); - BlockCallbackFunction=(void (stdcall *)(void *Control,gui_callback_t *callback_ID)) - gui_cofflib_getproc(exp,imports[18]); - UnblockCallbackFunction=(void (stdcall *)(void *Control,gui_callback_t *callback_ID)) - gui_cofflib_getproc(exp,imports[19]); - SetIDL_Function=(void (stdcall *)(parent_t *Parent,void *function,void *function_data)) - gui_cofflib_getproc(exp,imports[20]); - DestroyIDL_Function=(void (stdcall *)(parent_t *Parent)) - gui_cofflib_getproc(exp,imports[21]); - SetTimerCallbackForFunction=(gui_timer_t* (stdcall *)(parent_t *parent_window, - int time_tick,void *func,void *func_data)) - gui_cofflib_getproc(exp,imports[22]); - DestroyTimerCallbackForFunction=(void (stdcall *)(gui_timer_t *timer)) - gui_cofflib_getproc(exp,imports[23]); - SetCallbackFunctionForEvent=(gui_callbackevent_t* (stdcall *)(parent_t *parent_window, - int event_type,void *func,void *func_data)) - gui_cofflib_getproc(exp,imports[24]); - DestroyCallbackFunctionForEvent=(void (stdcall *)(gui_callbackevent_t *callback_event)) - gui_cofflib_getproc(exp,imports[25]); - CreateButton=(gui_button_t* (stdcall *)(gui_button_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[26]); - CreateButtonWithText=(gui_button_t* (stdcall *)(gui_button_data_t *info,char *txt)) - gui_cofflib_getproc(exp,imports[27]); - CreateProgressBar=(gui_progress_bar_t* (stdcall *)(gui_progress_bar_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[28]); - SetProgressBarPulse=(void (stdcall *)(gui_progress_bar_t *ProgressBar,int time_update)) - gui_cofflib_getproc(exp,imports[29]); - ProgressBarSetText=(void (stdcall *)(gui_progress_bar_t *pbar,char *txt)) - gui_cofflib_getproc(exp,imports[30]); - ProgressBarGetText=(char* (stdcall *)(gui_progress_bar_t *pbar)) - gui_cofflib_getproc(exp,imports[31]); - CreateHorizontalScrollBar=(gui_scroll_bar_t* (stdcall *)(gui_scroll_bar_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[32]); - CreateVerticalScrollBar=(gui_scroll_bar_t* (stdcall *)(gui_scroll_bar_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[33]); - CreateScrolledWindow=(gui_scrolled_window_t* (stdcall *)(gui_scrolled_window_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[34]); - ScrolledWindowPackControls=(void (stdcall *)(gui_scrolled_window_t *parent,void *Control)) - gui_cofflib_getproc(exp,imports[35]); - CreateImage=(gui_image_t* (stdcall *)(gui_image_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[36]); - CreateText=(gui_text_t* (stdcall *)(gui_text_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[37]); - TextBackgroundOn=(void (stdcall *)(gui_text_t *Text)) - gui_cofflib_getproc(exp,imports[38]); - TextBackgroundOff=(void (stdcall *)(gui_text_t *Text)) - gui_cofflib_getproc(exp,imports[39]); - LoadFont=(font_t* (stdcall *)(char *fullfontname)) - gui_cofflib_getproc(exp,imports[40]); - FreeFont=(void (stdcall *)(font_t *font)) - gui_cofflib_getproc(exp,imports[41]); -} - -void LoadLibGUI(char *lib_path) -{ - import_t *export; - char *path; - DWORD vers; - - if (lib_path==NULL) - { - path=sys_libGUI_path; - export=(import_t*)gui_ksys_load_dll(path); - } - else - { - path=lib_path; - export=(import_t*)gui_ksys_load_dll(path); - } - - if (export==NULL) - { - gui_debug_out_str("\ncan't load lib="); - gui_debug_out_str(path); - gui_ksys_exit(0); - } - else - { - link_libGUI(export,funcnames); - if (InitLibGUI()) - { - gui_debug_out_str("\ncan't initialize libGUI"); - gui_ksys_exit(0); - } - gui_debug_out_str(" initialized"); - } -} - - - - diff --git a/programs/develop/new libGUI_C/SDK/MinGW and Cygwin(windows)/libGUI.h b/programs/develop/new libGUI_C/SDK/MinGW and Cygwin(windows)/libGUI.h deleted file mode 100755 index 5f0c5c0351..0000000000 --- a/programs/develop/new libGUI_C/SDK/MinGW and Cygwin(windows)/libGUI.h +++ /dev/null @@ -1,591 +0,0 @@ -/* - service structures of libGUI -*/ -#define NULL (void*)0 - -typedef unsigned int DWORD; -typedef unsigned char BYTE; -typedef unsigned short int WORD; -typedef unsigned int size_t; - -#define stdcall __stdcall -#define cdecl __cdecl - -///////////////////////////////////////////////////////////////////////// -// libGUI sysyem messages types -///////////////////////////////////////////////////////////////////////// -#define MESSAGE_FULL_REDRAW_ALL 1 -#define MESSAGE_KEYS_EVENT 2 -#define MESSAGE_SPECIALIZED 3 -#define MESSAGE_SET_FOCUSE 4 -#define MESSAGE_CHANGE_FOCUSE 5 -#define MESSAGE_MOUSE_EVENT 6 -#define MESSAGE_CHANGE_POSITION_EVENT 7 -#define MESSAGE_CHANGESIZE_EVENT 8 -#define MESSAGE_CALL_TIMER_EVENT 9 -#define MESSAGE_FULL_REDRAW_ALL_WITH_FINITION 10 -#define MESSAGE_SET_MAIN_PARENT 11 -#define MESSAGE_DESTROY_CONTROL -1 - -///////////////////////////////////////////////////////////////////////// -// system keys states -///////////////////////////////////////////////////////////////////////// -#define KEY_DOWN 16 -#define KEY_UP 17 -#define KEY_HOTKEY 18 -///////////////////////////////////////////////////////////////////////// -// system mouse buttons states -///////////////////////////////////////////////////////////////////////// -#define MOUSE_LEFT_BUTTON_DOWN 19 -#define MOUSE_LEFT_BUTTON_UP 20 -#define MOUSE_RIGHT_BUTTON_DOWN 21 -#define MOUSE_RIGHT_BUTTON_UP 22 -#define MOUSE_MIDDLE_BUTTON_DOWN 23 -#define MOUSE_MIDDLE_BUTTON_UP 24 -#define MOUSE_4_BUTTON_DOWN 25 -#define MOUSE_4_BUTTON_UP 26 -#define MOUSE_5_BUTTON_DOWN 27 -#define MOUSE_5_BUTTON_UP 28 - - -//----------------------------------------------------------------------- -// CONNECT EVENTS FOR CALLBACKs -//----------------------------------------------------------------------- - -//////////////////////////////////////////////////////////////// -// connect events for button -//////////////////////////////////////////////////////////////// -#define BUTTON_ENTER_EVENT 29 -#define BUTTON_LEAVE_EVENT 30 -#define BUTTON_PRESSED_EVENT 31 -#define BUTTON_RELEASED_EVENT 32 - -//////////////////////////////////////////////////////////////// -// connect events for scroll bar -//////////////////////////////////////////////////////////////// -#define SCROLLBAR_CHANGED_EVENT 33 - -//////////////////////////////////////////////////////////////// -// connect events for main parent window -//////////////////////////////////////////////////////////////// -#define DELETE_EVENT 36 - -//////////////////////////////////////////////////////////////// -// font type structure -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct FONT -{ - DWORD *fnt_draw; - DWORD *fnt_unpacker; - DWORD *fnt_fd; - DWORD *fnt_bk; - int sizex; - int sizey; - int size; - int encoding_type; - char *font; - char *fnt_name; - DWORD type; - DWORD flags; -}; -#pragma pack(pop) - -typedef struct FONT font_t; - -//////////////////////////////////////////////////////////////// -// header of parent of control -//////////////////////////////////////////////////////////////// - -#pragma pack(push,1) -struct HEADERPARENT -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - DWORD **control_for_callback_function; - DWORD **callback_for_control_callback; - DWORD number_callbacks; - DWORD *global_active_control_for_keys; - DWORD *message; - DWORD *timer_bk; - DWORD *timer_fd; - DWORD number_timers_for_controls; - DWORD *calev_bk; - DWORD *calev_fd; - DWORD *IDL_func; - DWORD *IDL_func_data; -}; -#pragma pack(pop) - -typedef struct HEADERPARENT parent_t; - -//////////////////////////////////////////////////////////////// -// header of control -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct HEADER -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; -}; -#pragma pack(pop) - -typedef struct HEADER header_t; -//////////////////////////////////////////////////////////////// -// callback structure for callback function of control -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct CALLBACK -{ - DWORD *clb_bk; - DWORD *clb_fd; - DWORD *clb_control; - DWORD *func; - DWORD *func_data; - DWORD connect_event; - DWORD flags; -}; -#pragma pack(pop) - -typedef struct CALLBACK gui_callback_t; -//////////////////////////////////////////////////////////////// -// timer -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct TIMER -{ - DWORD *tmr_bk; - DWORD *tmr_fd; - DWORD *tmr_parent; - DWORD *func; - DWORD *func_data; - DWORD last_time; - DWORD time_tick; - DWORD flags; -}; -#pragma pack(pop) - -typedef struct TIMER gui_timer_t; -//////////////////////////////////////////////////////////////// -// structure for callback events -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct CALLBACKEVENT -{ - DWORD *calev_bk; - DWORD *calev_fd; - DWORD *calev_parent; - DWORD *func; - DWORD *func_data; - DWORD event_type; -}; -#pragma pack(pop) - -typedef struct CALLBACKEVENT gui_callbackevent_t; - -//////////////////////////////////////////////////////////////// -// type of data - structure message -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct MESSAGE -{ - DWORD type; - DWORD arg1; - DWORD arg2; - DWORD arg3; - DWORD arg4; -}; -#pragma pack(pop) - -typedef struct MESSAGE gui_message_t; - -//////////////////////////////////////////////////////////////// -// button -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlButton -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //button's data - BYTE btn_flags; -}; -#pragma pack(pop) - -typedef struct ControlButton gui_button_t; - -// information for creating control Button -#pragma pack(push,1) -struct ButtonData -{ - int x; - int y; - int width; - int height; -}; -#pragma pack(pop) - -typedef struct ButtonData gui_button_data_t; - -//////////////////////////////////////////////////////////////// -// scroller -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlScrollBar -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //scroll bar's data - float ruller_size; - float ruller_pos; - float ruller_step; - BYTE scb_flags; -}; - -typedef struct ControlScrollBar gui_scroll_bar_t; - -#pragma pack(push,1) -struct ScrollBarData -{ - int x; - int y; - int width; - int height; - float ruller_size; - float ruller_pos; - float ruller_step; -}; -#pragma pack(pop) - -typedef struct ScrollBarData gui_scroll_bar_data_t; -//////////////////////////////////////////////////////////////// -// progressbar -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlProgressBar -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //progress bar's data - float progress; - BYTE prb_flags; -}; -#pragma pack(pop) - -typedef struct ControlProgressBar gui_progress_bar_t; - -#pragma pack(push,1) -struct ProgressBarData -{ - int x; - int y; - int width; - int height; - float progress; -}; -#pragma pack(pop) - -typedef struct ProgressBarData gui_progress_bar_data_t; -//////////////////////////////////////////////////////////////// -// scrolled window -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlScrolledWindow -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //scrolled windows's data - DWORD virtual_x; - DWORD virtual_y; - DWORD virtual_sizex; - DWORD virtual_sizey; - DWORD *virtual_controls_x; - DWORD *virtual_controls_y; - DWORD number_virtual_controls; - DWORD scroll_arrea_sizex; - DWORD scroll_arrea_sizey; - DWORD *horizontal_scroll; - DWORD *vertical_scroll; - BYTE scw_flags; -}; -#pragma pack(pop) - -typedef struct ControlScrolledWindow gui_scrolled_window_t; - -#pragma pack(push,1) -struct ScrolledWindowData -{ - int x; - int y; - int width; - int height; -}; -#pragma pack(pop) - -typedef struct ScrolledWindowData gui_scrolled_window_data_t; - -//////////////////////////////////////////////////////////////// -// image -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlImage -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - char bits_per_pixel; - char bytes_per_pixel; - char *img; -}; -#pragma pack(pop) - -typedef struct ControlImage gui_image_t; - -#pragma pack(push,1) -struct ImageData -{ - int x; - int y; - int width; - int height; - char bits_per_pixel; -}; -#pragma pack(pop) - -typedef struct ImageData gui_image_data_t; - -//////////////////////////////////////////////////////////////// -// text -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlText -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - DWORD *font; - DWORD color; - DWORD background_color; - char *text; - BYTE txt_flags; -}; -#pragma pack(pop) - -typedef struct ControlText gui_text_t; - -#pragma pack(push,1) -struct TextData -{ - int x; - int y; - DWORD *font; - DWORD color; - DWORD background_color; - char background; - char *text; -}; -#pragma pack(pop) - -typedef struct TextData gui_text_data_t; -///////////////////////////////////////////////////////////////// -// load libGUI library and link functions -///////////////////////////////////////////////////////////////// -void LoadLibGUI(char *lib_path); - -//********************************************************************** -// libGUI service functions -//********************************************************************** - -DWORD (stdcall *LibGUIversion)(void); -char (stdcall *InitLibGUI)(void); -void (stdcall *LibGUImain)(parent_t *WindowParent); -void (stdcall *QuitLibGUI)(parent_t *window); - -void* (stdcall *CreateWindow)(void); -void (stdcall *SetWindowSizeRequest)(parent_t *WindowParent,int size_x,int size_y); - -void (stdcall *PackControls)(void *Parent,void *control); -void (stdcall *DestroyControl)(void *control); -void (stdcall *SetControlSizeRequest)(void *Control,int new_size_x,int new_size_y); -int (stdcall *GetControlSizeX)(void *Control); -int (stdcall *GetControlSizeY)(void *Control); -void (stdcall *SetControlNewPosition)(void *Control,int new_x,int new_y); -int (stdcall *GetControlPositionX)(void *Control); -int (stdcall *GetControlPositionY)(void *Control); -void* (stdcall *SetFocuse)(void *Control); -void (stdcall *RedrawControl)(void *Control); -void (stdcall *SpecialRedrawControl)(void *Control); - -gui_callback_t* (stdcall *SetCallbackFunction)(void *Control, - int event_name,void *callback_func, - void *callback_func_data); -void (stdcall *BlockCallbackFunction)(void *Control,gui_callback_t *callback_ID); -void (stdcall *UnblockCallbackFunction)(void *Control,gui_callback_t *callback_ID); - -void (stdcall *SetIDL_Function)(parent_t *Parent,void *function,void *function_data); -void (stdcall *DestroyIDL_Function)(parent_t *Parent); - -gui_timer_t* (stdcall *SetTimerCallbackForFunction)(parent_t *parent_window, - int time_tick,void *func,void *func_data); -void (stdcall *DestroyTimerCallbackForFunction)(gui_timer_t *timer); - -gui_callbackevent_t* (stdcall *SetCallbackFunctionForEvent)(parent_t *parent_window, - int event_type,void *func,void *func_data); -void (stdcall *DestroyCallbackFunctionForEvent)(gui_callbackevent_t *callback_event); - -gui_button_t* (stdcall *CreateButton)(gui_button_data_t *info_for_control); -gui_button_t* (stdcall *CreateButtonWithText)(gui_button_data_t *info,char *txt); - -gui_progress_bar_t* (stdcall *CreateProgressBar)(gui_progress_bar_data_t *info_for_control); -void (stdcall *SetProgressBarPulse)(gui_progress_bar_t *ProgressBar,int time_update); -void (stdcall *ProgressBarSetText)(gui_progress_bar_t *pbar,char *txt); -char* (stdcall *ProgressBarGetText)(gui_progress_bar_t *pbar); - -gui_scroll_bar_t* (stdcall *CreateHorizontalScrollBar)(gui_scroll_bar_data_t *info_for_control); -gui_scroll_bar_t* (stdcall *CreateVerticalScrollBar)(gui_scroll_bar_data_t *info_for_control); - -gui_scrolled_window_t* (stdcall *CreateScrolledWindow)(gui_scrolled_window_data_t *info_for_control); -void (stdcall *ScrolledWindowPackControls)(gui_scrolled_window_t *parent,void *Control); - -gui_image_t* (stdcall *CreateImage)(gui_image_data_t *info_for_control); - -gui_text_t* (stdcall *CreateText)(gui_text_data_t *info_for_control); -void (stdcall *TextBackgroundOn)(gui_text_t *Text); -void (stdcall *TextBackgroundOff)(gui_text_t *Text); - -font_t* (stdcall *LoadFont)(char *fullfontname); -void (stdcall *FreeFont)(font_t *font); - diff --git a/programs/develop/new libGUI_C/SDK/gcc(unix)/libGUI.c b/programs/develop/new libGUI_C/SDK/gcc(unix)/libGUI.c deleted file mode 100755 index 3c9f1fd527..0000000000 --- a/programs/develop/new libGUI_C/SDK/gcc(unix)/libGUI.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - libGUI dinamic library SDK - load library and link function - */ - -#include "libGUI.h" - - -struct IMPORT -{ - char *name; - void *function; -}__attribute__((packed)); - -typedef struct IMPORT import_t; - -static char *sys_libGUI_path="/sys/lib/libGUI.obj"; - -static char* funcnames[] = {"LibGUIversion","InitLibGUI","LibGUImain","QuitLibGUI", - - "CreateWindow","SetWindowSizeRequest", - - "PackControls","DestroyControl","SetControlSizeRequest","GetControlSizeX", - "GetControlSizeY","SetControlNewPosition","GetControlPositionX", - "GetControlPositionY","SetFocuse","RedrawControl","SpecialRedrawControl", - - "SetCallbackFunction","BlockCallbackFunction","UnblockCallbackFunction", - - "SetIDL_Function","DestroyIDL_Function", - - "SetTimerCallbackForFunction","DestroyTimerCallbackForFunction", - - "SetCallbackFunctionForEvent","DestroyCallbackFunctionForEvent", - - "CreateButton","CreateButtonWithText", - - "CreateProgressBar","SetProgressBarPulse","ProgressBarSetText","ProgressBarGetText", - - "CreateHorizontalScrollBar","CreateVerticalScrollBar", - - "CreateScrolledWindow","ScrolledWindowPackControls", - - "CreateImage", - - "CreateText","TextBackgroundOn","TextBackgroundOff", - - "LoadFont","FreeFont"}; - - -static inline void* gui_ksys_load_dll(char *path) -{ - void *dll_export; - - __asm__ __volatile__( - "int $0x40" - :"=a"(dll_export) - :"a"(68),"b"(19),"c"(path)); - - return(dll_export); -} - -static inline void gui_ksys_debug_out(int c) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(63),"b"(1),"c"(c)); -} - -static void gui_debug_out_str(char *s) -{ - - while(*s) - { - if (*s=='\n') gui_ksys_debug_out(13); - - gui_ksys_debug_out(*s); - s++; - } -} - -static int gui_strcmp(const char* string1, const char* string2) -{ - while (1) - { - if (*string1<*string2) - return -1; - if (*string1>*string2) - return 1; - if (*string1=='\0') - return 0; - string1++; - string2++; - } -} - -static void* gui_cofflib_getproc(import_t *lib, char *name) -{ - int i; - - for(i = 0; lib[i].name && gui_strcmp(name, lib[i].name); i++); - - if(lib[i].name) return lib[i].function; - else return NULL; -} - -static inline void gui_ksys_exit(int value) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(-1),"b"(value)); -} - -void link_libGUI(import_t *exp,char **imports) -{ - LibGUIversion=(DWORD stdcall (*)(void)) - gui_cofflib_getproc(exp,imports[0]); - InitLibGUI=(char stdcall (*)(void)) - gui_cofflib_getproc(exp,imports[1]); - LibGUImain=(void stdcall (*)(parent_t *WindowParent)) - gui_cofflib_getproc(exp,imports[2]); - QuitLibGUI=(void stdcall (*)(parent_t *window)) - gui_cofflib_getproc(exp,imports[3]); - CreateWindow=(void* stdcall (*)(void)) - gui_cofflib_getproc(exp,imports[4]); - SetWindowSizeRequest=(void stdcall (*)(parent_t *WindowParent,int size_x,int size_y)) - gui_cofflib_getproc(exp,imports[5]); - PackControls=(void stdcall (*)(void *Parent,void *control)) - gui_cofflib_getproc(exp,imports[6]); - DestroyControl=(void stdcall (*)(void *control)) - gui_cofflib_getproc(exp,imports[7]); - SetControlSizeRequest=(void stdcall (*)(void *Control,int new_size_x,int new_size_y)) - gui_cofflib_getproc(exp,imports[8]); - GetControlSizeX=(int stdcall (*)(void *Control)) - gui_cofflib_getproc(exp,imports[9]); - GetControlSizeY=(int stdcall (*)(void *Control)) - gui_cofflib_getproc(exp,imports[10]); - SetControlNewPosition=(void stdcall (*)(void *Control,int new_x,int new_y)) - gui_cofflib_getproc(exp,imports[11]); - GetControlPositionX=(int stdcall (*)(void *Control)) - gui_cofflib_getproc(exp,imports[12]); - GetControlPositionY=(int stdcall (*)(void *Control)) - gui_cofflib_getproc(exp,imports[13]); - SetFocuse=(void* stdcall (*)(void *Control)) - gui_cofflib_getproc(exp,imports[14]); - RedrawControl=(void stdcall (*)(void *Control)) - gui_cofflib_getproc(exp,imports[15]); - SpecialRedrawControl=(void stdcall (*)(void *Control)) - gui_cofflib_getproc(exp,imports[16]); - SetCallbackFunction=(gui_callback_t* stdcall (*)(void *Control, - int event_name,void *callback_func,void *callback_func_data)) - gui_cofflib_getproc(exp,imports[17]); - BlockCallbackFunction=(void stdcall (*)(void *Control,gui_callback_t *callback_ID)) - gui_cofflib_getproc(exp,imports[18]); - UnblockCallbackFunction=(void stdcall (*)(void *Control,gui_callback_t *callback_ID)) - gui_cofflib_getproc(exp,imports[19]); - SetIDL_Function=(void stdcall (*)(parent_t *Parent,void *function,void *function_data)) - gui_cofflib_getproc(exp,imports[20]); - DestroyIDL_Function=(void stdcall (*)(parent_t *Parent)) - gui_cofflib_getproc(exp,imports[21]); - SetTimerCallbackForFunction=(gui_timer_t* stdcall (*)(parent_t *parent_window, - int time_tick,void *func,void *func_data)) - gui_cofflib_getproc(exp,imports[22]); - DestroyTimerCallbackForFunction=(void stdcall (*)(gui_timer_t *timer)) - gui_cofflib_getproc(exp,imports[23]); - SetCallbackFunctionForEvent=(gui_callbackevent_t* stdcall (*)(parent_t *parent_window, - int event_type,void *func,void *func_data)) - gui_cofflib_getproc(exp,imports[24]); - DestroyCallbackFunctionForEvent=(void stdcall (*)(gui_callbackevent_t *callback_event)) - gui_cofflib_getproc(exp,imports[25]); - CreateButton=(gui_button_t* stdcall (*)(gui_button_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[26]); - CreateButtonWithText=(gui_button_t* stdcall (*)(gui_button_data_t *info,char *txt)) - gui_cofflib_getproc(exp,imports[27]); - CreateProgressBar=(gui_progress_bar_t* stdcall (*)(gui_progress_bar_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[28]); - SetProgressBarPulse=(void stdcall (*)(gui_progress_bar_t *ProgressBar,int time_update)) - gui_cofflib_getproc(exp,imports[29]); - ProgressBarSetText=(void stdcall (*)(gui_progress_bar_t *pbar,char *txt)) - gui_cofflib_getproc(exp,imports[30]); - ProgressBarGetText=(char* stdcall (*)(gui_progress_bar_t *pbar)) - gui_cofflib_getproc(exp,imports[31]); - CreateHorizontalScrollBar=(gui_scroll_bar_t* stdcall (*)(gui_scroll_bar_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[32]); - CreateVerticalScrollBar=(gui_scroll_bar_t* stdcall (*)(gui_scroll_bar_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[33]); - CreateScrolledWindow=(gui_scrolled_window_t* stdcall (*)(gui_scrolled_window_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[34]); - ScrolledWindowPackControls=(void stdcall (*)(gui_scrolled_window_t *parent,void *Control)) - gui_cofflib_getproc(exp,imports[35]); - CreateImage=(gui_image_t* stdcall (*)(gui_image_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[36]); - CreateText=(gui_text_t* stdcall (*)(gui_text_data_t *info_for_control)) - gui_cofflib_getproc(exp,imports[37]); - TextBackgroundOn=(void stdcall (*)(gui_text_t *Text)) - gui_cofflib_getproc(exp,imports[38]); - TextBackgroundOff=(void stdcall (*)(gui_text_t *Text)) - gui_cofflib_getproc(exp,imports[39]); - LoadFont=(font_t* stdcall (*)(char *fullfontname)) - gui_cofflib_getproc(exp,imports[40]); - FreeFont=(void stdcall (*)(font_t *font)) - gui_cofflib_getproc(exp,imports[41]); -} - -void LoadLibGUI(char *lib_path) -{ - import_t *export; - char *path; - - if (lib_path==NULL) - { - path=sys_libGUI_path; - export=(import_t*)gui_ksys_load_dll(path); - } - else - { - path=lib_path; - export=(import_t*)gui_ksys_load_dll(path); - } - - if (export==NULL) - { - gui_debug_out_str("\ncan't load lib="); - gui_debug_out_str(path); - gui_ksys_exit(0); - } - else - { - link_libGUI(export,funcnames); - if (InitLibGUI()) - { - gui_debug_out_str("\ncan't initialize libGUI"); - gui_ksys_exit(0); - } - } -} - - - - diff --git a/programs/develop/new libGUI_C/SDK/gcc(unix)/libGUI.h b/programs/develop/new libGUI_C/SDK/gcc(unix)/libGUI.h deleted file mode 100755 index 556d591e10..0000000000 --- a/programs/develop/new libGUI_C/SDK/gcc(unix)/libGUI.h +++ /dev/null @@ -1,589 +0,0 @@ -/* - service structures of libGUI -*/ -#define NULL (void*)0 - -typedef unsigned int DWORD; -typedef unsigned char BYTE; -typedef unsigned short int WORD; -typedef unsigned int size_t; - -#define stdcall __attribute__ ((stdcall)) -#define cdecl __attribute__ ((cdecl)) -#define pack __attribute__ ((packed)) - -///////////////////////////////////////////////////////////////////////// -// libGUI sysyem messages types -///////////////////////////////////////////////////////////////////////// -#define MESSAGE_FULL_REDRAW_ALL 1 -#define MESSAGE_KEYS_EVENT 2 -#define MESSAGE_SPECIALIZED 3 -#define MESSAGE_SET_FOCUSE 4 -#define MESSAGE_CHANGE_FOCUSE 5 -#define MESSAGE_MOUSE_EVENT 6 -#define MESSAGE_CHANGE_POSITION_EVENT 7 -#define MESSAGE_CHANGESIZE_EVENT 8 -#define MESSAGE_CALL_TIMER_EVENT 9 -#define MESSAGE_FULL_REDRAW_ALL_WITH_FINITION 10 -#define MESSAGE_SET_MAIN_PARENT 11 -#define MESSAGE_DESTROY_CONTROL -1 - -///////////////////////////////////////////////////////////////////////// -// system keys states -///////////////////////////////////////////////////////////////////////// -#define KEY_DOWN 16 -#define KEY_UP 17 -#define KEY_HOTKEY 18 -///////////////////////////////////////////////////////////////////////// -// system mouse buttons states -///////////////////////////////////////////////////////////////////////// -#define MOUSE_LEFT_BUTTON_DOWN 19 -#define MOUSE_LEFT_BUTTON_UP 20 -#define MOUSE_RIGHT_BUTTON_DOWN 21 -#define MOUSE_RIGHT_BUTTON_UP 22 -#define MOUSE_MIDDLE_BUTTON_DOWN 23 -#define MOUSE_MIDDLE_BUTTON_UP 24 -#define MOUSE_4_BUTTON_DOWN 25 -#define MOUSE_4_BUTTON_UP 26 -#define MOUSE_5_BUTTON_DOWN 27 -#define MOUSE_5_BUTTON_UP 28 - - -//----------------------------------------------------------------------- -// CONNECT EVENTS FOR CALLBACKs -//----------------------------------------------------------------------- - -//////////////////////////////////////////////////////////////// -// connect events for button -//////////////////////////////////////////////////////////////// -#define BUTTON_ENTER_EVENT 29 -#define BUTTON_LEAVE_EVENT 30 -#define BUTTON_PRESSED_EVENT 31 -#define BUTTON_RELEASED_EVENT 32 - -//////////////////////////////////////////////////////////////// -// connect events for scroll bar -//////////////////////////////////////////////////////////////// -#define SCROLLBAR_CHANGED_EVENT 33 - -//////////////////////////////////////////////////////////////// -// connect events for main parent window -//////////////////////////////////////////////////////////////// -#define DELETE_EVENT 36 - -//////////////////////////////////////////////////////////////// -// font type structure -//////////////////////////////////////////////////////////////// -struct FONT -{ - DWORD *fnt_draw; - DWORD *fnt_unpacker; - DWORD *fnt_fd; - DWORD *fnt_bk; - int sizex; - int sizey; - int size; - int encoding_type; - char *font; - char *fnt_name; - DWORD type; - DWORD flags; -}pack; - -typedef struct FONT font_t; - -//////////////////////////////////////////////////////////////// -// header of parent of control -//////////////////////////////////////////////////////////////// - -struct HEADERPARENT -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - DWORD **control_for_callback_function; - DWORD **callback_for_control_callback; - DWORD number_callbacks; - DWORD *global_active_control_for_keys; - DWORD *message; - DWORD *timer_bk; - DWORD *timer_fd; - DWORD number_timers_for_controls; - DWORD *calev_bk; - DWORD *calev_fd; - DWORD *IDL_func; - DWORD *IDL_func_data; -}pack; - -typedef struct HEADERPARENT parent_t; - -//////////////////////////////////////////////////////////////// -// header of control -//////////////////////////////////////////////////////////////// - -struct HEADER -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; -}pack; - - -typedef struct HEADER header_t; -//////////////////////////////////////////////////////////////// -// callback structure for callback function of control -//////////////////////////////////////////////////////////////// - -struct CALLBACK -{ - DWORD *clb_bk; - DWORD *clb_fd; - DWORD *clb_control; - DWORD *func; - DWORD *func_data; - DWORD connect_event; - DWORD flags; -}pack; - - -typedef struct CALLBACK gui_callback_t; -//////////////////////////////////////////////////////////////// -// timer -//////////////////////////////////////////////////////////////// - -struct TIMER -{ - DWORD *tmr_bk; - DWORD *tmr_fd; - DWORD *tmr_parent; - DWORD *func; - DWORD *func_data; - DWORD last_time; - DWORD time_tick; - DWORD flags; -}pack; - - -typedef struct TIMER gui_timer_t; -//////////////////////////////////////////////////////////////// -// structure for callback events -//////////////////////////////////////////////////////////////// - -struct CALLBACKEVENT -{ - DWORD *calev_bk; - DWORD *calev_fd; - DWORD *calev_parent; - DWORD *func; - DWORD *func_data; - DWORD event_type; -}pack; - - -typedef struct CALLBACKEVENT gui_callbackevent_t; - -//////////////////////////////////////////////////////////////// -// type of data - structure message -//////////////////////////////////////////////////////////////// - -struct MESSAGE -{ - DWORD type; - DWORD arg1; - DWORD arg2; - DWORD arg3; - DWORD arg4; -}pack; - - -typedef struct MESSAGE gui_message_t; - -//////////////////////////////////////////////////////////////// -// button -//////////////////////////////////////////////////////////////// - -struct ControlButton -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //button's data - BYTE btn_flags; -}pack; - - -typedef struct ControlButton gui_button_t; - -// information for creating control Button - -struct ButtonData -{ - int x; - int y; - int width; - int height; -}pack; - - -typedef struct ButtonData gui_button_data_t; - -//////////////////////////////////////////////////////////////// -// scroller -//////////////////////////////////////////////////////////////// - -struct ControlScrollBar -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //scroll bar's data - float ruller_size; - float ruller_pos; - float ruller_step; - BYTE scb_flags; -}pack; - - -typedef struct ControlScrollBar gui_scroll_bar_t; - - -struct ScrollBarData -{ - int x; - int y; - int width; - int height; - float ruller_size; - float ruller_pos; - float ruller_step; -}pack; - - -typedef struct ScrollBarData gui_scroll_bar_data_t; -//////////////////////////////////////////////////////////////// -// progressbar -//////////////////////////////////////////////////////////////// - -struct ControlProgressBar -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //progress bar's data - float progress; - BYTE prb_flags; -}pack; - - -typedef struct ControlProgressBar gui_progress_bar_t; - - -struct ProgressBarData -{ - int x; - int y; - int width; - int height; - float progress; -}pack; - - -typedef struct ProgressBarData gui_progress_bar_data_t; -//////////////////////////////////////////////////////////////// -// scrolled window -//////////////////////////////////////////////////////////////// - -struct ControlScrolledWindow -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //scrolled windows's data - DWORD virtual_x; - DWORD virtual_y; - DWORD virtual_sizex; - DWORD virtual_sizey; - DWORD *virtual_controls_x; - DWORD *virtual_controls_y; - DWORD number_virtual_controls; - DWORD scroll_arrea_sizex; - DWORD scroll_arrea_sizey; - DWORD *horizontal_scroll; - DWORD *vertical_scroll; - BYTE scw_flags; -}pack; - - -typedef struct ControlScrolledWindow gui_scrolled_window_t; - - -struct ScrolledWindowData -{ - int x; - int y; - int width; - int height; -}pack; - - -typedef struct ScrolledWindowData gui_scrolled_window_data_t; - -//////////////////////////////////////////////////////////////// -// image -//////////////////////////////////////////////////////////////// - -struct ControlImage -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - char bits_per_pixel; - char bytes_per_pixel; - char *img; -}pack; - - -typedef struct ControlImage gui_image_t; - - -struct ImageData -{ - int x; - int y; - int width; - int height; - char bits_per_pixel; -}pack; - - -typedef struct ImageData gui_image_data_t; - -//////////////////////////////////////////////////////////////// -// text -//////////////////////////////////////////////////////////////// - -struct ControlText -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - DWORD *font; - DWORD color; - DWORD background_color; - char *text; - BYTE txt_flags; -}pack; - - -typedef struct ControlText gui_text_t; - - -struct TextData -{ - int x; - int y; - DWORD *font; - DWORD color; - DWORD background_color; - char background; - char *text; -}pack; - - -typedef struct TextData gui_text_data_t; -///////////////////////////////////////////////////////////////// -// load libGUI library and link functions -///////////////////////////////////////////////////////////////// -void LoadLibGUI(char *lib_path); - -//********************************************************************** -// libGUI service functions -//********************************************************************** - -DWORD stdcall (*LibGUIversion)(void); -char stdcall (*InitLibGUI)(void); -void stdcall (*LibGUImain)(parent_t *WindowParent); -void stdcall (*QuitLibGUI)(parent_t *window); - -void* stdcall (*CreateWindow)(void); -void stdcall (*SetWindowSizeRequest)(parent_t *WindowParent,int size_x,int size_y); - -void stdcall (*PackControls)(void *Parent,void *control); -void stdcall (*DestroyControl)(void *control); -void stdcall (*SetControlSizeRequest)(void *Control,int new_size_x,int new_size_y); -int stdcall (*GetControlSizeX)(void *Control); -int stdcall (*GetControlSizeY)(void *Control); -void stdcall (*SetControlNewPosition)(void *Control,int new_x,int new_y); -int stdcall (*GetControlPositionX)(void *Control); -int stdcall (*GetControlPositionY)(void *Control); -void* stdcall (*SetFocuse)(void *Control); -void stdcall (*RedrawControl)(void *Control); -void stdcall (*SpecialRedrawControl)(void *Control); - -gui_callback_t* stdcall (*SetCallbackFunction)(void *Control, - int event_name,void *callback_func, - void *callback_func_data); -void stdcall (*BlockCallbackFunction)(void *Control,gui_callback_t *callback_ID); -void stdcall (*UnblockCallbackFunction)(void *Control,gui_callback_t *callback_ID); - -void stdcall (*SetIDL_Function)(parent_t *Parent,void *function,void *function_data); -void stdcall (*DestroyIDL_Function)(parent_t *Parent); - -gui_timer_t* stdcall (*SetTimerCallbackForFunction)(parent_t *parent_window, - int time_tick,void *func,void *func_data); -void stdcall (*DestroyTimerCallbackForFunction)(gui_timer_t *timer); - -gui_callbackevent_t* stdcall (*SetCallbackFunctionForEvent)(parent_t *parent_window, - int event_type,void *func,void *func_data); -void stdcall (*DestroyCallbackFunctionForEvent)(gui_callbackevent_t *callback_event); - -gui_button_t* stdcall (*CreateButton)(gui_button_data_t *info_for_control); -gui_button_t* stdcall (*CreateButtonWithText)(gui_button_data_t *info,char *txt); - -gui_progress_bar_t* stdcall (*CreateProgressBar)(gui_progress_bar_data_t *info_for_control); -void stdcall (*SetProgressBarPulse)(gui_progress_bar_t *ProgressBar,int time_update); -void stdcall (*ProgressBarSetText)(gui_progress_bar_t *pbar,char *txt); -char* stdcall (*ProgressBarGetText)(gui_progress_bar_t *pbar); - -gui_scroll_bar_t* stdcall (*CreateHorizontalScrollBar)(gui_scroll_bar_data_t *info_for_control); -gui_scroll_bar_t* stdcall (*CreateVerticalScrollBar)(gui_scroll_bar_data_t *info_for_control); - -gui_scrolled_window_t* stdcall (*CreateScrolledWindow)(gui_scrolled_window_data_t *info_for_control); -void stdcall (*ScrolledWindowPackControls)(gui_scrolled_window_t *parent,void *Control); - -gui_image_t* stdcall (*CreateImage)(gui_image_data_t *info_for_control); - -gui_text_t* stdcall (*CreateText)(gui_text_data_t *info_for_control); -void stdcall (*TextBackgroundOn)(gui_text_t *Text); -void stdcall (*TextBackgroundOff)(gui_text_t *Text); - -font_t* stdcall (*LoadFont)(char *fullfontname); -void stdcall (*FreeFont)(font_t *font); - diff --git a/programs/develop/new libGUI_C/SRC/compilation/MinGW/build.bat b/programs/develop/new libGUI_C/SRC/compilation/MinGW/build.bat deleted file mode 100755 index e84050b7c1..0000000000 --- a/programs/develop/new libGUI_C/SRC/compilation/MinGW/build.bat +++ /dev/null @@ -1,2 +0,0 @@ -gcc -c -O2 -nostdinc -nostdlib -march=pentium -fomit-frame-pointer -fno-builtin -o libGUI.obj libGUI.c -@pause diff --git a/programs/develop/new libGUI_C/SRC/compilation/cygwin/Makefile b/programs/develop/new libGUI_C/SRC/compilation/cygwin/Makefile deleted file mode 100644 index df59e6afd2..0000000000 --- a/programs/develop/new libGUI_C/SRC/compilation/cygwin/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -SRC = libGUI.c -TARGET = libGUI.obj -CFLAGS = -O2 -nostdinc -nostdlib -march=pentium -fomit-frame-pointer -fno-builtin -CC = gcc - -all: - $(CC) -c $(SRC) $(CFLAGS) -o $(TARGET) - strip -X --strip-unneeded $(TARGET) -clean: - rm *.obj - rm $(TARGET) diff --git a/programs/develop/new libGUI_C/SRC/control_button.h b/programs/develop/new libGUI_C/SRC/control_button.h deleted file mode 100755 index 1c1434f79f..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_button.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - control button data -*/ - -#define FLAG_INSERT_BUTTON_ON 0x1; -#define FLAG_INSERT_BUTTON_OFF 0xfe; -#define FLAG_PRESSED_BUTTON_ON 0x2 -#define FLAG_PRESSED_BUTTON_OFF 0xfd -#define FLAG_RELEASED_BUTTON_ON 0x4 -#define FLAG_RELEASED_BUTTON_OFF 0xfb - diff --git a/programs/develop/new libGUI_C/SRC/control_button.inc b/programs/develop/new libGUI_C/SRC/control_button.inc deleted file mode 100755 index b941b021c3..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_button.inc +++ /dev/null @@ -1,413 +0,0 @@ -/* - control Button -*/ - -void DrawFocuseForButton(struct ControlButton *Button) -{ - int x; - int y; - int sizex; - int sizey; - struct FINITION *fin; - - x=Button->ctrl_x; - y=Button->ctrl_y; - sizex=Button->ctrl_sizex; - sizey=Button->ctrl_sizey; - fin=(struct FINITION*)Button->finition; - - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,0xbfff); -} - -void DrawPressedButton(struct ControlButton *Button) -{ - int x; - int y; - int sizex; - int sizey; - struct FINITION *fin; - gui_message_t message; - - x=Button->ctrl_x; - y=Button->ctrl_y; - sizex=Button->ctrl_sizex; - sizey=Button->ctrl_sizey; - fin=(struct FINITION*)Button->finition; - - Draw(fin,TOOL_GRADIENT_DOWN_FILLED_RECTANGLE,x,y,sizex,sizey/2,COLOR_FON,COLOR_MIDDLE_LIGHT); - Draw(fin,TOOL_GRADIENT_DOWN_FILLED_RECTANGLE,x,y+sizey/2,sizex,sizey/2,COLOR_MIDDLE_LIGHT,COLOR_FON); - - - Draw(fin,TOOL_HORIZONTAL_LINE,x,x+sizex-1,y,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_VERTICAL_LINE,x,y,y+sizey-1,COLOR_LIGHT); - Draw(fin,TOOL_HORIZONTAL_LINE,x,x+sizex-1,y+sizey-1,COLOR_LIGHT); - Draw(fin,TOOL_VERTICAL_LINE,x,y,y+sizey-1,COLOR_ABSOLUTE_DARK); - - if (fin->flags & FINITION_ON) - { - message.type=MESSAGE_FULL_REDRAW_ALL_WITH_FINITION; - message.arg1=fin->x; - message.arg2=fin->y; - message.arg3=fin->sizex; - message.arg4=fin->sizey; - } - else - { - message.type=MESSAGE_FULL_REDRAW_ALL; - } - - SendMessage((struct HEADER*)Button,&message); - - if (Button->flags & FLAG_FOCUSE_INPUT_ON) DrawFocuseForButton(Button); -} - -void DrawInsertButton(struct ControlButton *Button) -{ - int x; - int y; - int sizex; - int sizey; - struct FINITION *fin; - - x=Button->ctrl_x; - y=Button->ctrl_y; - sizex=Button->ctrl_sizex; - sizey=Button->ctrl_sizey; - fin=(struct FINITION*)Button->finition; - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_INSERT); -} - -void DrawButton(struct ControlButton *Button) -{ - int x; - int y; - int sizex; - int sizey; - struct FINITION *fin; - gui_message_t message; - - x=Button->ctrl_x; - y=Button->ctrl_y; - sizex=Button->ctrl_sizex; - sizey=Button->ctrl_sizey; - fin=(struct FINITION*)Button->finition; - - Draw(fin,TOOL_GRADIENT_UP_FILLED_RECTANGLE,x,y,sizex,sizey,COLOR_FON,COLOR_MIDDLE_LIGHT); - //Draw(fin,TOOL_GRADIENT_DOWN_FILLED_RECTANGLE,x,y+sizey/2,sizex,sizey/2,COLOR_FON,COLOR_MIDDLE_LIGHT); - - - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_ABSOLUTE_DARK); - - Draw(fin,TOOL_HORIZONTAL_LINE,x+1,x+sizex-2,y+1,COLOR_LIGHT); - Draw(fin,TOOL_VERTICAL_LINE,x+sizex-2,y+1,y+sizey-2,COLOR_MIDDLE_LIGHT); - Draw(fin,TOOL_HORIZONTAL_LINE,x+1,x+sizex-2,y+sizey-2,COLOR_MIDDLE_LIGHT); - Draw(fin,TOOL_VERTICAL_LINE,x+1,y+1,y+sizey-2,COLOR_LIGHT); - - if (Button->child_bk!=NULL) - { - if (fin->flags & FINITION_ON) - { - message.type=MESSAGE_FULL_REDRAW_ALL_WITH_FINITION; - message.arg1=fin->x; - message.arg2=fin->y; - message.arg3=fin->sizex; - message.arg4=fin->sizey; - } - else - { - message.type=MESSAGE_FULL_REDRAW_ALL; - } - SendMessage((struct HEADER*)Button,&message); - } - if (Button->flags & FLAG_FOCUSE_INPUT_ON) DrawFocuseForButton(Button); -} - -//--------------------------------------------------------------------------------- -// control Button -//--------------------------------------------------------------------------------- -void ButtonProc(struct ControlButton *button,struct MESSAGE *message) -{ - int x,y,btn_state; - char v; - struct TIMER *timer; - struct FINITION *fin; - parent_t *main_parent; - - switch(message->type) - { - case MESSAGE_FULL_REDRAW_ALL: - { - //draw button - if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button); - break; - } - case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION: - { - fin=(struct FINITION*)button->finition; - fin->flags=fin->flags | FINITION_ON; - fin->x=message->arg1; - fin->y=message->arg2; - fin->sizex=message->arg3; - fin->sizey=message->arg4; - DrawButton(button); - break; - } - case MESSAGE_KEYS_EVENT: - { - main_parent=(parent_t*)button->main_parent; - //not relazed yet - if (button->flags & FLAG_FOCUSE_INPUT_ON) - { - if (message->arg1==KEY_DOWN) - { - if (message->arg2==SC_SPACE) - { - button->btn_flags=button->btn_flags | FLAG_PRESSED_BUTTON_ON; - - if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_PRESSED_EVENT)!=NULL) - { - button->flags=button->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)button; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_PRESSED_EVENT); - main_parent->number_callbacks++; - } - if (button->flags & FLAG_SHOW_CONTROL) DrawPressedButton(button); - } - } - else - { - if (message->arg2==SC_SPACE) - { - button->btn_flags=button->btn_flags | FLAG_RELEASED_BUTTON_ON; - button->btn_flags=button->btn_flags & FLAG_PRESSED_BUTTON_OFF; - - if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_RELEASED_EVENT)!=NULL) - { - button->flags=button->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)button; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_RELEASED_EVENT); - main_parent->number_callbacks++; - } - if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button); - } - } - } - break; - } - case MESSAGE_SPECIALIZED: - { - if (button->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON) - { - if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button); - button->flags=button->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF; - } - break; - } - case MESSAGE_MOUSE_EVENT: - { //check press of mouse buttons - x=message->arg1; - y=message->arg2; - main_parent=(parent_t*)button->main_parent; - - if (message->arg3==MOUSE_LEFT_BUTTON_UP) - { - //insert of button - if (CheckCrossBox((struct HEADER*)button,x,y)==TRUE) - { - v=button->btn_flags & FLAG_INSERT_BUTTON_ON; - if ((ControlCheckCallbackEvent(button,(DWORD)BUTTON_ENTER_EVENT)!=NULL) && (v==FALSE)) - { - button->flags=button->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)button; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_ENTER_EVENT); - main_parent->number_callbacks++; - } - button->btn_flags=button->btn_flags | FLAG_INSERT_BUTTON_ON; - - if (button->flags & FLAG_SHOW_CONTROL) DrawInsertButton(button); - } - else - { - v=button->btn_flags & FLAG_INSERT_BUTTON_ON; - if (v==TRUE) - { - if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_LEAVE_EVENT)!=NULL) - { - button->flags=button->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)button; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_LEAVE_EVENT); - main_parent->number_callbacks++; - } - button->btn_flags=button->btn_flags & FLAG_INSERT_BUTTON_OFF; - if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button); - } - } - - if (button->btn_flags & FLAG_PRESSED_BUTTON_ON) - { - button->btn_flags=button->btn_flags & FLAG_PRESSED_BUTTON_OFF; - button->btn_flags=button->btn_flags | FLAG_RELEASED_BUTTON_ON; - - if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_RELEASED_EVENT)!=NULL) - { - button->flags=button->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)button; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_RELEASED_EVENT); - main_parent->number_callbacks++; - } - if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button); - } - - - } - else - { - if (CheckCrossBox((struct HEADER*)button,x,y)==TRUE) - { - if (message->arg3==MOUSE_LEFT_BUTTON_DOWN) - { - if ((button->btn_flags & FLAG_PRESSED_BUTTON_ON)==FALSE) - {if (button->flags & FLAG_SHOW_CONTROL) - DrawPressedButton(button);} - button->btn_flags=button->btn_flags | FLAG_PRESSED_BUTTON_ON; - } - } - - if ((message->arg3==MOUSE_LEFT_BUTTON_DOWN) && (button->btn_flags & FLAG_PRESSED_BUTTON_ON)) - { - if (ControlCheckCallbackEvent(button,(DWORD)BUTTON_PRESSED_EVENT)!=NULL) - { - button->flags=button->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)button; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(button,(DWORD)BUTTON_PRESSED_EVENT); - main_parent->number_callbacks++; - } - } - } - break; - } - case MESSAGE_CHANGE_POSITION_EVENT: - { - button->ctrl_x=button->ctrl_x+message->arg1; - button->ctrl_y=button->ctrl_y+message->arg2; - break; - } - case MESSAGE_CALL_TIMER_EVENT: - { - if (button->timer!=(DWORD*)NULL) - { - timer=(struct TIMER*)button->timer; - if (timer->flags & FLAG_TIMER_ON) Timer(timer); - } - break; - } - case MESSAGE_SET_FOCUSE: - { - button->flags=button->flags | FLAG_FOCUSE_INPUT_ON; - if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button); - break; - } - case MESSAGE_CHANGE_FOCUSE: - { - button->flags=button->flags & FLAG_FOCUSE_INPUT_OFF; - if (button->flags & FLAG_SHOW_CONTROL) DrawButton(button); - break; - } - case MESSAGE_DESTROY_CONTROL: - { - if (button->timer!=(DWORD*)NULL) free(button->timer); - free(button->finition); - break; - } - case MESSAGE_SET_MAIN_PARENT: - { - SendMessage((struct HEADER*)button,message); - button->main_parent=(DWORD*)message->arg1; - break; - } - default: break; - } - //send message to child controls(if there is) - SendMessage((struct HEADER*)button,message); -} - -//--------------------------------------------------------------------------------- -// create control Button -//--------------------------------------------------------------------------------- -void* CreateButton(struct ButtonData *info_for_control) -{ - struct ControlButton *Button; - struct FINITION *fin; - - Button=malloc(sizeof(struct ControlButton)); - Button->finition=malloc(sizeof(struct FINITION)); - fin=(struct FINITION*)Button->finition; - fin->flags=0; - - ID++; -#ifdef DEBUG - printf("\ncreated button with ID=%d",(int)ID); -#endif - Button->child_bk=(DWORD*)NULL; - Button->child_fd=(DWORD*)NULL; - Button->active_control_for_keys=(DWORD*)NULL; - Button->active_control_for_mouse=(DWORD*)NULL; - Button->callback=(DWORD*)NULL; - Button->timer=(DWORD*)NULL; - - Button->ctrl_proc=(DWORD*)&ButtonProc; - Button->ctrl_x=info_for_control->x; - Button->ctrl_y=info_for_control->y; - Button->ctrl_sizex=info_for_control->width; - Button->ctrl_sizey=info_for_control->height; - Button->ctrl_ID=ID; - Button->flags=0; - Button->flags=Button->flags | FLAG_SHOW_CONTROL; - Button->flags=Button->flags | FLAG_FOCUSE_INPUT_SUPPOROTE; - - Button->btn_flags=0; - - return(Button); -} - -void* CreateButtonWithText(gui_button_data_t *info,char *txt) -{ - gui_button_t *Button; - gui_text_t *text; - gui_text_data_t txtdata; - int len; - - Button=CreateButton(info); - len=strlen(txt); - - txtdata.x=0; - txtdata.y=0; - txtdata.font=NULL; - txtdata.background=FALSE; - txtdata.color=0; - txtdata.text=malloc(len); - memmove(txtdata.text,txt,len); - text=CreateText(&txtdata); - - if (text->ctrl_sizex>Button->ctrl_sizex) Button->ctrl_sizex=text->ctrl_sizex+10; - if (text->ctrl_sizey>Button->ctrl_sizey) Button->ctrl_sizey=text->ctrl_sizey+6; - - text->ctrl_x=(Button->ctrl_sizex/2)-(text->ctrl_sizex/2); - text->ctrl_y=(Button->ctrl_sizey/2)-(text->ctrl_sizey/2); - PackControls(Button,text); - - return(Button); -} - diff --git a/programs/develop/new libGUI_C/SRC/control_image.h b/programs/develop/new libGUI_C/SRC/control_image.h deleted file mode 100755 index e69de29bb2..0000000000 diff --git a/programs/develop/new libGUI_C/SRC/control_image.inc b/programs/develop/new libGUI_C/SRC/control_image.inc deleted file mode 100755 index 7201112c4b..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_image.inc +++ /dev/null @@ -1,162 +0,0 @@ -/* - control Image -*/ - -void DisplayImage(gui_image_t *Image) -{ - int x; - int y; - int sizex; - int sizey; - struct FINITION *fin; - - x=Image->ctrl_x; - y=Image->ctrl_y; - sizex=Image->ctrl_sizex; - sizey=Image->ctrl_sizey; - fin=(struct FINITION*)Image->finition; - - Draw(fin,TOOL_IMAGE,x,y,sizex,sizey,Image->bits_per_pixel,Image->img); -} - -//--------------------------------------------------------------------------------- -// control Image -//--------------------------------------------------------------------------------- -void ImageProc(gui_image_t *Image,gui_message_t *message) -{ - finition_t *fin; - - switch(message->type) - { - case MESSAGE_FULL_REDRAW_ALL: - { - //draw Image - if (Image->flags & FLAG_SHOW_CONTROL) DisplayImage(Image); - break; - } - case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION: - { - fin=(struct FINITION*)Image->finition; - fin->flags=fin->flags | FINITION_ON; - fin->x=message->arg1; - fin->y=message->arg2; - fin->sizex=message->arg3; - fin->sizey=message->arg4; - DisplayImage(Image); - break; - } - case MESSAGE_SPECIALIZED: - { - if (Image->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON) - { - if (Image->flags & FLAG_SHOW_CONTROL) DisplayImage(Image); - Image->flags=Image->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF; - } - break; - } - case MESSAGE_CHANGE_POSITION_EVENT: - { - Image->ctrl_x=Image->ctrl_x+message->arg1; - Image->ctrl_y=Image->ctrl_y+message->arg2; - break; - } - case MESSAGE_DESTROY_CONTROL: - { - free(Image->finition); - free(Image->img); - break; - } - case MESSAGE_SET_MAIN_PARENT: - { - SendMessage((struct HEADER*)Image,message); - Image->main_parent=(DWORD*)message->arg1; - break; - } - - default: break; - } - //send message to child controls(if there is) - SendMessage((struct HEADER*)Image,message); -} - -//--------------------------------------------------------------------------------- -// create control Image -//--------------------------------------------------------------------------------- -void* CreateImage(struct ImageData *info_for_control) -{ - gui_image_t *Image; - finition_t *fin; - DWORD sizemem; - - Image=malloc(sizeof(struct ControlImage)); - Image->finition=malloc(sizeof(struct FINITION)); - fin=(struct FINITION*)Image->finition; - fin->flags=0; - - ID++; -#ifdef DEBUG - printf("\ncreated image with ID=%d",(int)ID); -#endif - Image->child_bk=(DWORD*)NULL; - Image->child_fd=(DWORD*)NULL; - Image->active_control_for_keys=(DWORD*)NULL; - Image->active_control_for_mouse=(DWORD*)NULL; - Image->callback=(DWORD*)NULL; - Image->timer=(DWORD*)NULL; - - Image->ctrl_proc=(DWORD*)&ImageProc; - Image->ctrl_x=(DWORD)info_for_control->x; - Image->ctrl_y=(DWORD)info_for_control->y; - Image->ctrl_sizex=(DWORD)info_for_control->width; - Image->ctrl_sizey=(DWORD)info_for_control->height; - Image->bits_per_pixel=info_for_control->bits_per_pixel; - Image->ctrl_ID=ID; - Image->flags=0; - Image->flags=Image->flags | FLAG_SHOW_CONTROL; - - switch(Image->bits_per_pixel) - { - case 32: - { - sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*4; - Image->bytes_per_pixel=4; - break; - } - case 24: - { - sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*3; - Image->bytes_per_pixel=3; - break; - } - case 16: - { - sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*2; - Image->bytes_per_pixel=2; - break; - } - case 15: - { - sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*2; - Image->bytes_per_pixel=2; - break; - } - case 8: - { - sizemem=Image->ctrl_sizex*Image->ctrl_sizey; - Image->bytes_per_pixel=1; - break; - } - case 4: - { - sizemem=((Image->ctrl_sizex*Image->ctrl_sizey)>>1)+1; - Image->bytes_per_pixel=0; - break; - } - default: return(NULL); - } - - Image->img=malloc(sizemem); - - return(Image); -} - diff --git a/programs/develop/new libGUI_C/SRC/control_progress_bar.h b/programs/develop/new libGUI_C/SRC/control_progress_bar.h deleted file mode 100755 index d8e8f46110..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_progress_bar.h +++ /dev/null @@ -1,16 +0,0 @@ -#define FLAG_PB_VERTICAL_ORIENTATION_ON 0x1 -#define FLAG_PB_HORIZONTAL_ORIENTATION_ON 0x2 -#define FLAG_PB_FROM_LEFT_TO_RIGHT_ON 0x4 -#define FLAG_PB_FROM_RIGHT_TO_LEFT_ON 0x8 -#define FLAG_PB_FROM_DOWN_TO_UP_ON 0x10 -#define FLAG_PB_FROM_UP_TO_DOWN_ON 0x20 -#define FLAG_PB_TEXT_ON 0x40 - -#define FLAG_PB_VERTICAL_ORIENTATION_OFF 0xfe -#define FLAG_PB_HORIZONTAL_ORIENTATION_OFF 0xfd -#define FLAG_PB_FROM_LEFT_TO_RIGHT_OFF 0xfb -#define FLAG_PB_FROM_RIGHT_TO_LEFT_OFF 0xf7 -#define FLAG_PB_FROM_DOWN_TO_UP_OFF 0xef -#define FLAG_PB_FROM_UP_TO_DOWN_OFF 0xdf -#define FLAG_PB_TEXT_OFF 0xbf - diff --git a/programs/develop/new libGUI_C/SRC/control_progress_bar.inc b/programs/develop/new libGUI_C/SRC/control_progress_bar.inc deleted file mode 100755 index 4d621ce6f2..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_progress_bar.inc +++ /dev/null @@ -1,311 +0,0 @@ -/* - control ProgressBar -*/ - -void ProgressBarDrawProgress(struct ControlProgressBar *ProgressBar) -{ - int x; - int y; - int pos_progress; - int sizex; - int sizey; - char v; - struct FINITION *fin; - gui_message_t message; - gui_text_size_t size; - gui_text_t *Text; - - if ((ProgressBar->flags & FLAG_SHOW_CONTROL)==FALSE) return; - - x=ProgressBar->ctrl_x; - y=ProgressBar->ctrl_y; - sizex=ProgressBar->ctrl_sizex; - sizey=ProgressBar->ctrl_sizey; - fin=(struct FINITION*)ProgressBar->finition; - - if (ProgressBar->progress<0.0) ProgressBar->progress=0.0; - if (ProgressBar->progress>1.0) ProgressBar->progress=1.0; - - v=ProgressBar->prb_flags & FLAG_PB_HORIZONTAL_ORIENTATION_ON; - if (v!=FALSE) - { - pos_progress=(int)(ProgressBar->progress*(sizex-2)); - - if (ProgressBar->prb_flags & FLAG_PB_FROM_LEFT_TO_RIGHT_ON) - { - Draw(fin,TOOL_GRADIENT_UP_FILLED_RECTANGLE,x+1,y+1,pos_progress,sizey-2,COLOR_FON,COLOR_MIDDLE_LIGHT); - Draw(fin,TOOL_GRADIENT_UP_FILLED_RECTANGLE,x+1+pos_progress,y+1,sizex-2-pos_progress, - sizey-2,COLOR_MIDDLE_LIGHT,COLOR_LIGHT); - if (ProgressBar->prb_flags & FLAG_PB_TEXT_ON) - { - if (fin->flags & FINITION_ON) - { - message.type=MESSAGE_FULL_REDRAW_ALL_WITH_FINITION; - message.arg1=fin->x; - message.arg2=fin->y; - message.arg3=fin->sizex; - message.arg4=fin->sizey; - } - else - { - message.type=MESSAGE_FULL_REDRAW_ALL; - } - Text=(gui_text_t*)ProgressBar->child_bk; - size=GetStringSize((font_t*)Text->font,Text->text); - Text->ctrl_sizex=(DWORD)size.sizex; - Text->ctrl_sizey=(DWORD)size.sizey; - Text->ctrl_x=x+(sizex/2)-(Text->ctrl_sizex/2); - Text->ctrl_y=y+(sizey/2)-(Text->ctrl_sizey/2); - - SendMessage((struct HEADER*)ProgressBar,&message); - } - } - - if (ProgressBar->prb_flags & FLAG_PB_FROM_RIGHT_TO_LEFT_ON) - { - //Draw(fin,"filled_rectangle",x+sizex-pos_progress-1,y+1,x+sizex-1,sizey-2,0xff0000); - } - - } -} - -void DrawProgressBar(struct ControlProgressBar *ProgressBar) -{ - int x,y,sizex,sizey; - char c; - char *save_buf,*buf; - int save_size_x,save_size_y; - DWORD draw_output,flags; - finition_t *fin; - - x=ProgressBar->ctrl_x; - y=ProgressBar->ctrl_y; - sizex=ProgressBar->ctrl_sizex; - sizey=ProgressBar->ctrl_sizey; - fin=(struct FINITION*)ProgressBar->finition; - - //alocate a buffer for draw text - c=screen.bits_per_pixel >> 3; - buf=malloc(sizex*sizey*c); - - //save current screen parameters - save_buf=screen.buffer; - save_size_x=screen.size_x; - save_size_y=screen.size_y; - draw_output=screen.draw_output; - - //load parameters of local buffer - screen.buffer=buf; - screen.size_x=sizex; - screen.size_y=sizey; - screen.draw_output=DRAW_OUTPUT_BUFFER; - - //move control - SetControlNewPosition(ProgressBar,0,0); - //save finition parameters - flags=fin->flags; - fin->flags &=FINITION_OFF; - - //draw progress bar in buffer - Draw(fin,TOOL_RECTANGLE,0,0,sizex,sizey,COLOR_ABSOLUTE_DARK); - ProgressBarDrawProgress(ProgressBar); - - //restore last position of control - SetControlNewPosition(ProgressBar,x,y); - //restore finition - fin->flags=flags; - - //restore screen parameters - screen.buffer=save_buf; - screen.size_x=save_size_x; - screen.size_y=save_size_y; - screen.draw_output=draw_output; - - //move rendered objects from local buffer to screen - if (fin->flags & FINITION_ON) - DrawImageFinit(fin,x,y,sizex,sizey,screen.bits_per_pixel,buf); - else - DrawImage(x,y,sizex,sizey,screen.bits_per_pixel,buf); - - //free local buffer - free(buf); -} - -void SetProgressBarPulse(struct ControlProgressBar *ProgressBar,int time_tick) -{ - struct TIMER *timer; - struct HEADERPARENT *main_parent; - - main_parent=(struct HEADERPARENT*)ProgressBar->main_parent; - if (main_parent!=(struct HEADERPARENT*)NULL) - { - main_parent->number_timers_for_controls++; - - ProgressBar->timer=(DWORD*)SetTimerCallbackForControl(time_tick,&DrawProgressBar,ProgressBar); - timer=(struct TIMER*)ProgressBar->timer; - timer->flags=timer->flags | FLAG_TIMER_ON; - } -} - -//--------------------------------------------------------------------------------- -// control ProgressBar -//--------------------------------------------------------------------------------- -void ProgressBarProc(struct ControlProgressBar *ProgressBar,struct MESSAGE *message) -{ - int btn_state; - char v; - struct TIMER *timer; - struct FINITION *fin; - - switch(message->type) - { - case MESSAGE_FULL_REDRAW_ALL: - { - //draw ProgressBar - if (ProgressBar->flags & FLAG_SHOW_CONTROL) DrawProgressBar(ProgressBar); - break; - } - case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION: - { - fin=(struct FINITION*)ProgressBar->finition; - fin->flags=fin->flags | FINITION_ON; - fin->x=message->arg1; - fin->y=message->arg2; - fin->sizex=message->arg3; - fin->sizey=message->arg4; - DrawProgressBar(ProgressBar); - break; - } - case MESSAGE_SPECIALIZED: - { //redraw bar of progress - if (ProgressBar->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON) - { - if (ProgressBar->flags & FLAG_SHOW_CONTROL) ProgressBarDrawProgress(ProgressBar); - ProgressBar->flags=ProgressBar->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF; - } - break; - } - case MESSAGE_CHANGE_POSITION_EVENT: - { - ProgressBar->ctrl_x=ProgressBar->ctrl_x+message->arg1; - ProgressBar->ctrl_y=ProgressBar->ctrl_y+message->arg2; - SendMessage((struct HEADER*)ProgressBar,message); - break; - } - case MESSAGE_CALL_TIMER_EVENT: - { - if (ProgressBar->timer!=(DWORD*)NULL) - { - timer=(struct TIMER*)ProgressBar->timer; - if (timer->flags & FLAG_TIMER_ON) Timer(timer); - } - SendMessage((struct HEADER*)ProgressBar,message); - break; - } - case MESSAGE_DESTROY_CONTROL: - { - if (ProgressBar->timer!=(DWORD*)NULL) free(ProgressBar->timer); - free(ProgressBar->finition); - SendMessage((struct HEADER*)ProgressBar,message); - break; - } - case MESSAGE_SET_MAIN_PARENT: - { - SendMessage((struct HEADER*)ProgressBar,message); - ProgressBar->main_parent=(DWORD*)message->arg1; - SendMessage((struct HEADER*)ProgressBar,message); - break; - } - - default: break; - } -} - -//--------------------------------------------------------------------------------- -// create control ProgressBar -//--------------------------------------------------------------------------------- -void* CreateProgressBarEmpty(struct ProgressBarData *info_for_control) -{ - struct ControlProgressBar *ProgressBar; - struct FINITION *fin; - - ProgressBar=malloc(sizeof(struct ControlProgressBar)); - ProgressBar->finition=malloc(sizeof(struct FINITION)); - fin=(struct FINITION*)ProgressBar->finition; - fin->flags=0; - - ID++; -#ifdef DEBUG - printf("\ncreated progress bar with ID=%d",(int)ID); -#endif - ProgressBar->child_bk=(DWORD*)NULL; - ProgressBar->child_fd=(DWORD*)NULL; - ProgressBar->active_control_for_keys=(DWORD*)NULL; - ProgressBar->active_control_for_mouse=(DWORD*)NULL; - ProgressBar->callback=(DWORD*)NULL; - ProgressBar->timer=(DWORD*)NULL; - ProgressBar->ctrl_proc=(DWORD*)&ProgressBarProc; - ProgressBar->ctrl_x=(DWORD)info_for_control->x; - ProgressBar->ctrl_y=(DWORD)info_for_control->y; - ProgressBar->ctrl_sizex=(DWORD)info_for_control->width; - ProgressBar->ctrl_sizey=(DWORD)info_for_control->height; - ProgressBar->ctrl_ID=ID; - ProgressBar->progress=info_for_control->progress; - ProgressBar->flags=0; - ProgressBar->flags=ProgressBar->flags | FLAG_SHOW_CONTROL; - - ProgressBar->prb_flags=0; - ProgressBar->prb_flags=ProgressBar->prb_flags | FLAG_PB_HORIZONTAL_ORIENTATION_ON; - ProgressBar->prb_flags=ProgressBar->prb_flags | FLAG_PB_FROM_LEFT_TO_RIGHT_ON; - - return(ProgressBar); -} - -void* CreateProgressBar(gui_progress_bar_data_t *info) -{ - gui_text_t *text; - gui_text_data_t txtdata; - gui_progress_bar_t *pbar; - - pbar=CreateProgressBarEmpty(info); - - txtdata.x=0; - txtdata.y=0; - txtdata.font=NULL; - txtdata.background=FALSE; - txtdata.color=0; - txtdata.text=malloc(1024); - txtdata.text[0]=0; - text=CreateText(&txtdata); - - text->ctrl_x=(pbar->ctrl_sizex/2)-(text->ctrl_sizex/2); - text->ctrl_y=(pbar->ctrl_sizey/2)-(text->ctrl_sizey/2); - PackControls(pbar,text); - - text->flags &=FLAG_HIDE_CONTROL; - - return(pbar); -} - -void ProgressBarSetText(gui_progress_bar_t *pbar,char *txt) -{ - gui_text_t *text; - - text=(gui_text_t*)pbar->child_bk; - - if (*txt!='\0') - { - pbar->prb_flags|=FLAG_PB_TEXT_ON; - memmove(text->text,txt,strlen(txt)); - text->flags |=FLAG_SHOW_CONTROL; - } -} - -char *ProgressBarGetText(gui_progress_bar_t *pbar) -{ - gui_text_t *text; - - text=(gui_text_t*)pbar->child_bk; - - return(text->text); -} diff --git a/programs/develop/new libGUI_C/SRC/control_scroll_bar.h b/programs/develop/new libGUI_C/SRC/control_scroll_bar.h deleted file mode 100755 index a24327e6ce..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_scroll_bar.h +++ /dev/null @@ -1,6 +0,0 @@ -#define FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON 0x1 -#define FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_OFF 0xfe -#define FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON 0x2 -#define FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_OFF 0xfd -#define FLAG_SCROLL_RULLER_PRESSED 0x4 -#define FLAG_SCROLL_RULLER_RELEASED 0xfb diff --git a/programs/develop/new libGUI_C/SRC/control_scroll_bar.inc b/programs/develop/new libGUI_C/SRC/control_scroll_bar.inc deleted file mode 100755 index e97e1b3160..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_scroll_bar.inc +++ /dev/null @@ -1,801 +0,0 @@ -/* - control ScrollBar -*/ - -//////////////////////////////////////////////////////////////////////////////// -// Draw Ruller -//////////////////////////////////////////////////////////////////////////////// -void DrawRuller(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - int scrollbar_size,ruller_size,ruller_pos; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON) - { - scrollbar_size=sizex-sizey*2; - ruller_size=(int)(scrollbar_size*ScrollBar->ruller_size); - if (ruller_size<5) ruller_size=5; - if (ruller_size>sizex) ruller_size=sizex-2*sizey; - - ruller_pos=x+sizey+(int)((scrollbar_size-ruller_size)*ScrollBar->ruller_pos); - //left bar - Draw(fin,TOOL_FILLED_RECTANGLE,x+sizey,y+1,ruller_pos-x-sizey,sizey-2,COLOR_FON); - //right bar - Draw(fin,TOOL_FILLED_RECTANGLE,ruller_pos+ruller_size,y+1,x+sizex-sizey-ruller_pos-ruller_size,sizey-2,COLOR_FON); - //roller - Draw(fin,TOOL_RECTANGLE,ruller_pos,y,ruller_size,sizey,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,ruller_pos+1,y+1,ruller_size-2,sizey-2,COLOR_MIDDLE_LIGHT); - Draw(fin,TOOL_VERTICAL_LINE,ruller_pos+(ruller_size/2)-2,y+sizey/4,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_VERTICAL_LINE,ruller_pos+(ruller_size/2),y+sizey/4,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_VERTICAL_LINE,ruller_pos+(ruller_size/2)+2,y+sizey/4,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - } - - if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON) - { - scrollbar_size=sizey-sizex*2; - ruller_size=(int)(scrollbar_size*ScrollBar->ruller_size); - if (ruller_size<5) ruller_size=5; - if (ruller_size>sizey) ruller_size=sizey-2*sizex; - - ruller_pos=y+sizex+(int)((scrollbar_size-ruller_size)*ScrollBar->ruller_pos); - //up bar - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+sizex,sizex-2,ruller_pos-y-sizex,COLOR_FON); - //down bar - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,ruller_pos+ruller_size,sizex-2,y+sizey-sizex-ruller_pos-ruller_size,COLOR_FON); - //roller - Draw(fin,TOOL_RECTANGLE,x,ruller_pos,sizex,ruller_size,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,ruller_pos+1,sizex-2,ruller_size-2,COLOR_MIDDLE_LIGHT); - Draw(fin,TOOL_HORIZONTAL_LINE,x+sizex/4,x+(3*sizex)/4,ruller_pos+(ruller_size/2)-2,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_HORIZONTAL_LINE,x+sizex/4,x+(3*sizex)/4,ruller_pos+(ruller_size/2),COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_HORIZONTAL_LINE,x+sizex/4,x+(3*sizex)/4,ruller_pos+(ruller_size/2)+2,COLOR_ABSOLUTE_DARK); - } - -} - -//////////////////////////////////////////////////////////////////////////////// -// Draw full Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void DrawScrollBar(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON) - { - - //draw child buttons and roller - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_ABSOLUTE_DARK); - //left button - Draw(fin,TOOL_RECTANGLE,x,y,sizey,sizey,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizey-2,sizey-2,COLOR_MIDDLE_LIGHT); - //left arrow of left button - Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - //right button - Draw(fin,TOOL_RECTANGLE,x+sizex-sizey,y,sizey,sizey,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+sizex-sizey+1,y+1,sizey-2,sizey-2,COLOR_MIDDLE_LIGHT); - //right arrow of right button - Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - //roller - DrawRuller(ScrollBar); - } - - if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON) - { - //draw child buttons and roller - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_ABSOLUTE_DARK); - //up button - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizex,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizex-2,sizex-2,COLOR_MIDDLE_LIGHT); - //up arrow of up button - Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+sizex/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+(3*sizex)/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+sizex/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+(3*sizex)/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - //down button - Draw(fin,TOOL_RECTANGLE,x,y+sizey-sizex,sizex,sizex,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+sizey-sizex+1,sizex-2,sizex-2,COLOR_MIDDLE_LIGHT); - //down arrow of down button - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+sizex/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+(3*sizex)/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+sizex/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+(3*sizex)/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - //roller - DrawRuller(ScrollBar); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// Vertical Scroll Bar -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -// animation of up button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_DrawPressedUpButton(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - //up button - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizex,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizex-2,sizex-2,COLOR_FON); - //up arrow of up button - Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+sizex/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+(3*sizex)/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+sizex/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+(3*sizex)/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK); -} - -void ScrollBar_DrawReleasedUpButton(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - //up button - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizex,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizex-2,sizex-2,COLOR_MIDDLE_LIGHT); - //up arrow of up button - Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+sizex/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizex/3,x+(3*sizex)/4,y+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+sizex/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+1+(sizex/3),x+(3*sizex)/4,y+1+(2*sizex)/3,COLOR_ABSOLUTE_DARK); -} - -//////////////////////////////////////////////////////////////////////////////// -// animation of down button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_DrawPressedDownButton(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - //down button - Draw(fin,TOOL_RECTANGLE,x,y+sizey-sizex,sizex,sizex,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+sizey-sizex+1,sizex-2,sizex-2,COLOR_FON); - //down arrow of down button - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+sizex/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+(3*sizex)/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+sizex/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+(3*sizex)/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK); -} - -void ScrollBar_DrawReleasedDownButton(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - //down button - Draw(fin,TOOL_RECTANGLE,x,y+sizey-sizex,sizex,sizex,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+sizey-sizex+1,sizex-2,sizex-2,COLOR_MIDDLE_LIGHT); - //down arrow of down button - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+sizex/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-sizex/3,x+(3*sizex)/4,y+sizey-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+sizex/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex/2,y+sizey-1-(sizex/3),x+(3*sizex)/4,y+sizey-1-(2*sizex)/3,COLOR_ABSOLUTE_DARK); -} - -//////////////////////////////////////////////////////////////////////////////// -// callback function for up button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_FuncCallbackForUpButton_Pressed(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - struct HEADERPARENT *main_parent; - - ScrollBar=(struct ControlScrollBar*)data; - if (ScrollBar->ruller_size!=1.0) - { - ScrollBar->ruller_pos=ScrollBar->ruller_pos-ScrollBar->ruller_step; - } - if (ScrollBar->ruller_pos<0.0) ScrollBar->ruller_pos=0.0; - ScrollBar_DrawPressedUpButton(ScrollBar); - - if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL) - { - main_parent=(struct HEADERPARENT*)ScrollBar->main_parent; - ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)ScrollBar; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT); - main_parent->number_callbacks++; - } - DrawRuller(ScrollBar); -} - -void ScrollBar_FuncCallbackForUpButton_Released(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - - ScrollBar=(struct ControlScrollBar*)data; - ScrollBar_DrawReleasedUpButton(ScrollBar); -} - -//////////////////////////////////////////////////////////////////////////////// -// callback function for down button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_FuncCallbackForDownButton_Pressed(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - struct HEADERPARENT *main_parent; - - ScrollBar=(struct ControlScrollBar*)data; - if (ScrollBar->ruller_size!=1.0) - { - ScrollBar->ruller_pos=ScrollBar->ruller_pos+ScrollBar->ruller_step; - } - if (ScrollBar->ruller_pos>1.0) ScrollBar->ruller_pos=1.0; - ScrollBar_DrawPressedDownButton(ScrollBar); - - if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL) - { - main_parent=(struct HEADERPARENT*)ScrollBar->main_parent; - ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)ScrollBar; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT); - main_parent->number_callbacks++; - } - DrawRuller(ScrollBar); -} - -void ScrollBar_FuncCallbackForDownButton_Released(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - - ScrollBar=(struct ControlScrollBar*)data; - ScrollBar_DrawReleasedDownButton(ScrollBar); - DrawRuller(ScrollBar); -} - -//////////////////////////////////////////////////////////////////////////////// -// Horizontal Scroll Bar -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -// animation of left button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_DrawPressedLeftButton(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - //left button - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizey-2,sizey-2,COLOR_FON); - //left arrow of left button - Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); -} - -void ScrollBar_DrawReleasedLeftButton(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - //left button - Draw(fin,TOOL_FILLED_RECTANGLE,x+1,y+1,sizey-2,sizey-2,COLOR_MIDDLE_LIGHT); - //left arrow of left button - Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizey/3,y+sizey/2,x+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+1+(sizey/3),y+sizey/2,x+1+(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); -} - -//////////////////////////////////////////////////////////////////////////////// -// animation of right button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_DrawPressedRightButton(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - //right button - Draw(fin,TOOL_FILLED_RECTANGLE,x+sizex-sizey+1,y+1,sizey-2,sizey-2,COLOR_FON); - //right arrow of right button - Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); -} - -void ScrollBar_DrawReleasedRightButton(struct ControlScrollBar *ScrollBar) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - fin=(struct FINITION*)ScrollBar->finition; - - //right button - Draw(fin,TOOL_FILLED_RECTANGLE,x+sizex-sizey+1,y+1,sizey-2,sizey-2,COLOR_MIDDLE_LIGHT); - //right arrow of right button - Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-sizey/3,y+sizey/2,x+sizex-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+sizey/4,COLOR_ABSOLUTE_DARK); - Draw(fin,TOOL_LINE,x+sizex-1-(sizey/3),y+sizey/2,x+sizex-1-(2*sizey)/3,y+(3*sizey)/4,COLOR_ABSOLUTE_DARK); -} -//////////////////////////////////////////////////////////////////////////////// -// callback function for left button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_FuncCallbackForLeftButton_Pressed(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - struct HEADERPARENT *main_parent; - - ScrollBar=(struct ControlScrollBar*)data; - if (ScrollBar->ruller_size!=1.0) - { - ScrollBar->ruller_pos=ScrollBar->ruller_pos-ScrollBar->ruller_step; - } - if (ScrollBar->ruller_pos<0.0) ScrollBar->ruller_pos=0.0; - ScrollBar_DrawPressedLeftButton(ScrollBar); - - if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL) - { - main_parent=(struct HEADERPARENT*)ScrollBar->main_parent; - ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)ScrollBar; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT); - main_parent->number_callbacks++; - } - DrawRuller(ScrollBar); -} - -void ScrollBar_FuncCallbackForLeftButton_Released(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - - ScrollBar=(struct ControlScrollBar*)data; - ScrollBar_DrawReleasedLeftButton(ScrollBar); -} - -//////////////////////////////////////////////////////////////////////////////// -// callback function for right button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_FuncCallbackForRightButton_Pressed(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - struct HEADERPARENT *main_parent; - - ScrollBar=(struct ControlScrollBar*)data; - if (ScrollBar->ruller_size!=1.0) - { - ScrollBar->ruller_pos=ScrollBar->ruller_pos+ScrollBar->ruller_step; - } - if (ScrollBar->ruller_pos>1.0) ScrollBar->ruller_pos=1.0; - ScrollBar_DrawPressedRightButton(ScrollBar); - - if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL) - { - main_parent=(struct HEADERPARENT*)ScrollBar->main_parent; - ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)ScrollBar; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT); - main_parent->number_callbacks++; - } - DrawRuller(ScrollBar); -} - -void ScrollBar_FuncCallbackForRightButton_Released(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - - ScrollBar=(struct ControlScrollBar*)data; - ScrollBar_DrawReleasedRightButton(ScrollBar); - DrawRuller(ScrollBar); -} - -//////////////////////////////////////////////////////////////////////////////// -// callback function for ruller bar button of Scroll Bar -//////////////////////////////////////////////////////////////////////////////// -void ScrollBar_FuncCallbackForScrollRullerPressed(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - - ScrollBar=(struct ControlScrollBar*)data; - ScrollBar->scb_flags=ScrollBar->scb_flags | FLAG_SCROLL_RULLER_PRESSED; -} - -void ScrollBar_FuncCallbackForScrollRullerReleased(struct HEADER *control,void *data) -{ - struct ControlScrollBar *ScrollBar; - - ScrollBar=(struct ControlScrollBar*)data; - ScrollBar->scb_flags=ScrollBar->scb_flags & FLAG_SCROLL_RULLER_RELEASED; -} - -//--------------------------------------------------------------------------------- -// control ScrollBar -//--------------------------------------------------------------------------------- -void ScrollBarProc(struct ControlScrollBar *ScrollBar,struct MESSAGE *message) -{ - int mx,my; - char mouse_buttons_state; - int x,y,sizex,sizey; - int scrollbar_size,ruller_size,ruller_pos; - int ruller_min,ruller_max; - float max_pos,current_pos,last_ruller_pos; - struct FINITION *fin; - struct TIMER *timer; - struct HEADERPARENT *main_parent; - - x=ScrollBar->ctrl_x; - y=ScrollBar->ctrl_y; - sizex=ScrollBar->ctrl_sizex; - sizey=ScrollBar->ctrl_sizey; - - switch(message->type) - { - case MESSAGE_FULL_REDRAW_ALL: - { - //draw ScrollBar - if (ScrollBar->flags & FLAG_SHOW_CONTROL) DrawScrollBar(ScrollBar); - break; - } - case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION: - { - fin=(struct FINITION*)ScrollBar->finition; - fin->flags=fin->flags | FINITION_ON; - fin->x=message->arg1; - fin->y=message->arg2; - fin->sizex=message->arg3; - fin->sizey=message->arg4; - DrawScrollBar(ScrollBar); - break; - } - case MESSAGE_SPECIALIZED: - { - if (ScrollBar->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON) - { - if (ScrollBar->flags & FLAG_SHOW_CONTROL) DrawScrollBar(ScrollBar); - ScrollBar->flags=ScrollBar->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF; - } - break; - } - case MESSAGE_MOUSE_EVENT: - { - mx=message->arg1; - my=message->arg2; - mouse_buttons_state=message->arg3; - main_parent=(struct HEADERPARENT*)ScrollBar->main_parent; - - //check ruller state - if (ScrollBar->scb_flags & FLAG_SCROLL_RULLER_PRESSED) - { // horizontal ScrollBar - if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON) - { - scrollbar_size=sizex-sizey*2; - ruller_size=scrollbar_size*ScrollBar->ruller_size; - if (ruller_size<5) ruller_size=5; - - ruller_min=x+sizey; //minimum x - ruller_max=ruller_min+scrollbar_size-ruller_size; - ruller_pos=mx-(ruller_size/2);//ruller centred under mouse pointer - - if (ruller_posruller_max) ruller_pos=ruller_max; - - if (ruller_max!=ruller_min) - { - max_pos=(float)(ruller_max-ruller_min); - current_pos=(float)(ruller_pos-ruller_min); - last_ruller_pos=ScrollBar->ruller_pos; - ScrollBar->ruller_pos=current_pos/max_pos; - } - else {ScrollBar->ruller_pos=0.0;} - - if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL) - { - if (ScrollBar->ruller_pos!=last_ruller_pos) - { - ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)ScrollBar; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT); - main_parent->number_callbacks++; - } - } - if (ScrollBar->ruller_pos!=last_ruller_pos) DrawRuller(ScrollBar); - break; - } - // vertical ScrollBar - if (ScrollBar->scb_flags & FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON) - { - scrollbar_size=sizey-sizex*2; - ruller_size=scrollbar_size*ScrollBar->ruller_size; - if (ruller_size<5) ruller_size=5; - - ruller_min=y+sizex; //minimum x - ruller_max=ruller_min+scrollbar_size-ruller_size; - ruller_pos=my-(ruller_size/2);//ruller centred under mouse pointer - - if (ruller_posruller_max) ruller_pos=ruller_max; - - if (ruller_max!=ruller_min) - { - max_pos=(float)(ruller_max-ruller_min); - current_pos=(float)(ruller_pos-ruller_min); - last_ruller_pos=ScrollBar->ruller_pos; - ScrollBar->ruller_pos=current_pos/max_pos; - } - else {ScrollBar->ruller_pos=0.0;} - - if (ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT)!=NULL) - { - if (ScrollBar->ruller_pos!=last_ruller_pos) - { - ScrollBar->flags=ScrollBar->flags | FLAG_CONNECT_EVENT_ON; - main_parent->control_for_callback_function[main_parent->number_callbacks]= - (DWORD*)ScrollBar; - main_parent->callback_for_control_callback[main_parent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(ScrollBar,SCROLLBAR_CHANGED_EVENT); - main_parent->number_callbacks++; - } - } - if (ScrollBar->ruller_pos!=last_ruller_pos) DrawRuller(ScrollBar); - } - } - break; - } - case MESSAGE_CHANGE_POSITION_EVENT: - { - ScrollBar->ctrl_x=ScrollBar->ctrl_x+message->arg1; - ScrollBar->ctrl_y=ScrollBar->ctrl_y+message->arg2; - break; - } - case MESSAGE_CALL_TIMER_EVENT: - { - if (ScrollBar->timer!=(DWORD*)NULL) - { - timer=(struct TIMER*)ScrollBar->timer; - if (timer->flags & FLAG_TIMER_ON) Timer(timer); - } - break; - } - case MESSAGE_DESTROY_CONTROL: - { - if (ScrollBar->timer!=(DWORD*)NULL) free(ScrollBar->timer); - free(ScrollBar->finition); - break; - } - case MESSAGE_SET_MAIN_PARENT: - { - SendMessage((struct HEADER*)ScrollBar,message); - ScrollBar->main_parent=(DWORD*)message->arg1; - break; - } - - default: break; - } - //send message to child controls(if there is) - SendMessage((struct HEADER*)ScrollBar,message); -} - -//--------------------------------------------------------------------------------- -// create control ScrollBar -//--------------------------------------------------------------------------------- -void* CreateScrollBar(struct ScrollBarData *info_for_control) -{ - struct ControlScrollBar *ScrollBar; - struct FINITION *fin; - - ScrollBar=malloc(sizeof(struct ControlScrollBar)); - ScrollBar->finition=malloc(sizeof(struct FINITION)); - fin=(struct FINITION*)ScrollBar->finition; - fin->flags=0; - - ID++; -#ifdef DEBUG - printf("\ncreated scroll bar with ID=%d",(int)ID); -#endif - ScrollBar->child_bk=(DWORD*)NULL; - ScrollBar->child_fd=(DWORD*)NULL; - ScrollBar->active_control_for_keys=(DWORD*)NULL; - ScrollBar->active_control_for_mouse=(DWORD*)NULL; - ScrollBar->callback=(DWORD*)NULL; - ScrollBar->timer=(DWORD*)NULL; - - ScrollBar->ctrl_proc=(DWORD*)&ScrollBarProc; - ScrollBar->ctrl_x=(DWORD)info_for_control->x; - ScrollBar->ctrl_y=(DWORD)info_for_control->y; - ScrollBar->ctrl_sizex=(DWORD)info_for_control->width; - ScrollBar->ctrl_sizey=(DWORD)info_for_control->height; - ScrollBar->ctrl_ID=ID; - ScrollBar->ruller_size=info_for_control->ruller_size; - ScrollBar->ruller_pos=info_for_control->ruller_pos; - ScrollBar->ruller_step=info_for_control->ruller_step; - ScrollBar->flags=0; - ScrollBar->flags=ScrollBar->flags | FLAG_SHOW_CONTROL; - - return(ScrollBar); -} - -void* CreateHorizontalScrollBar(struct ScrollBarData *info_for_control) -{ - struct ControlScrollBar *ScrollBar; - struct ControlButton *ChildButton1; - struct ControlButton *ChildButton2; - struct ControlButton *ScrollRuller; - struct ButtonData ChildButton1Data; - struct ButtonData ChildButton2Data; - struct ButtonData ScrollRullerData; - - ScrollBar=CreateScrollBar(info_for_control); - //set horizontal orientation - ScrollBar->scb_flags=0; - ScrollBar->scb_flags=ScrollBar->scb_flags | FLAG_SCROLL_BAR_ORIENTATION_HORIZONTAL_ON; - - //fill data for first child button of scroller - ChildButton1Data.x=0; - ChildButton1Data.y=0; - ChildButton1Data.width=ScrollBar->ctrl_sizey; - ChildButton1Data.height=ChildButton1Data.width; - - //fill data for second child button of scroller - ChildButton2Data.x=ScrollBar->ctrl_sizex-ScrollBar->ctrl_sizey; - ChildButton2Data.y=0; - ChildButton2Data.width=ScrollBar->ctrl_sizey; - ChildButton2Data.height=ChildButton2Data.width; - - //fill data for scroll ruller button of scroller - ScrollRullerData.x=ScrollBar->ctrl_sizey; - ScrollRullerData.y=0; - ScrollRullerData.width=ScrollBar->ctrl_sizex-2*ScrollBar->ctrl_sizey; - ScrollRullerData.height=ScrollBar->ctrl_sizey; - - ChildButton1=CreateButton(&ChildButton1Data); - ChildButton2=CreateButton(&ChildButton2Data); - ScrollRuller=CreateButton(&ScrollRullerData); - - ChildButton1->flags=ChildButton1->flags & FLAG_HIDE_CONTROL; - ChildButton2->flags=ChildButton2->flags & FLAG_HIDE_CONTROL; - ScrollRuller->flags=ScrollRuller->flags & FLAG_HIDE_CONTROL; - - SetCallbackFunction(ChildButton1,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForLeftButton_Pressed,ScrollBar); - SetCallbackFunction(ChildButton1,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForLeftButton_Released,ScrollBar); - - SetCallbackFunction(ChildButton2,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForRightButton_Pressed,ScrollBar); - SetCallbackFunction(ChildButton2,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForRightButton_Released,ScrollBar); - - SetCallbackFunction(ScrollRuller,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForScrollRullerPressed,ScrollBar); - SetCallbackFunction(ScrollRuller,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForScrollRullerReleased,ScrollBar); - - //pack button in control ScrollBar - PackControls(ScrollBar,ChildButton1); - PackControls(ScrollBar,ChildButton2); - PackControls(ScrollBar,ScrollRuller); - - return(ScrollBar); -} - -void* CreateVerticalScrollBar(struct ScrollBarData *info_for_control) -{ - struct ControlScrollBar *ScrollBar; - struct ControlButton *ChildButton1; - struct ControlButton *ChildButton2; - struct ControlButton *ScrollRuller; - struct ButtonData ChildButton1Data; - struct ButtonData ChildButton2Data; - struct ButtonData ScrollRullerData; - - ScrollBar=CreateScrollBar(info_for_control); - //set vertical orientation - ScrollBar->scb_flags=0; - ScrollBar->scb_flags=ScrollBar->scb_flags | FLAG_SCROLL_BAR_ORIENTATION_VERTICAL_ON; - - //fill data for first child button of scroller - ChildButton1Data.x=0; - ChildButton1Data.y=0; - ChildButton1Data.width=ScrollBar->ctrl_sizex; - ChildButton1Data.height=ChildButton1Data.width; - - //fill data for second child button of scroller - ChildButton2Data.x=0; - ChildButton2Data.y=ScrollBar->ctrl_sizey-ScrollBar->ctrl_sizex; - ChildButton2Data.width=ScrollBar->ctrl_sizex; - ChildButton2Data.height=ChildButton2Data.width; - - //fill data for scroll ruller button of scroller - ScrollRullerData.x=0; - ScrollRullerData.y=ScrollBar->ctrl_sizex; - ScrollRullerData.width=ScrollBar->ctrl_sizex; - ScrollRullerData.height=ScrollBar->ctrl_sizey-2*ScrollBar->ctrl_sizex; - - ChildButton1=CreateButton(&ChildButton1Data); - ChildButton2=CreateButton(&ChildButton2Data); - ScrollRuller=CreateButton(&ScrollRullerData); - - ChildButton1->flags=ChildButton1->flags & FLAG_HIDE_CONTROL; - ChildButton2->flags=ChildButton2->flags & FLAG_HIDE_CONTROL; - ScrollRuller->flags=ScrollRuller->flags & FLAG_HIDE_CONTROL; - - SetCallbackFunction(ChildButton1,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForUpButton_Pressed,ScrollBar); - SetCallbackFunction(ChildButton1,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForUpButton_Released,ScrollBar); - - SetCallbackFunction(ChildButton2,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForDownButton_Pressed,ScrollBar); - SetCallbackFunction(ChildButton2,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForDownButton_Released,ScrollBar); - - SetCallbackFunction(ScrollRuller,BUTTON_PRESSED_EVENT,&ScrollBar_FuncCallbackForScrollRullerPressed,ScrollBar); - SetCallbackFunction(ScrollRuller,BUTTON_RELEASED_EVENT,&ScrollBar_FuncCallbackForScrollRullerReleased,ScrollBar); - - //pack button in control ScrollBar - PackControls(ScrollBar,ChildButton1); - PackControls(ScrollBar,ChildButton2); - PackControls(ScrollBar,ScrollRuller); - - return(ScrollBar); -} - diff --git a/programs/develop/new libGUI_C/SRC/control_scrolled_window.h b/programs/develop/new libGUI_C/SRC/control_scrolled_window.h deleted file mode 100755 index b7581ac60a..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_scrolled_window.h +++ /dev/null @@ -1,6 +0,0 @@ -#define FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON 0x1 -#define FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON 0x2 - -#define FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_OFF 0xfe -#define FLAG_SCROLL_WIN_VERTICAL_SCROLL_OFF 0xfd - diff --git a/programs/develop/new libGUI_C/SRC/control_scrolled_window.inc b/programs/develop/new libGUI_C/SRC/control_scrolled_window.inc deleted file mode 100755 index 175700a5e3..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_scrolled_window.inc +++ /dev/null @@ -1,530 +0,0 @@ -/* - control ScrolledWindow -*/ - - -//////////////////////////////////////////////////////////////////////// -// pack controls in ScrolledWindow -//////////////////////////////////////////////////////////////////////// -void ScrolledWindowPackControls(void *parent,void *Control) -{ - struct HEADER *control; - struct ControlScrolledWindow *ScrolledWindow; - struct ControlScrollBar *HorizontalScrollBar; - struct ControlScrollBar *VerticalScrollBar; - struct FINITION *fin; - int x,y; - - ScrolledWindow=(struct ControlScrolledWindow*)parent; - control=(struct HEADER *)Control; - - if (control->ctrl_x+control->ctrl_sizex>ScrolledWindow->virtual_sizex) - { - ScrolledWindow->virtual_sizex=control->ctrl_x+control->ctrl_sizex; - } - if (control->ctrl_y+control->ctrl_sizey>ScrolledWindow->virtual_sizey) - { - ScrolledWindow->virtual_sizey=control->ctrl_y+control->ctrl_sizey; - } - - PackControls(ScrolledWindow,control); - - //calculate new control coordinates - x=control->ctrl_x+1;//add border width - y=control->ctrl_y+1;//add border heght - SetControlNewPosition(control,x,y); - - //save coordinates of control in arrea - ScrolledWindow->virtual_controls_x[ScrolledWindow->number_virtual_controls]=x; - ScrolledWindow->virtual_controls_y[ScrolledWindow->number_virtual_controls]=y; - ScrolledWindow->number_virtual_controls++; - - x=ScrolledWindow->ctrl_x+1; - y=ScrolledWindow->ctrl_y+1; - - //check cross control with scroll arrea - if (CheckCrossRectangles(x,y,ScrolledWindow->scroll_arrea_sizex,ScrolledWindow->scroll_arrea_sizey, - control->ctrl_x,control->ctrl_y,control->ctrl_sizex,control->ctrl_sizey)==TRUE) - { - control->flags=control->flags | FLAG_SHOW_CONTROL; - control->flags=control->flags & FLAG_MOUSE_BLOCKED_OFF; - } - else - { - control->flags=control->flags & FLAG_HIDE_CONTROL; - control->flags=control->flags | FLAG_MOUSE_BLOCKED_ON; - } - - if (ScrolledWindow->virtual_sizex>ScrolledWindow->scroll_arrea_sizex) - { - HorizontalScrollBar=(struct ControlScrollBar*)ScrolledWindow->horizontal_scroll; - - if ((ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON)==FALSE) - { - ScrolledWindow->scroll_arrea_sizey=ScrolledWindow->ctrl_sizey-16-2; - ScrolledWindow->scw_flags=ScrolledWindow->scw_flags | FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON; - HorizontalScrollBar->flags=HorizontalScrollBar->flags | FLAG_SHOW_CONTROL; - HorizontalScrollBar->flags=HorizontalScrollBar->flags & FLAG_MOUSE_BLOCKED_OFF; - } - } - - if (ScrolledWindow->virtual_sizey>ScrolledWindow->scroll_arrea_sizey) - { - VerticalScrollBar=(struct ControlScrollBar*)ScrolledWindow->vertical_scroll; - - if ((ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON)==FALSE) - { - ScrolledWindow->scroll_arrea_sizex=ScrolledWindow->ctrl_sizex-16-2; - ScrolledWindow->scw_flags=ScrolledWindow->scw_flags | FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON; - VerticalScrollBar->flags=VerticalScrollBar->flags | FLAG_SHOW_CONTROL; - VerticalScrollBar->flags=VerticalScrollBar->flags & FLAG_MOUSE_BLOCKED_OFF; - } - } - - if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON) - { - HorizontalScrollBar->ruller_size=(float)ScrolledWindow->scroll_arrea_sizex; - HorizontalScrollBar->ruller_size=HorizontalScrollBar->ruller_size/((float)ScrolledWindow->virtual_sizex); - } - - if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON) - { - VerticalScrollBar->ruller_size=(float)ScrolledWindow->scroll_arrea_sizey; - VerticalScrollBar->ruller_size=VerticalScrollBar->ruller_size/((float)ScrolledWindow->virtual_sizey); - } - - //finit draw arrea for control - fin=(struct FINITION*)control->finition; - fin->x=ScrolledWindow->ctrl_x+1; - fin->y=ScrolledWindow->ctrl_y+1; - fin->sizex=ScrolledWindow->scroll_arrea_sizex; - fin->sizey=ScrolledWindow->scroll_arrea_sizey; - fin->flags=fin->flags | FINITION_ON; - -} -//////////////////////////////////////////////////////////////////////////////// -// Draw full Scrolled Window -//////////////////////////////////////////////////////////////////////////////// -void ScrollWin_FuncCallback_HVScroll(struct HEADER* control,void *data) -{ - struct ControlScrollBar *Hscrollbar,*Vscrollbar; - struct ControlScrolledWindow *ScrolledWindow; - struct HEADER *seek_control,*exchange_control; - struct MESSAGE local_message; - struct FINITION *fin; - int i,new_x,new_y,x,y,sizex,sizey; - char c; - char *save_buf,*buf; - int save_size_x,save_size_y; - DWORD draw_output; - - ScrolledWindow=(gui_scrolled_window_t*)data; - Hscrollbar=(gui_scroll_bar_t*)ScrolledWindow->horizontal_scroll; - Vscrollbar=(gui_scroll_bar_t*)ScrolledWindow->vertical_scroll; - ScrolledWindow->virtual_x=(ScrolledWindow->virtual_sizex-ScrolledWindow->scroll_arrea_sizex)*Hscrollbar->ruller_pos; - ScrolledWindow->virtual_y=(ScrolledWindow->virtual_sizey-ScrolledWindow->scroll_arrea_sizey)*Vscrollbar->ruller_pos; - - x=ScrolledWindow->ctrl_x+1; - y=ScrolledWindow->ctrl_y+1; - sizex=ScrolledWindow->scroll_arrea_sizex; - sizey=ScrolledWindow->scroll_arrea_sizey; - - //alocate a buffer for draw text - c=screen.bits_per_pixel >> 3; - i=sizex*sizey*c; - buf=malloc(i); - - //save current screen parameters - save_buf=screen.buffer; - save_size_x=screen.size_x; - save_size_y=screen.size_y; - draw_output=screen.draw_output; - - //load parameters of local buffer - screen.buffer=buf; - screen.size_x=sizex; - screen.size_y=sizey; - screen.draw_output=DRAW_OUTPUT_BUFFER; - - //fill buffer by background color - FillArrea(buf,i,screen.bits_per_pixel,COLOR_LIGHT); - - local_message.type=MESSAGE_FULL_REDRAW_ALL_WITH_FINITION; - local_message.arg1=0; - local_message.arg2=0; - local_message.arg3=sizex; - local_message.arg4=sizey; - - seek_control=(struct HEADER*)Vscrollbar->ctrl_fd; - //move controls in new position - for(i=0;inumber_virtual_controls;i++) - { - new_x=ScrolledWindow->virtual_controls_x[i]-ScrolledWindow->virtual_x; - new_y=ScrolledWindow->virtual_controls_y[i]-ScrolledWindow->virtual_y; - - SetControlNewPosition(seek_control,new_x,new_y); - - if (CheckCrossRectangles(x,y,sizex,sizey,new_x,new_y, - seek_control->ctrl_sizex, - seek_control->ctrl_sizey)==TRUE) - { - seek_control->flags=seek_control->flags | FLAG_SHOW_CONTROL; - seek_control->flags=seek_control->flags & FLAG_MOUSE_BLOCKED_OFF; - - //move control - SetControlNewPosition(seek_control,new_x-x,new_y-y); - //call draw control in buffer - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,&local_message); - //restore last position of control - SetControlNewPosition(seek_control,new_x,new_y); - //restore coordinates of last finition of control - fin=(finition_t*)seek_control->finition; - fin->x=x; - fin->y=y; - } - else - { - seek_control->flags=seek_control->flags & FLAG_HIDE_CONTROL; - seek_control->flags=seek_control->flags | FLAG_MOUSE_BLOCKED_ON; - } - - exchange_control=(struct HEADER*)seek_control->ctrl_fd; - seek_control=exchange_control; - } - //restore screen parameters - screen.buffer=save_buf; - screen.size_x=save_size_x; - screen.size_y=save_size_y; - screen.draw_output=draw_output; - - //move rendered objects from local buffer to screen - fin=(finition_t*)ScrolledWindow->finition; - if (fin->flags & FINITION_ON) - DrawImageFinit(fin,x,y,sizex,sizey,screen.bits_per_pixel,buf); - else - DrawImage(x,y,sizex,sizey,screen.bits_per_pixel,buf); - - //free local buffer - free(buf); -} - -void DrawScrolledWindow(struct ControlScrolledWindow *ScrolledWindow) -{ - int x,y,sizex,sizey; - struct FINITION *fin; - - x=ScrolledWindow->ctrl_x; - y=ScrolledWindow->ctrl_y; - sizex=ScrolledWindow->ctrl_sizex; - sizey=ScrolledWindow->ctrl_sizey; - fin=(struct FINITION*)ScrolledWindow->finition; - - if ((ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON) || - (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON)) - { - Draw(fin,TOOL_RECTANGLE,x,y,ScrolledWindow->scroll_arrea_sizex+2, - ScrolledWindow->scroll_arrea_sizey+2,COLOR_ABSOLUTE_DARK); - } - else - Draw(fin,TOOL_RECTANGLE,x,y,sizex,sizey,COLOR_ABSOLUTE_DARK); - - ScrollWin_FuncCallback_HVScroll(NULL,ScrolledWindow); -} - -void ScrlWinCheckActivatedForKeysControl(struct ControlScrolledWindow *ScrolledWindow) -{ - struct HEADER *control,*seek_control,*exchange_control; - struct MESSAGE local_message; - struct FINITION *fin; - struct ControlScrollBar *Vscrollbar,*Hscrollbar; - int i,x,y,sizex,sizey; - int sx,sy; - - control=(struct HEADER*)ScrolledWindow->active_control_for_keys; - - x=ScrolledWindow->ctrl_x+1; - y=ScrolledWindow->ctrl_y+1; - sizex=ScrolledWindow->scroll_arrea_sizex; - sizey=ScrolledWindow->scroll_arrea_sizey; - - if (CheckFullCrossRectangles(x,y,sizex,sizey, - control->ctrl_x,control->ctrl_y,control->ctrl_sizex,control->ctrl_sizey)==TRUE) return; - - //calculate new x and y coordinates - if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON) - { - sx=(control->ctrl_x-x); - - if (sx<0) sx=x; - else - { - if (control->ctrl_sizexctrl_sizex; - else sx=x; - } - } - - if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON) - { - sy=(control->ctrl_y-y); - - if (sy<0) sy=y; - else - { - if (control->ctrl_sizeyctrl_sizey; - else sy=y; - } - } - - Vscrollbar=(struct ControlScrollBar*)ScrolledWindow->vertical_scroll; - Hscrollbar=(struct ControlScrollBar*)ScrolledWindow->horizontal_scroll; - //find active control and virtual control coordinates - seek_control=(struct HEADER*)Vscrollbar->ctrl_fd; - - for(i=0;inumber_virtual_controls;i++) - { - if (seek_control==control) - { - if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON) - ScrolledWindow->virtual_x=ScrolledWindow->virtual_controls_x[i]-sx; - if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON) - ScrolledWindow->virtual_y=ScrolledWindow->virtual_controls_y[i]-sy; - break; - } - - exchange_control=(struct HEADER*)seek_control->ctrl_fd; - seek_control=exchange_control; - } - - if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_HORIZONTAL_SCROLL_ON) - { - Hscrollbar->ruller_pos=(float)ScrolledWindow->virtual_x; - Hscrollbar->ruller_pos=Hscrollbar->ruller_pos/((float)(ScrolledWindow->virtual_sizex-ScrolledWindow->scroll_arrea_sizex)); - SpecialRedrawControl(Hscrollbar); - } - if (ScrolledWindow->scw_flags & FLAG_SCROLL_WIN_VERTICAL_SCROLL_ON) - { - Vscrollbar->ruller_pos=(float)ScrolledWindow->virtual_y; - Vscrollbar->ruller_pos=Vscrollbar->ruller_pos/((float)(ScrolledWindow->virtual_sizey-ScrolledWindow->scroll_arrea_sizey)); - SpecialRedrawControl(Vscrollbar); - } - ScrollWin_FuncCallback_HVScroll(NULL,ScrolledWindow); -} - -//--------------------------------------------------------------------------------- -// control ScrolledWindowScrolledWindow->virtual_sizex -//--------------------------------------------------------------------------------- -void ScrolledWindowProc(struct ControlScrolledWindow *ScrolledWindow,struct MESSAGE *message) -{ - int i,x,y,sizex,sizey; - struct HEADER *seek_control,*exchange_control; - struct ControlScrollBar *Hscrollbar,*Vscrollbar; - struct MESSAGE local_message; - struct FINITION *fin; - struct TIMER *timer; - - x=ScrolledWindow->ctrl_x; - y=ScrolledWindow->ctrl_y; - sizex=ScrolledWindow->ctrl_sizex; - sizey=ScrolledWindow->ctrl_sizey; - - switch(message->type) - { - case MESSAGE_FULL_REDRAW_ALL: - { - //draw ScrolledWindow - if (ScrolledWindow->flags & FLAG_SHOW_CONTROL) - { - DrawScrolledWindow(ScrolledWindow); - Hscrollbar=(gui_scroll_bar_t*)ScrolledWindow->horizontal_scroll; - Vscrollbar=(gui_scroll_bar_t*)ScrolledWindow->vertical_scroll; - //draw scroll bars - ControlProc=(void (*)(void *Control,gui_message_t *message))Hscrollbar->ctrl_proc; - ControlProc(Hscrollbar,message); - ControlProc=(void (*)(void *Control,gui_message_t *message))Vscrollbar->ctrl_proc; - ControlProc(Vscrollbar,message); - } - break; - } - case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION: - { - fin=(struct FINITION*)ScrolledWindow->finition; - fin->flags=fin->flags | FINITION_ON; - fin->x=message->arg1; - fin->y=message->arg2; - fin->sizex=message->arg3; - fin->sizey=message->arg4; - DrawScrolledWindow(ScrolledWindow); - SendMessage((struct HEADER*)ScrolledWindow,message);//<<<<<<---------------------------------- - break; - } - case MESSAGE_SPECIALIZED: - { - if (ScrolledWindow->flags & FLAG_SHOW_CONTROL) SendMessage((struct HEADER*)ScrolledWindow,message); - ScrolledWindow->flags=ScrolledWindow->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF; - break; - } - - case MESSAGE_KEYS_EVENT: - { - if (ScrolledWindow->active_control_for_keys!=NULL) ScrlWinCheckActivatedForKeysControl(ScrolledWindow); - SendMessage((struct HEADER*)ScrolledWindow,message); - break; - } - case MESSAGE_MOUSE_EVENT: - { - SendMessage((struct HEADER*)ScrolledWindow,message); - break; - } - case MESSAGE_CHANGE_POSITION_EVENT: - { - ScrolledWindow->ctrl_x=ScrolledWindow->ctrl_x+message->arg1; - ScrolledWindow->ctrl_y=ScrolledWindow->ctrl_y+message->arg2; - - //change virtual coordinates of controls - Vscrollbar=(struct ControlScrollBar*)ScrolledWindow->vertical_scroll; - seek_control=(struct HEADER *)Vscrollbar->ctrl_fd; - for(i=0;inumber_virtual_controls;i++) - { - ScrolledWindow->virtual_controls_x[i]+=message->arg1; - ScrolledWindow->virtual_controls_y[i]+=message->arg2; - - fin=(struct FINITION*)seek_control->finition; - fin->x=ScrolledWindow->ctrl_x+1; - fin->y=ScrolledWindow->ctrl_y+1; - fin->sizex=ScrolledWindow->scroll_arrea_sizex; - fin->sizey=ScrolledWindow->scroll_arrea_sizey; - - exchange_control=(struct HEADER*)seek_control->ctrl_fd; - seek_control=exchange_control; - } - - SendMessage((struct HEADER*)ScrolledWindow,message); - break; - } - case MESSAGE_CALL_TIMER_EVENT: - { - if (ScrolledWindow->timer!=(DWORD*)NULL) - { - timer=(struct TIMER*)ScrolledWindow->timer; - if (timer->flags & FLAG_TIMER_ON) Timer(timer); - } - SendMessage((struct HEADER*)ScrolledWindow,message); - break; - } - case MESSAGE_SET_FOCUSE: - { - //SendMessage((struct HEADER*)ScrolledWindow,message); - break; - } - case MESSAGE_CHANGE_FOCUSE: - { - //SendMessage((struct HEADER*)ScrolledWindow,message); - break; - } - case MESSAGE_DESTROY_CONTROL: - { - if (ScrolledWindow->timer!=(DWORD*)NULL) free(ScrolledWindow->timer); - free(ScrolledWindow->finition); - SendMessage((struct HEADER*)ScrolledWindow,message); - break; - } - case MESSAGE_SET_MAIN_PARENT: - { - SendMessage((struct HEADER*)ScrolledWindow,message); - ScrolledWindow->main_parent=(DWORD*)message->arg1; - break; - } - - default: break; - } -} - -//--------------------------------------------------------------------------------- -// create control ScrolledWindow -//--------------------------------------------------------------------------------- -void* CreateScrolledWindow(struct ScrolledWindowData *info_for_control) -{ - struct ControlScrolledWindow *ScrolledWindow; - struct FINITION *fin; - struct ControlScrollBar *HorizontalScrollBar; - struct ControlScrollBar *VerticalScrollBar; - struct ScrollBarData HorizontalScrollData; - struct ScrollBarData VerticalScrollData; - - - ScrolledWindow=malloc(sizeof(struct ControlScrolledWindow)); - ScrolledWindow->finition=malloc(sizeof(struct FINITION)); - fin=(struct FINITION*)ScrolledWindow->finition; - fin->flags=0; - ScrolledWindow->scw_flags=0; - - ID++; -#ifdef DEBUG - printf("\ncreated scrollet window with ID=%d",(int)ID); -#endif - ScrolledWindow->child_bk=(DWORD*)NULL; - ScrolledWindow->child_fd=(DWORD*)NULL; - ScrolledWindow->active_control_for_keys=(DWORD*)NULL; - ScrolledWindow->active_control_for_mouse=(DWORD*)NULL; - ScrolledWindow->callback=(DWORD*)NULL; - ScrolledWindow->timer=(DWORD*)NULL; - - ScrolledWindow->ctrl_proc=(DWORD*)&ScrolledWindowProc; - ScrolledWindow->ctrl_x=(DWORD)info_for_control->x; - ScrolledWindow->ctrl_y=(DWORD)info_for_control->y; - ScrolledWindow->ctrl_sizex=(DWORD)info_for_control->width; - ScrolledWindow->ctrl_sizey=(DWORD)info_for_control->height; - ScrolledWindow->ctrl_ID=ID; - ScrolledWindow->virtual_x=0; - ScrolledWindow->virtual_y=0; - ScrolledWindow->virtual_controls_x=malloc(1024*sizeof(DWORD)); - ScrolledWindow->virtual_controls_y=malloc(1024*sizeof(DWORD)); - ScrolledWindow->virtual_sizex=0; - ScrolledWindow->virtual_sizey=0; - ScrolledWindow->number_virtual_controls=0; - ScrolledWindow->flags=0; - ScrolledWindow->flags=ScrolledWindow->flags | FLAG_SHOW_CONTROL; - ScrolledWindow->flags=ScrolledWindow->flags | FLAG_FOCUSE_INPUT_SUPPOROTE; - - //calculate default scroll arrea size - ScrolledWindow->scroll_arrea_sizex=ScrolledWindow->ctrl_sizex-2; - ScrolledWindow->scroll_arrea_sizey=ScrolledWindow->ctrl_sizey-2; - - //create child scroll bars - HorizontalScrollData.x=0; - HorizontalScrollData.y=ScrolledWindow->ctrl_sizey-16; - HorizontalScrollData.width=ScrolledWindow->ctrl_sizex-16; - HorizontalScrollData.height=16; - HorizontalScrollData.ruller_size=1.0; - HorizontalScrollData.ruller_pos=0.0; - HorizontalScrollData.ruller_step=0.05; - - VerticalScrollData.x=ScrolledWindow->ctrl_sizex-16; - VerticalScrollData.y=0; - VerticalScrollData.width=16; - VerticalScrollData.height=ScrolledWindow->ctrl_sizey-16; - VerticalScrollData.ruller_size=1.0; - VerticalScrollData.ruller_pos=0.0; - VerticalScrollData.ruller_step=0.05; - - HorizontalScrollBar=CreateHorizontalScrollBar(&HorizontalScrollData); - VerticalScrollBar=CreateVerticalScrollBar(&VerticalScrollData); - - SetCallbackFunction(HorizontalScrollBar,SCROLLBAR_CHANGED_EVENT,&ScrollWin_FuncCallback_HVScroll,ScrolledWindow); - SetCallbackFunction(VerticalScrollBar,SCROLLBAR_CHANGED_EVENT,&ScrollWin_FuncCallback_HVScroll,ScrolledWindow); - - PackControls(ScrolledWindow,HorizontalScrollBar); - PackControls(ScrolledWindow,VerticalScrollBar); - - ScrolledWindow->horizontal_scroll=(DWORD*)HorizontalScrollBar; - ScrolledWindow->vertical_scroll=(DWORD*)VerticalScrollBar; - //disable show scrollers and block mouse for them - HorizontalScrollBar->flags=HorizontalScrollBar->flags & FLAG_HIDE_CONTROL; - HorizontalScrollBar->flags=HorizontalScrollBar->flags | FLAG_MOUSE_BLOCKED_ON; - VerticalScrollBar->flags=VerticalScrollBar->flags & FLAG_HIDE_CONTROL; - VerticalScrollBar->flags=VerticalScrollBar->flags | FLAG_MOUSE_BLOCKED_ON; - - return(ScrolledWindow); -} - diff --git a/programs/develop/new libGUI_C/SRC/control_text.h b/programs/develop/new libGUI_C/SRC/control_text.h deleted file mode 100755 index c38be2dd25..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_text.h +++ /dev/null @@ -1,16 +0,0 @@ - -#define TEXT_ORIENTATION_FROM_LEFT_TO_RIGHT_ON 0x1 -#define TEXT_ORIENTATION_FROM_LEFT_TO_RIGHT_OFF 0xfe - -#define TEXT_BACKGROUND_ON 0x2; -#define TEXT_BACKGROUND_OFF 0xfd; - -struct TextSize -{ - int sizex; - int sizey; -}; - -typedef struct TextSize gui_text_size_t; - - diff --git a/programs/develop/new libGUI_C/SRC/control_text.inc b/programs/develop/new libGUI_C/SRC/control_text.inc deleted file mode 100755 index f97b62aec7..0000000000 --- a/programs/develop/new libGUI_C/SRC/control_text.inc +++ /dev/null @@ -1,181 +0,0 @@ -/* - control Text -*/ - - -gui_text_size_t GetStringSize(font_t *font,char *s) -{ - long len; - gui_text_size_t size; - - len=strlen(s); - if (font->size==FONT_CONSTANT_SIZE) - { - if (font->flags & FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON) - { - size.sizex=len*font->sizex; - size.sizey=font->sizey; - } - } - - return(size); -} - -void TextBackgroundOn(gui_text_t *Text) -{ - Text->txt_flags |=TEXT_BACKGROUND_ON; -} - -void TextBackgroundOff(gui_text_t *Text) -{ - Text->txt_flags &=TEXT_BACKGROUND_ON; -} - -void DisplayText(gui_text_t *Text) -{ - int x; - int y; - int sizex; - int sizey; - char v; - font_t *font; - gui_text_size_t size; - struct FINITION *fin; - - x=Text->ctrl_x; - y=Text->ctrl_y; - fin=(struct FINITION*)Text->finition; - font=(font_t*)Text->font; - - v=Text->txt_flags & TEXT_BACKGROUND_ON; - if (v) font->flags|=FONT_FLAG_DRAW_BACKGROUND_ON; - else font->flags&=FONT_FLAG_DRAW_BACKGROUND_OFF; - - v=Text->txt_flags & TEXT_ORIENTATION_FROM_LEFT_TO_RIGHT_ON; - if (v) font->flags|=FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON; - else font->flags&=FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_OFF; - - size=GetStringSize((font_t*)Text->font,Text->text); - Text->ctrl_sizex=(DWORD)size.sizex; - Text->ctrl_sizey=(DWORD)size.sizey; - - DrawFont=(void(*)(finition_t *fin,int fx,int fy,DWORD color, - DWORD background_color,font_t *font,BYTE *s))font->fnt_draw; - DrawFont(fin,x,y,Text->color,Text->background_color,font,Text->text); -} - -//--------------------------------------------------------------------------------- -// control Text -//--------------------------------------------------------------------------------- -void TextProc(gui_text_t *Text,gui_message_t *message) -{ - finition_t *fin; - - switch(message->type) - { - case MESSAGE_FULL_REDRAW_ALL: - { - //draw Text - if (Text->flags & FLAG_SHOW_CONTROL) DisplayText(Text); - break; - } - case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION: - { - fin=(struct FINITION*)Text->finition; - fin->flags=fin->flags | FINITION_ON; - fin->x=message->arg1; - fin->y=message->arg2; - fin->sizex=message->arg3; - fin->sizey=message->arg4; - DisplayText(Text); - break; - } - case MESSAGE_SPECIALIZED: - { - if (Text->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON) - { - if (Text->flags & FLAG_SHOW_CONTROL) DisplayText(Text); - Text->flags=Text->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF; - } - break; - } - case MESSAGE_CHANGE_POSITION_EVENT: - { - Text->ctrl_x=Text->ctrl_x+message->arg1; - Text->ctrl_y=Text->ctrl_y+message->arg2; - break; - } - case MESSAGE_DESTROY_CONTROL: - { - free(Text->finition); - break; - } - case MESSAGE_SET_MAIN_PARENT: - { - SendMessage((struct HEADER*)Text,message); - Text->main_parent=(DWORD*)message->arg1; - break; - } - - default: break; - } - //send message to child controls(if there is) - SendMessage((struct HEADER*)Text,message); -} - -//--------------------------------------------------------------------------------- -// create control Text -//--------------------------------------------------------------------------------- -void* CreateText(gui_text_data_t *info_for_control) -{ - gui_text_t *Text; - finition_t *fin; - gui_text_size_t size; - - Text=malloc(sizeof(struct ControlText)); - Text->finition=malloc(sizeof(struct FINITION)); - fin=(struct FINITION*)Text->finition; - fin->flags=0; - - if (info_for_control->font==(DWORD*)NULL) Text->font=FontsMeneger.default_font; - else Text->font=info_for_control->font; - - size=GetStringSize((font_t*)Text->font,info_for_control->text); - - ID++; -#ifdef DEBUG - printf("\ncreated text with ID=%d",(int)ID); -#endif - Text->child_bk=(DWORD*)NULL; - Text->child_fd=(DWORD*)NULL; - Text->active_control_for_keys=(DWORD*)NULL; - Text->active_control_for_mouse=(DWORD*)NULL; - Text->callback=(DWORD*)NULL; - Text->timer=(DWORD*)NULL; - - Text->ctrl_proc=(DWORD*)&TextProc; - Text->ctrl_x=(DWORD)info_for_control->x; - Text->ctrl_y=(DWORD)info_for_control->y; - Text->ctrl_sizex=(DWORD)size.sizex; - Text->ctrl_sizey=(DWORD)size.sizey; - Text->ctrl_ID=ID; - Text->color=info_for_control->color; - Text->background_color=info_for_control->background_color; - Text->text=info_for_control->text; - Text->txt_flags=0; - Text->txt_flags|=TEXT_ORIENTATION_FROM_LEFT_TO_RIGHT_ON; - - if (info_for_control->background) - { - Text->txt_flags|=TEXT_BACKGROUND_ON; - } - else - { - Text->txt_flags&=TEXT_BACKGROUND_OFF; - } - - Text->flags=0; - Text->flags=Text->flags | FLAG_SHOW_CONTROL; - - return(Text); -} diff --git a/programs/develop/new libGUI_C/SRC/draw_controls.h b/programs/develop/new libGUI_C/SRC/draw_controls.h deleted file mode 100755 index ac5c2ff547..0000000000 --- a/programs/develop/new libGUI_C/SRC/draw_controls.h +++ /dev/null @@ -1,31 +0,0 @@ - -#define FINITION_ON 0x1 -#define FINITION_OFF 0xfe - -#define COLOR_FON 0x924900 -#define COLOR_DARK 0x5a5a5a -#define COLOR_ABSOLUTE_DARK 0x0 -#define COLOR_MIDDLE_LIGHT 0xffff00 -#define COLOR_LIGHT 0xffffff - -#define COLOR_INSERT 0x71ff30//0xffff10 - -///////////////////////////////////////////////////////////////////////////////////////// -// tool's names -///////////////////////////////////////////////////////////////////////////////////////// -#define TOOL_PIXEL 128 -#define TOOL_LINE 129 -#define TOOL_VERTICAL_LINE 130 -#define TOOL_HORIZONTAL_LINE 131 -#define TOOL_RECTANGLE 132 -#define TOOL_FILLED_RECTANGLE 133 -#define TOOL_GRADIENT_UP_FILLED_RECTANGLE 134 -#define TOOL_GRADIENT_DOWN_FILLED_RECTANGLE 135 -#define TOOL_GRADIENT_LEFT_FILLED_RECTANGLE 136 -#define TOOL_GRADIENT_RIGHT_FILLED_RECTANGLE 137 -#define TOOL_CIRCLE 138 -#define TOOL_FILLED_CIRCLE 139 -#define TOOL_ELLIPSE 140 -#define TOOL_FILLED_ELLIPSE 141 -#define TOOL_IMAGE 142 - diff --git a/programs/develop/new libGUI_C/SRC/draw_controls.inc b/programs/develop/new libGUI_C/SRC/draw_controls.inc deleted file mode 100755 index 61b45c3c07..0000000000 --- a/programs/develop/new libGUI_C/SRC/draw_controls.inc +++ /dev/null @@ -1,2149 +0,0 @@ -/* - functions for draw controls -*/ - -//--------------------------------------------------------------------------------- -// fill buffer by value -//--------------------------------------------------------------------------------- -void FillArrea(void *buf,DWORD size,BYTE bits_per_pixel,DWORD value) -{ - DWORD i,j; - char r,g,b; - - switch(bits_per_pixel) - { - case 32: - { - j=(size >> 2)+4; - for(i=0;i> 8; - g=value & 0xff; - value=value >> 8; - r=value & 0xff; - - j=(size/3)+3; - for(i=0;iscreen.size_x-1) {x=screen.size_x-1;} - if (y>screen.size_y-1) {y=screen.size_y-1;} - if (x<0) {x=0;} - if (y<0) {y=0;} - - switch(screen.draw_output) - { - case DRAW_OUTPUT_SCREEN: - { - x+=screen.x; - y+=screen.y; - gui_ksys_put_pixel_window(x,y,color); - break; - } - case DRAW_OUTPUT_BUFFER: - { - ptr=screen.buffer; - switch(screen.bits_per_pixel) - { - case 24: - { - ptr=ptr+(y*screen.size_x+x)*3; - b=color & 0xff; - color=color >>8; - g=color & 0xff; - color=color >>8; - r=color & 0xff; - - ptr[0]=b; - ptr[1]=g; - ptr[2]=r; - break; - } - case 32: - { - ptr2=(DWORD*)ptr+y*screen.size_x+x; - *ptr2=color; - break; - } - default: break; - } - break; - } - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing pixels on screen with finition -//--------------------------------------------------------------------------------- -void DrawPixelFinit(struct FINITION *fin,int x,int y,DWORD color) -{ - if (x>=fin->x && x<=fin->x+fin->sizex-1 && - y>=fin->y && y<=fin->y+fin->sizey-1) DrawPixel(x,y,color); -} - - -//--------------------------------------------------------------------------------- -// get color of pixel inc coordinates x,y -//--------------------------------------------------------------------------------- -DWORD GetColorPixel(int x,int y) -{ - char r,g,b; - char *ptr; - DWORD color,coordinates; - DWORD *ptr2; - - if (x>screen.size_x-1) {x=screen.size_x-1;} - if (y>screen.size_y-1) {y=screen.size_y-1;} - if (x<0) {x=0;} - if (y<0) {y=0;} - - switch(screen.draw_output) - { - case DRAW_OUTPUT_SCREEN: - { - x+=screen.x; - y+=screen.y; - coordinates=x; - coordinates=coordinates << 16; - coordinates +=y; - color=gui_ksys_get_color_pixel_window(coordinates); - break; - } - case DRAW_OUTPUT_BUFFER: - { - ptr=screen.buffer; - switch(screen.bits_per_pixel) - { - case 24: - { - ptr=ptr+(y*screen.size_x+x)*3; - color=*ptr; - color=color & 0xffffff; - break; - } - case 32: - { - ptr2=(DWORD*)ptr+y*screen.size_x+x; - color=*ptr2; - break; - } - default: break; - } - } - } - return(color); -} - -//--------------------------------------------------------------------------------- -// draw vertical line on screen -//--------------------------------------------------------------------------------- -void DrawVerticalLine(int x,int y1,int y2,DWORD color) -{ - char r,g,b; - char *ptr; - DWORD *ptr2; - int a,i,count; - - if (x>screen.size_x-1) {x=screen.size_x-1;} - if (y1>screen.size_y-1) {y1=screen.size_y-1;} - if (y2>screen.size_y-1) {y2=screen.size_y-1;} - if (x<0) {x=0;} - if (y1<0) {y1=0;} - if (y2<0) {y2=0;} - - switch(screen.draw_output) - { - case DRAW_OUTPUT_SCREEN: - { - x+=screen.x; - y1+=screen.y; - y2+=screen.y; - gui_ksys_draw_line_window(x,y1,x,y2,color); - break; - } - case DRAW_OUTPUT_BUFFER: - { - if (y1>8; - g=color & 0xff; - color=color >>8; - r=color & 0xff; - - a=screen.size_x*3; - for(i=0;i<=count;i++) - { - ptr[0]=b; - ptr[1]=g; - ptr[2]=r; - ptr+=a; - } - break; - } - case 32: - { - ptr2=(DWORD*)ptr+a*screen.size_x+x; - a=screen.size_x; - for(i=0;i<=count;i++) - { - *ptr2=color; - ptr2+=a; - } - break; - } - default: break; - } - } - } -} - -//--------------------------------------------------------------------------------- -// draw finited vertical line on screen -//--------------------------------------------------------------------------------- -void DrawVerticalLineFinit(struct FINITION *fin,int x,int y1,int y2,DWORD color) -{ - int xmin,xmax,ymin,ymax,v,sy; - - xmin=fin->x; - xmax=fin->x+fin->sizex-1; - ymin=fin->y; - ymax=fin->y+fin->sizey-1; - - if (y2xmax) return; - if (y2ymax) return; - - //finit x coordinates and sizex - sy=y1-ymin; - - if (sy>=0) - { - if (y2>ymax) y2=ymax; - } - else - { - y1=ymin; - if (y2>ymax) y2=ymax; - } - DrawVerticalLine(x,y1,y2,color); -} - -//--------------------------------------------------------------------------------- -// draw horizontal line on screen -//--------------------------------------------------------------------------------- -void DrawHorizontalLine(int x1,int x2,int y,DWORD color) -{ - char r,g,b; - char *ptr; - int a,i,count; - DWORD *ptr2; - - if (y>screen.size_y-1) {y=screen.size_y-1;} - if (x1>screen.size_x-1) {x1=screen.size_x-1;} - if (x2>screen.size_x-1) {x2=screen.size_x-1;} - if (y<0) {y=0;} - if (x1<0) {x1=0;} - if (x2<0) {x2=0;} - - switch(screen.draw_output) - { - case DRAW_OUTPUT_SCREEN: - { - x1+=screen.x; - x2+=screen.x; - y+=screen.y; - gui_ksys_draw_line_window(x1,y,x2,y,color); - break; - } - case DRAW_OUTPUT_BUFFER: - { - if (x1>8; - g=color & 0xff; - color=color >>8; - r=color & 0xff; - - for(i=0;i<=count;i++) - { - ptr[0]=b; - ptr[1]=g; - ptr[2]=r; - ptr=ptr+3; - } - break; - } - case 32: - { - ptr2=(DWORD*)ptr+y*screen.size_x+a; - - for(i=0;i<=count;i++) - { - *ptr2=color;ptr2++; - } - break; - } - default:break; - } - } - } -} - -//--------------------------------------------------------------------------------- -// draw finited vertical line on screen -//--------------------------------------------------------------------------------- -void DrawHorizontalLineFinit(struct FINITION *fin,int x1,int x2,int y,DWORD color) -{ - int xmin,xmax,ymin,ymax,v,sx; - - xmin=fin->x; - xmax=fin->x+fin->sizex-1; - ymin=fin->y; - ymax=fin->y+fin->sizey-1; - - if (x2ymax) return; - if (x2xmax) return; - - //finit x coordinates and sizex - sx=x1-xmin; - - if (sx>=0) - { - if (x2>xmax) x2=xmax; - } - else - { - x1=xmin; - if (x2>xmax) x2=xmax; - } - DrawHorizontalLine(x1,x2,y,color); -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing line on screen -//--------------------------------------------------------------------------------- -int sign(int value) -{ - if (value==0) return(0); - if (value<0) {return(-1);} - else {return(1);} -} - -int abs(int value) -{ - if (value<0) {value=-value;} - - return(value); -} - -void DrawLine(int x1, int y1, int x2, int y2,DWORD color) -{ - int x; - int y; - int dx; - int dy; - int sx; - int sy; - int z; - int e; - int i; - char ch; - - switch(screen.draw_output) - { - case DRAW_OUTPUT_SCREEN: - { - if (y1>screen.size_y-1) {y1=screen.size_y-1;} - if (y2>screen.size_y-1) {y2=screen.size_y-1;} - if (x1>screen.size_x-1) {x1=screen.size_x-1;} - if (x2>screen.size_x-1) {x2=screen.size_x-1;} - if (y1<0) {y1=0;} - if (y2<0) {y2=0;} - if (x1<0) {x1=0;} - if (x2<0) {x2=0;} - - x1+=screen.x; - x2+=screen.x; - y1+=screen.y; - y2+=screen.y; - gui_ksys_draw_line_window(x1,y1,x2,y2,color); - break; - } - case DRAW_OUTPUT_BUFFER: - { - - x = x1; - y = y1; - dx = abs(x2-x1); - dy = abs(y2-y1); - sx = sign(x2-x1); - sy = sign(y2-y1); - - if( dx==0 && dy==0 ) - { - DrawPixel(x1, y1,color); - return; - } - if( dy>dx ) - { - z = dx; - dx = dy; - dy = z; - ch = 1; - } - else - { - ch = 0; - } - e = 2*dy-dx; - i = 1; - - do - { - DrawPixel(x,y,color); - while(e>=0) - { - if( ch==1 ) x = x+sx; - else y = y+sy; - - if( ch==1 ) y = y+sy; - else x = x+sx; - - e = e-2*dx; - } - if( ch==1 ) y = y+sy; - else x = x+sx; - - e = e+2*dy; - i++; - } - while(i<=dx); - DrawPixel(x, y,color); - break; - } - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing rectangle on screen -//--------------------------------------------------------------------------------- -void DrawRectangle(int x,int y,int size_x,int size_y,DWORD color) -{ - - if (size_x==0 || size_y==0) return; - - DrawHorizontalLine(x,x+size_x-1,y,color); - DrawVerticalLine(x+size_x-1,y,y+size_y-1,color); - DrawHorizontalLine(x,x+size_x-1,y+size_y-1,color); - DrawVerticalLine(x,y,y+size_y-1,color); -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing finited rectangle on screen -//--------------------------------------------------------------------------------- -void DrawRectangleFinit(struct FINITION *fin,int x,int y,int size_x,int size_y,DWORD color) -{ - - if (size_x==0 || size_y==0) return; - - DrawHorizontalLineFinit(fin,x,x+size_x-1,y,color); - DrawVerticalLineFinit(fin,x+size_x-1,y,y+size_y-1,color); - DrawHorizontalLineFinit(fin,x,x+size_x-1,y+size_y-1,color); - DrawVerticalLineFinit(fin,x,y,y+size_y-1,color); -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing filled rectangle on screen -//--------------------------------------------------------------------------------- -void DrawFilledRectangle(int x,int y,int size_x,int size_y,DWORD color) -{ - int i,j; - int x1,y1,x2,y2; - - if (size_x==0 || size_y==0) return; - - switch(screen.draw_output) - { - case DRAW_OUTPUT_SCREEN: - { - x1=x; - y1=y; - x2=x+size_x-1; - y2=y+size_y-1; - if (y1>screen.size_y-1) {y1=screen.size_y-1;} - if (y2>screen.size_y-1) {y2=screen.size_y-1;} - if (x1>screen.size_x-1) {x1=screen.size_x-1;} - if (x2>screen.size_x-1) {x2=screen.size_x-1;} - if (y1<0) {y1=0;} - if (y2<0) {y2=0;} - if (x1<0) {x1=0;} - if (x2<0) {x2=0;} - - size_x=x2-x1+1; - size_y=y2-y1+1; - x1+=screen.x; - y1+=screen.y; - - gui_ksys_draw_filled_rectangle_window(x1,y1,size_x,size_y,color); - break; - } - case DRAW_OUTPUT_BUFFER: - { - j=y; - for(i=0;i> 8; - g_f=color & 0xff; - color=color >> 8; - r_f=color & 0xff; - - color=color_to; - b_t=color & 0xff; - color=color >> 8; - g_t=color & 0xff; - color=color >> 8; - r_t=color & 0xff; - - div=sizey-1; - d_r=(float)(r_t-r_f); - d_r=d_r/div; - d_g=(float)(g_t-g_f); - d_g=d_g/div; - d_b=(float)(b_t-b_f); - d_b=d_b/div; - - f_r=r_f; - f_g=g_f; - f_b=b_f; - - r=r_f; - g=g_f; - b=b_f; - - if (flag_up==TRUE) - { - j=y+sizey-1; - dj=-1; - } - else - { - j=y; - dj=1; - } - - - for(i=0;i> 8; - g_f=color & 0xff; - color=color >> 8; - r_f=color & 0xff; - - color=color_to; - b_t=color & 0xff; - color=color >> 8; - g_t=color & 0xff; - color=color >> 8; - r_t=color & 0xff; - - div=sizex-1; - d_r=(float)(r_t-r_f); - d_r=d_r/div; - d_g=(float)(g_t-g_f); - d_g=d_g/div; - d_b=(float)(b_t-b_f); - d_b=d_b/div; - - f_r=r_f; - f_g=g_f; - f_b=b_f; - - r=r_f; - g=g_f; - b=b_f; - - if (flag_left==TRUE) - { - j=x; - dj=1; - } - else - { - j=x+sizex-1; - dj=-1; - } - - for(i=0;i=x) - { - DrawPixel(x+xc,y+yc,color); - DrawPixel(x+xc,-y+yc,color); - DrawPixel(-x+xc,y+yc,color); - DrawPixel(-x+xc,-y+yc,color); - DrawPixel(y+xc,x+yc,color); - DrawPixel(y+xc,-x+yc,color); - DrawPixel(-y+xc,x+yc,color); - DrawPixel(-y+xc,-x+yc,color); - if( d<0 ) - { - d = d+4*x+6; - } - else - { - d = d+4*(x-y)+10; - y--; - } - x++; - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing circle on screen with finition -//--------------------------------------------------------------------------------- -void DrawCircleFinit(struct FINITION *fin,int xc, int yc, int r,DWORD color) -{ - int x; - int y; - int d; - - x = 0; - y = r; - d = 3-2*r; - while(y>=x) - { - DrawPixelFinit(fin,x+xc,y+yc,color); - DrawPixelFinit(fin,x+xc,-y+yc,color); - DrawPixelFinit(fin,-x+xc,y+yc,color); - DrawPixelFinit(fin,-x+xc,-y+yc,color); - DrawPixelFinit(fin,y+xc,x+yc,color); - DrawPixelFinit(fin,y+xc,-x+yc,color); - DrawPixelFinit(fin,-y+xc,x+yc,color); - DrawPixelFinit(fin,-y+xc,-x+yc,color); - if( d<0 ) - { - d = d+4*x+6; - } - else - { - d = d+4*(x-y)+10; - y--; - } - x++; - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing filled circle on screen -//--------------------------------------------------------------------------------- -void DrawFilledCircle(int xc, int yc, int r,DWORD color) -{ - int xl,yu,xr,yd; - int i,j; - DWORD pixcolor; - - DrawCircle(xc,yc,r,color); - - yu=yc; - yd=yc; - for(i=0;ir) break; - } - j=0; - //fill right up - while((pixcolor=GetColorPixel(xr,yu))!=color) - { - DrawPixel(xr,yu,color); - xr++; - j++; - if (j>r) break; - } - - xl=xc; - xr=xc+1; - j=0; - //fill left down - while((pixcolor=GetColorPixel(xl,yd))!=color) - { - DrawPixel(xl,yd,color); - xl--; - j++; - if (j>r) break; - } - j=0; - //fill right down - while((pixcolor=GetColorPixel(xr,yd))!=color) - { - DrawPixel(xr,yd,color); - xr++; - j++; - if (j>r) break; - } - yu--; - yd++; - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing filled circle on screen with finition -//--------------------------------------------------------------------------------- -void DrawFilledCircleFinit(struct FINITION *fin,int xc, int yc, int r,DWORD color) -{ - int xl,yu,xr,yd; - int i,j; - DWORD pixcolor; - - DrawCircleFinit(fin,xc,yc,r,color); - - yu=yc; - yd=yc; - for(i=0;i=fin->x && xl<=fin->x+fin->sizex && - yu>=fin->y && yu<=fin->y+fin->sizey) - { - pixcolor=GetColorPixel(xl,yu); - if (pixcolor!=color) DrawPixel(xl,yu,color); - else break; - } - xl--; - } - //fill right up - for(j=0;j=fin->x && xr<=fin->x+fin->sizex && - yu>=fin->y && yu<=fin->y+fin->sizey) - { - pixcolor=GetColorPixel(xr,yu); - if (pixcolor!=color) DrawPixel(xr,yu,color); - else break; - } - xr++; - } - - xl=xc; - xr=xc+1; - //fill left down - for(j=0;j=fin->x && xl<=fin->x+fin->sizex && - yd>=fin->y && yd<=fin->y+fin->sizey) - { - pixcolor=GetColorPixel(xl,yd); - if (pixcolor!=color) DrawPixel(xl,yd,color); - else break; - } - xl--; - } - //fill right down - for(j=0;j=fin->x && xr<=fin->x+fin->sizex && - yd>=fin->y && yd<=fin->y+fin->sizey) - { - pixcolor=GetColorPixel(xr,yd); - if (pixcolor!=color) DrawPixel(xr,yd,color); - else break; - } - xr++; - } - yu--; - yd++; - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing ellipse on screen -//--------------------------------------------------------------------------------- -void DrawEllipse(int x,int y,int a,int b,DWORD color) -{ - int col,i,row,bnew; - long a_square,b_square,two_a_square,two_b_square,four_a_square,four_b_square,d; - - b_square=b*b; - a_square=a*a; - row=b; - col=0; - two_a_square=a_square<<1; - four_a_square=a_square<<2; - four_b_square=b_square<<2; - two_b_square=b_square<<1; - d=two_a_square*((row-1)*(row))+a_square+two_b_square*(1-a_square); - while(a_square*(row)>b_square*(col)) - { - DrawPixel(col+x,row+y,color); - DrawPixel(col+x,y-row,color); - DrawPixel(x-col,row+y,color); - DrawPixel(x-col,y-row,color); - - if (d>=0) - { - row--; - d-=four_a_square*(row); - } - d+=two_b_square*(3+(col<<1)); - col++; - } - - d=two_b_square*(col+1)*col+two_a_square*(row*(row-2)+1)+(1-two_a_square)*b_square; - while ((row) + 1) - { - DrawPixel(col+x, row+y, color); - DrawPixel(col+x, y-row, color); - DrawPixel(x-col, row+y, color); - DrawPixel(x-col, y-row, color); - - if (d<=0) - { - col++; - d+=four_b_square*col; - } - row--; - d+=two_a_square*(3-(row <<1)); - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing ellipse on screen with finition -//--------------------------------------------------------------------------------- -void DrawEllipseFinit(struct FINITION *fin,int x,int y,int a,int b,DWORD color) -{ - int col,i,row,bnew; - long a_square,b_square,two_a_square,two_b_square,four_a_square,four_b_square,d; - - b_square=b*b; - a_square=a*a; - row=b; - col=0; - two_a_square=a_square<<1; - four_a_square=a_square<<2; - four_b_square=b_square<<2; - two_b_square=b_square<<1; - d=two_a_square*((row-1)*(row))+a_square+two_b_square*(1-a_square); - - while(a_square*(row)>b_square*(col)) - { - DrawPixelFinit(fin,col+x,row+y,color); - DrawPixelFinit(fin,col+x,y-row,color); - DrawPixelFinit(fin,x-col,row+y,color); - DrawPixelFinit(fin,x-col,y-row,color); - - if (d>=0) - { - row--; - d-=four_a_square*(row); - } - d+=two_b_square*(3+(col<<1)); - col++; - } - - d=two_b_square*(col+1)*col+two_a_square*(row*(row-2)+1)+(1-two_a_square)*b_square; - while ((row) + 1) - { - DrawPixelFinit(fin,col+x, row+y, color); - DrawPixelFinit(fin,col+x, y-row, color); - DrawPixelFinit(fin,x-col, row+y, color); - DrawPixelFinit(fin,x-col, y-row, color); - - if (d<=0) - { - col++; - d+=four_b_square*col; - } - row--; - d+=two_a_square*(3-(row <<1)); - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing filled ellips on screen -//--------------------------------------------------------------------------------- -void DrawFilledEllipse(int xc, int yc, int a,int b,DWORD color) -{ - int xl,yu,xr,yd; - int i,j; - DWORD pixcolor; - - DrawEllipse(xc,yc,a,b,color); - - yu=yc; - yd=yc; - for(i=0;ia) break; - } - j=0; - //fill right up - while((pixcolor=GetColorPixel(xr,yu))!=color) - { - DrawPixel(xr,yu,color); - xr++; - j++; - if (j>a) break; - } - - xl=xc; - xr=xc+1; - j=0; - //fill left down - while((pixcolor=GetColorPixel(xl,yd))!=color) - { - DrawPixel(xl,yd,color); - xl--; - j++; - if (j>a) break; - } - j=0; - //fill right down - while((pixcolor=GetColorPixel(xr,yd))!=color) - { - DrawPixel(xr,yd,color); - xr++; - j++; - if (j>a) break; - } - yu--; - yd++; - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing filled circle on screen with finition -//--------------------------------------------------------------------------------- -void DrawFilledEllipseFinit(struct FINITION *fin,int xc, int yc, int a,int b,DWORD color) -{ - int xl,yu,xr,yd; - int i,j; - DWORD pixcolor; - - DrawEllipseFinit(fin,xc,yc,a,b,color); - - yu=yc; - yd=yc; - for(i=0;i=fin->x && xl<=fin->x+fin->sizex && - yu>=fin->y && yu<=fin->y+fin->sizey) - { - pixcolor=GetColorPixel(xl,yu); - if (pixcolor!=color) DrawPixel(xl,yu,color); - else break; - } - xl--; - } - //fill right up - for(j=0;j=fin->x && xr<=fin->x+fin->sizex && - yu>=fin->y && yu<=fin->y+fin->sizey) - { - pixcolor=GetColorPixel(xr,yu); - if (pixcolor!=color) DrawPixel(xr,yu,color); - else break; - } - xr++; - } - - xl=xc; - xr=xc+1; - //fill left down - for(j=0;j=fin->x && xl<=fin->x+fin->sizex && - yd>=fin->y && yd<=fin->y+fin->sizey) - { - pixcolor=GetColorPixel(xl,yd); - if (pixcolor!=color) DrawPixel(xl,yd,color); - else break; - } - xl--; - } - //fill right down - for(j=0;j=fin->x && xr<=fin->x+fin->sizex && - yd>=fin->y && yd<=fin->y+fin->sizey) - { - pixcolor=GetColorPixel(xr,yd); - if (pixcolor!=color) DrawPixel(xr,yd,color); - else break; - } - xr++; - } - yu--; - yd++; - } -} - -//--------------------------------------------------------------------------------- -// libGUI function drawing image on screen -//--------------------------------------------------------------------------------- -void DrawImage(int x,int y,int sizex,int sizey,char bits_per_pixel,char *img) -{ - char r,g,b; - int i,j,countx,county; - int x2,y2; - DWORD pitch_src,pitch_screen,add_src,add_screen; - char *ptr_src,*ptr_screen,ptr_max; - char *ptr_src2,*ptr_screen2; - DWORD *ptr_src3; - - if (img==NULL) return; - if (x>screen.size_x-1) return; - if (y>screen.size_y-1) return; - - x2=x+sizex-1; - y2=y+sizey-1; - - - if (y2>screen.size_y-1) {y2=screen.size_y-1;} - if (x2>screen.size_x-1) {x2=screen.size_x-1;} - if (y<0) y=0; - if (y2<0) y2=0; - if (x<0) x=0; - if (x2<0) x2=0; - - countx=x2-x+1; - county=y2-y+1; - - switch(screen.draw_output) - { - case DRAW_OUTPUT_SCREEN: - { - x+=screen.x; - y+=screen.y; - - switch(screen.bits_per_pixel) - { - case 32: - case 24: - { - switch(bits_per_pixel) - {//check bits per pixel in picture - case 32: - {//convert 32 bit image to 24 bit image - j=sizex*sizey; - ptr_src=img; - ptr_screen=malloc(j*3); - ptr_screen2=ptr_screen; - for(i=0;ix; - xmax=fin->x+fin->sizex-1; - ymin=fin->y; - ymax=fin->y+fin->sizey-1; - - x1=x; - y1=y; - x2=x1+sizex-1; - y2=y1+sizey-1; - - if (x2xmax) return; - if (y2ymax) return; - - if (x1>=xmin && x2<=xmax && y1>=ymin && y2<=ymax) - { - DrawImage(x,y,sizex,sizey,bits_per_pixel,img); - return; - } - - //finit x coordinates and sizex - sx=x1-xmin; - - if (sx>=0) - { - if (x2>xmax) x2=xmax; - } - else - { - x1=xmin; - if (x2>xmax) x2=xmax; - } - - //finit y coordinates and sizey - sy=y1-ymin; - - if (sy>=0) - { - if (y2>ymax) y2=ymax; - } - else - { - y1=ymin; - if (y2>ymax) y2=ymax; - } - countx=x2-x1+1; - county=y2-y1+1; - - //cut finited rectangle from image and move them into buffer - - bytes_per_pixel=bits_per_pixel >> 3; - buf=malloc(countx*county*bytes_per_pixel); - ptr_dest=buf; - - pitch_src=sizex*bytes_per_pixel; - ptr_src=img+pitch_src*(y1-y)+(x1-x)*bytes_per_pixel; - add_src=sizex*bytes_per_pixel; - countline=countx*bytes_per_pixel; - - switch(bits_per_pixel) - { - case 32: - case 24: - case 16: - case 8: - { - for(i=0;ix; - xmax=finition->x+finition->sizex-1; - ymin=finition->y; - ymax=finition->y+finition->sizey-1; - - switch(tool_name) - { - //tool Pixel - case TOOL_PIXEL: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - if (x>=finition->x && x<=finition->x+finition->sizex - && y>=finition->y && y<=finition->y+finition->sizey) - { //pixel inside finition arrea - DrawPixel(x,y,color); - } - } - else - { //no finition - DrawPixel(x,y,color); - } - break; - } - //tool Line - case TOOL_LINE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - x2=va_arg(arguments,int); - y2=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - sizex=abs(x2-x); - sizey=abs(y2-y); - - if (CheckCrossRectangles(finition->x,finition->y,finition->sizex, - finition->sizey,x,y,sizex,sizey)==FALSE) break; - - if (x>=finition->x && x<=finition->x+finition->sizex && - y>=finition->y && y<=finition->y+finition->sizey && - x2>=finition->x && x2<=finition->x+finition->sizex && - y2>=finition->y && y2<=finition->y+finition->sizey) - { - //line inside finition arrea - DrawLine(x,y,x2,y2,color); - break; - } - - - if (x==x2) break; - - //find coefficients of line - x_l1=x; - y_l1=y; - x_l2=x2; - y_l2=y2; - k=(y_l1-y_l2)/(x_l1-x_l2); - b=(y_l2*x_l1-y_l1*x_l2)/(x_l1-x_l2); - - sx=x2-x;//vectore x - sy=y2-y;//vectore y - - if (x>=finition->x && x<=finition->x+finition->sizex && - y>=finition->y && y<=finition->y+finition->sizey) - { //point x,y inside finition arrea - //check cross with left vertical line of finition - y_l1=k*finition->x+b; - y_i=(int)y_l1; - if (y_i>=finition->y && y_i<=finition->y+finition->sizey && sx<0) - { //first point for finited line - x2=finition->x; - y2=y_i; - DrawLine(x,y,x2,y2,color); - break; - } - //check cross with up horizontal line of finition - x_l1=(finition->y-b)/k; - x_i=(int)x_l1; - if (x_i>=finition->x && x_i<=finition->x+finition->sizex && sy<0) - { - x2=x_i; - y2=finition->y; - DrawLine(x,y,x2,y2,color); - break; - } - //check cross with right vertical line of finition - y_l1=k*(finition->x+finition->sizex)+b; - y_i=(int)y_l1; - if (y_i>=finition->y && y_i<=finition->y+finition->sizey && sx>0) - { - x2=finition->x+finition->sizex; - y2=y_i; - DrawLine(x,y,x2,y2,color); - break; - } - //check cross with down horizontal line of finition - x_l1=((finition->y+finition->sizey)-b)/k; - x_i=(int)x_l1; - if (x_i>=finition->x && x_i<=finition->x+finition->sizex && sy>0) - { - x2=x_i; - y2=finition->y+finition->sizey; - DrawLine(x,y,x2,y2,color); - break; - } - } - - if (x2>=finition->x && x2<=finition->x+finition->sizex && - y2>=finition->y && y2<=finition->y+finition->sizey) - { //point x,y inside finition arrea - //check cross with left vertical line of finition - y_l1=k*finition->x+b; - y_i=(int)y_l1; - if (y_i>=finition->y && y_i<=finition->y+finition->sizey && sx>0) - { //first point for finited line - x=finition->x; - y=y_i; - DrawLine(x,y,x2,y2,color); - break; - } - //check cross with up horizontal line of finition - x_l1=(finition->y-b)/k; - x_i=(int)x_l1; - if (x_i>=finition->x && x_i<=finition->x+finition->sizex && sy>0) - { - x=x_i; - y=finition->y; - DrawLine(x,y,x2,y2,color); - break; - } - //check cross with right vertical line of finition - y_l1=k*(finition->x+finition->sizex)+b; - y_i=(int)y_l1; - if (y_i>=finition->y && y_i<=finition->y+finition->sizey && sx<0) - { - x=finition->x+finition->sizex; - y=y_i; - DrawLine(x,y,x2,y2,color); - break; - } - //check cross with down horizontal line of finition - x_l1=((finition->y+finition->sizey)-b)/k; - x_i=(int)x_l1; - if (x_i>=finition->x && x_i<=finition->x+finition->sizex && sy<0) - { - x=x_i; - y=finition->y+finition->sizey; - DrawLine(x,y,x2,y2,color); - break; - } - } - - first=FALSE; - second=FALSE; - //check cross with left vertical line of finition - y_l1=k*finition->x+b; - y_i=(int)y_l1; - if (y_i>=finition->y && y_i<=finition->y+finition->sizey) - { //first point for finited line - x=finition->x; - y=y_i; - first=TRUE; - } - //check cross with up horizontal line of finition - x_l1=(finition->y-b)/k; - x_i=(int)x_l1; - if (x_i>=finition->x && x_i<=finition->x+finition->sizex) - { - if (first==FALSE) - { - x=x_i; - y=finition->y; - } - else - { - x2=x_i; - y2=finition->y; - second=TRUE; - } - } - //check cross with right vertical line of finition - y_l1=k*(finition->x+finition->sizex)+b; - y_i=(int)y_l1; - if (y_i>=finition->y && y_i<=finition->y+finition->sizey) - { - if (first==FALSE) - { - x=finition->x+finition->sizex; - y=y_i; - } - else - { - x2=finition->x+finition->sizex; - y2=y_i; - second=TRUE; - } - } - //check cross with down horizontal line of finition - x_l1=((finition->y+finition->sizey)-b)/k; - x_i=(int)x_l1; - if (x_i>=finition->x && x_i<=finition->x+finition->sizex) - { - if (first==FALSE) - { - x=x_i; - y=finition->y+finition->sizey; - } - else - { - x2=x_i; - y2=finition->y+finition->sizey; - second=TRUE; - } - } - - if (first==TRUE && second==TRUE) - { - //draw finited line - DrawLine(x,y,x2,y2,color); - } - break; - - } - else - { //no finition - DrawLine(x,y,x2,y2,color); - } - break; - } - //tool VerticalLine - case TOOL_VERTICAL_LINE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - y2=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - DrawVerticalLineFinit(finition,x,y,y2,color); - } - else - { - DrawVerticalLine(x,y,y2,color); - } - break; - } - //tool HorizontalLine - case TOOL_HORIZONTAL_LINE: - { - x=va_arg(arguments,int); - x2=va_arg(arguments,int); - y=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - DrawHorizontalLineFinit(finition,x,x2,y,color); - } - else - { - DrawHorizontalLine(x,x2,y,color); - } - break; - } - - //tool Rectangle - case TOOL_RECTANGLE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - x2=x+sizex-1; - y2=y+sizey-1; - - if (x2xmax) return; - if (y2ymax) return; - - DrawRectangleFinit(finition,x,y,sizex,sizey,color); - } - else - { - DrawRectangle(x,y,sizex,sizey,color); - } - break; - } - //tool FilledRectangle - case TOOL_FILLED_RECTANGLE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - x2=x+sizex-1; - y2=y+sizey-1; - - if (x2xmax) return; - if (y2ymax) return; - - //finit x coordinates and sizex - sx=x-xmin; - - if (sx>=0) - { - if (x2>xmax) x2=xmax; - } - else - { - x=xmin; - if (x2>xmax) x2=xmax; - } - - //finit y coordinates and sizey - sy=y-ymin; - - if (sy>=0) - { - if (y2>ymax) y2=ymax; - } - else - { - y=ymin; - if (y2>ymax) y2=ymax; - } - - sizex=x2-x+1; - sizey=y2-y+1; - - DrawFilledRectangle(x,y,sizex,sizey,color); - } - else - { - DrawFilledRectangle(x,y,sizex,sizey,color); - } - break; - } - //tool GradientUpFilledRectangle - case TOOL_GRADIENT_UP_FILLED_RECTANGLE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - color_from=va_arg(arguments,DWORD); - color_to=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - x2=x+sizex-1; - y2=y+sizey-1; - - if (x2xmax) return; - if (y2ymax) return; - - //finit x coordinates and sizex - sx=x-xmin; - - if (sx>=0) - { - if (x2>xmax) x2=xmax; - } - else - { - x=xmin; - if (x2>xmax) x2=xmax; - } - - //finit y coordinates and sizey - sy=y-ymin; - - if (sy>=0) - { - if (y2>ymax) y2=ymax; - } - else - { - y=ymin; - if (y2>ymax) y2=ymax; - } - - sizex=x2-x+1; - sizey=y2-y+1; - - DrawGradientUpDownFilledRectangle(TRUE,x,y,sizex,sizey,color_from,color_to); - } - else - { - DrawGradientUpDownFilledRectangle(TRUE,x,y,sizex,sizey,color_from,color_to); - } - break; - } - //tool GradientDownFilledRectangle - case TOOL_GRADIENT_DOWN_FILLED_RECTANGLE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - color_from=va_arg(arguments,DWORD); - color_to=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - x2=x+sizex-1; - y2=y+sizey-1; - - if (x2xmax) return; - if (y2ymax) return; - - //finit x coordinates and sizex - sx=x-xmin; - - if (sx>=0) - { - if (x2>xmax) x2=xmax; - } - else - { - x=xmin; - if (x2>xmax) x2=xmax; - } - - //finit y coordinates and sizey - sy=y-ymin; - - if (sy>=0) - { - if (y2>ymax) y2=ymax; - } - else - { - y=ymin; - if (y2>ymax) y2=ymax; - } - - sizex=x2-x+1; - sizey=y2-y+1; - - DrawGradientUpDownFilledRectangle(FALSE,x,y,sizex,sizey,color_from,color_to); - } - else - { - DrawGradientUpDownFilledRectangle(FALSE,x,y,sizex,sizey,color_from,color_to); - } - break; - } - //tool GradientLeftFilledRectangle - case TOOL_GRADIENT_LEFT_FILLED_RECTANGLE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - color_from=va_arg(arguments,DWORD); - color_to=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - x2=x+sizex-1; - y2=y+sizey-1; - - if (x2xmax) return; - if (y2ymax) return; - - //finit x coordinates and sizex - sx=x-xmin; - - if (sx>=0) - { - if (x2>xmax) x2=xmax; - } - else - { - x=xmin; - if (x2>xmax) x2=xmax; - } - - //finit y coordinates and sizey - sy=y-ymin; - - if (sy>=0) - { - if (y2>ymax) y2=ymax; - } - else - { - y=ymin; - if (y2>ymax) y2=ymax; - } - - sizex=x2-x+1; - sizey=y2-y+1; - - DrawGradientLeftRightFilledRectangle(TRUE,x,y,sizex,sizey,color_from,color_to); - } - else - { - DrawGradientLeftRightFilledRectangle(TRUE,x,y,sizex,sizey,color_from,color_to); - } - break; - } - //tool GradientRightFilledRectangle - case TOOL_GRADIENT_RIGHT_FILLED_RECTANGLE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - color_from=va_arg(arguments,DWORD); - color_to=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - x2=x+sizex-1; - y2=y+sizey-1; - - if (x2xmax) return; - if (y2ymax) return; - - //finit x coordinates and sizex - sx=x-xmin; - - if (sx>=0) - { - if (x2>xmax) x2=xmax; - } - else - { - x=xmin; - if (x2>xmax) x2=xmax; - } - - //finit y coordinates and sizey - sy=y-ymin; - - if (sy>=0) - { - if (y2>ymax) y2=ymax; - } - else - { - y=ymin; - if (y2>ymax) y2=ymax; - } - - sizex=x2-x+1; - sizey=y2-y+1; - - DrawGradientLeftRightFilledRectangle(FALSE,x,y,sizex,sizey,color_from,color_to); - } - else - { - DrawGradientLeftRightFilledRectangle(FALSE,x,y,sizex,sizey,color_from,color_to); - } - break; - } - //tool Circle - case TOOL_CIRCLE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - radius=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - DrawCircleFinit(finition,x,y,radius,color); - } - else - { - DrawCircle(x,y,radius,color); - } - break; - } - //tool FilledCircle - case TOOL_FILLED_CIRCLE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - radius=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - DrawFilledCircleFinit(finition,x,y,radius,color); - } - else - { - DrawFilledCircle(x,y,radius,color); - } - break; - } - //tool Ellipse - case TOOL_ELLIPSE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - DrawEllipseFinit(finition,x,y,sizex,sizey,color); - } - else - { - DrawEllipse(x,y,sizex,sizey,color); - } - break; - } - //tool FilledEllipse - case TOOL_FILLED_ELLIPSE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - color=va_arg(arguments,DWORD); - - if (finition->flags & FINITION_ON) - { - DrawFilledEllipseFinit(finition,x,y,sizex,sizey,color); - } - else - { - DrawFilledEllipse(x,y,sizex,sizey,color); - } - break; - } - //tool Image - case TOOL_IMAGE: - { - x=va_arg(arguments,int); - y=va_arg(arguments,int); - sizex=va_arg(arguments,int); - sizey=va_arg(arguments,int); - bits_per_pixel=(char)va_arg(arguments,int); - img=va_arg(arguments,char*); - - if (finition->flags & FINITION_ON) - { - DrawImageFinit(finition,x,y,sizex,sizey,bits_per_pixel,img); - } - else - { - DrawImage(x,y,sizex,sizey,bits_per_pixel,img); - } - break; - } - } - va_end(arguments); -} - - diff --git a/programs/develop/new libGUI_C/SRC/fonts_meneger.h b/programs/develop/new libGUI_C/SRC/fonts_meneger.h deleted file mode 100755 index d2fc3ad650..0000000000 --- a/programs/develop/new libGUI_C/SRC/fonts_meneger.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - font meneger header structure - */ - -#define FONT_FLAG_DEFAULT_FONT_ON 0x1 -#define FONT_FLAG_DEFAULT_FONT_OFF 0xfe -#define FONT_FLAG_DRAW_BACKGROUND_ON 0x2 -#define FONT_FLAG_DRAW_BACKGROUND_OFF 0xfd -#define FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON 0x4 -#define FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_OFF 0xfb - -#define FONT_CONSTANT_SIZE -1 - -//some types encoding characters -#define FONT_TYPE_ASCII 0x1 -#define FONT_TYPE_UNICODE 0x2 - -/////////////////////////////////////////////////////////// -// some ASCII encodings -/////////////////////////////////////////////////////////// - -//cyrillic encodings -#define FONT_ENCODING_CYRILLIC_IBM866 0x1 -#define FONT_ENCODING_CYRILLIC_IBM437 0x2 -#define FONT_ENCODING_CYRILLIC_KOI8R 0x4 -#define FONT_ENCODING_CYRILLIC_ISO8859_5 0x8 -#define FONT_ENCODING_CYRILLIC_CP1251 0x10 - -#pragma pack(push,1) -static struct -{ - DWORD *fnt_fd; - DWORD *fnt_bk; - DWORD *default_font; - DWORD number_fonts; -}FontsMeneger; -#pragma pack(pop) - -#pragma pack(push,1) -struct FONT -{ - DWORD *fnt_draw; - DWORD *fnt_unpacker; - DWORD *fnt_fd; - DWORD *fnt_bk; - int sizex; - int sizey; - int size; - int encoding_type; - char *font; - char *fnt_name; - DWORD type; - DWORD flags; -}; -#pragma pack(pop) - -typedef struct FONT font_t; - -static char *default_fonts_path="/sys/fonts/"; - -void (*DrawFont)(finition_t *fin,int fx,int fy,DWORD color,DWORD background_color,font_t *font,BYTE *s); - - diff --git a/programs/develop/new libGUI_C/SRC/fonts_meneger.inc b/programs/develop/new libGUI_C/SRC/fonts_meneger.inc deleted file mode 100755 index b16b2a0234..0000000000 --- a/programs/develop/new libGUI_C/SRC/fonts_meneger.inc +++ /dev/null @@ -1,373 +0,0 @@ -/* - menegement of fonts - */ - -//--------------------------------------------------------------------------------- -// destroy font -//--------------------------------------------------------------------------------- -void DestroyFont(font_t *font) -{ - font_t *seek_font; - font_t *exchange_font; - font_t *last_font; - font_t *next_font; - - if (font==(font_t*)NULL) return; - - if (FontsMeneger.fnt_bk==FontsMeneger.fnt_fd) - { - //parent have got alone font - if (FontsMeneger.fnt_bk==(DWORD*)font) - { -#ifdef DEBUG - printf("\ndestroyed font %d font name=%s",(int)font,(char*)font->fnt_name); -#endif - free(font); - FontsMeneger.fnt_bk=(DWORD*)NULL; - FontsMeneger.fnt_fd=(DWORD*)NULL; - } - return; - } - - seek_font=(font_t*)FontsMeneger.fnt_bk; - while(seek_font!=(font_t*)NULL) - { - if (seek_font==font) - { - //delete font from fonts's cash - last_font=(font_t*)seek_font->fnt_bk; - next_font=(font_t*)seek_font->fnt_fd; - - if ((last_font!=(font_t*)NULL) && (next_font!=(font_t*)NULL)) - {//deliting font isn't first font and isn't endest - next_font->fnt_bk=(DWORD*)last_font; - last_font->fnt_fd=(DWORD*)next_font; - } - else - { - if (last_font==(font_t*)NULL) - {//deliting font is first font of Parend - FontsMeneger.fnt_bk=(DWORD*)next_font; - next_font->fnt_bk=(DWORD*)NULL; - if (next_font->fnt_fd==(DWORD*)NULL) - { - FontsMeneger.fnt_fd=(DWORD*)next_font; - FontsMeneger.fnt_bk=(DWORD*)next_font; - } - } - - if (next_font==(font_t*)NULL) - { - //there isn't next fonts - last_font->fnt_fd=(DWORD*)NULL; - FontsMeneger.fnt_fd=(DWORD*)last_font; - } - } -#ifdef DEBUG - printf("\ndestroyed font %d font name=%s",(int)font,(char*)font->fnt_name); -#endif - free(font); - break; - } - exchange_font=(font_t*)seek_font->fnt_fd; - seek_font=exchange_font; - } -} - -void *CreateFont(void) -{ - font_t *font; - font_t *backward_font; - - font=malloc(sizeof(struct FONT)); - - if (FontsMeneger.fnt_bk==(DWORD*)NULL) - {//not yet fonts - FontsMeneger.fnt_bk=(DWORD*)font; - FontsMeneger.fnt_fd=(DWORD*)font; - font->fnt_bk=(DWORD*)NULL; - font->fnt_fd=(DWORD*)NULL; - } - else - { - backward_font=(font_t*)FontsMeneger.fnt_fd; - FontsMeneger.fnt_fd=(DWORD*)font; - backward_font->fnt_fd=(DWORD*)font; - font->fnt_bk=(DWORD*)backward_font; - font->fnt_fd=(DWORD*)NULL; - } - return(font); -} -//////////////////////////////////////////////////////////////////////////////// -// CHAR.MT and CHAR2.MT fonts unpacker -//////////////////////////////////////////////////////////////////////////////// -void CHAR_MT_FontsUnpacker(unsigned char *loaded_font,font_t *font,char font_type) -{ - int i,j,k; - unsigned char c; - unsigned char *p; - - if (font_type==FALSE) - {//CHAR.MT - font->font=malloc(6*9*256); - p=(unsigned char*)font->font; - - for(j=0;j<256;j++) - { - for(i=0;i<9;i++) - { - c=(unsigned char)(*loaded_font); - p[5]=(unsigned char)(c & 0x20); - p[4]=(unsigned char)(c & 0x10); - p[3]=(unsigned char)(c & 0x8); - p[2]=(unsigned char)(c & 0x4); - p[1]=(unsigned char)(c & 0x2); - p[0]=(unsigned char)(c & 0x1); - - p+=6; - loaded_font++; - } - } - font->sizex=6; - font->sizey=9; - } - else - {//CHAR2.MT - font->font=malloc(8*10*256); - p=(unsigned char*)font->font; - - for(j=0;j<256;j++) - { - for(i=0;i<10;i++) - { - c=(unsigned char)(*loaded_font); - p[7]=(unsigned char)(c & 0x80); - p[6]=(unsigned char)(c & 0x40); - p[5]=(unsigned char)(c & 0x20); - p[4]=(unsigned char)(c & 0x10); - p[3]=(unsigned char)(c & 0x8); - p[2]=(unsigned char)(c & 0x4); - p[1]=(unsigned char)(c & 0x2); - p[0]=(unsigned char)(c & 0x1); - - p+=8; - loaded_font++; - } - } - font->sizex=8; - font->sizey=10; - } - - font->size=FONT_CONSTANT_SIZE; - font->type=FONT_TYPE_ASCII; - font->encoding_type=FONT_ENCODING_CYRILLIC_IBM866; -} - -//////////////////////////////////////////////////////////////////////////////// -// CHAR.MT and CHAR2.MT fonts draw -//////////////////////////////////////////////////////////////////////////////// -void MonofontDraw(finition_t *fin,int fx,int fy, - DWORD color,DWORD background_color, - font_t *font,unsigned char *s) -{ - unsigned int i,j,k,step,len; - int x,y,size_x,save_size_x,save_size_y; - unsigned char *p,*buf,*save_buf; - unsigned char c; - DWORD draw_output; - - step=font->sizex*font->sizey; - len=strlen(s); - - if (font->flags & FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON) - { - if (font->flags & FONT_FLAG_DRAW_BACKGROUND_ON) - {//there is a fon and not finition for draw - //alocate a buffer for draw text - size_x=font->sizex*len; - - c=screen.bits_per_pixel >> 3; - i=step*c*len; - buf=malloc(i); - - //save current screen parameters - save_buf=screen.buffer; - save_size_x=screen.size_x; - save_size_y=screen.size_y; - draw_output=screen.draw_output; - - //load parameters of local buffer - screen.buffer=buf; - screen.size_x=size_x; - screen.size_y=font->sizey; - screen.draw_output=DRAW_OUTPUT_BUFFER; - - //fill buffer by background color - FillArrea(buf,i,screen.bits_per_pixel,background_color); - - //draw text - x=0; - for(k=0;kfont+step*c; - for(j=0;jsizey;j++) - { - - for(i=0;isizex;i++) - { - if (*p) DrawPixel(x+i,j,color); - p++; - } - } - x=x+font->sizex; - } - - //restore screen parameters - screen.buffer=save_buf; - screen.size_x=save_size_x; - screen.size_y=save_size_y; - screen.draw_output=draw_output; - - //move text from local buffer to screen - if (fin->flags & FINITION_ON) - DrawImageFinit(fin,fx,fy,size_x,font->sizey,screen.bits_per_pixel,buf); - else - DrawImage(fx,fy,size_x,font->sizey,screen.bits_per_pixel,buf); - - //free local buffer - free(buf); - } - else - { - if (fin->flags & FINITION_ON) - {//not background and finition for draw - x=fx; - y=fy; - for(k=0;kfont+step*c; - for(j=0;jsizey;j++) - { - - for(i=0;isizex;i++) - { - if (*p) DrawPixelFinit(fin,x+i,y+j,color); - p++; - } - } - x=x+font->sizex; - } - } - else - {//not background and not finition for draw - x=fx; - y=fy; - for(k=0;kfont+step*c; - for(j=0;jsizey;j++) - { - - for(i=0;isizex;i++) - { - if (*p) DrawPixel(x+i,y+j,color); - p++; - } - } - x=x+font->sizex; - } - } - - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -// fonts loader -//////////////////////////////////////////////////////////////////////////////// -font_t *LoadFont(char *fullfontname) -{ - char *path; - char *c; - BYTE *buf; - long filesize; - int len1,len2,i; - font_t *font; - static DWORD buf_for_size[2]; - static DWORD buf_for_pos[2]; - - path=malloc(263); - if (strchr(fullfontname,'/')==NULL) - { - len1=strlen(default_fonts_path); - len2=strlen(fullfontname); - memmove(path,default_fonts_path,len1); - memmove(path+len1,fullfontname,len2); - *(path+len1+len2)='\0'; - } - else - memmove(path,fullfontname,strlen(fullfontname)); - - if (gui_get_file_size(path,buf_for_size)==KOLIBRIOS_SYS_FILE_ACCESS_SUCCESSFULLY) - { - filesize=buf_for_size[0]; - buf=malloc(filesize); - //load fonts in buffer - gui_read_file(path,buf_for_pos,filesize,buf); - - free(path); - //register font - font=CreateFont(); - c=strrchr(fullfontname,'/'); - if(c==NULL) font->fnt_name=fullfontname; - else - font->fnt_name=(char*)(c+1); - - //check font type - c=strstr(font->fnt_name,"CHAR.MT");//check standart type of fonts - if (c!=NULL) - { - font->fnt_unpacker=(DWORD*)&CHAR_MT_FontsUnpacker; - font->fnt_draw=(DWORD*)&MonofontDraw; - CHAR_MT_FontsUnpacker(buf,font,FALSE);//CHAR.MT - free(buf); - font->flags=0; - font->flags|=FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON; - } - - c=strstr(font->fnt_name,"CHAR2.MT");//check standart type of fonts - if (c!=NULL) - { - font->fnt_unpacker=(DWORD*)&CHAR_MT_FontsUnpacker; - font->fnt_draw=(DWORD*)&MonofontDraw; - CHAR_MT_FontsUnpacker(buf,font,TRUE);//CHAR2.MT - free(buf); - font->flags=0; - font->flags|=FONT_FLAG_ORIENTATION_HORIZONTAL_FROM_LEFT_TO_RIGHT_ON; - } - //not other fonts yet - - } - else - { -#ifdef DEBUG - printf("\ncannot load font %s",path); -#endif - free(path); - return(NULL); - } - - FontsMeneger.number_fonts++; - return(font); -} - -void FreeFont(font_t *font) -{ - if (font==(font_t*)FontsMeneger.default_font) return; - - free(font->font); - DestroyFont(font); -} diff --git a/programs/develop/new libGUI_C/SRC/keys.h b/programs/develop/new libGUI_C/SRC/keys.h deleted file mode 100755 index 75136e256c..0000000000 --- a/programs/develop/new libGUI_C/SRC/keys.h +++ /dev/null @@ -1,8 +0,0 @@ -/* - scan codes of keys -*/ - -//Scan Codes of some keys in pressed state - #define SC_TAB 15 - #define SC_ENTER 28 - #define SC_SPACE 57 diff --git a/programs/develop/new libGUI_C/SRC/kolibri_system.h b/programs/develop/new libGUI_C/SRC/kolibri_system.h deleted file mode 100755 index 84d3e31613..0000000000 --- a/programs/develop/new libGUI_C/SRC/kolibri_system.h +++ /dev/null @@ -1,657 +0,0 @@ -/* - some system function of KolibriOS -*/ - -#define KOLIBRIOS_SYS_EVENT_REDRAW 1 -#define KOLIBRIOS_SYS_EVENT_KEYS 2 -#define KOLIBRIOS_SYS_EVENT_BUTTON_PRESSED 3 -#define KOLIBRIOS_SYS_EVENT_REDRAW_BACKGROUND 5 -#define KOLIBRIOS_SYS_EVENT_MOUSE 6 -#define KOLIBRIOS_SYS_EVENT_IPC 7 -#define KOLIBRIOS_SYS_EVENT_NET 8 -#define KOLIBRIOS_SYS_EVENT_DEBUG 9 - -#define KOLIBRIOS_SYS_MOUSE_BUTTON_LEFT_DOWN 0x1 -#define KOLIBRIOS_SYS_MOUSE_BUTTON_RIGHT_DOWN (0x1<<1) -#define KOLIBRIOS_SYS_MOUSE_BUTTON_MIDDLE_DOWN (0x1 <<2) -#define KOLIBRIOS_SYS_MOUSE_BUTTON_4_DOWN (0x1 <<3) -#define KOLIBRIOS_SYS_MOUSE_BUTTON_5_DOWN (0x1 <<4) - -#define KOLIBRIOS_SYS_FILE_ACCESS_SUCCESSFULLY 0 -#define KOLIBRIOS_SYS_FILE_UNDEFINED_PARTITION_OR_HARDDRIVE_BASE 1 -#define KOLIBRIOS_SYS_FILE_FUNCTION_DONT_SUPPOROTE_FOR_CURRENT_FILE_SYSTEM 2 -#define KOLIBRIOS_SYS_FILE_UNKNOWN_FILE_SYSTEM 3 -#define KOLIBRIOS_SYS_FILE_NOT_FOUND 5 -#define KOLIBRIOS_SYS_FILE_FINISHED 6 -#define KOLIBRIOS_SYS_FILE_POINTER_OUTOFMEMORY_APPLICATION 7 -#define KOLIBRIOS_SYS_FILE_MEMORY_OF_DEVICE_FILLED 8 -#define KOLIBRIOS_SYS_FILE_TABLE_DESTROYED 9 -#define KOLIBRIOS_SYS_FILE_ACCESS_DENITED 10 -#define KOLIBRIOS_SYS_FILE_DEVICE_ERROR 11 - -#pragma pack(push,1) -struct KOLIBRIOS_FILEIO -{ - DWORD number_subfunction; - DWORD offset_in_file_low; - DWORD offset_in_file_hight; - DWORD size; - DWORD *data; - BYTE null; - char *full_file_path; -}; -#pragma pack(pop) - -typedef struct KOLIBRIOS_FILEIO fileio_t; - -#pragma pack(push,1) -struct BLOCK_DATA_ENTRY_DIRECTORY -{ - DWORD attributes; - DWORD types_data_of_name; - DWORD time_created_file; - DWORD date_created_file; - DWORD time_last_access; - DWORD date_last_access; - DWORD time_last_modification; - DWORD date_last_modification; - DWORD file_size_low; - DWORD file_size_hight; - DWORD *filename; -}; -#pragma pack(pop) - -typedef struct BLOCK_DATA_ENTRY_DIRECTORY bded_t; - -#pragma pack(push,1) -struct PROCESS_TABLE -{ - int cpu_usage; //+0 - int window_pos_info; //+4 - short int reserved1; //+8 - char name[12]; //+10 - int memstart; //+22 - int memused; //+26 - int pid; //+30 - int winx_start; //+34 - int winy_start; //+38 - int winx_size; //+42 - int winy_size; //+46 - short int slot_info; //+50 - short int reserved2; //+52 - int clientx; //+54 - int clienty; //+58 - int clientwidth; //+62 - int clientheight; //+66 - unsigned char window_state; //+70 - char reserved3[1024-71]; //+71 -}; -#pragma pack(pop) - -typedef struct PROCESS_TABLE process_table_t; - -#pragma pack(push,1) -struct IMPORT -{ - char *name; - void *data; -}; -#pragma pack(pop) - -typedef struct IMPORT import_t; - -static DWORD gui_get_file_size(char *filename,DWORD *buf_for_size); -static DWORD gui_read_file(char *filename,DWORD *buf_pos_size,DWORD size_read,char *buf); -static DWORD gui_create_rewrite_file(char *filename,DWORD *buf_pos_size,DWORD size_write,char *buf); -static DWORD gui_append_to_file(char *filename,DWORD *buf_pos_size,DWORD size_write,char *buf); -static void gui_debug_out_str(char *s); -static void* gui_cofflib_getproc(import_t *lib, char *name); - -#define alwinline __attribute__((always_inline)) -//------------------------------------------------------------------------------------------ -// draw window -//------------------------------------------------------------------------------------------ -extern inline void __attribute__((always_inline)) gui_ksys_draw_window(DWORD x,DWORD y,DWORD sizex,DWORD sizey,DWORD flags) -{ - __asm__ __volatile__( - "xorl %%eax,%%eax\n\t" - "movl %0,%%ebx\n\t" - "movl %1,%%ecx\n\t" - "movl %4,%%edx\n\t" - "shll $16,%%ebx\n\t" - "shll $16,%%ecx\n\t" - "addl %2,%%ebx\n\t" - "addl %3,%%ecx\n\t" - "int $0x40" - :/*no output*/ - :"g"(x),"g"(y),"g"(sizex),"g"(sizey),"g"(flags) - :"eax","ebx","ecx","edx"); -} - -//------------------------------------------------------------------------------------------ -// begin redraw window -//------------------------------------------------------------------------------------------ -extern inline void __attribute__((always_inline)) gui_ksys_begin_draw_window(void) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(12),"b"(1)); -} - -//------------------------------------------------------------------------------------------ -// finish redraw window -//------------------------------------------------------------------------------------------ -extern inline void __attribute__((always_inline)) gui_ksys_finish_draw_window(void) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(12),"b"(2)); -} - -//------------------------------------------------------------------------------------------ -// set new position and new size of window -//------------------------------------------------------------------------------------------ -extern inline void alwinline gui_ksys_set_position_and_size_window(DWORD new_x, - DWORD new_y,DWORD new_sizex,DWORD new_sizey) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(67),"b"(new_x),"c"(new_y),"d"(new_sizex),"S"(new_sizey)); -} - -//------------------------------------------------------------------------------------------ -// set title of window -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_set_title_window(char *title) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(71),"b"(1),"c"(title)); -} - -//------------------------------------------------------------------------------------------ -// delete title of window -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_delete_title_window(void) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(71),"b"(1),"c"(0)); -} - -//------------------------------------------------------------------------------------------ -// get information about current process -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_get_current_process_information(void *mem) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(9),"b"(mem),"c"(-1)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// delete title of window -//------------------------------------------------------------------------------------------ -extern inline int __attribute__((always_inline)) gui_ksys_get_skin_height(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(48),"b"(4)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get pressed key -//------------------------------------------------------------------------------------------ -extern inline int __attribute__((always_inline)) gui_ksys_get_key(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(2)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// set keyboard input mode -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_set_keyboard_input_mode(int mode) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(66),"b"(1),"c"(mode)); - -} - -//------------------------------------------------------------------------------------------ -// get keyboard input mode -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_get_keyboard_input_mode(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(66),"b"(2)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get state of menegers keys -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_get_state_menegers_keys(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(66),"b"(3)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// set events mask -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_set_events_mask(DWORD mask) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(40),"b"(mask)); -} - -//------------------------------------------------------------------------------------------ -// wait event -//------------------------------------------------------------------------------------------ -extern inline int __attribute__((always_inline)) gui_ksys_wait_event(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(10)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// check for event -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_check_event(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(11)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// wait event while not timeout -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_wait_event_with_timeout(DWORD timeout) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(23),"b"(timeout)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get code of pressed button -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_get_code_pressed_button(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(17)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get window mouse coordinates -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_get_window_mouse_coordinates(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(37),"b"(1)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get screen mouse coordinates -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_get_screen_mouse_coordinates(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(37),"b"(0)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get mouse buttons state -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_get_mouse_buttons_state(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(37),"b"(2)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get mouse ruler state -//------------------------------------------------------------------------------------------ -extern inline int gui_ksys_get_mouse_ruler_state(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(37),"b"(7)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// put pixel in window -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_put_pixel_window(int x,int y,DWORD color) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(1),"b"(x),"c"(y),"d"(color)); -} - -//------------------------------------------------------------------------------------------ -// put image in window -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_put_image_window(char *p,int x,int y,int sizex,int sizey) -{ - __asm__ __volatile__( - "shll $16,%%ecx\n\t" - "shll $16,%%edx\n\t" - "addl %%esi,%%ecx\n\t" - "addl %%edi,%%edx\n\t" - "int $0x40" - :/*no output*/ - :"a"(7),"b"(p),"c"(sizex),"d"(x),"S"(sizey),"D"(y)); -} - -//------------------------------------------------------------------------------------------ -// draw filled rectangle in window -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_draw_filled_rectangle_window(int x,int y,int sizex,int sizey,DWORD color) -{ - __asm__ __volatile__( - "shll $16,%%ebx\n\t" - "shll $16,%%ecx\n\t" - "addl %%esi,%%ebx\n\t" - "addl %%edi,%%ecx\n\t" - "int $0x40" - :/*no output*/ - :"a"(13),"b"(x),"c"(y),"d"(color),"S"(sizex),"D"(sizey)); -} - -//------------------------------------------------------------------------------------------ -// get screen size -//------------------------------------------------------------------------------------------ -extern inline DWORD gui_ksys_get_screen_size(void) -{ - DWORD value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(14)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get color of pixel in coordinates (x,y) -//------------------------------------------------------------------------------------------ -extern inline DWORD gui_ksys_get_color_pixel_window(DWORD coordinates) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(35),"b"(coordinates)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// get bits per pixel on the screen -//------------------------------------------------------------------------------------------ -extern inline DWORD gui_ksys_get_screen_bits_per_pixel(void) -{ - int value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(61),"b"(2)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// draw line in window -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_draw_line_window(int x1,int y1,int x2,int y2,DWORD color) -{ - __asm__ __volatile__( - "shll $16,%%ebx\n\t" - "shll $16,%%ecx\n\t" - "addl %%esi,%%ebx\n\t" - "addl %%edi,%%ecx\n\t" - "int $0x40" - :/*no output*/ - :"a"(38),"b"(x1),"c"(y1),"d"(color),"S"(x2),"D"(y2)); -} - -//------------------------------------------------------------------------------------------ -// get standart colors table -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_get_standart_colors_table(char *buf) -{ - __asm__ __volatile__( - "int $0x40" - :/*no output*/ - :"a"(48),"b"(3),"c"(buf),"d"(40)); -} - -//------------------------------------------------------------------------------------------ -// get time from start system to current in 1/100 sec. -//------------------------------------------------------------------------------------------ -extern inline DWORD gui_ksys_get_ticks(void) -{ - DWORD value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(26),"b"(9)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// initialize heap of memory -//------------------------------------------------------------------------------------------ -extern inline DWORD gui_ksys_init_user_heap(void) -{ - DWORD value; - - __asm__ __volatile__( - "int $0x40" - :"=a"(value) - :"a"(68),"b"(11)); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// alloctae size bytes of user memory -//------------------------------------------------------------------------------------------ -extern inline void* gui_ksys_malloc(DWORD size) -{ - void *value; - - __asm__ __volatile__( - "int $0x40" :"=a"(value) - :"a"(68),"b"(12),"c"(size) - :"memory"); - - return(value); -} - -//------------------------------------------------------------------------------------------ -// free pointer of memory -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_free(void *mem) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(68),"b"(13),"c"(mem) - :"memory"); -} - -//------------------------------------------------------------------------------------------ -// reallocate of memory -//------------------------------------------------------------------------------------------ -extern inline void* gui_ksys_realloc(DWORD new_size,void *old_mem) -{ - void *new_mem; - __asm__ __volatile__( - "int $0x40" - :"=a"(new_mem) - :"a"(68),"b"(20),"c"(new_size),"d"(old_mem) - :"memory"); - - return(new_mem); -} - - -//------------------------------------------------------------------------------------------ -// load user mode DLL -//------------------------------------------------------------------------------------------ -extern inline void* gui_ksys_load_dll(char *path) -{ - void *dll_export; - - __asm__ __volatile__( - "int $0x40" - :"=a"(dll_export) - :"a"(68),"b"(19),"c"(path)); - - return(dll_export); -} - -//------------------------------------------------------------------------------------------ -// create thred -//------------------------------------------------------------------------------------------ -extern inline void* gui_ksys_create_thread(DWORD *thread_eip,DWORD *thread_esp) -{ - void *thread_TID; - - __asm__ __volatile__( - "int $0x40" - :"=a"(thread_TID) - :"a"(51),"b"(1),"c"(thread_eip),"d"(thread_esp) - :"memory"); - - return(thread_TID); -} - -//------------------------------------------------------------------------------------------ -// acces to files input output -//------------------------------------------------------------------------------------------ -extern inline DWORD gui_ksys_files_io(fileio_t *f,DWORD value) -{ - DWORD err_status; - - __asm__ __volatile__( - "int $0x40" - :"=a"(err_status),"=b"(value) - :"a"(70),"b"(f)); - - return(err_status); -} - -//------------------------------------------------------------------------------------------ -// debug board output -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_debug_out(int c) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(63),"b"(1),"c"(c)); -} - -//------------------------------------------------------------------------------------------ -// KolibriOS system exit program -//------------------------------------------------------------------------------------------ -extern inline void gui_ksys_exit(int value) -{ - __asm__ __volatile__( - "int $0x40" - : - :"a"(-1),"b"(value)); -} - diff --git a/programs/develop/new libGUI_C/SRC/kolibri_system.inc b/programs/develop/new libGUI_C/SRC/kolibri_system.inc deleted file mode 100755 index 24dcce0670..0000000000 --- a/programs/develop/new libGUI_C/SRC/kolibri_system.inc +++ /dev/null @@ -1,67 +0,0 @@ -/* - some system function of KolibriOS and founded of them functions -*/ - -static DWORD gui_get_file_size(char *filename,DWORD *buf_for_size) -{ - static char buf[44]; - static fileio_t f; - bded_t *bded; - DWORD status,value; - - f.number_subfunction=5; - f.data=(DWORD*)buf; - f.full_file_path=filename; - - status=gui_ksys_files_io(&f,value); - - if (status==KOLIBRIOS_SYS_FILE_ACCESS_SUCCESSFULLY) - { - bded=(bded_t*)buf; - *buf_for_size=bded->file_size_low; - buf_for_size++; - *buf_for_size=bded->file_size_hight; - } - - return(status); -} - -static DWORD gui_read_file(char *filename,DWORD *buf_pos_size,DWORD size_read,char *buf) -{ - static fileio_t f; - DWORD status,value; - - f.number_subfunction=0; - f.offset_in_file_low=(DWORD)*buf_pos_size;buf_pos_size++; - f.offset_in_file_hight=(DWORD)*buf_pos_size; - f.size=size_read; - f.data=(DWORD*)buf; - f.full_file_path=filename; - - status=gui_ksys_files_io(&f,value); - - return(status); -} - -static void gui_debug_out_str(char *s) -{ - - while(*s) - { - if (*s=='\n') gui_ksys_debug_out(13); - - gui_ksys_debug_out(*s); - s++; - } -} - -static void* gui_cofflib_getproc(import_t *lib, char *name) -{ - int i; - - for(i = 0; lib[i].name && strcmp(name, lib[i].name); i++); - - if(lib[i].name) return lib[i].data; - else return NULL; -} - diff --git a/programs/develop/new libGUI_C/SRC/libGUI.c b/programs/develop/new libGUI_C/SRC/libGUI.c deleted file mode 100755 index d6bd503a10..0000000000 --- a/programs/develop/new libGUI_C/SRC/libGUI.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - libGUI dinamic library - (c) andrew_programmer 2009 - */ - -//service libGUI types of data,functions and constants -#include "types.h" -#include "libGUI.h" -#include "kolibri_system.h" -#include "draw_controls.h" -#include "fonts_meneger.h" -#include "keys.h" - -//controls -#include "control_button.h" -#include "control_image.h" -#include "control_progress_bar.h" -#include "control_scroll_bar.h" -#include "control_scrolled_window.h" -#include "control_text.h" - -//some libC functions -#include "stdarg.h" -#include "stdio.h" -#include "string.h" -#include "stdlib.h" - -#include "stdio.inc" -#include "string.inc" -#include "stdlib.inc" -#include "kolibri_system.inc" -#include "draw_controls.inc" -#include "fonts_meneger.inc" -#include "libGUI_menegement.inc" -#include "parent_window.inc" -#include "main_libGUI.inc" -#include "control_text.inc" -#include "control_image.inc" -#include "control_button.inc" -#include "control_progress_bar.inc" -#include "control_scroll_bar.inc" -#include "control_scrolled_window.inc" - - -typedef struct -{ - char *name; - void *function; -}export_t; - -//char szSTART[] = "START"; -char szLibGUIversion[] = "LibGUIversion"; -char szInitLibGUI[] = "InitLibGUI"; -char szLibGUImain[] = "LibGUImain"; -char szQuitLibGUI[] = "QuitLibGUI"; - -char szCreateWindow[] = "CreateWindow"; -char szSetWindowSizeRequest[] = "SetWindowSizeRequest"; - -char szPackControls[] = "PackControls"; -char szDestroyControl[] = "DestroyControl"; -char szSetControlSizeRequest[] = "SetControlSizeRequest"; -char szGetControlSizeX[] = "GetControlSizeX"; -char szGetControlSizeY[] = "GetControlSizeY"; -char szSetControlNewPosition[] = "SetControlNewPosition"; -char szGetControlPositionX[] = "GetControlPositionX"; -char szGetControlPositionY[] = "GetControlPositionY"; -char szSetFocuse[] = "SetFocuse"; -char szRedrawControl[] = "RedrawControl"; -char szSpecialRedrawControl[] = "SpecialRedrawControl"; - -char szSetCallbackFunction[] = "SetCallbackFunction"; -char szBlockCallbackFunction[] = "BlockCallbackFunction"; -char szUnblockCallbackFunction[] = "UnblockCallbackFunction"; - -char szSetIDL_Function[] = "SetIDL_Function"; -char szDestroyIDL_Function[] = "DestroyIDL_Function"; - -char szSetTimerCallbackForFunction[] = "SetTimerCallbackForFunction"; -char szDestroyTimerCallbackForFunction[] = "DestroyTimerCallbackForFunction"; - -char szSetCallbackFunctionForEvent[] = "SetCallbackFunctionForEvent"; -char szDestroyCallbackFunctionForEvent[] = "DestroyCallbackFunctionForEvent"; - -char szCreateButton[] = "CreateButton"; -char szCreateButtonWithText[] = "CreateButtonWithText"; - -char szCreateProgressBar[] = "CreateProgressBar"; -char szSetProgressBarPulse[] = "SetProgressBarPulse"; -char szProgressBarSetText[] = "ProgressBarSetText"; -char szProgressBarGetText[] = "ProgressBarGetText"; - -char szCreateHorizontalScrollBar[] = "CreateHorizontalScrollBar"; -char szCreateVerticalScrollBar[] = "CreateVerticalScrollBar"; - -char szCreateScrolledWindow[] = "CreateScrolledWindow"; -char szScrolledWindowPackControls[] = "ScrolledWindowPackControls"; - -char szCreateImage[] = "CreateImage"; - -char szCreateText[] = "CreateText"; -char szTextBackgroundOn[] = "TextBackgroundOn"; -char szTextBackgroundOff[] = "TextBackgroundOff"; - -char szLoadFont[] = "LoadFont"; -char szFreeFont[] = "FreeFont"; - -export_t EXPORTS[]__asm__("EXPORTS") = - { - {szLibGUIversion, LibGUIversion }, - {szInitLibGUI, InitLibGUI }, - {szLibGUImain, LibGUImain }, - {szQuitLibGUI, QuitLibGUI }, - - {szCreateWindow, CreateWindow }, - {szSetWindowSizeRequest, SetWindowSizeRequest }, - - {szPackControls, PackControls }, - {szDestroyControl, DestroyControl }, - {szSetControlSizeRequest, SetControlSizeRequest }, - {szGetControlSizeX, GetControlSizeX }, - {szGetControlSizeY, GetControlSizeY }, - {szSetControlNewPosition, SetControlNewPosition }, - {szGetControlPositionX, GetControlPositionX }, - {szGetControlPositionY, GetControlPositionY }, - {szSetFocuse, SetFocuse }, - {szRedrawControl, RedrawControl }, - {szSpecialRedrawControl, SpecialRedrawControl }, - - {szSetCallbackFunction, SetCallbackFunction }, - {szBlockCallbackFunction, BlockCallbackFunction }, - {szUnblockCallbackFunction, UnblockCallbackFunction }, - - {szSetIDL_Function, SetIDL_Function }, - {szDestroyIDL_Function, DestroyIDL_Function }, - - {szSetTimerCallbackForFunction, SetTimerCallbackForFunction }, - {szDestroyTimerCallbackForFunction, DestroyTimerCallbackForFunction }, - - {szSetCallbackFunctionForEvent, SetCallbackFunctionForEvent }, - {szDestroyCallbackFunctionForEvent, DestroyCallbackFunctionForEvent }, - - {szCreateButton, CreateButton }, - {szCreateButtonWithText, CreateButtonWithText }, - - {szCreateProgressBar, CreateProgressBar }, - {szSetProgressBarPulse, SetProgressBarPulse }, - {szProgressBarSetText, ProgressBarSetText }, - {szProgressBarGetText, ProgressBarGetText }, - - {szCreateHorizontalScrollBar, CreateHorizontalScrollBar }, - {szCreateVerticalScrollBar, CreateVerticalScrollBar }, - - {szCreateScrolledWindow, CreateScrolledWindow }, - {szScrolledWindowPackControls, ScrolledWindowPackControls }, - - {szCreateImage, CreateImage }, - - {szCreateText, CreateText }, - {szTextBackgroundOn, TextBackgroundOn }, - {szTextBackgroundOff, TextBackgroundOff }, - - {szLoadFont, LoadFont }, - {szFreeFont, FreeFont }, - - {NULL,NULL}, - }; diff --git a/programs/develop/new libGUI_C/SRC/libGUI.h b/programs/develop/new libGUI_C/SRC/libGUI.h deleted file mode 100755 index a084c0cae2..0000000000 --- a/programs/develop/new libGUI_C/SRC/libGUI.h +++ /dev/null @@ -1,581 +0,0 @@ -/* - service structures of libGUI -*/ - -static DWORD ID; - -//screen's parameters -#define BYTES_PER_PIXEL 4 - -//platform parameters -#define KOLIBRIOS 1 -//#define DEBUG - -//boolean constants -#define TRUE 0x1 -#define FALSE 0x0 - -//maximum callbacks for one check of callback -#define MAX_CALLBACKS 255 - -///////////////////////////////////////////////////////////////////////// -// libGUI sysyem messages types -///////////////////////////////////////////////////////////////////////// -#define MESSAGE_FULL_REDRAW_ALL 1 -#define MESSAGE_KEYS_EVENT 2 -#define MESSAGE_SPECIALIZED 3 -#define MESSAGE_SET_FOCUSE 4 -#define MESSAGE_CHANGE_FOCUSE 5 -#define MESSAGE_MOUSE_EVENT 6 -#define MESSAGE_CHANGE_POSITION_EVENT 7 -#define MESSAGE_CHANGESIZE_EVENT 8 -#define MESSAGE_CALL_TIMER_EVENT 9 -#define MESSAGE_FULL_REDRAW_ALL_WITH_FINITION 10 -#define MESSAGE_SET_MAIN_PARENT 11 -#define MESSAGE_DESTROY_CONTROL -1 - -///////////////////////////////////////////////////////////////////////// -// system flags of controls -///////////////////////////////////////////////////////////////////////// -#define FLAG_SHOW_CONTROL 0x1 -#define FLAG_HIDE_CONTROL 0xfffe -#define FLAG_FOCUSE_INPUT_SUPPOROTE 0x2 -#define FLAG_FOCUSE_INPUT_NOTSUPPOROTE 0xfffd -#define FLAG_FOCUSE_INPUT_ON 0x4 -#define FLAG_FOCUSE_INPUT_OFF 0xfffb -#define FLAG_CONNECT_EVENT_ON 0x8 -#define FLAG_CONNECT_EVENT_OFF 0xfff7 -#define FLAG_MOUSE_BLOCKED_ON 0x10 -#define FLAG_MOUSE_BLOCKED_OFF 0xffef -#define FLAG_GET_SPECIALIZED_MESSAGE_ON 0x20 -#define FLAG_GET_SPECIALIZED_MESSAGE_OFF 0xffdf - -///////////////////////////////////////////////////////////////////////// -// system flags of callback functions -///////////////////////////////////////////////////////////////////////// -#define FLAG_BLOCK_CALLBACK_ON 0x1 -#define FLAG_BLOCK_CALLBACK_OFF 0xfe - -///////////////////////////////////////////////////////////////////////// -// system flags of main wondow for timers -///////////////////////////////////////////////////////////////////////// -#define FLAG_TIMER_ON 0x1 -#define FLAG_TIMER_OFF 0xfe - -///////////////////////////////////////////////////////////////////////// -// system keys states -///////////////////////////////////////////////////////////////////////// -#define KEY_DOWN 16 -#define KEY_UP 17 -#define KEY_HOTKEY 18 -///////////////////////////////////////////////////////////////////////// -// system mouse buttons states -///////////////////////////////////////////////////////////////////////// -#define MOUSE_LEFT_BUTTON_DOWN 19 -#define MOUSE_LEFT_BUTTON_UP 20 -#define MOUSE_RIGHT_BUTTON_DOWN 21 -#define MOUSE_RIGHT_BUTTON_UP 22 -#define MOUSE_MIDDLE_BUTTON_DOWN 23 -#define MOUSE_MIDDLE_BUTTON_UP 24 -#define MOUSE_4_BUTTON_DOWN 25 -#define MOUSE_4_BUTTON_UP 26 -#define MOUSE_5_BUTTON_DOWN 27 -#define MOUSE_5_BUTTON_UP 28 - - -///////////////////////////////////////////////////////////////// -// CONNECT EVENTS FOR CALLBACKs -///////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////// -// connect events for button -//////////////////////////////////////////////////////////////// -#define BUTTON_ENTER_EVENT 29 -#define BUTTON_LEAVE_EVENT 30 -#define BUTTON_PRESSED_EVENT 31 -#define BUTTON_RELEASED_EVENT 32 - -//////////////////////////////////////////////////////////////// -// connect events for button -//////////////////////////////////////////////////////////////// -#define SCROLLBAR_CHANGED_EVENT 33 - -//////////////////////////////////////////////////////////////// -// connect events for main parent window -//////////////////////////////////////////////////////////////// -#define DELETE_EVENT 36 - -//////////////////////////////////////////////////////////////////// -//screen buffer parameters -//////////////////////////////////////////////////////////////////// -#define DRAW_OUTPUT_SCREEN 0 -#define DRAW_OUTPUT_BUFFER 1 - - -static struct SCREEN -{ - DWORD bits_per_pixel; - DWORD bytes_per_pixel; - DWORD draw_output; - int x; - int y; - int size_x; - int size_y; - int skin_height; - int display_size_x; - int display_size_y; - char *buffer; -}screen; - -//////////////////////////////////////////////////////////////// -// header of parent of control -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct HEADERPARENT -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - DWORD **control_for_callback_function; - DWORD **callback_for_control_callback; - DWORD number_callbacks; - DWORD *global_active_control_for_keys; - DWORD *message; - DWORD *timer_bk; - DWORD *timer_fd; - DWORD number_timers_for_controls; - DWORD *calev_bk; - DWORD *calev_fd; - DWORD *IDL_func; - DWORD *IDL_func_data; -}; -#pragma pack(pop) - -typedef struct HEADERPARENT parent_t; - -//////////////////////////////////////////////////////////////// -// header of control -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct HEADER -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; -}; -#pragma pack(pop) - -typedef struct HEADER header_t; -//////////////////////////////////////////////////////////////// -// callback structure for callback function of control -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct CALLBACK -{ - DWORD *clb_bk; - DWORD *clb_fd; - DWORD *clb_control; - DWORD *func; - DWORD *func_data; - DWORD connect_event; - DWORD flags; -}; -#pragma pack(pop) - -typedef struct CALLBACK gui_callback_t; -//////////////////////////////////////////////////////////////// -// timer -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct TIMER -{ - DWORD *tmr_bk; - DWORD *tmr_fd; - DWORD *tmr_parent; - DWORD *func; - DWORD *func_data; - DWORD last_time; - DWORD time_tick; - DWORD flags; -}; -#pragma pack(pop) - -typedef struct TIMER gui_timer_t; -//////////////////////////////////////////////////////////////// -// structure for callback events -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct CALLBACKEVENT -{ - DWORD *calev_bk; - DWORD *calev_fd; - DWORD *calev_parent; - DWORD *func; - DWORD *func_data; - DWORD event_type; -}; -#pragma pack(pop) - -typedef struct CALLBACKEVENT gui_callbackevent_t; -//////////////////////////////////////////////////////////////// -// structure for callback events -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct FINITION -{ - DWORD x; - DWORD y; - DWORD sizex; - DWORD sizey; - char flags; -}; -#pragma pack(pop) - -typedef struct FINITION finition_t; -//////////////////////////////////////////////////////////////// -// type of data - structure message -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct MESSAGE -{ - DWORD type; - DWORD arg1; - DWORD arg2; - DWORD arg3; - DWORD arg4; -}; -#pragma pack(pop) - -typedef struct MESSAGE gui_message_t; -//////////////////////////////////////////////////////////////// -// prototype of functions -//////////////////////////////////////////////////////////////// -void (*ControlProc)(void *Control,gui_message_t *message); -void (*CallbackFunction)(header_t *Control,void *data); -void (*TimerCallbackFunction)(void *data); -void (*CallbackFunctionForEvent)(gui_message_t *message,void *data); -void (*IDL_Function)(void *data); - -//////////////////////////////////////////////////////////////// -// button -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlButton -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //button's data - unsigned char btn_flags; -}; -#pragma pack(pop) - -typedef struct ControlButton gui_button_t; -// information for creating control Button -#pragma pack(push,1) -struct ButtonData -{ - int x; - int y; - int width; - int height; -}; -#pragma pack(pop) - -typedef struct ButtonData gui_button_data_t; -//////////////////////////////////////////////////////////////// -// scroller -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlScrollBar -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //scroll bar's data - float ruller_size; - float ruller_pos; - float ruller_step; - unsigned char scb_flags; -}; -#pragma pack(pop) - -typedef struct ControlScrollBar gui_scroll_bar_t; - -#pragma pack(push,1) -struct ScrollBarData -{ - int x; - int y; - int width; - int height; - float ruller_size; - float ruller_pos; - float ruller_step; -}; -#pragma pack(pop) - -typedef struct ScrollBarData gui_scroll_bar_data_t; -//////////////////////////////////////////////////////////////// -// progressbar -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlProgressBar -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //progress bar's data - float progress; - unsigned char prb_flags; -}; -#pragma pack(pop) - -typedef struct ControlProgressBar gui_progress_bar_t; - -#pragma pack(push,1) -struct ProgressBarData -{ - int x; - int y; - int width; - int height; - float progress; -}; -#pragma pack(pop) - -typedef struct ProgressBarData gui_progress_bar_data_t; -//////////////////////////////////////////////////////////////// -// scrolled window -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlScrolledWindow -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - //scrolled windows's data - DWORD virtual_x; - DWORD virtual_y; - DWORD virtual_sizex; - DWORD virtual_sizey; - DWORD *virtual_controls_x; - DWORD *virtual_controls_y; - DWORD number_virtual_controls; - DWORD scroll_arrea_sizex; - DWORD scroll_arrea_sizey; - DWORD *horizontal_scroll; - DWORD *vertical_scroll; - unsigned char scw_flags; -}; -#pragma pack(pop) - -typedef struct ControlScrolledWindow gui_scrolled_window_t; - -#pragma pack(push,1) -struct ScrolledWindowData -{ - int x; - int y; - int width; - int height; -}; -#pragma pack(pop) - -typedef struct ScrolledWindowData gui_scrolled_window_data_t; - -//////////////////////////////////////////////////////////////// -// image -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlImage -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - char bits_per_pixel; - char bytes_per_pixel; - char *img; -}; -#pragma pack(pop) - -typedef struct ControlImage gui_image_t; - -#pragma pack(push,1) -struct ImageData -{ - int x; - int y; - int width; - int height; - char bits_per_pixel; -}; -#pragma pack(pop) - -typedef struct ImageData gui_image_data_t; - -//////////////////////////////////////////////////////////////// -// text -//////////////////////////////////////////////////////////////// -#pragma pack(push,1) -struct ControlText -{ - DWORD *ctrl_proc; - DWORD *ctrl_fd; - DWORD *ctrl_bk; - DWORD *child_fd; - DWORD *child_bk; - DWORD *parent; - DWORD *main_parent; - DWORD ctrl_x; - DWORD ctrl_y; - DWORD ctrl_sizex; - DWORD ctrl_sizey; - DWORD ctrl_ID; - DWORD *active_control_for_keys; - DWORD *active_control_for_mouse; - DWORD *callback; - DWORD *finition; - DWORD *timer; - DWORD flags; - - DWORD *font; - DWORD color; - DWORD background_color; - char *text; - BYTE txt_flags; -}; -#pragma pack(pop) - -typedef struct ControlText gui_text_t; - -#pragma pack(push,1) -struct TextData -{ - int x; - int y; - DWORD *font; - DWORD color; - DWORD background_color; - char background; - char *text; -}; -#pragma pack(pop) - -typedef struct TextData gui_text_data_t; -///////////////////////////////////////////////////////////////////////////// -// prototips of some service functions -///////////////////////////////////////////////////////////////////////////// - -char CheckCrossRectangles(int x1,int y1,int sizex1,int sizey1,int x2,int y2,int sizex2,int sizey2); diff --git a/programs/develop/new libGUI_C/SRC/libGUI_menegement.inc b/programs/develop/new libGUI_C/SRC/libGUI_menegement.inc deleted file mode 100755 index 5ff8d14724..0000000000 --- a/programs/develop/new libGUI_C/SRC/libGUI_menegement.inc +++ /dev/null @@ -1,1643 +0,0 @@ -/* - libGUI main part of code -*/ - -//--------------------------------------------------------------------------------- -// destroy_control for libGUI -//--------------------------------------------------------------------------------- -void DestroyControl(void *control_ptr) -{ - struct HEADER *Parent; - struct HEADER *control; - struct HEADER *seek_control; - struct HEADER *exchange_control; - struct HEADER *last_control; - struct HEADER *next_control; - - if (control_ptr==NULL) return; - - control=control_ptr; - Parent=(struct HEADER *)control->parent; - - if (Parent->child_bk==Parent->child_fd) - { - //parent have got alone child control - if (Parent->child_bk==(DWORD*)control) - { - //current control is child control of parent -#ifdef DEBUG - printf("\ndestroyed control=%d parent=%d ID=%d",(int)control,(int)Parent,(int)control->ctrl_ID); -#endif - free(control); - Parent->child_bk=(DWORD*)NULL; - Parent->child_fd=(DWORD*)NULL; - } - return; - } - - seek_control=(struct HEADER*)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - if (seek_control==control) - { - //delete control from control's stack - last_control=(struct HEADER*)seek_control->ctrl_bk; - next_control=(struct HEADER*)seek_control->ctrl_fd; - - if ((last_control!=Parent) && (next_control!=NULL)) - {//deliting control isn't first control and isn't endest of parent - next_control->ctrl_bk=(DWORD*)last_control; - last_control->ctrl_fd=(DWORD*)next_control; - } - else - { - if (last_control==Parent) - {//deliting control is first control of Parend - Parent->child_bk=(DWORD*)next_control; - next_control->ctrl_bk=(DWORD*)Parent; - if (next_control->ctrl_fd==(DWORD*)NULL) - { - Parent->child_fd=(DWORD*)next_control; - Parent->child_bk=(DWORD*)next_control; - } - } - - if (next_control==(struct HEADER*)NULL) - { - //there isn't next controls - last_control->ctrl_fd=(DWORD*)NULL; - Parent->ctrl_fd=(DWORD*)last_control; - } - } -#ifdef DEBUG - printf("\ndestroyed control=%d parent=%d ID=%d",(int)control,(int)Parent,(int)control->ctrl_ID); -#endif - free(control); - break; - } - exchange_control=(struct HEADER*)seek_control->ctrl_fd; - seek_control=exchange_control; - } -} - -//--------------------------------------------------------------------------------- -// create new timer for parent window -//--------------------------------------------------------------------------------- -void *CreateTimerForParentWindow(parent_t *parent) -{ - struct TIMER *timer; - struct TIMER *backward_timer; - - timer=malloc(sizeof(struct TIMER)); - timer->tmr_parent=(DWORD*)parent; - - if (parent->timer_bk==(DWORD*)NULL) - {//not yet timers - parent->timer_bk=(DWORD*)timer; - parent->timer_fd=(DWORD*)timer; - timer->tmr_bk=(DWORD*)parent; - timer->tmr_fd=(DWORD*)NULL; - } - else - { - backward_timer=(struct TIMER*)parent->timer_fd; - parent->timer_fd=(DWORD*)timer; - backward_timer->tmr_fd=(DWORD*)timer; - timer->tmr_bk=(DWORD*)backward_timer; - timer->tmr_fd=(DWORD*)NULL; - } - return(timer); -} - -//--------------------------------------------------------------------------------- -// destroy timer for parent window -//--------------------------------------------------------------------------------- -void DestroyTimerCallbackForFunction(struct TIMER *timer) -{ - struct HEADERPARENT *Parent; - struct TIMER *seek_timer; - struct TIMER *exchange_timer; - struct TIMER *last_timer; - struct TIMER *next_timer; - - if (timer==(struct TIMER*)NULL) return; - - Parent=(struct HEADERPARENT *)timer->tmr_parent; - - if (Parent->timer_bk==Parent->timer_fd) - { - //parent have got alone timer - if (Parent->timer_bk==(DWORD*)timer) - { - Parent->timer_bk=(DWORD*)NULL; - Parent->timer_fd=(DWORD*)NULL; -#ifdef DEBUG - printf("\ndestroyed timer %d parent window %d",(int)timer,(int)timer->tmr_parent); -#endif - free(timer); - return; - } - return; - } - - seek_timer=(struct TIMER*)Parent->timer_bk; - while(seek_timer!=(struct TIMER*)NULL) - { - if (seek_timer==timer) - { - //delete timer from timers's stack - last_timer=(struct TIMER*)seek_timer->tmr_bk; - next_timer=(struct TIMER*)seek_timer->tmr_fd; - - if ((last_timer!=(struct TIMER*)Parent) && (next_timer!=(struct TIMER*)NULL)) - {//deliting timer isn't first timer and isn't endest - next_timer->tmr_bk=(DWORD*)last_timer; - last_timer->tmr_fd=(DWORD*)next_timer; - } - else - { - if (last_timer==(struct TIMER*)Parent) - {//deliting timer is first timer of Parend - Parent->timer_bk=(DWORD*)next_timer; - next_timer->tmr_bk=(DWORD*)Parent; - if (next_timer->tmr_fd==(DWORD*)NULL) - { - Parent->timer_fd=(DWORD*)next_timer; - Parent->timer_bk=(DWORD*)next_timer; - } - } - - if (next_timer==(struct TIMER*)NULL) - { - //there isn't next controls - last_timer->tmr_fd=(DWORD*)NULL; - Parent->timer_fd=(DWORD*)last_timer; - } - } -#ifdef DEBUG - printf("\ndestroyed timer %d parent window %d",(int)timer,(int)timer->tmr_parent); -#endif - free(timer); - break; - } - exchange_timer=(struct TIMER*)seek_timer->tmr_fd; - seek_timer=exchange_timer; - } -} - -//--------------------------------------------------------------------------------- -// create timer for function of parent window -//--------------------------------------------------------------------------------- -void *SetTimerCallbackForFunction(parent_t *parent_window,int time_tick,void *func,void *func_data) -{ - struct TIMER *timer; - - timer=CreateTimerForParentWindow(parent_window); - timer->func=(DWORD*)func; - timer->func_data=(DWORD*)func_data; - timer->time_tick=(DWORD)time_tick; - timer->last_time=gui_ksys_get_ticks(); - timer->flags=timer->flags | FLAG_TIMER_ON; - - return(timer); -} - -//--------------------------------------------------------------------------------- -// create timer for callback -//--------------------------------------------------------------------------------- -void *SetTimerCallbackForControl(int time_tick,void *func,void *func_data) -{ - struct TIMER *timer; - - timer=malloc(sizeof(struct TIMER)); - timer->func=(DWORD*)func; - timer->func_data=(DWORD*)func_data; - timer->time_tick=(DWORD)time_tick; - timer->last_time=gui_ksys_get_ticks(); - timer->flags=timer->flags & FLAG_TIMER_OFF; - - return(timer); -} - -//--------------------------------------------------------------------------------- -// call timer -//--------------------------------------------------------------------------------- -void Timer(struct TIMER *timer) -{ - DWORD time,delta_time; - - time=gui_ksys_get_ticks(); - delta_time=time-timer->last_time; - if (delta_time>=timer->time_tick) - { - TimerCallbackFunction=(void(*)(void *data))timer->func; - TimerCallbackFunction(timer->func_data); - timer->last_time=gui_ksys_get_ticks(); - } -} - -//--------------------------------------------------------------------------------- -// create new callback for event -//--------------------------------------------------------------------------------- -void *CreateCallbackForEvent(parent_t *parent) -{ - gui_callbackevent_t *calev; - gui_callbackevent_t *backward_calev; - - calev=malloc(sizeof(gui_callbackevent_t)); - calev->calev_parent=(DWORD*)parent; - - if (parent->calev_bk==(DWORD*)NULL) - {//not yet timers - parent->calev_bk=(DWORD*)calev; - parent->calev_fd=(DWORD*)calev; - calev->calev_bk=(DWORD*)parent; - calev->calev_fd=(DWORD*)NULL; - } - else - { - backward_calev=(gui_callbackevent_t*)parent->calev_fd; - parent->calev_fd=(DWORD*)calev; - backward_calev->calev_fd=(DWORD*)calev; - calev->calev_bk=(DWORD*)backward_calev; - calev->calev_fd=(DWORD*)NULL; - } - return(calev); -} - -//--------------------------------------------------------------------------------- -// destroy callback function for eventcalev -//--------------------------------------------------------------------------------- -void DestroyCallbackFunctionForEvent(gui_callbackevent_t *calev) -{ - struct HEADERPARENT *Parent; - struct CALLBACKEVENT *seek_calev; - struct CALLBACKEVENT *exchange_calev; - struct CALLBACKEVENT *last_calev; - struct CALLBACKEVENT *next_calev; - - if (calev==(gui_callbackevent_t*)NULL) return; - - Parent=(parent_t*)calev->calev_parent; - - if (Parent->calev_bk==Parent->calev_fd) - { - //parent have got alone timer - if (Parent->calev_bk==(DWORD*)calev) - { - free(calev); - Parent->calev_bk=(DWORD*)NULL; - Parent->calev_fd=(DWORD*)NULL; - } - return; - } - - seek_calev=(struct CALLBACKEVENT*)Parent->calev_bk; - while(seek_calev!=(struct CALLBACKEVENT*)NULL) - { - if (seek_calev==calev) - { - //delete timer from timers's stack - last_calev=(struct CALLBACKEVENT*)seek_calev->calev_bk; - next_calev=(struct CALLBACKEVENT*)seek_calev->calev_fd; - - if ((last_calev!=(struct CALLBACKEVENT*)Parent) && (next_calev!=(struct CALLBACKEVENT*)NULL)) - {//deliting timer isn't first timer and isn't endest - next_calev->calev_bk=(DWORD*)last_calev; - last_calev->calev_fd=(DWORD*)next_calev; - } - else - { - if (last_calev==(struct CALLBACKEVENT*)Parent) - {//deliting timer is first timer of Parend - Parent->calev_bk=(DWORD*)next_calev; - next_calev->calev_bk=(DWORD*)Parent; - if (next_calev->calev_fd==(DWORD*)NULL) - { - Parent->calev_fd=(DWORD*)next_calev; - Parent->calev_bk=(DWORD*)next_calev; - } - } - - if (next_calev==(struct CALLBACKEVENT*)NULL) - { - //there isn't next controls - last_calev->calev_fd=(DWORD*)NULL; - Parent->calev_fd=(DWORD*)last_calev; - } - } - free(calev); - break; - } - exchange_calev=(struct CALLBACKEVENT*)seek_calev->calev_fd; - seek_calev=exchange_calev; - } -} - -//--------------------------------------------------------------------------------- -// create callback for messenger of events -//--------------------------------------------------------------------------------- -void *SetCallbackFunctionForEvent(parent_t *parent_window,int event_type,void *func,void *func_data) -{ - gui_callbackevent_t *calev; - - calev=CreateCallbackForEvent(parent_window); - calev->func=(DWORD*)func; - calev->func_data=(DWORD*)func_data; - calev->event_type=(DWORD)event_type; - - return(calev); -} - -//--------------------------------------------------------------------------------- -// check cross control and mouse -//--------------------------------------------------------------------------------- -char CheckCrossBox(struct HEADER *control,int mouse_x,int mouse_y) -{ - struct FINITION *fin; - int x,y,x2,y2; - int xmin,xmax,ymin,ymax,sx,sy; - - fin=(struct FINITION*)control->finition; - - if (fin->flags & FINITION_ON) - { - xmin=fin->x; - xmax=fin->x+fin->sizex-1; - ymin=fin->y; - ymax=fin->y+fin->sizey-1; - - x=control->ctrl_x; - y=control->ctrl_y; - x2=x+control->ctrl_sizex-1; - y2=y+control->ctrl_sizey-1; - - if (x2xmax) return(FALSE); - if (y2ymax) return(FALSE); - - //finit x coordinates and sizex - sx=x-xmin; - - if (sx>=0) - { - if (x2>xmax) x2=xmax; - } - else - { - x=xmin; - if (x2>xmax) x2=xmax; - } - - //finit y coordinates and sizey - sy=y-ymin; - - if (sy>=0) - { - if (y2>ymax) y2=ymax; - } - else - { - y=ymin; - if (y2>ymax) y2=ymax; - } - //check cross finited control with mouse - if ((mouse_x>=x) && (mouse_x<=x2) && (mouse_y>=y) && (mouse_y<=y2)) - return(TRUE); - else - return(FALSE); - } - else - { - if ((mouse_x>=control->ctrl_x) && (mouse_x<=control->ctrl_x+control->ctrl_sizex) && - (mouse_y>=control->ctrl_y) && (mouse_y<=control->ctrl_y+control->ctrl_sizey)) - return(TRUE); - else - return(FALSE); - } -} - -//--------------------------------------------------------------------------------- -// check cross two rectaangles -//--------------------------------------------------------------------------------- -char CheckCrossRectangles(int x1,int y1,int sizex1,int sizey1,int x2,int y2,int sizex2,int sizey2) -{ - int s; - int xmax,ymax; - - xmax=x1+sizex1-1; - ymax=y1+sizey1-1; - - //check x cross - s=x2-x1; - if (s>0) - {//second rectangle have right position - if (x2>xmax) return(FALSE); - } - if (s<0) - {//second rectangle have left position - s=-s; - if (s>=sizex2) return(FALSE); - } - - //check y cross - s=y2-y1; - if (s>0) - {//second rectangle have down position - if (y2>ymax) return(FALSE); - } - if (s<0) - {//second rectangle have up position - s=-s; - if (s>=sizey2) return(FALSE); - } - return(TRUE); -} - -//--------------------------------------------------------------------------------- -// check full cross two rectaangles -//--------------------------------------------------------------------------------- -char CheckFullCrossRectangles(int x1,int y1,int sizex1,int sizey1,int x2,int y2,int sizex2,int sizey2) -{ - int s; - int xmax,ymax; - - xmax=x1+sizex1-1; - ymax=y1+sizey1-1; - - if (x2>=x1 && x2+sizex2-1<=xmax && y2>=y1 && y2+sizey2-1<=ymax) return(TRUE); - else return(FALSE); -} - -//--------------------------------------------------------------------------------- -// send message to controls -//--------------------------------------------------------------------------------- -void SendMessage(struct HEADER *Parent,struct MESSAGE *message) -{ - struct HEADER *seek_control; - struct HEADER *exchange_control; - struct HEADER *parent; - struct HEADERPARENT *main_parent; - struct MESSAGE local_service_message; - struct HEADER *active_control_for_keys; - struct HEADER *active_control_for_mouse; - char cross; - - //Parent haven't got child controls - if ((Parent->child_bk==NULL) && (Parent->child_fd==NULL)) return; - - //load main parent - main_parent=(struct HEADERPARENT*)Parent->main_parent; - - //load active controls from Parent - active_control_for_keys=(struct HEADER*)Parent->active_control_for_keys; - active_control_for_mouse=(struct HEADER*)Parent->active_control_for_mouse; - - //Parent have got alon child control - if (Parent->child_bk==Parent->child_fd) - { - seek_control=(struct HEADER *)Parent->child_bk; - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - - switch(message->type) - { - case MESSAGE_FULL_REDRAW_ALL: - { - //send message redraw to all child controls - if (seek_control->flags & FLAG_SHOW_CONTROL) ControlProc(seek_control,message); - break; - } - case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION: - { - //send message finited redraw to all child controls - if (seek_control->flags & FLAG_SHOW_CONTROL) ControlProc(seek_control,message); - break; - } - case MESSAGE_KEYS_EVENT: - { //change active control for keyboard by TAB press - if ((message->arg1==KEY_DOWN) && (message->arg2==SC_TAB)) - { - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - if (active_control_for_keys==seek_control) - {//focuse of input set for current control - ControlProc=(void (*)(void *Control,struct MESSAGE *message))active_control_for_keys->ctrl_proc; - local_service_message.type=MESSAGE_CHANGE_FOCUSE; - local_service_message.arg1=FALSE; - active_control_for_keys->flags=active_control_for_keys->flags & FLAG_FOCUSE_INPUT_OFF; - ControlProc(active_control_for_keys,&local_service_message); - - parent=(struct HEADER*)active_control_for_keys->parent; - - seek_control=parent; - do - { - if (parent==(struct HEADER*)main_parent) break; - //if next control NULL go to parent - if (seek_control==(struct HEADER*)NULL) seek_control=parent; - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - if (seek_control==(struct HEADER*)NULL) - parent=(struct HEADER*)parent->parent; - } - while((seek_control==(struct HEADER*)NULL) || - ((seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE)==FALSE)); - - if (parent==(struct HEADER*)main_parent) - { - //find first control of main parent with focuse of input supporote - seek_control=(struct HEADER *)main_parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) break; - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - main_parent->active_control_for_keys=(DWORD*)seek_control; - main_parent->global_active_control_for_keys=(DWORD*)seek_control; - - //send message enable focuse of input to control - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - local_service_message.arg1=FALSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - active_control_for_keys=(struct HEADER*)NULL; - break; - } - if (seek_control!=(struct HEADER*)NULL) - { - parent=(struct HEADER*)seek_control->parent; - parent->active_control_for_keys=(DWORD*)seek_control; - main_parent->global_active_control_for_keys=(DWORD*)seek_control; - - //send message enable focuse of input to control - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - local_service_message.arg1=FALSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - active_control_for_keys=(struct HEADER*)NULL; - Parent->active_control_for_keys=(DWORD*)active_control_for_keys; - break; - } - } - else - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - local_service_message.arg1=FALSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - active_control_for_keys=seek_control; - Parent->active_control_for_keys=(DWORD*)active_control_for_keys; - main_parent->global_active_control_for_keys=(DWORD*)seek_control; - } - } - } - - //send message of keys only to active control - if (active_control_for_keys!=NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))active_control_for_keys->ctrl_proc; - ControlProc(active_control_for_keys,message); - } - break; - } - case MESSAGE_SPECIALIZED: - { - //send specialized message to all child controls - ControlProc(seek_control,message); - break; - } - case MESSAGE_MOUSE_EVENT: - { - if (seek_control->flags & FLAG_MOUSE_BLOCKED_ON) break; - - if (message->arg3==MOUSE_LEFT_BUTTON_DOWN) - { - if (active_control_for_mouse!=NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))active_control_for_mouse->ctrl_proc; - ControlProc(active_control_for_mouse,message); - break; - } - } - else - { - if (active_control_for_mouse!=NULL) {active_control_for_mouse=NULL;} - } - - cross=FALSE; - if (CheckCrossBox(seek_control,message->arg1,message->arg2)==TRUE) - { - if (message->arg3==MOUSE_LEFT_BUTTON_DOWN) - { - cross=TRUE; - active_control_for_mouse=seek_control; - - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - parent=(struct HEADER*)seek_control->parent; - if (parent->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - active_control_for_keys=(struct HEADER*)main_parent->global_active_control_for_keys; - if (active_control_for_keys!=(struct HEADER*)NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - active_control_for_keys->ctrl_proc; - - local_service_message.type=MESSAGE_CHANGE_FOCUSE; - active_control_for_keys->flags= - active_control_for_keys->flags & FLAG_FOCUSE_INPUT_OFF; - ControlProc(active_control_for_keys,&local_service_message); - } - - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - main_parent->global_active_control_for_keys=(DWORD*)seek_control; - Parent->active_control_for_keys=(DWORD*)seek_control; - } - } - } - } - - if ((cross==FALSE) && (message->arg3==MOUSE_LEFT_BUTTON_DOWN)) - { - if (active_control_for_keys!=NULL) - {//disable focuse of input for active control of keys - ControlProc=(void (*)(void *Control,struct MESSAGE *message))active_control_for_keys->ctrl_proc; - - local_service_message.type=MESSAGE_CHANGE_FOCUSE; - active_control_for_keys->flags=active_control_for_keys->flags & FLAG_FOCUSE_INPUT_OFF; - ControlProc(active_control_for_keys,&local_service_message); - } - } - - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - break; - } - case MESSAGE_CHANGE_POSITION_EVENT: - { - ControlProc(seek_control,message); - break; - } - case MESSAGE_CALL_TIMER_EVENT: - { - ControlProc(seek_control,message); - break; - } - case MESSAGE_DESTROY_CONTROL: - { - //send message to control for destroing child controls - ControlProc(seek_control,message); - DestroyControl(seek_control); - break; - } - case MESSAGE_SET_MAIN_PARENT: - { - ControlProc(seek_control,message); - break; - } - default:break; - } - } - else - { - switch(message->type) - { - case MESSAGE_FULL_REDRAW_ALL: - { - //send message redraw to all child controls of Parent - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - if (seek_control->flags & FLAG_SHOW_CONTROL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - } - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - break; - } - case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION: - { - //send message redraw to all child controls of Parent - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - if (seek_control->flags & FLAG_SHOW_CONTROL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - } - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - break; - } - case MESSAGE_KEYS_EVENT: - { - if ((message->arg1==KEY_DOWN) && (message->arg2==SC_TAB)) - { //change active control for keyboard by TAB press - if (active_control_for_keys==NULL) - { - seek_control=(struct HEADER *)Parent->child_bk; - - if ((seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE)==FALSE) - { //find first control of parend with supporote of input - while(seek_control->ctrl_fd!=(DWORD*)NULL) - { - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - active_control_for_keys=seek_control; - main_parent->global_active_control_for_keys= - (DWORD*)active_control_for_keys; - Parent->active_control_for_keys=(DWORD*)active_control_for_keys; - break; - } - } - if (active_control_for_keys!=NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - } - } - else - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - active_control_for_keys=seek_control; - main_parent->global_active_control_for_keys=(DWORD*)active_control_for_keys; - Parent->active_control_for_keys=(DWORD*)active_control_for_keys; - } - } - else - { - if (active_control_for_keys==(struct HEADER*)main_parent->global_active_control_for_keys) - { - seek_control=active_control_for_keys; - while(seek_control!=(struct HEADER*)NULL) - { - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - - if (seek_control==(struct HEADER*)NULL) - { //send message disable focuse of input to current control - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - active_control_for_keys->ctrl_proc; - local_service_message.type=MESSAGE_CHANGE_FOCUSE; - active_control_for_keys->flags= - active_control_for_keys->flags & FLAG_FOCUSE_INPUT_OFF; - ControlProc(active_control_for_keys,&local_service_message); - - //back into main parent of tree and find next not NULL control - parent=(struct HEADER*)active_control_for_keys->parent; - do - { - if (parent==(struct HEADER*)main_parent) break; - - //if next control NULL go to parent - if (seek_control==(struct HEADER*)NULL) seek_control=parent; - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - if (seek_control==(struct HEADER*)NULL) - parent=(struct HEADER*)parent->parent; - - } - while((seek_control==(struct HEADER*)NULL) || - ((seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE)==FALSE)); - - if (parent==(struct HEADER*)main_parent) - { - //find first control of main parent with focuse of input supporote - seek_control=(struct HEADER *)main_parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - break; - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - - main_parent->active_control_for_keys=(DWORD*)seek_control; - main_parent->global_active_control_for_keys=(DWORD*)seek_control; - - //send message enable focuse of input to control - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - active_control_for_keys=(struct HEADER*)NULL; - break; - - } - if (seek_control!=(struct HEADER*)NULL) - { - parent=(struct HEADER*)seek_control->parent; - parent->active_control_for_keys=(DWORD*)seek_control; - main_parent->global_active_control_for_keys=(DWORD*)seek_control; - - //send message enable focuse of input to control - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - active_control_for_keys=(struct HEADER*)NULL; - Parent->active_control_for_keys=(DWORD*)active_control_for_keys; - break; - } - } - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - active_control_for_keys->ctrl_proc; - local_service_message.type=MESSAGE_CHANGE_FOCUSE; - active_control_for_keys->flags= - active_control_for_keys->flags & FLAG_FOCUSE_INPUT_OFF; - ControlProc(active_control_for_keys,&local_service_message); - - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - active_control_for_keys=seek_control; - main_parent->global_active_control_for_keys= - (DWORD*)active_control_for_keys; - Parent->active_control_for_keys=(DWORD*)active_control_for_keys; - break; - } - } - } - } - } - - //send message of keys only to active control - if (active_control_for_keys!=NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))active_control_for_keys->ctrl_proc; - ControlProc(active_control_for_keys,message); - } - break; - } - case MESSAGE_SPECIALIZED: - { - //send specialized message to all child controls - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - break; - } - case MESSAGE_MOUSE_EVENT: - { - if (message->arg3==MOUSE_LEFT_BUTTON_DOWN) - { - if (active_control_for_mouse!=NULL) - { - if (active_control_for_mouse->flags & FLAG_MOUSE_BLOCKED_ON) break; - - ControlProc=(void (*)(void *Control,struct MESSAGE *message))active_control_for_mouse->ctrl_proc; - ControlProc(active_control_for_mouse,message); - break; - } - } - else - { - if (active_control_for_mouse!=NULL) {active_control_for_mouse=NULL;} - } - - cross=FALSE; - seek_control=(struct HEADER*)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - if (CheckCrossBox(seek_control,message->arg1,message->arg2)==TRUE && - (seek_control->flags & FLAG_MOUSE_BLOCKED_ON)==FALSE) - { - if (message->arg3==MOUSE_LEFT_BUTTON_DOWN) - { - cross=TRUE; - active_control_for_mouse=seek_control; - - if (active_control_for_mouse->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - //set focuse of input for new active control - active_control_for_mouse->flags=active_control_for_mouse->flags | FLAG_FOCUSE_INPUT_ON; - - if (active_control_for_keys!=NULL) - { - if (active_control_for_keys!=seek_control) - { - //check seek control for supporote focuse of input - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - //check parent for supporote focuse of input - parent=(struct HEADER*)seek_control->parent; - if (parent->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - active_control_for_keys->ctrl_proc; - - local_service_message.type=MESSAGE_CHANGE_FOCUSE; - local_service_message.arg1=FALSE; - active_control_for_keys->flags= - active_control_for_keys->flags & - FLAG_FOCUSE_INPUT_OFF; - ControlProc(active_control_for_keys,&local_service_message); - - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - local_service_message.arg1=FALSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - active_control_for_keys=seek_control; - main_parent->global_active_control_for_keys= - (DWORD*)active_control_for_keys; - Parent->active_control_for_keys= - (DWORD*)active_control_for_keys; - } - } - } - } - else - { - //check seek control for supporote focuse of input - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - //check parent for supporote focuse of input - parent=(struct HEADER*)seek_control->parent; - if (parent->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - active_control_for_keys=(struct HEADER*)main_parent->global_active_control_for_keys; - if (active_control_for_keys!=NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - active_control_for_keys->ctrl_proc; - - local_service_message.type=MESSAGE_CHANGE_FOCUSE; - active_control_for_keys->flags= - active_control_for_keys->flags & FLAG_FOCUSE_INPUT_OFF; - ControlProc(active_control_for_keys,&local_service_message); - } - - ControlProc=(void (*)(void *Control,struct MESSAGE *message)) - seek_control->ctrl_proc; - local_service_message.type=MESSAGE_SET_FOCUSE; - seek_control->flags=seek_control->flags | FLAG_FOCUSE_INPUT_ON; - ControlProc(seek_control,&local_service_message); - - main_parent->global_active_control_for_keys=(DWORD*)seek_control; - Parent->active_control_for_keys=(DWORD*)seek_control; - } - } - } - } - } - } - - if ((seek_control->flags & FLAG_MOUSE_BLOCKED_ON)==FALSE) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - } - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - - if ((cross==FALSE) && (message->arg3==MOUSE_LEFT_BUTTON_DOWN)) - { - if (active_control_for_keys!=NULL) - {//disable focuse of input for active control of keys - ControlProc=(void (*)(void *Control,struct MESSAGE *message))active_control_for_keys->ctrl_proc; - - local_service_message.type=MESSAGE_CHANGE_FOCUSE; - active_control_for_keys->flags=active_control_for_keys->flags & FLAG_FOCUSE_INPUT_OFF; - ControlProc(active_control_for_keys,&local_service_message); - - main_parent->global_active_control_for_keys=(DWORD*)NULL; - Parent->active_control_for_keys=(DWORD*)NULL; - } - } - - break; - } - case MESSAGE_CHANGE_POSITION_EVENT: - { - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - break; - } - case MESSAGE_CALL_TIMER_EVENT: - { - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - break; - } - case MESSAGE_SET_FOCUSE: - { - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - break; - } - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - break; - } - case MESSAGE_CHANGE_FOCUSE: - { - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - if (seek_control->flags & FLAG_FOCUSE_INPUT_SUPPOROTE) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - ControlProc(seek_control,message); - break; - } - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - break; - } - case MESSAGE_DESTROY_CONTROL: - { - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { //befor delet control get next control of parent - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - //send message to control for destroyng child controls - ControlProc(seek_control,message); - DestroyControl(seek_control); - - seek_control=exchange_control; - } - break; - } - case MESSAGE_SET_MAIN_PARENT: - { - seek_control=(struct HEADER *)Parent->child_bk; - while(seek_control!=(struct HEADER*)NULL) - { - ControlProc=(void (*)(void *Control,struct MESSAGE *message))seek_control->ctrl_proc; - //send message to control for destroyng child controls - ControlProc(seek_control,message); - - seek_control->main_parent=(DWORD*)message->arg1; - - exchange_control=(struct HEADER *)seek_control->ctrl_fd; - seek_control=exchange_control; - } - break; - } - default:break; - } - } - Parent->active_control_for_mouse=(DWORD*)active_control_for_mouse; -} - -//--------------------------------------------------------------------------------- -// pack control_child in control_parent for libGUI -//--------------------------------------------------------------------------------- -//add new control for Parent -void PackControls(void *parent,void *Control) -{ - struct HEADER *Parent; - struct HEADER *last_control; - struct HEADER *control; - struct MESSAGE message; - - Parent=(struct HEADER *)parent; - control=(struct HEADER *)Control; - //set control's dependeces - - if (Parent->child_bk==NULL) - { - //create first child control for parent - Parent->child_bk=(DWORD*)control; - Parent->child_fd=(DWORD*)control; - - //init control - control->parent=(DWORD*)Parent; - control->ctrl_bk=(DWORD*)Parent;//last control is parent - control->ctrl_fd=(DWORD*)NULL;//haven't next control - } - else - { - //set new control as endest child control of parent - last_control=(struct HEADER*)Parent->child_fd; - Parent->child_fd=(DWORD*)control; - - last_control->ctrl_fd=(DWORD*)control; - control->ctrl_bk=(DWORD*)last_control; - control->ctrl_fd=(DWORD*)NULL; - control->parent=(DWORD*)Parent; - } - - //finite control's coordinates and size - control->ctrl_x=control->ctrl_x+Parent->ctrl_x; - control->ctrl_y=control->ctrl_y+Parent->ctrl_y; - - if (control->ctrl_sizex<=1) {control->ctrl_sizex=1;} - if (control->ctrl_sizey<=1) {control->ctrl_sizey=1;} - - message.type=(DWORD)MESSAGE_CHANGE_POSITION_EVENT; - message.arg1=Parent->ctrl_x; - message.arg2=Parent->ctrl_y; - //send message change position to child controls - SendMessage(control,&message); - - if (Parent->main_parent!=(DWORD*)NULL) - { - //tell all child controls of main parent who is main parent - message.type=MESSAGE_SET_MAIN_PARENT; - message.arg1=(DWORD)Parent->main_parent; - SendMessage((struct HEADER *)Parent,&message); - } -} - -//--------------------------------------------------------------------------------- -// show/hide controls -//--------------------------------------------------------------------------------- -void ShowControl(void *Control) -{ - struct HEADER *control; - control=(struct HEADER *)Control; - control->flags=control->flags | FLAG_SHOW_CONTROL; -} - -void HideControl(void *Control) -{ - struct HEADER *control; - control=(struct HEADER *)Control; - control->flags=control->flags & FLAG_HIDE_CONTROL; -} - -//--------------------------------------------------------------------------------- -// redraw control -//--------------------------------------------------------------------------------- -void RedrawControl(void *Control) -{ - struct HEADER *control; - struct MESSAGE message; - - control=(struct HEADER*)Control; - ControlProc=(void (*)(void *Control,struct MESSAGE *message))control->ctrl_proc; - message.type=MESSAGE_FULL_REDRAW_ALL; - ControlProc(control,&message); -} - -//--------------------------------------------------------------------------------- -// special redraw of control -//--------------------------------------------------------------------------------- -void SpecialRedrawControl(void *Control) -{ - struct HEADER *control; - struct MESSAGE message; - struct HEADERPARENT *main_parent; - - control=(struct HEADER*)Control; - main_parent=(struct HEADERPARENT*)control->main_parent; - control->flags=control->flags | FLAG_GET_SPECIALIZED_MESSAGE_ON; - - ControlProc=(void (*)(void *Control,struct MESSAGE *message))control->ctrl_proc; - - message.type=MESSAGE_SPECIALIZED; - ControlProc((struct HEADER*)main_parent,&message); -} - -//--------------------------------------------------------------------------------- -// set new size for control -//--------------------------------------------------------------------------------- -void SetControlSizeRequest(void *Control,int new_size_x,int new_size_y) -{ - struct HEADER *control; - struct HEADER *Parent; - - control=(struct HEADER*)Control; - Parent=(struct HEADER*)control->parent; - - control->ctrl_sizex=(DWORD)new_size_x; - control->ctrl_sizey=(DWORD)new_size_y; - - if ((control->ctrl_x+control->ctrl_sizex)>Parent->ctrl_sizex) {control->ctrl_sizex=Parent->ctrl_sizex-control->ctrl_x;} - if ((control->ctrl_y+control->ctrl_sizey)>Parent->ctrl_sizey) {control->ctrl_sizey=Parent->ctrl_sizey-control->ctrl_y;} - - if (control->ctrl_sizex<=1) {control->ctrl_sizex=1;} - if (control->ctrl_sizey<=1) {control->ctrl_sizey=1;} - -} - -//--------------------------------------------------------------------------------- -// get size x of control -//--------------------------------------------------------------------------------- -int GetControlSizeX(void *Control) -{ - struct HEADER *control; - - control=(struct HEADER *)Control; - - return ((int)control->ctrl_sizex); -} - -//--------------------------------------------------------------------------------- -// get size y of control -//--------------------------------------------------------------------------------- -int GetControlSizeY(void *Control) -{ - struct HEADER *control; - - control=(struct HEADER *)Control; - - return ((int)control->ctrl_sizey); -} - -//--------------------------------------------------------------------------------- -// set new size for control -//--------------------------------------------------------------------------------- -void SetControlNewPosition(void *Control,int new_x,int new_y) -{ - struct HEADER *control; - struct HEADER *Parent; - struct MESSAGE message; - parent_t *main_parent; - int old_x; - int old_y; - - control=(struct HEADER*)Control; - /* - main_parent=(parent_t*)control->main_parent; - if (control->parent==(DWORD*)main_parent) - {//check position of child control of main parent - if (new_x+control->ctrl_sizex-1>screen.size_x) return; - if (new_y+control->ctrl_sizey-1>screen.size_y) return; - }*/ - - message.type=(DWORD)MESSAGE_CHANGE_POSITION_EVENT; - message.arg1=(DWORD)(new_x-control->ctrl_x); - message.arg2=(DWORD)(new_y-control->ctrl_y); - - ControlProc=(void (*)(void *Control,struct MESSAGE *message))control->ctrl_proc; - ControlProc(control,&message); -} - -//--------------------------------------------------------------------------------- -// get x position of control -//--------------------------------------------------------------------------------- -int GetControlPositionX(void *Control) -{ - struct HEADER *control; - - control=(struct HEADER *)Control; - - return ((int)control->ctrl_x); -} - -//--------------------------------------------------------------------------------- -// get y position of control -//--------------------------------------------------------------------------------- -int GetControlPositionY(void *Control) -{ - struct HEADER *control; - - control=(struct HEADER *)Control; - - return ((int)control->ctrl_y); -} - -//--------------------------------------------------------------------------------- -// set focuse of input for control -//--------------------------------------------------------------------------------- -void *SetFocuse(void *Control) -{ - struct HEADER *control; - struct HEADERPARENT *main_parent; - struct HEADER *old_control; - struct MESSAGE *message; - - //new active control with focuse - control=(struct HEADER*)Control; - main_parent=(struct HEADERPARENT*)control->main_parent; - - if (main_parent==(struct HEADERPARENT*)NULL) return; - - //old control with focuse - old_control=(struct HEADER*)main_parent->global_active_control_for_keys; - - if (old_control!=(struct HEADER*)NULL) - { - message->type=MESSAGE_CHANGE_FOCUSE; - message->arg1=FALSE; - message->arg2=FALSE; - message->arg3=FALSE; - ControlProc=(void (*)(void *Control,struct MESSAGE *message))old_control->ctrl_proc; - ControlProc(old_control,message); - } - - message->type=MESSAGE_SET_FOCUSE; - message->arg1=FALSE; - message->arg2=FALSE; - message->arg3=FALSE;; - ControlProc=(void (*)(void *Control,struct MESSAGE *message))control->ctrl_proc; - ControlProc(control,message); - - return(old_control); -} - -//--------------------------------------------------------------------------------- -// set callback function for control -//--------------------------------------------------------------------------------- -void *SetCallbackFunction(void *Control,int event_name,void *callback_func,void *callback_func_data) -{ - struct HEADER *control; - struct CALLBACK *seek_callback; - struct CALLBACK *exchange_callback; - struct CALLBACK *new_callback; - - control=(struct HEADER *)Control; - seek_callback=(struct CALLBACK*)control->callback; - - if (seek_callback==(struct CALLBACK *)NULL) - { //callback function creating at first - new_callback=malloc(sizeof(struct CALLBACK)); - control->callback=(DWORD*)new_callback; - new_callback->clb_bk=(DWORD*)control; - new_callback->clb_fd=(DWORD*)NULL; - new_callback->clb_control=(DWORD*)control; - new_callback->connect_event=(DWORD)event_name; - new_callback->func=(DWORD*)callback_func; - new_callback->func_data=(DWORD*)callback_func_data; - new_callback->flags=0x0; - } - else - { - while(seek_callback!=(struct CALLBACK*)NULL) - { - if (seek_callback->clb_fd==(DWORD*)NULL) - {//create new callback control for callback function - new_callback=malloc(sizeof(struct CALLBACK)); - seek_callback->clb_fd=(DWORD*)new_callback; - new_callback->clb_bk=(DWORD*)seek_callback; - new_callback->clb_fd=(DWORD*)NULL; - new_callback->clb_control=(DWORD*)control; - new_callback->connect_event=(DWORD)event_name; - new_callback->func=(DWORD*)callback_func; - new_callback->func_data=(DWORD*)callback_func_data; - new_callback->flags=0x0; - break; - } - exchange_callback=(struct CALLBACK*)seek_callback->clb_fd; - seek_callback=exchange_callback; - } - } - - return(new_callback); -} - -//--------------------------------------------------------------------------------- -// block current callback function for control -//--------------------------------------------------------------------------------- -void BlockCallbackFunction(void *Control,void *callback_ID) -{ - struct HEADER *control; - struct CALLBACK *seek_callback; - struct CALLBACK *exchange_callback; - struct CALLBACK *unknown_callback; - - control=(struct HEADER *)Control; - - seek_callback=(struct CALLBACK *)control->callback; - unknown_callback=(struct CALLBACK*)callback_ID; - - while(seek_callback!=(struct CALLBACK*)NULL) - { - if (seek_callback==unknown_callback) - { - unknown_callback->flags=unknown_callback->flags | FLAG_BLOCK_CALLBACK_ON; - break; - } - exchange_callback=(struct CALLBACK*)seek_callback->clb_fd; - seek_callback=exchange_callback; - } - -} - -//--------------------------------------------------------------------------------- -// unblock current callback function for control -//--------------------------------------------------------------------------------- -void UnblockCallbackFunction(void *Control,void *callback_ID) -{ - struct HEADER *control; - struct CALLBACK *seek_callback; - struct CALLBACK *exchange_callback; - struct CALLBACK *unknown_callback; - - control=(struct HEADER *)Control; - - seek_callback=(struct CALLBACK *)control->callback; - unknown_callback=(struct CALLBACK*)callback_ID; - - while(seek_callback!=(struct CALLBACK*)NULL) - { - if (seek_callback==unknown_callback) - { - unknown_callback->flags=unknown_callback->flags & FLAG_BLOCK_CALLBACK_OFF; - break; - } - exchange_callback=(struct CALLBACK*)seek_callback->clb_fd; - seek_callback=exchange_callback; - } -} - -//--------------------------------------------------------------------------------- -// chack callback event for control -//--------------------------------------------------------------------------------- -void *ControlCheckCallbackEvent(void *Control,DWORD event) -{ - struct HEADER *control; - struct CALLBACK *seek_callback; - struct CALLBACK *exchange_callback; - - control=(struct HEADER *)Control; - seek_callback=(struct CALLBACK *)control->callback; - - while(seek_callback!=(struct CALLBACK*)NULL) - { - if ((seek_callback->flags & FLAG_BLOCK_CALLBACK_ON)==FALSE) - { - if (seek_callback->connect_event==event) return (seek_callback); - } - exchange_callback=(struct CALLBACK*)seek_callback->clb_fd; - seek_callback=exchange_callback; - } - return(NULL); -} - -//--------------------------------------------------------------------------------- -// set IDL function for libGUI -//--------------------------------------------------------------------------------- -void SetIDL_Function(parent_t *parent,void *function,void *function_data) -{ - parent->IDL_func=(DWORD*)function; - parent->IDL_func_data=(DWORD*)function_data; -} - -//--------------------------------------------------------------------------------- -// destroy IDL function for libGUI -//--------------------------------------------------------------------------------- -void DestroyIDL_Function(parent_t *parent) -{ - parent->IDL_func=(DWORD*)NULL; -} - -//--------------------------------------------------------------------------------- -// initialize libGUI -//--------------------------------------------------------------------------------- -char InitLibGUI() -{ - font_t *font; -//--------------------------------------------------------------------------------- -//---------------------------platform depended part of code------------------------ -//--------------------------------------------------------------------------------- - //set new events mask - gui_ksys_set_events_mask(119); - //set scan codes input mode for keyboard - gui_ksys_set_keyboard_input_mode(1); -//------------------------------------------------------------------------------------ - FontsMeneger.fnt_fd=(DWORD*)NULL; - FontsMeneger.fnt_bk=(DWORD*)NULL; - FontsMeneger.number_fonts=0; - //load default fonts - font=LoadFont("CHAR.MT"); - - if (font==NULL) return (TRUE); - else FontsMeneger.default_font=(DWORD*)font; - - font->flags=font->flags | FONT_FLAG_DEFAULT_FONT_ON; - - return(FALSE); -} - -//--------------------------------------------------------------------------------- -// quit from libGUI loop and destroy all GUI objects -//--------------------------------------------------------------------------------- -void QuitLibGUI(parent_t *window) -{ - font_t *font,*seek_font,*exchange_font; - gui_timer_t *seek_timer,*exchange_timer; - gui_message_t message; - - //destroy controls of parent window - message.type=MESSAGE_DESTROY_CONTROL; - SendMessage((header_t*)window,&message); -#ifdef DEBUG - gui_debug_out_str("\ncontrols destroyed"); -#endif - //destroy timers for callback functions - seek_timer=(gui_timer_t*)window->timer_bk; - while(seek_timer!=(gui_timer_t*)NULL) - { - exchange_timer=(gui_timer_t*)seek_timer->tmr_fd; - - DestroyTimerCallbackForFunction(seek_timer); - - seek_timer=exchange_timer; - } -#ifdef DEBUG - gui_debug_out_str("\ntimers destroyed"); -#endif - //free arrays of parent window - free(window->message); - free(window->control_for_callback_function); - free(window->callback_for_control_callback); -#ifdef DEBUG - gui_debug_out_str("\narrays destroyed"); -#endif - //destroy parent window - free(window); -#ifdef DEBUG - gui_debug_out_str("\nparent window destroyed"); -#endif - //destroy fonts cash - - seek_font=(font_t*)FontsMeneger.fnt_bk; - while(seek_font!=(font_t*)NULL) - { - exchange_font=(font_t*)seek_font->fnt_fd; - - free(seek_font->font); - DestroyFont(seek_font); - - seek_font=exchange_font; - } -#ifdef DEBUG - gui_debug_out_str("\nfonts destroyed"); -#endif - exit(0); -} - -DWORD LibGUIversion(void) -{ //03.10.09 - return(91003); -} diff --git a/programs/develop/new libGUI_C/SRC/main_libGUI.inc b/programs/develop/new libGUI_C/SRC/main_libGUI.inc deleted file mode 100755 index 1af8da61ed..0000000000 --- a/programs/develop/new libGUI_C/SRC/main_libGUI.inc +++ /dev/null @@ -1,225 +0,0 @@ -/* - main meneger loop libGUI library -*/ - -void LibGUImain(parent_t *WindowParent) -{ - DWORD event,key,value; - header_t *control; - gui_message_t *events_message; - gui_timer_t *seek_timer,*exchange_timer; - gui_callbackevent_t *seek_calev,*calev,*exchange_calev; - int i; - char quit; - - - events_message=(struct MESSAGE*)WindowParent->message; - - //tell all child controls of main parent who is main parent - events_message->type=MESSAGE_SET_MAIN_PARENT; - events_message->arg1=(DWORD)WindowParent; - SendMessage((struct HEADER *)WindowParent,events_message); - - //display all created controls in window - gui_draw_window(WindowParent); - events_message->type=MESSAGE_FULL_REDRAW_ALL; - SendMessage((struct HEADER *)WindowParent,events_message); - - events_message->type=0; - - quit=FALSE; - WindowParent->number_callbacks=0; - - while (quit==FALSE) - { - //check for timers - if ((WindowParent->timer_bk!=(DWORD*)NULL) || - (WindowParent->number_timers_for_controls!=0)) {event=gui_ksys_wait_event_with_timeout(1);} - else {event=gui_ksys_wait_event();} - - //get and chack system events - switch(event) - { - case KOLIBRIOS_SYS_EVENT_BUTTON_PRESSED: - { - if (ControlCheckCallbackEvent(WindowParent,DELETE_EVENT)!=NULL) - { - WindowParent->flags |= FLAG_CONNECT_EVENT_ON; - WindowParent->control_for_callback_function[WindowParent->number_callbacks]= - (DWORD*)WindowParent; - WindowParent->callback_for_control_callback[WindowParent->number_callbacks]= - (DWORD*)ControlCheckCallbackEvent(WindowParent,(DWORD)DELETE_EVENT); - WindowParent->number_callbacks++; - } - - quit=TRUE; - break; - } - - case KOLIBRIOS_SYS_EVENT_REDRAW: - { - GetNewWindowSizePos(WindowParent); - SetWindowSizeRequest(WindowParent,WindowParent->ctrl_sizex,WindowParent->ctrl_sizey); - gui_draw_window(WindowParent); - - events_message->type=MESSAGE_FULL_REDRAW_ALL; - SendMessage((struct HEADER *)WindowParent,events_message); - break; - } - - case KOLIBRIOS_SYS_EVENT_KEYS: - { - key=gui_ksys_get_key(); - - - key=key>>8; - - if (key & 128) - { - events_message->arg1=KEY_UP; - events_message->arg2=key & 127; - } - else - { - events_message->arg1=KEY_DOWN; - events_message->arg2=key; - } - - events_message->type=MESSAGE_KEYS_EVENT; - SendMessage((struct HEADER *)WindowParent,events_message); - break; - } - - case KOLIBRIOS_SYS_EVENT_MOUSE: - { - value=gui_ksys_get_window_mouse_coordinates(); - - events_message->type=MESSAGE_MOUSE_EVENT; - events_message->arg2=(value & 0xffff)-screen.y;//y - value=value >>16; - events_message->arg1=value-screen.x;//x - - value=gui_ksys_get_mouse_buttons_state(); - - switch(value) - { - case KOLIBRIOS_SYS_MOUSE_BUTTON_LEFT_DOWN: - { - events_message->arg3=MOUSE_LEFT_BUTTON_DOWN; - break; - } - case KOLIBRIOS_SYS_MOUSE_BUTTON_RIGHT_DOWN: - { - events_message->arg3=MOUSE_RIGHT_BUTTON_DOWN; - break; - } - case KOLIBRIOS_SYS_MOUSE_BUTTON_MIDDLE_DOWN: - { - events_message->arg3=MOUSE_MIDDLE_BUTTON_DOWN; - break; - } - case KOLIBRIOS_SYS_MOUSE_BUTTON_4_DOWN: - { - events_message->arg3=MOUSE_4_BUTTON_DOWN; - break; - } - case KOLIBRIOS_SYS_MOUSE_BUTTON_5_DOWN: - { - events_message->arg3=MOUSE_5_BUTTON_DOWN; - break; - } - default: - { - if (events_message->arg3==MOUSE_LEFT_BUTTON_DOWN) - { - events_message->arg3=MOUSE_LEFT_BUTTON_UP; - break; - } - if (events_message->arg3==MOUSE_RIGHT_BUTTON_DOWN) - { - events_message->arg3=MOUSE_RIGHT_BUTTON_UP; - break; - } - if (events_message->arg3==MOUSE_MIDDLE_BUTTON_DOWN) - { - events_message->arg3=MOUSE_MIDDLE_BUTTON_UP; - break; - } - if (events_message->arg3==MOUSE_4_BUTTON_DOWN) - { - events_message->arg3=MOUSE_4_BUTTON_UP; - break; - } - if (events_message->arg3==MOUSE_5_BUTTON_DOWN) - { - events_message->arg3=MOUSE_5_BUTTON_UP; - break; - } - - break; - } - } - SendMessage((struct HEADER *)WindowParent,events_message); - break; - } - } - - //call functions for events - seek_calev=(struct CALLBACKEVENT*)WindowParent->calev_bk; - while(seek_calev!=(struct CALLBACKEVENT*)NULL) - { - if (seek_calev->event_type==events_message->type) - { - CallbackFunctionForEvent=(void(*)(struct MESSAGE *message,void *data))seek_calev->func; - CallbackFunctionForEvent(events_message,seek_calev->func_data); - } - exchange_calev=(struct CALLBACKEVENT*)seek_calev->calev_fd; - seek_calev=exchange_calev; - } - - - //call timers of controls - if (WindowParent->number_timers_for_controls!=0) - { - events_message->type=(char)MESSAGE_CALL_TIMER_EVENT; - SendMessage((struct HEADER *)WindowParent,events_message); - } - - //call callback functions - for(i=0;inumber_callbacks;i++) - { - control=(struct HEADER*)WindowParent->control_for_callback_function[i]; - //check callback control - if (control!=(struct HEADER*)NULL) - { - calev=(struct CALLBACKEVENT*)WindowParent->callback_for_control_callback[i]; - if (control->flags & FLAG_CONNECT_EVENT_ON) - { - CallbackFunction=(void (*)( struct HEADER *Control,void *data))calev->func; - CallbackFunction(control,calev->func_data); - - control->flags=control->flags & FLAG_CONNECT_EVENT_OFF; - } - } - } - WindowParent->number_callbacks=0; - - //call timers of parent window - seek_timer=(struct TIMER*)WindowParent->timer_bk; - while(seek_timer!=(struct TIMER*)NULL) - { - if (seek_timer->flags & FLAG_TIMER_ON) Timer(seek_timer); - - exchange_timer=(struct TIMER*)seek_timer->tmr_fd; - seek_timer=exchange_timer; - } - - //check for IDL function and call it if enabled - if (WindowParent->IDL_func!=(DWORD*)NULL) - { - IDL_Function=(void(*)(void *data))WindowParent->IDL_func; - IDL_Function(WindowParent->IDL_func_data); - } - - } -} diff --git a/programs/develop/new libGUI_C/SRC/parent_window.inc b/programs/develop/new libGUI_C/SRC/parent_window.inc deleted file mode 100755 index d8290dcb37..0000000000 --- a/programs/develop/new libGUI_C/SRC/parent_window.inc +++ /dev/null @@ -1,132 +0,0 @@ -/* - create parent of window -*/ - -#define PARENT_WINDOW_DEFAULT_SIZEX 320 -#define PARENT_WINDOW_DEFAULT_SIZEY 200 - -#define PARENT_WINDOW_BORDER_WIDTH 5; - -void gui_get_screen_parameters(void) -{ - int value; - - value=(int)gui_ksys_get_screen_bits_per_pixel(); - screen.bits_per_pixel=(char)value; - screen.bytes_per_pixel=screen.bits_per_pixel >> 3; - - screen.skin_height=gui_ksys_get_skin_height(); - - screen.x=PARENT_WINDOW_BORDER_WIDTH; - screen.y=screen.skin_height; - - value=gui_ksys_get_screen_size(); - screen.display_size_y=value & 0xffff; - screen.display_size_y=value >> 16; -} - -void gui_draw_window(parent_t *window) -{ - DWORD flag; - - flag=3; - flag=flag<<24; - flag +=0xaabbcc; - - gui_ksys_begin_draw_window(); - gui_ksys_draw_window(window->ctrl_x,window->ctrl_y,window->ctrl_sizex,window->ctrl_sizey,flag); - gui_ksys_finish_draw_window(); -} - -//--------------------------------------------------------------------------------- -// create window parent -//--------------------------------------------------------------------------------- -void* CreateWindow(void) -{ - struct HEADERPARENT *WindowParent; - - WindowParent=malloc(sizeof(parent_t)); - WindowParent->message=malloc(sizeof(gui_message_t)); - WindowParent->control_for_callback_function=malloc(sizeof(DWORD)*MAX_CALLBACKS); - WindowParent->callback_for_control_callback=malloc(sizeof(DWORD)*MAX_CALLBACKS); - - WindowParent->main_parent=(DWORD*)WindowParent; - WindowParent->global_active_control_for_keys=(DWORD*)NULL; - - WindowParent->control_for_callback_function[0]=(DWORD*)NULL; - WindowParent->number_callbacks=0; - - WindowParent->child_bk=(DWORD*)NULL; - WindowParent->active_control_for_keys=(DWORD*)NULL; - WindowParent->active_control_for_mouse=(DWORD*)NULL; - WindowParent->ctrl_x=0x0; - WindowParent->ctrl_y=0x0; - WindowParent->ctrl_sizex=PARENT_WINDOW_DEFAULT_SIZEX; - WindowParent->ctrl_sizey=PARENT_WINDOW_DEFAULT_SIZEY; - WindowParent->callback=(DWORD*)NULL;//no callbacks yet - WindowParent->timer=(DWORD*)NULL;//no timers yet - - WindowParent->flags=0; - WindowParent->flags=WindowParent->flags | FLAG_SHOW_CONTROL; - WindowParent->flags=WindowParent->flags | FLAG_FOCUSE_INPUT_SUPPOROTE; - - WindowParent->number_timers_for_controls=0; - WindowParent->timer_bk=(DWORD*)NULL; - WindowParent->timer_fd=(DWORD*)NULL; - - WindowParent->calev_bk=(DWORD*)NULL; - WindowParent->calev_fd=(DWORD*)NULL; - - WindowParent->IDL_func=(DWORD*)NULL; - -//--------------------------------------------------------------------------------- -//---------------------------platform depended part of code------------------------ -//--------------------------------------------------------------------------------- - //create and initialize screen buffer - gui_get_screen_parameters(); - //by default draw output to the screen - screen.draw_output=DRAW_OUTPUT_SCREEN; - //calculate size of client's arrea - screen.size_x=WindowParent->ctrl_sizex-9; - screen.size_y=WindowParent->ctrl_sizey-screen.skin_height-4; -//---------------------------------------------------------------------------------- - ID=0; - return(WindowParent); -} - -//--------------------------------------------------------------------------------- -// create window parent -//--------------------------------------------------------------------------------- -void SetWindowSizeRequest(parent_t *WindowParent,int size_x,int size_y) -{ - static int x,y,sizex,sizey; -//--------------------------------------------------------------------------------- -//---------------------------platform depended part of code------------------------ -//--------------------------------------------------------------------------------- - x=WindowParent->ctrl_x; - y=WindowParent->ctrl_y; - sizex=size_x; - sizey=size_y; - gui_ksys_set_position_and_size_window(x,y,sizex,sizey); -//--------------------------------------------------------------------------------- - WindowParent->ctrl_sizex=sizex; - WindowParent->ctrl_sizey=sizey; - - screen.size_x=WindowParent->ctrl_sizex-9; - screen.size_y=WindowParent->ctrl_sizey-screen.skin_height-4; -} - -void GetNewWindowSizePos(parent_t *WindowParent) -{ - static process_table_t procinfo; - - gui_ksys_get_current_process_information(&procinfo); - - WindowParent->ctrl_x=(DWORD)procinfo.winx_start; - WindowParent->ctrl_y=(DWORD)procinfo.winy_start; - WindowParent->ctrl_sizex=(DWORD)procinfo.winx_size; - WindowParent->ctrl_sizey=(DWORD)procinfo.winy_size; - - //get screen parameters again - gui_get_screen_parameters(); -} diff --git a/programs/develop/new libGUI_C/SRC/stdarg.h b/programs/develop/new libGUI_C/SRC/stdarg.h deleted file mode 100755 index a7dcdfa3c4..0000000000 --- a/programs/develop/new libGUI_C/SRC/stdarg.h +++ /dev/null @@ -1,8 +0,0 @@ - -typedef char *va_list; -#define _roundsize(n) ( (sizeof(n) + 3) & ~3 ) -#define va_start(ap,v) (ap = (va_list)&v+_roundsize(v)) -#define va_arg(ap,t) ( *(t *)((ap += _roundsize(t)) - _roundsize(t)) ) -#define va_end(ap) (ap = (va_list)0) - - diff --git a/programs/develop/new libGUI_C/SRC/stdio.h b/programs/develop/new libGUI_C/SRC/stdio.h deleted file mode 100755 index c71b516a7e..0000000000 --- a/programs/develop/new libGUI_C/SRC/stdio.h +++ /dev/null @@ -1,3 +0,0 @@ - -static int cdecl printf(const char *format,...); - diff --git a/programs/develop/new libGUI_C/SRC/stdio.inc b/programs/develop/new libGUI_C/SRC/stdio.inc deleted file mode 100755 index a7120f06c9..0000000000 --- a/programs/develop/new libGUI_C/SRC/stdio.inc +++ /dev/null @@ -1,790 +0,0 @@ -/* - function for format output to the string -*/ - -static int formatted_double_to_string(long double number,int format1,int format2,char *s) -{ -/* - double n; - double nbefor; - double nafter; - double v,v2; - long intdigit; - long beforpointdigit; - long div; - int i; - int pos; - int size; - int fmt1; - int fmt2; - long mul; - static char buf[200]; - - size=(int)s; - n=(double)number; - if (n<0) {*s='-';s++;n=-n;} - - fmt1=format1; - fmt2=format2; - if (fmt2>18) {fmt2=18;} //maximum of size long long type - - //clear array befor output - for(i=0;i<=200;i++) {buf[i]=0;} - - if ((fmt1>=0) && (n<1)) - { //formatted output if 0<=n<1 - mul=1; - for(i=0;i=0) && (buf[i]<=9)) {*s='0'+buf[i];} - else {*s='0';} - s++; - } - } - else - { //if n>=1 - //v=floorf(n+0.00000000000001); - beforpointdigit=floor(n+0.00000000000001); - //beforpointdigit=n; - nbefor=beforpointdigit; - nafter=n-nbefor; - - //print part of number befor point - mul=1; - for(i=0;i<200-2;i++) - { - mul=mul*10; - if ((beforpointdigit/mul)==0) {fmt1=i+1;break;} - } - - pos=0; - mul=mul/10; - for(i=0;i=0) && (buf[i]<=9)) {*s='0'+buf[i];} - s++; - } - - //print part of number after point - mul=1; - for(i=0;i=0) && (buf[i]<=9)) {*s='0'+buf[i];} - else {*s='0';} - s++; - } - - } - size=(int)s-size; - return(size); -*/ -} - -static int formatted_long_to_string(long long number,int fmt1,char *s) -{ - int i; - int pos; - int fmt; - int size; - int difference_pos; - long digit; - long mul; - long div; - static char buf[200]; - - //clear array befor output - for(i=0;i<200;i++) {buf[i]=0;} - digit=number; - - size=(int)s; - if (digit<0) {*s='-';s++;digit=-digit;} - if (digit==0) {*s='0';s++;goto end;} - - mul=1; - for(i=0;i<200-2;i++) - { - mul=mul*10; - if ((digit/mul)==0) {fmt=i+1;break;} - } - - difference_pos=i+1; - - pos=0; - mul=mul/10; - for(i=0;i=difference_pos) fmt=fmt1; - else - fmt=difference_pos; - - for(i=0;i=0) && (buf[i]<=9)) {*s='0'+buf[i];} - } - else - { - *s=' '; - } - s++; - } - end: - size=(int)s-size; - return(size); -} - -static int formatted_hex_to_string(long long number,int fmt1,char flag_register,char *s) -{ - long n; - int i,pos; - int fmt; - long size; - int difference_pos; - static char xdigs_lower[16]="0123456789abcdef"; - static char xdigs_upper[16]="0123456789ABCDEF"; - static char buf[200]; - - n=(long)number; - size=(int)s; - if (n<0) {*s='-';s++;n=-n;} - - if (n==0) {*s='0';s++;goto end;} - for(i=0;i<200;i++) {buf[i]=0;} - - i=0; - if (flag_register==0) - { - while (n>0) - { - buf[i]=xdigs_lower[n & 15]; - n=n>>4; - i++; - } - } - else - { - while (n>0) - { - buf[i]=xdigs_upper[n & 15]; - n=n>>4; - i++; - } - } - - pos=i; - difference_pos=i; - - for(i=pos-1;i>=0;i--) - { - *s=buf[i]; - s++; - } - - if (fmt1-difference_pos>0) - { - for(i=difference_pos+1;i<=fmt1;i++) - { - *s=' '; - s++; - } - } - end:size=(int)s-size; - return(size); -} - -static int formatted_octa_to_string(long long number,int fmt1,char flag_register,char *s) -{ - long n; - int i,pos; - int fmt; - long size; - int difference_pos; - static char xdigs_lower[16]="012345678"; - static char buf[200]; - - n=number; - size=(int)s; - if (n<0) {*s='-';s++;n=-n;} - - if (n==0) {*s='0';s++;goto end;} - for(i=0;i<200;i++) {buf[i]=0;} - - i=0; - if (flag_register==0) - { - while (n>0) - { - buf[i]=xdigs_lower[n & 7]; - n=n>>3; - i++; - } - } - - pos=i; - difference_pos=i; - - for(i=pos-1;i>=0;i--) - { - *s=buf[i]; - s++; - } - - if (fmt1-difference_pos>0) - { - for(i=difference_pos+1;i<=fmt1;i++) - { - *s=' '; - s++; - } - } - end:size=(int)s-size; - return(size); -} - -static int format_print(char *dest, size_t maxlen,const char *fmt0, va_list argp) -{ - int i,j,k; - int length; - int fmt1,fmt2,stepen; - size_t pos,posc; - long long intdigit; - long double doubledigit; - float floatdigit; - const char *fmt,*fmtc; - char *s; - char *str; - static char buffmt1[30]; - static char buffmt2[30]; - static char buf[1024]; - char format_flag; - char flag_point; - char flag_noformat; - char flag_long; - char flag_unsigned; - char flag_register; - char flag_plus; - - fmt=fmt0; - s=dest; - pos=0; - while(pos0) && (flag_plus==1) && (pos+1=0;i--) - { - fmt1=fmt1+buffmt1[i]*stepen; - stepen=stepen*10; - } - stepen=1; - for(i=k-1;i>=0;i--) - { - fmt2=fmt2+buffmt2[i]*stepen; - stepen=stepen*10; - } - switch(*fmtc) - { - case 'f': - case 'F': - if (flag_long==0) {doubledigit=va_arg(argp,double);} - if (flag_long>=1) {doubledigit=va_arg(argp,long double);} - //doubledigit=*((double *)argp); - //sargp=argp+8; - length=formatted_double_to_string(doubledigit,fmt1,fmt2,buf); - if ((pos+length)0) && (flag_plus==1) && (pos+1> 2;//length=length/4 - __asm__ __volatile__( - "movl %%edi,%%eax\n\t" - "cld\n\t" - "rep\n\t" - "movsd" - :"=D"(value) - :"c"(length),"S"(src),"D"(dst) - :"eax"); - - } - return(value); -} - -static size_t strlen(const char *s) -{ - size_t i; - - i=0; - while(*s!='\0') - { - i++; - s++; - } - return(i); -} - -static char* strchr(const char *string, int c) -{ - while(*string!='\0') - { - if (*string==(char)c) return((char*)string); - string++; - } - return(NULL); -} - -static char* strrchr(const char *string, int c) -{ - char *s; - int i,j; - - s=(char*)string; - while(*s!='\0') {s++;} - - j=(int)(s-string); - s--; - - for(i=0;i*string2) - return 1; - if (*string1=='\0') - return 0; - string1++; - string2++; - } -} - -static int strncmp(const char* string1, const char* string2, int count) -{ - while(count>0 && *string1==*string2) - { - if (*string1) return 0; - ++string1; - ++string2; - --count; - } - if(count) return (*string1 - *string2); - return 0; -} - -static int sprintf(char *dest,const char *format,...) -{ - va_list arg; - va_start (arg, format); - return format_print(dest,4096, format, arg); -} - -static int snprintf(char *dest, size_t size,const char *format,...) -{ - va_list arg; - va_start (arg, format); - return format_print(dest,size, format, arg); -} - -static int vsnprintf(char *dest, size_t size,const char *format,va_list ap) -{ - return format_print(dest,size, format, ap); -} - - diff --git a/programs/develop/new libGUI_C/SRC/types.h b/programs/develop/new libGUI_C/SRC/types.h deleted file mode 100755 index 218cffe0b2..0000000000 --- a/programs/develop/new libGUI_C/SRC/types.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - some used types -*/ -#define NULL (void*)0 - -typedef unsigned int DWORD; -typedef unsigned char BYTE; -typedef unsigned short int WORD; -typedef unsigned int size_t; - - -//#define stdcall __attribute__((stdcall)) -//#define cdecl __attribute__((cdecl)) - -//for win compilers -#define stdcall __stdcall -#define cdecl __cdecl diff --git a/programs/develop/new libGUI_C/examples/src/button.c b/programs/develop/new libGUI_C/examples/src/button.c deleted file mode 100755 index 55893507d5..0000000000 --- a/programs/develop/new libGUI_C/examples/src/button.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - test libGUI library -*/ -#include "stdarg.h" -#include "libGUI.h" -#include "stdio.h" -#include "stdlib.h" -#include "string.h" - -#define FALSE 0 -#define TRUE 1 - -void callback_func_delete_window(header_t *control,void *data) -{ - QuitLibGUI((parent_t*)control); -} - -void callback_func1(header_t *control,void *data) -{ - printf("\nentry in button"); -} - -void callback_func2(header_t *control,void *data) -{ - printf("\nbutton pressed"); -} - -void callback_func3(header_t *control,void *data) -{ - printf("\nbutton released"); -} - -void callback_func4(header_t *control,void *data) -{ - printf("\nleave button"); -} - -int main(int argc, char *argv[]) -{ - parent_t *window; - gui_callback_t *id1,*id2,*id3,*id4; - gui_button_data_t button_data; - gui_button_t *button; - - //load libGUI library - LoadLibGUI(NULL); - - //create main window - window=CreateWindow(); - SetWindowSizeRequest(window,90,60); - //create button - button_data.x=5; - button_data.y=5; - button_data.width=70; - button_data.height=20; - //create button with text - button=CreateButtonWithText(&button_data,"Click my!"); - //set callback functions for button close window - SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL); - - //set callback functions for button - id1=SetCallbackFunction(button,BUTTON_ENTER_EVENT,&callback_func1,NULL); - id2=SetCallbackFunction(button,BUTTON_PRESSED_EVENT,&callback_func2,NULL); - id3=SetCallbackFunction(button,BUTTON_RELEASED_EVENT,&callback_func3,NULL); - id4=SetCallbackFunction(button,BUTTON_LEAVE_EVENT,&callback_func4,NULL); - //pack button in window - PackControls(window,button); - //start main libGUI loop - LibGUImain(window); -} diff --git a/programs/develop/new libGUI_C/examples/src/image.c b/programs/develop/new libGUI_C/examples/src/image.c deleted file mode 100755 index 1b81c08a9d..0000000000 --- a/programs/develop/new libGUI_C/examples/src/image.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - test libGUI library -*/ -#include "stdarg.h" -#include "libGUI.h" -#include "stdlib.h" -#include "stdio.h" - -void callback_func_delete_window(header_t *control,void *data) -{ - QuitLibGUI((parent_t*)control); -} - -int main(int argc, char *argv[]) -{ - parent_t *window; - gui_image_data_t imdata; - gui_image_t *image; - int i,j; - unsigned int *img; - - //load libGUI library - LoadLibGUI(NULL);//use default system path to library - //create main window - window=CreateWindow(); - //change window size - SetWindowSizeRequest(window,220,142); - //set callback function for close window button - SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL); - //create image - imdata.x=5; - imdata.y=5; - imdata.width=200; - imdata.height=100; - imdata.bits_per_pixel=32;//bits per pixel - - image=CreateImage(&imdata); - img=(unsigned int*)image->img; - //generate 32 bits image - for(i=0;iprogress+=0.01;//incrase progress - - if (progress_bar->progress>1.0) progress_bar->progress=0.0; - - //calculate progress level in % - progress=progress_bar->progress*100; - snprintf(txt,16,"progress %d%%",progress); - //set text for progress bar - ProgressBarSetText(progress_bar,txt); -} - -int main(int argc, char *argv[]) -{ - parent_t *window; - gui_progress_bar_data_t progress_bar_data; - gui_progress_bar_t *progress_bar; - gui_timer_t *timer; - - //load libGUI library - LoadLibGUI(NULL);//use default system path to library - //create main window - window=CreateWindow(); - //change size of main window - SetWindowSizeRequest(window,320,57); - //set callback function for button close window - SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL); - //create progress bar - progress_bar_data.x=5; - progress_bar_data.y=5; - progress_bar_data.width=300; - progress_bar_data.height=25; - progress_bar_data.progress=0.0; - progress_bar=CreateProgressBar(&progress_bar_data); - - //create timer for update progress level each 50 millisecunds - timer=SetTimerCallbackForFunction(window,5,&ProgressBarCallback,progress_bar); - - //pack progress bar in window - PackControls(window,progress_bar); - - //update progress bar automatically each 50 millisecund - SetProgressBarPulse(progress_bar,5); - - //call main libGUI loop - LibGUImain(window); -} diff --git a/programs/develop/new libGUI_C/examples/src/scroll_bar.c b/programs/develop/new libGUI_C/examples/src/scroll_bar.c deleted file mode 100755 index 8225c796b5..0000000000 --- a/programs/develop/new libGUI_C/examples/src/scroll_bar.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - test libGUI library -*/ -#include "stdarg.h" -#include "libGUI.h" -#include "stdio.h" - -#define FALSE 0 -#define TRUE 1 - -void callback_func_delete_window(header_t *control,void *data) -{ - printf("\nlibGUI quit..."); - QuitLibGUI((parent_t*)control); -} - -void ScrollStateH(header_t *control,void *data) -{ - gui_scroll_bar_t *hsc; - - hsc=(gui_scroll_bar_t*)control; - printf("\nhorizontal ruler position %d%%",(int)(hsc->ruller_pos*100)); -} - -void ScrollStateV(header_t *control,void *data) -{ - gui_scroll_bar_t *vsc; - - vsc=(gui_scroll_bar_t*)control; - printf("\nvertical ruler position %d%%",(int)(vsc->ruller_pos*100)); -} - -int main(int argc, char *argv[]) -{ - parent_t *window; - gui_callback_t *id1,*id2; - gui_scroll_bar_data_t horizontal_sbar_data; - gui_scroll_bar_data_t vertical_sbar_data; - gui_scroll_bar_t *ScrollBarH; - gui_scroll_bar_t *ScrollBarV; - - //load libGUI library - LoadLibGUI(NULL);//use default system path to library - //create main window - window=CreateWindow(); - //change size of window - SetWindowSizeRequest(window,270,207); - //create horizontal scroll bar - horizontal_sbar_data.x=5; - horizontal_sbar_data.y=5; - horizontal_sbar_data.width=250; - horizontal_sbar_data.height=16; - horizontal_sbar_data.ruller_size=0.2;//size of ruler E [0,1] - horizontal_sbar_data.ruller_pos=0.5;//ruler position E [0,1] - horizontal_sbar_data.ruller_step=0.1;//step of change ruler pos after press of button E [0,1] - //create vertical scroll bar - vertical_sbar_data.x=5; - vertical_sbar_data.y=26; - vertical_sbar_data.width=16; - vertical_sbar_data.height=150; - vertical_sbar_data.ruller_size=0.5;//size of ruler E [0,1] - vertical_sbar_data.ruller_pos=0.05;//ruler position E [0,1] - vertical_sbar_data.ruller_step=0.1;//step of change ruler pos after press of button E [0,1] - - //create horizontal and vertical scroll bars - ScrollBarH=CreateHorizontalScrollBar(&horizontal_sbar_data); - ScrollBarV=CreateVerticalScrollBar(&vertical_sbar_data); - //set callback functions for scroll bars - id1=SetCallbackFunction(ScrollBarH,SCROLLBAR_CHANGED_EVENT,&ScrollStateH,NULL); - id2=SetCallbackFunction(ScrollBarV,SCROLLBAR_CHANGED_EVENT,&ScrollStateV,NULL); - //pack scroll bars in window - PackControls(window,ScrollBarH); - PackControls(window,ScrollBarV); - //start minl libGUI loop - LibGUImain(window); -} diff --git a/programs/develop/new libGUI_C/examples/src/scrolled_window.c b/programs/develop/new libGUI_C/examples/src/scrolled_window.c deleted file mode 100755 index 6aa550d620..0000000000 --- a/programs/develop/new libGUI_C/examples/src/scrolled_window.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - test libGUI library -*/ -#include "stdarg.h" -#include "libGUI.h" -#include "stdio.h" -#include "stdlib.h" -#include "string.h" - -void callback_func_delete_window(header_t *control,void *data) -{ - QuitLibGUI((parent_t*)control); -} - -void callback_func(header_t *control,void *data) -{ - printf("\npressed button with ID=%d control=%d",(int)control->ctrl_ID,(int)control); -} - -int main(int argc, char *argv[]) -{ - parent_t *window; - gui_button_data_t button_data; - gui_button_t *button; - gui_scrolled_window_data_t scroll_win_data; - gui_scrolled_window_t *ScrollWin; - int i,j; - static char txt[20]; - - //load libGUI library - LoadLibGUI(NULL); - //create main window - window=CreateWindow(); - //change size of window - SetWindowSizeRequest(window,270,282); - - //create scrolled window - scroll_win_data.x=5; - scroll_win_data.y=5; - scroll_win_data.width=250; - scroll_win_data.height=250; - ScrollWin=CreateScrolledWindow(&scroll_win_data); - - //create buttons - for(j=1;j<=10;j++) - { - for(i=1;i<=10;i++) - { - button_data.x=10+(i-1)*75; - button_data.y=10+(j-1)*25; - button_data.width=70; - button_data.height=20; - - snprintf(txt,20,"(%d,%d)",j,i); - button=CreateButtonWithText(&button_data,txt); - - SetCallbackFunction(button,BUTTON_PRESSED_EVENT,&callback_func,NULL); - ScrolledWindowPackControls(ScrollWin,button); - } - } - //set callback function for button close window - SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL); - //pack scrolled window in window - PackControls(window,ScrollWin); - //start main libGUI loop - LibGUImain(window); -} diff --git a/programs/develop/new libGUI_C/examples/src/text.c b/programs/develop/new libGUI_C/examples/src/text.c deleted file mode 100644 index 6d42072806..0000000000 --- a/programs/develop/new libGUI_C/examples/src/text.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - hello world example -*/ - -#include "libGUI.h" - -#define TRUE 1 -#define FALSE 0 - -void callback_func_delete_window(header_t *control,void *data) -{ - QuitLibGUI((parent_t*)control); -} - -int main(int argc, char *argv[]) -{ - parent_t *window; - gui_text_data_t txtdata; - gui_text_t *text; - - //load libGUI library - LoadLibGUI(NULL);//load from default system path to library - //create main window - window=CreateWindow(); - //change size of window - SetWindowSizeRequest(window,92,46); - //set callback function for button close window - SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL); - //create control text - txtdata.x=5; - txtdata.y=5; - txtdata.font=NULL;//use default system libGUI font - txtdata.background=TRUE;//use background for text - txtdata.color=0xffffff;//text color - txtdata.background_color=0xff8000;//background color - txtdata.text="Hello world!"; - text=CreateText(&txtdata); - - //pack control text in window - PackControls(window,text); - - //start libGUI main loop - LibGUImain(window); -} - diff --git a/programs/develop/sdk/trunk/libGUI_SDK/README.txt b/programs/develop/sdk/trunk/libGUI_SDK/README.txt deleted file mode 100644 index 748a7fbc4b..0000000000 --- a/programs/develop/sdk/trunk/libGUI_SDK/README.txt +++ /dev/null @@ -1,2 +0,0 @@ -C file compile by GCC. -asm file compile by FASM diff --git a/programs/develop/sdk/trunk/libGUI_SDK/cofflib.asm b/programs/develop/sdk/trunk/libGUI_SDK/cofflib.asm deleted file mode 100644 index bc3e61edc1..0000000000 --- a/programs/develop/sdk/trunk/libGUI_SDK/cofflib.asm +++ /dev/null @@ -1,73 +0,0 @@ -format ELF -include 'proc32.inc' -section '.text' executable - -public _ksys_cofflib_load -public _ksys_cofflib_getproc - -proc _ksys_cofflib_load stdcall, name:dword - - mov eax, 68 - mov ebx, 19 - mov ecx, [name] - int 0x40 - ret -endp - -proc _ksys_cofflib_getproc stdcall, export:dword,name:dword - - mov ebx,[export] - - next_name_check: - - mov ecx,[ebx] - test ecx,ecx - jz end_export - - ;cmp export string with name - mov esi,[name] - xor edi,edi - next_simbol_check: - - xor eax,eax - mov al,[ecx] - test al,al - jz exit_check_simbol - - xor edx,edx - mov dl,[esi] - cmp al,dl - je simbols_equvalent - add edi,1 - jmp exit_check_simbol - simbols_equvalent: - - ;pushad - - ;mov cl,al - ;mov ebx,1 - ;mov eax,63 - ;int 0x40 - - ;popad - - add ecx,1 - add esi,1 - jmp next_simbol_check - exit_check_simbol: - - test edi,edi - jnz function_not_finded - mov eax,[ebx+4] - jmp end_export - function_not_finded: - - add ebx,8 - - jmp next_name_check - - end_export: - - ret -endp - diff --git a/programs/develop/sdk/trunk/libGUI_SDK/kolibrisys.h b/programs/develop/sdk/trunk/libGUI_SDK/kolibrisys.h deleted file mode 100644 index aed4aed79b..0000000000 --- a/programs/develop/sdk/trunk/libGUI_SDK/kolibrisys.h +++ /dev/null @@ -1,195 +0,0 @@ -#ifndef kolibrisys_h -#define kolibrisys_h -/* -#ifdef GNUC -#define stdcall __stdcall -#define cdecl __cdecl -#else -#define stdcall ((__stdcall)) -#define cdecl ((__cdecl)) -#endif -*/ -//#ifdef GNUC -//#define stdcall __stdcall -//#else -#define cdecl __attribute__ ((cdecl)) -#define stdcall __attribute__ ((stdcall)) -//#endif - -typedef unsigned int dword; -typedef unsigned char byte; -typedef unsigned short word; - -typedef unsigned int fpos_t; -typedef unsigned int size_t; - -typedef struct process_table_entry{ - int cpu_usage; //+0 - int window_pos_info; //+4 - short int reserved1; //+8 - char name[12]; //+10 - int memstart; //+22 - int memused; //+26 - int pid; //+30 - int winx_start; //+34 - int winy_start; //+38 - int winx_size; //+42 - int winy_size; //+46 - short int slot_info; //+50 - short int reserved2; //+52 - int clientx; //+54 - int clienty; //+58 - int clientwidth; //+62 - int clientheight; //+66 - unsigned char window_state;//+70 - char reserved3[1024-71]; //+71 -}__attribute__((packed)); - -//----------------------------------------------------------------------------------- -//------------------------KolibriOS system acces to files---------------------------- -//----------------------------------------------------------------------------------- -extern dword stdcall _ksys_get_filesize(char *filename); -extern dword stdcall _ksys_readfile(char *filename,dword pos,dword blocksize,void *data); -extern dword stdcall _ksys_rewritefile(char *filename,dword blocksize,void *data); -extern dword stdcall _ksys_appendtofile(char *filename,dword pos,dword blocksize,void *data); -//----------------------------------------------------------------------------------- - -//----------------------Run program--------------------------------------------------- -extern void stdcall _ksys_run_program(char* filename,char* parameters); -//------------------------------------------------------------------------------------ - -//--------------------Debug output--------------------------------------------------- -extern void stdcall _ksys_debug_out(int c); -extern void stdcall debug_out_str(char* str); -//----------------------------------------------------------------------------------- - -//--------------------------Mouse state---------------------------------------------- -extern int stdcall _ksys_GetMouseXY(void); -extern int stdcall _ksys_GetMouseButtonsState(void); -//----------------------------------------------------------------------------------- - -//--------------------------get skin height------------------------------------------ -extern int stdcall _ksys_get_skin_height(void); -//----------------------------------------------------------------------------------- - -//----------------------------background--------------------------------------------- -extern void stdcall _ksys_set_background_size(int xsize,int ysize); -extern void stdcall _ksys_write_background_mem(int pos,int color); -extern void stdcall _ksys_draw_background(void); -extern void stdcall _ksys_set_background_draw_type(int type); -extern void stdcall _ksys_background_blockmove(void* src,int bgr_pos, int count); -//----------------------------------------------------------------------------------- - -//----------------------------functionf for draw window,lines.bar,etc.--------------- -extern void stdcall _ksys_draw_window(int xcoord,int ycoord, int xsize, - int ysize,int workcolor,int type, - int captioncolor,int windowtype,int bordercolor); -extern void stdcall _ksys_window_redraw(int status); -extern int stdcall _ksys_putpixel(int x,int y,int color); -extern void stdcall _ksys_draw_bar(int x, int y, int xsize, int ysize, int color); -extern void stdcall _ksys_line(int x1,int y1,int x2,int y2,int color); -extern void stdcall _ksys_putimage(int x, int y, int xsize, int ysize, void* image); -//----------------------------------------------------------------------------------- - -//--------------------------write text(system fonts 6x9)----------------------------- -extern void stdcall _ksys_write_text(int x,int y,int color,char* text,int len); -//----------------------------------------------------------------------------------- - -//------------------ get screen size and bytes per pixel--------------------------- -extern int stdcall _ksys_get_screen_size(int* x,int* y); -extern void stdcall _ksys_dga_get_resolution(int* xres, int* yres, int* bpp, int* bpscan); -//----------------------------------------------------------------------------------- - -//-------------------------------craete thread--------------------------------------- -extern void* stdcall _ksys_start_thread(void (* func_ptr)(void),int stack_size,int* pid); -//----------------------------------------------------------------------------------- - -//------------------system button(Old function. Better use libGUI functions.)-------- -extern void stdcall _ksys_make_button(int x, int y, int xsize, int ysize, int id, int color); -extern int stdcall _ksys_get_button_id(void); //get state of system button -//------------------------------------------------------------------------------------ - -//----------------------system clock(in 1/100 sec.) and date-------------------------- -extern int stdcall _ksys_get_system_clock(void); -extern int stdcall _ksys_get_date(void); -//------------------------------------------------------------------------------------ - -//-------------------------system delay(in 1/100 sec.)------------------------------- -extern void stdcall _ksys_delay(int m); -//----------------------------------------------------------------------------------- - -//------------------------system events---------------------------------------------- -extern int stdcall _ksys_wait_for_event_infinite(void); -extern int stdcall _ksys_check_for_event(void); -extern int stdcall _ksys_wait_for_event(int time); -extern void stdcall _ksys_set_wanted_events(int ev); -//----------------------------------------------------------------------------------- - -//----------------------------system exit program------------------------------------ -extern void stdcall _ksys_exit(void); -//----------------------------------------------------------------------------------- - -//-----------------------------system IPC send message------------------------------- -extern void stdcall _ksys_send_message(int pid, void* msg, int size); -//----------------------------------------------------------------------------------- - -//---------------------------system work with IRQ from user mode--------------------- -extern void stdcall _ksys_define_receive_area(void* area, int size); -extern int stdcall _ksys_get_irq_owner(int irq); -extern int stdcall _ksys_get_data_read_by_irq(int irq, int* size, void* data); -extern int stdcall _ksys_send_data_to_device(int port, unsigned char val); -extern int stdcall _ksys_receive_data_from_device(int port,unsigned char* data); -extern void stdcall _ksys_program_irq(void* intrtable, int irq); -extern void stdcall _ksys_reserve_irq(int irq); -extern void stdcall _ksys_free_irq(int irq); -//---------------------------------------------------------------------------------- - -//----------------------------system reserve diapason of ports---------------------- -extern int stdcall _ksys_reserve_port_area(int start,int end); -extern int stdcall _ksys_free_port_area(int start,int end); -//---------------------------------------------------------------------------------- - -//-------------functions get key and set keyboard mode------------------------------ -extern int stdcall _ksys_get_key(void); -extern void stdcall _ksys_set_keyboard_mode(int mode); -//---------------------------------------------------------------------------------- - -//--------------simple work with MPU401 sound device--------------------------------- -extern void stdcall _ksys_midi_reset(void); -extern void stdcall _ksys_midi_send(int data); -//----------------------------------------------------------------------------------- - -//--------------------------acces to PCI BUS from user mode--------------------------- -extern int stdcall _ksys_get_pci_version(void); -extern int stdcall _ksys_get_last_pci_bus(void); -extern int stdcall _ksys_get_pci_access_mechanism(void); -extern int stdcall _ksys_pci_read_config_byte(int bus,int dev,int fn,int reg); -extern int stdcall _ksys_pci_read_config_word(int bus,int dev,int fn,int reg); -extern int stdcall _ksys_pci_read_config_dword(int bus,int dev,int fn,int reg); -extern int stdcall _ksys_pci_write_config_byte(int bus,int dev,int fn,int reg,int value); -extern int stdcall _ksys_pci_write_config_word(int bus,int dev,int fn,int reg,int value); -extern int stdcall _ksys_pci_write_config_value(int bus,int dev,int fn,int reg,int value); -//-------------------------------------------------------------------------------------- - -//------------------------Process information-------------------------------------- -extern int stdcall _ksys_get_process_table(struct process_table_entry *proctab,int pid); //if pid=-1 than get info about him. -//--------------------------------------------------------------------------------- - -//-----------------Old functions for work with sound(Sound Blaster only).--------- -extern void stdcall _ksys_sound_load_block(void* blockptr); -extern void stdcall _ksys_sound_play_block(void); -extern void stdcall _ksys_sound_set_channels(int channels); -extern void stdcall _ksys_sound_set_data_size(int size); -extern void stdcall _ksys_sound_set_frequency(int frequency); -//-------------------------------------------------------------------------------- - -//------------------------------system speaker(integrated speaker)---------------- -extern void stdcall _ksys_sound_speaker_play(void* data); -//-------------------------------------------------------------------------------- - -//------------------function for work with Dinamic Link Librarys(DLL)-------------- -extern dword* stdcall _ksys_cofflib_load(char* name); -extern char* stdcall _ksys_cofflib_getproc(void* exp,char* sz_name); -//--------------------------------------------------------------------------------- - -#endif diff --git a/programs/develop/sdk/trunk/libGUI_SDK/libGUI.c b/programs/develop/sdk/trunk/libGUI_SDK/libGUI.c deleted file mode 100644 index abfaef9a2e..0000000000 --- a/programs/develop/sdk/trunk/libGUI_SDK/libGUI.c +++ /dev/null @@ -1,69 +0,0 @@ - -#include "kolibrisys.h" -#include "libGUI.h" - -char* sys_libGUI_path="/sys/lib/libGUI.obj"; - -void link_libGUI(char *exp){ - - char name_DestroyControl[]={"DestroyControl"}; - char name_SendMessage[]={"SendMessage"}; - char name_Version[]={"Version"}; - char name_ResizeComponent[]={"ResizeComponent"}; - char name_MoveComponent[]={"MoveComponent"}; - char name_ActivateTrapForSpecializedMessage[]={"ActivateTrapForSpecializedMessage"}; - char name_CraeteButton[]={"CraeteButton"}; - char name_CraeteScroller[]={"CraeteScroller"}; - char name_CraeteBookmark[]={"CraeteBookmark"}; - char name_CraeteImage[]={"CraeteImage"}; - char name_CraeteText[]={"CraeteText"}; - char name_CraeteNumber[]={"CraeteNumber"}; - char name_CraeteCheckbox[]={"CraeteCheckbox"}; - char name_CraeteEditbox[]={"CraeteEditbox"}; - char name_CraeteProgressbar[]={"CraeteProgressbar"}; - - DestroyControl=(void stdcall (*)(void *control)) - _ksys_cofflib_getproc(exp,name_DestroyControl); - SendMessage=(void stdcall (*)(struct HEADER *Parend,struct MESSAGE *Message)) - _ksys_cofflib_getproc(exp,name_SendMessage); - Version=(int stdcall (*)(void)) - _ksys_cofflib_getproc(exp,name_Version); - ResizeComponent=(void stdcall(*)(void *Control,int new_sizex,int new_sizey)) - _ksys_cofflib_getproc(exp,name_ResizeComponent); - MoveComponent=(void stdcall(*)(void *Control,int new_x,int new_y)) - _ksys_cofflib_getproc(exp,name_MoveComponent); - ActivateTrapForSpecializedMessage=(void stdcall(*)(void *Control,int new_x,int new_y)) - _ksys_cofflib_getproc(exp,name_ActivateTrapForSpecializedMessage); - CraeteButton=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteButton); - CraeteScroller=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteScroller); - CraeteBookmark=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteBookmark); - CraeteImage=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteImage); - CraeteText=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteText); - CraeteNumber=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteNumber); - CraeteCheckbox=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteCheckbox); - CraeteEditbox=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteEditbox); - CraeteProgressbar=(void* stdcall (*)(struct HEADER *Parend,void *Control)) - _ksys_cofflib_getproc(exp,name_CraeteProgressbar); - -} - -int Init_libGUI(void) -{ - char *Export; - - Export=(char *)_ksys_cofflib_load(sys_libGUI_path); - if (Export==0) return CANNOT_LOAD_LIBGUI; - - link_libGUI(Export); - return(0); - -} - diff --git a/programs/develop/sdk/trunk/libGUI_SDK/libGUI.h b/programs/develop/sdk/trunk/libGUI_SDK/libGUI.h deleted file mode 100644 index ef95a2390d..0000000000 --- a/programs/develop/sdk/trunk/libGUI_SDK/libGUI.h +++ /dev/null @@ -1,369 +0,0 @@ -/* - structures for work with libGUI -*/ - -///////////////////////////////////////////////////////////////// - -#define CANNOT_LOAD_LIBGUI 100 -#define PAREND_SIZE 44 -#define MESSAGE_SIZE 16 - -#define MESSAGE_FULL_REDRAW_ALL 1 -#define MESSAGE_KEYS_EVENTS 2 -#define MESSAGE_SPECIALIZED 3 -#define MESSAGE_MOUSE_EVENTS 6 - -#define BUTTON_TYPE_2D_WITH_TEXT (1+128) -#define BUTTON_TYPE_2D_WITH_PICTURE (2+128) -#define BUTTON_TYPE_2D_WITH_TEXT_PICTURE (4+128) -#define BUTTON_TYPE_NO_DRAW (8+128) -#define BUTTON_TYPE_3D_WITH_TEXT (1+16+128) -#define BUTTON_TYPE_3D_WITH_PICTURE (2+16+128) -#define BUTTON_TYPE_3D_WITH_TEXT_PICTURE (4+16+128) - -#define TEXT_TYPE_NO_DRAW (1) -#define TEXT_TYPE_WITH_BACKGROUND (128+2) -#define TEXT_TYPE_SYSTEM_6X9 (128) - -#define NUMBER_NO_DRAW (1) -#define NUMBER_INTEGER (128) -#define NUMBER_FLOAT (128+2) - -#define IMAGE_TYPE_1 (128) - -#define PROGRESS_BAR_TYPE_1 (128) - -#define BOOKMARK_TYPE_1 (128) - -/////////////////////////////////////////////////////////////////// -#define BUTTON_STATE_CROSS (1) -#define BUTTON_STATE_CROSS_PRESS (3) - - -//////////////////////////////////////////////////////////////// -// header of control -//////////////////////////////////////////////////////////////// - -struct HEADER -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - -}__attribute__((packed)); - -//////////////////////////////////////////////////////////////// -// message -//////////////////////////////////////////////////////////////// - -struct MESSAGE -{ - dword type; - dword arg1; - dword arg2; - dword arg3; -}__attribute__((packed)); - -//////////////////////////////////////////////////////////////// -// button -//////////////////////////////////////////////////////////////// - -struct ControlButton -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - word x; - word y; - word width; - word height; - dword image; - word imageX; - word imageY; - word imageSizeX; - word imageSizeY; - dword transparentColor; - dword text; - word textX; - word textY; - dword textcolor; - dword color1; - dword color2; - word mouseX; - word mouseY; -}__attribute__((packed)); - -typedef struct InfoForButton -{ - byte type; //0 - byte flag; //1 - word x; //2 - word y; //4 - word width; //6 - word height; //8 - dword image; //10 - word imageX; //14 - word imageY; //16 - word imageSizeX; //18 - word imageSizeY; //20 - dword transparentColor;//24 - dword text; //28 - word textX; //32 - word textY; //34 - dword textcolor; //36 - dword color1; //40 - dword color2; - word mouseX; - word mouseY; -}__attribute__((packed)); - -//////////////////////////////////////////////////////////////// -// scroller -//////////////////////////////////////////////////////////////// - -struct ControlScroller -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - word x; - word y; - word length; - dword color1; - float size; - float pos; - word buttons_flags; - dword ChildButton1; - dword ChildButton2; - word MouseX; - word MouseY; -}__attribute__((packed)); - -struct InfoForScroller -{ - byte type; - word x; - word y; - word length; - dword color1; - float size; - float pos; - word buttons_flags; - dword ChildButton1; - dword ChildButton2; - word MouseX; - word MouseY; -}__attribute__((packed)); - -//////////////////////////////////////////////////////////////// -// progressbar -//////////////////////////////////////////////////////////////// - -struct ControlProgressbar -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword color1; - dword color2; - dword x; - dword y; - dword sizex; - dword sizey; - float progress; - dword color3; -}__attribute__((packed)); - -struct InfoForProgressbar -{ - byte type; - byte flag; - dword color1; - dword color2; - dword x; - dword y; - dword sizex; - dword sizey; - float progress; - dword color3; -}__attribute__((packed)); - -//////////////////////////////////////////////////////////////// -// image -//////////////////////////////////////////////////////////////// - -struct ControlImage -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword color1; - dword x; - dword y; - dword sizex; - dword sizey; - dword pointer; -}__attribute__((packed)); - -struct InfoForImage -{ - byte type; - byte flag; - dword color1; - dword x; - dword y; - dword sizex; - dword sizey; - dword pointer; -}__attribute__((packed)); - -//////////////////////////////////////////////////////////////// -// text -//////////////////////////////////////////////////////////////// - -struct ControlText -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword color1; - dword x; - dword y; - dword length; - dword text; - dword background_color; -}__attribute__((packed)); - -struct InfoForText -{ - byte type; - byte flag; - dword color1; - dword x; - dword y; - dword length; - dword text; - dword background_color; -}__attribute__((packed)); - -//////////////////////////////////////////////////////////////// -// number -//////////////////////////////////////////////////////////////// - -struct ControlNumber -{ - dword ctrl_proc; - dword *ctrl_fd; - dword *ctrl_bk; - dword *child_fd; - dword *child_bk; - dword *parend; - dword ctrl_x; - dword ctrl_y; - dword ctrl_sizex; - dword ctrl_sizey; - dword ctrl_ID; - - byte type; - byte flag; - dword color1; - dword x; - dword y; - float number; - dword format; -}__attribute__((packed)); - -struct InfoForNumber -{ - byte type; - byte flag; - dword color1; - dword x; - dword y; - float number; - dword format; -}__attribute__((packed)); - - -///////////////////////////////////////////////////////////////// -// libGUI functions -///////////////////////////////////////////////////////////////// - -void stdcall (*DestroyControl)(void *control); -void stdcall (*SendMessage)(struct HEADER *Parend,struct MESSAGE *Message); -int stdcall (*Version)(void); -void stdcall (*ResizeComponent)(void *Control,int new_sizex,int new_sizey); -void stdcall (*MoveComponent)(void *Control,int new_x,int new_y); -void stdcall (*ActivateTrapForSpecializedMessage)(void *Control); -void* stdcall (*CraeteButton)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteScroller)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteBookmark)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteImage)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteText)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteNumber)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteCheckbox)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteEditbox)(struct HEADER *Parend,void *Control); -void* stdcall (*CraeteProgressbar)(struct HEADER *Parend,void *Control); - diff --git a/programs/develop/sdk/trunk/libGUI_SDK/proc32.inc b/programs/develop/sdk/trunk/libGUI_SDK/proc32.inc deleted file mode 100644 index 98a1bd3342..0000000000 --- a/programs/develop/sdk/trunk/libGUI_SDK/proc32.inc +++ /dev/null @@ -1,268 +0,0 @@ - -; Macroinstructions for defining and calling procedures - -macro stdcall proc,[arg] ; directly call STDCALL procedure - { common - if ~ arg eq - reverse - pushd arg - common - end if - call proc } - -macro invoke proc,[arg] ; indirectly call STDCALL procedure - { common - if ~ arg eq - reverse - pushd arg - common - end if - call [proc] } - -macro ccall proc,[arg] ; directly call CDECL procedure - { common - size@ccall = 0 - if ~ arg eq - reverse - pushd arg - size@ccall = size@ccall+4 - common - end if - call proc - if size@ccall - add esp,size@ccall - end if } - -macro cinvoke proc,[arg] ; indirectly call CDECL procedure - { common - size@ccall = 0 - if ~ arg eq - reverse - pushd arg - size@ccall = size@ccall+4 - common - end if - call [proc] - if size@ccall - add esp,size@ccall - end if } - -macro proc [args] ; define procedure - { common - match name params, args> - \{ define@proc name, \{ prologue name,flag,parmbytes,localbytes,reglist \} - macro locals - \{ virtual at ebp-localbytes+current - macro label . \\{ deflocal@proc .,:, \\} - struc db [val] \\{ \common deflocal@proc .,db,val \\} - struc dw [val] \\{ \common deflocal@proc .,dw,val \\} - struc dp [val] \\{ \common deflocal@proc .,dp,val \\} - struc dd [val] \\{ \common deflocal@proc .,dd,val \\} - struc dt [val] \\{ \common deflocal@proc .,dt,val \\} - struc dq [val] \\{ \common deflocal@proc .,dq,val \\} - struc rb cnt \\{ deflocal@proc .,rb cnt, \\} - struc rw cnt \\{ deflocal@proc .,rw cnt, \\} - struc rp cnt \\{ deflocal@proc .,rp cnt, \\} - struc rd cnt \\{ deflocal@proc .,rd cnt, \\} - struc rt cnt \\{ deflocal@proc .,rt cnt, \\} - struc rq cnt \\{ deflocal@proc .,rq cnt, \\} \} - macro endl - \{ purge label - restruc db,dw,dp,dd,dt,dq - restruc rb,rw,rp,rd,rt,rq - restruc byte,word,dword,pword,tword,qword - current = $-(ebp-localbytes) - end virtual \} - macro ret operand - \{ match any, operand \\{ retn operand \\} - match , operand \\{ match epilogue:reglist, epilogue@proc: - \\\{ epilogue name,flag,parmbytes,localbytes,reglist \\\} \\} \} - macro finish@proc \{ localbytes = (((current-1) shr 2)+1) shl 2 - end if \} } - -macro defargs@proc [arg] - { common - if ~ arg eq - forward - local ..arg,current@arg - match argname:type, arg - \{ current@arg equ argname - label ..arg type - argname equ ..arg - if dqword eq type - dd ?,?,?,? - else if tbyte eq type - dd ?,?,? - else if qword eq type | pword eq type - dd ?,? - else - dd ? - end if \} - match =current@arg,current@arg - \{ current@arg equ arg - arg equ ..arg - ..arg dd ? \} - common - args@proc equ current@arg - forward - restore current@arg - common - end if } - -macro deflocal@proc name,def,[val] - { common - match vars, all@vars \{ all@vars equ all@vars, \} - all@vars equ all@vars name - forward - local ..var,..tmp - ..var def val - match =?, val \{ ..tmp equ \} - match any =dup (=?), val \{ ..tmp equ \} - match tmp : value, ..tmp : val - \{ tmp: end virtual - initlocal@proc ..var,def value - virtual at tmp\} - common - match first rest, ..var, \{ name equ first \} } - -macro initlocal@proc name,def - { virtual at name - def - size@initlocal = $ - name - end virtual - position@initlocal = 0 - while size@initlocal > position@initlocal - virtual at name - def - if size@initlocal - position@initlocal < 2 - current@initlocal = 1 - load byte@initlocal byte from name+position@initlocal - else if size@initlocal - position@initlocal < 4 - current@initlocal = 2 - load word@initlocal word from name+position@initlocal - else - current@initlocal = 4 - load dword@initlocal dword from name+position@initlocal - end if - end virtual - if current@initlocal = 1 - mov byte [name+position@initlocal],byte@initlocal - else if current@initlocal = 2 - mov word [name+position@initlocal],word@initlocal - else - mov dword [name+position@initlocal],dword@initlocal - end if - position@initlocal = position@initlocal + current@initlocal - end while } - -macro endp - { purge ret,locals,endl - finish@proc - purge finish@proc - restore regs@proc - match all,args@proc \{ restore all \} - restore args@proc - match all,all@vars \{ restore all \} } - -macro local [var] - { common - locals - forward done@local equ - match varname[count]:vartype, var - \{ match =BYTE, vartype \\{ varname rb count - restore done@local \\} - match =WORD, vartype \\{ varname rw count - restore done@local \\} - match =DWORD, vartype \\{ varname rd count - restore done@local \\} - match =PWORD, vartype \\{ varname rp count - restore done@local \\} - match =QWORD, vartype \\{ varname rq count - restore done@local \\} - match =TBYTE, vartype \\{ varname rt count - restore done@local \\} - match =DQWORD, vartype \\{ label varname dqword - rq count+count - restore done@local \\} - match , done@local \\{ virtual - varname vartype - end virtual - rb count*sizeof.\#vartype - restore done@local \\} \} - match :varname:vartype, done@local:var - \{ match =BYTE, vartype \\{ varname db ? - restore done@local \\} - match =WORD, vartype \\{ varname dw ? - restore done@local \\} - match =DWORD, vartype \\{ varname dd ? - restore done@local \\} - match =PWORD, vartype \\{ varname dp ? - restore done@local \\} - match =QWORD, vartype \\{ varname dq ? - restore done@local \\} - match =TBYTE, vartype \\{ varname dt ? - restore done@local \\} - match =DQWORD, vartype \\{ label varname dqword - dq ?,? - restore done@local \\} - match , done@local \\{ varname vartype - restore done@local \\} \} - match ,done@local - \{ var - restore done@local \} - common - endl }