forked from KolibriOS/kolibrios
small SDK for libGUI
git-svn-id: svn://kolibrios.org@699 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
25713b7524
commit
b66406549f
2
programs/develop/sdk/trunk/libGUI_SDK/README.txt
Normal file
2
programs/develop/sdk/trunk/libGUI_SDK/README.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
C file compile by GCC.
|
||||||
|
asm file compile by FASM
|
73
programs/develop/sdk/trunk/libGUI_SDK/cofflib.asm
Normal file
73
programs/develop/sdk/trunk/libGUI_SDK/cofflib.asm
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
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
|
||||||
|
|
195
programs/develop/sdk/trunk/libGUI_SDK/kolibrisys.h
Normal file
195
programs/develop/sdk/trunk/libGUI_SDK/kolibrisys.h
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
#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
|
69
programs/develop/sdk/trunk/libGUI_SDK/libGUI.c
Normal file
69
programs/develop/sdk/trunk/libGUI_SDK/libGUI.c
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
#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);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
369
programs/develop/sdk/trunk/libGUI_SDK/libGUI.h
Normal file
369
programs/develop/sdk/trunk/libGUI_SDK/libGUI.h
Normal file
@ -0,0 +1,369 @@
|
|||||||
|
/*
|
||||||
|
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);
|
||||||
|
|
268
programs/develop/sdk/trunk/libGUI_SDK/proc32.inc
Normal file
268
programs/develop/sdk/trunk/libGUI_SDK/proc32.inc
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
|
||||||
|
; 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,<params \} }
|
||||||
|
|
||||||
|
prologue@proc equ prologuedef
|
||||||
|
|
||||||
|
macro prologuedef procname,flag,parmbytes,localbytes,reglist
|
||||||
|
{ if parmbytes | localbytes
|
||||||
|
push ebp
|
||||||
|
mov ebp,esp
|
||||||
|
if localbytes
|
||||||
|
sub esp,localbytes
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
irps reg, reglist \{ push reg \} }
|
||||||
|
|
||||||
|
epilogue@proc equ epiloguedef
|
||||||
|
|
||||||
|
macro epiloguedef procname,flag,parmbytes,localbytes,reglist
|
||||||
|
{ irps reg, reglist \{ reverse pop reg \}
|
||||||
|
if parmbytes | localbytes
|
||||||
|
leave
|
||||||
|
end if
|
||||||
|
if (flag and 10000b) | (parmbytes=0)
|
||||||
|
retn
|
||||||
|
else
|
||||||
|
retn parmbytes
|
||||||
|
end if }
|
||||||
|
|
||||||
|
macro define@proc name,statement
|
||||||
|
{ local params,flag,regs,parmbytes,localbytes,current
|
||||||
|
if used name
|
||||||
|
name:
|
||||||
|
match =stdcall args, statement \{ params equ args
|
||||||
|
flag = 11b \}
|
||||||
|
match =stdcall, statement \{ params equ
|
||||||
|
flag = 11b \}
|
||||||
|
match =c args, statement \{ params equ args
|
||||||
|
flag = 10001b \}
|
||||||
|
match =c, statement \{ params equ
|
||||||
|
flag = 10001b \}
|
||||||
|
match =params, params \{ params equ statement
|
||||||
|
flag = 0 \}
|
||||||
|
virtual at ebp+8
|
||||||
|
match =uses reglist=,args, params \{ regs equ reglist
|
||||||
|
params equ args \}
|
||||||
|
match =regs =uses reglist, regs params \{ regs equ reglist
|
||||||
|
params equ \}
|
||||||
|
match =regs, regs \{ regs equ \}
|
||||||
|
match =,args, params \{ defargs@proc args \}
|
||||||
|
match =args@proc args, args@proc params \{ defargs@proc args \}
|
||||||
|
parmbytes = $ - (ebp+8)
|
||||||
|
end virtual
|
||||||
|
name # % = parmbytes/4
|
||||||
|
all@vars equ
|
||||||
|
current = 0
|
||||||
|
match prologue:reglist, prologue@proc:<regs> \{ 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:<regs>
|
||||||
|
\\\{ 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 }
|
Loading…
Reference in New Issue
Block a user