kolibrios/programs/develop/libGUI/examples/C example/interface.c
andrew_programmer 6cdf720037 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.

git-svn-id: svn://kolibrios.org@648 a494cfbc-eb01-0410-851d-a64ba20cac60
2007-10-15 10:45:36 +00:00

1271 lines
29 KiB
C

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