kolibrios/programs/develop/libGUI/examples/C example/interface.c

1271 lines
29 KiB
C
Raw Normal View History

#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;i<CONTROLS_NUMBER_POS+4;i++)
{
controls[i]=*ptr2;
ptr2=ptr2+2;
}
ptr2=44+58+64+16+56+4+(dword)Bookmark1;
for(i=CONTROLS_NUMBER_POS+4;i<CONTROLS_NUMBER_POS+4+7;i++)
{
controls[i]=*ptr2;
ptr2=ptr2+2;
}
ptr2=44+58+64+16+112+16+128+4+(dword)Bookmark1;
for(i=CONTROLS_NUMBER_POS+4+7;i<CONTROLS_NUMBER_POS+4+7+16;i++)
{
controls[i]=*ptr2;
ptr2=ptr2+2;
}
ptr2=44+58+64+16+112+16+256+16+32+4+(dword)Bookmark1;
for(i=CONTROLS_NUMBER_POS+4+7+16;i<CONTROLS_NUMBER_POS+4+7+16+4;i++)
{
controls[i]=*ptr2;
ptr2=ptr2+2;
}
ptr2=44+78+32+4+(dword)Bookmark2;
for(i=CONTROLS_NUMBER_POS+4+7+16+4;i<CONTROLS_NUMBER_POS+4+7+16+4+4;i++)
{
controls[i]=*ptr2;
ptr2=ptr2+2;
}
free(InfoButtonCraete);
free(InfoButtonAutoColibrovka);
free(InfoButtonCombineSpectras);
free(InfoBookmark1);
free(InfoBookmark2);
free(InfoImage);
free(InfoText);
free(InfoProgressbar1);
}
int main(int argc, char **argv)
{
char exit_status;
struct WINDOW *win;
struct HEADER *Parend;
struct MESSAGE *Message;
struct ControlProgressbar *Progressbar1;
struct InfoForProgressbar *InfoProgressbar1;
struct ControlBookmark1 *Bookmark1;
struct ControlBookmark2 *Bookmark2;
struct ControlImage *Image;
struct process_table_entry *ProcessInformation;
dword *controls;
int new_sizex1;
int new_sizey1;
int new_sizex2;
int new_sizey2;
int new_sizex3;
int new_sizey3;
int new_sizex4;
int new_sizey4;
int new_x;
int new_y;
int skin_height;
dword x,y,mouse_buttons;
float p;
_ksys_set_wanted_events(0x67);
Init_libGUI();
win=malloc(16);
win->posx=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;
}
}
}