#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; } } }