C Layer: code refactoring

git-svn-id: svn://kolibrios.org@6457 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Serhii Sakhno 2016-06-30 16:10:04 +00:00
parent 38cd3c4ee4
commit 407fab40d9
13 changed files with 148 additions and 105 deletions

View File

@ -1,4 +1,4 @@
#include "kolibri_gui.h"
#include <kolibri_gui.h>
int main()
{
@ -12,10 +12,10 @@ int main()
unsigned int gui_event = KOLIBRI_EVENT_REDRAW;
oskey_t key;
struct kolibri_window *main_window = kolibri_new_window(50, 50, 400, 100, "BoardMsg: OpenDialog 0.12");
struct check_box *checkbox = kolibri_new_check_box(20, 40, 12, 12, "Append BOARDMSG to entered message.");
struct edit_box *textbox = kolibri_new_edit_box(20, 55, 40);
struct kolibri_button *button = kolibri_new_button(310, 55, 24, 14, 0x21, kolibri_color_table.color_work_button);
kolibri_window *main_window = kolibri_new_window(50, 50, 400, 100, "BoardMsg: OpenDialog 0.12");
check_box *checkbox = kolibri_new_check_box(20, 40, 12, 12, "Append BOARDMSG to entered message.");
edit_box *textbox = kolibri_new_edit_box(20, 55, 40);
kolibri_button *button = kolibri_new_button(310, 55, 24, 14, 0x21, kolibri_color_table.color_work_button);
kolibri_window_add_element(main_window, KOLIBRI_EDIT_BOX, textbox);
kolibri_window_add_element(main_window, KOLIBRI_CHECK_BOX, checkbox);
@ -57,7 +57,7 @@ int main()
debug_board_write_str(textbox->text);
debug_board_write_str("\n");
break;
case 0x00000001:
case BUTTON_CLOSE:
kolibri_exit();
}
}

View File

@ -1,11 +1,9 @@
#Please set up kolibrios sources here : /home/<username>/kolibrios
kos32-gcc -c -I${HOME}/kolibrios/contrib/sdk/sources/newlib/libc/include -g -U_Win32 -U_WIN32 -U__MINGW32__ boardmsg.c -o boardmsg.o
kos32-gcc -c -I${HOME}/kolibrios/contrib/sdk/sources/newlib/libc/include -I../../INCLUDE -g -U_Win32 -U_WIN32 -U__MINGW32__ boardmsg.c -o boardmsg.o
fasm loadboxlib.asm loadboxlib.obj
kos32-ld *.o *.obj -T${HOME}/kolibrios/contrib/sdk/sources/newlib/libc/app.lds -nostdlib -static --image-base 0 -lgcc -L/home/autobuild/tools/win32/mingw32/lib /home/autobuild/tools/win32/lib/libdll.a /home/autobuild/tools/win32/lib/libapp.a /home/autobuild/tools/win32/lib/libc.dll.a -static -o boardxmsg -Map=boardxmsg.map
kos32-ld *.o ../../OBJ/loadboxlib.obj -T${HOME}/kolibrios/contrib/sdk/sources/newlib/libc/app.lds -nostdlib -static --image-base 0 -lgcc -L/home/autobuild/tools/win32/mingw32/lib /home/autobuild/tools/win32/lib/libdll.a /home/autobuild/tools/win32/lib/libapp.a /home/autobuild/tools/win32/lib/libc.dll.a -static -o boardxmsg -Map=boardxmsg.map
objcopy -O binary boardxmsg
echo "If everything went well, boardxmsg should be your binary!"
echo "If everything went well, boardxmsg should be your binary!"

View File

@ -2,7 +2,6 @@
#define KOLIBRI_BUF2D_H
/*ToDo
* buf_curve_bezier
* voxel function
*/
@ -21,7 +20,7 @@ int kolibri_buf2d_init(void)
}
struct buf2d_struct {
typedef struct {
unsigned int *buf_pointer;
uint16_t left;
uint16_t top;
@ -29,7 +28,7 @@ struct buf2d_struct {
unsigned int height;
unsigned int bgcolor;
uint8_t color_bit;
};
}buf2d_struct;
enum BUF2D_ALGORITM_FILTR {
SIERRA_LITE,
@ -46,12 +45,12 @@ enum BUF2D_OPT_CROP {
BUF2D_OPT_CROP_RIGHT = 8
};
extern void (*buf2d_create_asm)(struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_curve_bezier_asm)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_create_asm)(buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_curve_bezier_asm)(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
struct buf2d_struct* buf2d_create(uint16_t tlx, uint16_t tly, unsigned int sizex, unsigned int sizey, unsigned int font_bgcolor, uint8_t color_bit)
buf2d_struct* buf2d_create(uint16_t tlx, uint16_t tly, unsigned int sizex, unsigned int sizey, unsigned int font_bgcolor, uint8_t color_bit)
{
struct buf2d_struct *new_buf2d_struct = (struct buf2d_struct *)malloc(sizeof(struct buf2d_struct));
buf2d_struct *new_buf2d_struct = (buf2d_struct *)malloc(sizeof(buf2d_struct));
new_buf2d_struct -> left = tlx;
new_buf2d_struct -> top = tly;
new_buf2d_struct -> width = sizex;
@ -62,35 +61,35 @@ struct buf2d_struct* buf2d_create(uint16_t tlx, uint16_t tly, unsigned int sizex
return new_buf2d_struct;
}
void buf2d_curve_bezier(struct buf2d_struct *buf, unsigned int p0_x, unsigned int p0_y, unsigned int p1_x, unsigned int p1_y, unsigned int p2_x, unsigned int p2_y, unsigned int color)
void buf2d_curve_bezier(buf2d_struct *buf, unsigned int p0_x, unsigned int p0_y, unsigned int p1_x, unsigned int p1_y, unsigned int p2_x, unsigned int p2_y, unsigned int color)
{
buf2d_curve_bezier_asm(buf, (p0_x<<16)+p0_y, (p1_x<<16)+p1_y, (p2_x<<16)+p2_y, color);
}
extern void (*buf2d_draw)(struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_clear)(struct buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_delete)(struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_rotate)(struct buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_resize)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_line)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_line_sm)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_rect_by_size)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_filled_rect_by_size)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_circle)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_img_hdiv2)(struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_img_wdiv2)(struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_conv_24_to_8)(struct buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_conv_24_to_32)(struct buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_bit_blt_transp)(struct buf2d_struct *, unsigned int, unsigned int, struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_bit_blt_alpha)(struct buf2d_struct *, unsigned int, unsigned int, struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_convert_text_matrix)(struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_draw_text)(struct buf2d_struct *, struct buf2d_struct *, const char *, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_crop_color)(struct buf2d_struct *, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_offset_h)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_flood_fill)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_set_pixel)(struct buf2d_struct *, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern unsigned int (*buf2d_get_pixel)(struct buf2d_struct *, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_flip_h)(struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_flip_v)(struct buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_filter_dither)(struct buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_draw)(buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_clear)(buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_delete)(buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_rotate)(buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_resize)(buf2d_struct *, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_line)(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_line_sm)(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_rect_by_size)(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_filled_rect_by_size)(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_circle)(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_img_hdiv2)(buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_img_wdiv2)(buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_conv_24_to_8)(buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_conv_24_to_32)(buf2d_struct *, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_bit_blt_transp)(buf2d_struct *, unsigned int, unsigned int, buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_bit_blt_alpha)(buf2d_struct *, unsigned int, unsigned int, buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_convert_text_matrix)(buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_draw_text)(buf2d_struct *, buf2d_struct *, const char *, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_crop_color)(buf2d_struct *, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_offset_h)(buf2d_struct *, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_flood_fill)(buf2d_struct *, unsigned int, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_set_pixel)(buf2d_struct *, unsigned int, unsigned int, unsigned int) __attribute__((__stdcall__));
extern unsigned int (*buf2d_get_pixel)(buf2d_struct *, unsigned int, unsigned int) __attribute__((__stdcall__));
extern void (*buf2d_flip_h)(buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_flip_v)(buf2d_struct *) __attribute__((__stdcall__));
extern void (*buf2d_filter_dither)(buf2d_struct *, unsigned int) __attribute__((__stdcall__));
#endif /* KOLIBRI_BUF2D_H */

View File

@ -1,18 +1,18 @@
#ifndef KOLIBRI_BUTTON_H
#define KOLIBRI_BUTTON_H
struct kolibri_button {
typedef struct {
unsigned int x65536sizex;
unsigned int y65536sizey;
unsigned int color;
unsigned int identifier;
unsigned int XY;
};
}kolibri_button;
struct kolibri_button *kolibri_new_button(unsigned int tlx, unsigned int tly, unsigned int sizex, unsigned int sizey,
kolibri_button *kolibri_new_button(unsigned int tlx, unsigned int tly, unsigned int sizex, unsigned int sizey,
unsigned int identifier, unsigned int color)
{
struct kolibri_button* new_button = (struct kolibri_button *)malloc(sizeof(struct kolibri_button));
kolibri_button* new_button = (kolibri_button *)malloc(sizeof(kolibri_button));
new_button -> x65536sizex = (tlx << 16) + sizex;
new_button -> y65536sizey = (tly << 16) + sizey;
new_button -> color = color;
@ -21,7 +21,7 @@ struct kolibri_button *kolibri_new_button(unsigned int tlx, unsigned int tly, un
return new_button;
}
void draw_button(struct kolibri_button *some_button)
void draw_button(kolibri_button *some_button)
{
define_button(some_button -> x65536sizex, some_button -> y65536sizey, some_button -> identifier, some_button -> color);
}

View File

@ -8,7 +8,7 @@ enum CHECKBOX_FLAGS {
/* Add more flags later */
};
struct check_box {
typedef struct {
unsigned int left_s;
unsigned int top_s;
unsigned int ch_text_margin;
@ -20,11 +20,11 @@ struct check_box {
/* Users can use members above this */
unsigned int size_of_str;
};
}check_box;
struct check_box* kolibri_new_check_box(unsigned int tlx, unsigned int tly, unsigned int sizex, unsigned int sizey, char *label_text)
check_box* kolibri_new_check_box(unsigned int tlx, unsigned int tly, unsigned int sizex, unsigned int sizey, char *label_text)
{
struct check_box* new_checkbox = (struct check_box *)malloc(sizeof(struct check_box));
check_box* new_checkbox = (check_box *)malloc(sizeof(check_box));
new_checkbox -> left_s = (tlx << 16) + sizex;
new_checkbox -> top_s = (tly << 16) + sizey;
new_checkbox -> ch_text_margin = 10;
@ -37,7 +37,7 @@ struct check_box* kolibri_new_check_box(unsigned int tlx, unsigned int tly, unsi
return new_checkbox;
}
extern void (*check_box_draw2)(struct check_box *) __attribute__((__stdcall__));
extern void (*check_box_mouse2)(struct check_box *)__attribute__((__stdcall__));
extern void (*check_box_draw2)(check_box *) __attribute__((__stdcall__));
extern void (*check_box_mouse2)(check_box *)__attribute__((__stdcall__));
#endif /* KOLIBRI_CHECKBOX_H */

View File

@ -4,7 +4,7 @@
char cd_com_area_name[] = "FFFFFFFF_color_dialog";
char cd_start_path[] = "/rd/1/colrdial";
struct color_dialog {
typedef struct {
unsigned int type;
unsigned int procinfo;
unsigned int com_area_name;
@ -18,13 +18,13 @@ struct color_dialog {
unsigned short y_start;
unsigned int color_type;
unsigned int color;
};
}color_dialog;
void cd_fake_on_redraw(void) {}
struct open_dialog* kolibri_new_color_dialog(unsigned int type, unsigned short tlx, unsigned short tly, unsigned short x_size, unsigned short y_size)
{
struct color_dialog *new_colordialog = (struct color_dialog *)malloc(sizeof(struct color_dialog));
color_dialog *new_colordialog = (color_dialog *)malloc(sizeof(color_dialog));
char *proc_info = (char *)calloc(1024, sizeof(char));
new_colordialog -> type = type;
@ -43,6 +43,6 @@ struct open_dialog* kolibri_new_color_dialog(unsigned int type, unsigned short t
return new_colordialog;
}
extern void (*ColorDialog_init)(struct open_dialog *) __attribute__((__stdcall__));
extern void (*ColorDialog_start)(struct open_dialog *) __attribute__((__stdcall__));
extern void (*ColorDialog_init)(color_dialog *) __attribute__((__stdcall__));
extern void (*ColorDialog_start)(color_dialog *) __attribute__((__stdcall__));
#endif /* KOLIBRI_COLORDIALOG_H */

View File

@ -1,6 +1,6 @@
#ifndef KOLIBRI_COLORS_H
#define KOLIBRI_COLORS_H
struct kolibri_system_colors {
typedef struct {
unsigned int color_frame_area;
unsigned int color_grab_bar;
unsigned int color_grab_bar_button;
@ -11,11 +11,11 @@ struct kolibri_system_colors {
unsigned int color_work_button_text;
unsigned int color_work_text;
unsigned int color_work_graph;
};
}kolibri_system_colors;
struct kolibri_system_colors kolibri_color_table;
kolibri_system_colors kolibri_color_table;
void kolibri_get_system_colors(struct kolibri_system_colors *color_table)
void kolibri_get_system_colors(kolibri_system_colors *color_table)
{
__asm__ volatile ("int $0x40"
:

View File

@ -3,7 +3,7 @@
#include "kolibri_colors.h"
struct edit_box {
typedef struct {
unsigned int width;
unsigned int left;
unsigned int top;
@ -25,7 +25,7 @@ struct edit_box {
unsigned int cl_curs_y;
unsigned int shift;
unsigned int shift_old;
};
}edit_box;
/* Initializes an Editbox with sane settings, sufficient for most use.
This will let you create a box and position it somewhere on the screen.
@ -42,10 +42,10 @@ struct edit_box {
max_chars = Limit of number of characters user can enter into edit box.
*/
struct edit_box* kolibri_new_edit_box(unsigned int tlx, unsigned int tly, unsigned int max_chars)
edit_box* kolibri_new_edit_box(unsigned int tlx, unsigned int tly, unsigned int max_chars)
{
unsigned int PIXELS_PER_CHAR = 7;
struct edit_box *new_textbox = (struct edit_box *)malloc(sizeof(struct edit_box));
edit_box *new_textbox = (edit_box *)malloc(sizeof(edit_box));
char *text_buffer = (char *)calloc(max_chars + 1, sizeof(char));
/* Update blur_border_color and shift_color from box_lib.mac macro */
@ -77,13 +77,13 @@ struct edit_box* kolibri_new_edit_box(unsigned int tlx, unsigned int tly, unsign
return new_textbox;
}
extern void (*edit_box_draw)(struct edit_box *) __attribute__((__stdcall__));
extern void (*edit_box_draw)(edit_box *) __attribute__((__stdcall__));
/* editbox_key is a wrapper written in assembly to handle key press events for editboxes */
/* because inline assembly in GCC is a PITA and interferes with the EAX (AH) register */
/* which edit_box_key requires */
extern void editbox_key(struct edit_box *) __attribute__((__stdcall__));
extern void editbox_key(edit_box *) __attribute__((__stdcall__));
extern void (*edit_box_mouse)(struct edit_box *) __attribute__((__stdcall__));
extern void (*edit_box_mouse)(edit_box *) __attribute__((__stdcall__));
extern volatile unsigned press_key;
#endif /* KOLIBRI_EDITBOX_H */

View File

@ -6,7 +6,7 @@ enum {
BOTTON
};
struct frame {
typedef struct {
unsigned int type;
uint16_t size_x;
uint16_t start_x;
@ -21,11 +21,11 @@ struct frame {
unsigned int font_size_y;
unsigned int font_color;
unsigned int font_backgr_color;
};
}frame;
struct frame* kolibri_new_frame(uint16_t tlx, uint16_t tly, uint16_t sizex, uint16_t sizey, unsigned int ext_col, unsigned int int_col, unsigned int draw_text_flag, char *text_pointer, unsigned int text_position, unsigned int font_color, unsigned int font_bgcolor)
frame* kolibri_new_frame(uint16_t tlx, uint16_t tly, uint16_t sizex, uint16_t sizey, unsigned int ext_col, unsigned int int_col, unsigned int draw_text_flag, char *text_pointer, unsigned int text_position, unsigned int font_color, unsigned int font_bgcolor)
{
struct frame *new_frame = (struct frame *)malloc(sizeof(struct frame));
frame *new_frame = (frame *)malloc(sizeof(frame));
new_frame -> type = 0;
new_frame -> size_x = sizex;
new_frame -> start_x = tlx;
@ -43,6 +43,6 @@ struct frame* kolibri_new_frame(uint16_t tlx, uint16_t tly, uint16_t sizex, uint
return new_frame;
}
extern void (*frame_draw)(struct frame *) __attribute__((__stdcall__));
extern void (*frame_draw)(frame *) __attribute__((__stdcall__));
#endif /* KOLIBRI_FRAME_H */

View File

@ -19,7 +19,9 @@ enum KOLIBRI_GUI_EVENTS {
KOLIBRI_EVENT_MOUSE = 6 /* Mouse activity (movement, button press) was detected */
};
void kolibri_handle_event_redraw(struct kolibri_window* some_window)
#define BUTTON_CLOSE 0x1
void kolibri_handle_event_redraw(kolibri_window* some_window)
{
/* Draw windows with system color table. */
@ -33,7 +35,7 @@ void kolibri_handle_event_redraw(struct kolibri_window* some_window)
/* Enumerate and draw all window elements here */
if(some_window->elements) /* Draw all elements added to window */
{
struct kolibri_window_element* current_element = some_window -> elements;
kolibri_window_element* current_element = some_window -> elements;
do
{
@ -60,12 +62,12 @@ void kolibri_handle_event_redraw(struct kolibri_window* some_window)
}
}
void kolibri_handle_event_key(struct kolibri_window* some_window)
void kolibri_handle_event_key(kolibri_window* some_window)
{
/* Enumerate and trigger key handling functions of window elements here */
if(some_window->elements)
{
struct kolibri_window_element *current_element = some_window -> elements;
kolibri_window_element *current_element = some_window -> elements;
do
{
@ -78,12 +80,12 @@ void kolibri_handle_event_key(struct kolibri_window* some_window)
}
}
void kolibri_handle_event_mouse(struct kolibri_window* some_window)
void kolibri_handle_event_mouse(kolibri_window* some_window)
{
/* Enumerate and trigger mouse handling functions of window elements here */
if(some_window->elements)
{
struct kolibri_window_element *current_element = some_window -> elements;
kolibri_window_element *current_element = some_window -> elements;
do
{

View File

@ -33,24 +33,24 @@ enum KOLIBRI_GUI_ELEMENT_TYPE {
};
/* Linked list which connects together all the elements drawn inside a GUI window */
struct kolibri_window_element {
typedef struct{
enum KOLIBRI_GUI_ELEMENT_TYPE type;
void *element;
struct kolibri_window_element *next, *prev;
};
void *next, *prev;
}kolibri_window_element;
typedef void (*cb_elem_boxlib)(void *) __attribute__((__stdcall__));
/* Generic structure for supporting functions on various elements of Kolibri's GUI */
struct kolibri_element_operations {
typedef struct {
cb_elem_boxlib redraw_fn;
cb_elem_boxlib mouse_fn;
cb_elem_boxlib key_fn;
};
}kolibri_element_operations;
/* Structure for a GUI Window on Kolibri. It also contains all the elements drawn in window */
struct kolibri_window {
typedef struct{
unsigned int topleftx, toplefty;
unsigned int sizex, sizey;
char *window_title;
@ -58,14 +58,14 @@ struct kolibri_window {
/* Refer to sysfuncs, value to be stored in EDX (Function 0) */
unsigned int XY;
struct kolibri_window_element *elements;
};
kolibri_window_element *elements;
}kolibri_window;
/*---------------------End of Structure and enum definitions---------------*/
/*---------------------Define various functions for initializing GUI-------*/
/* Master table containing operations for various GUI elements in one place */
struct kolibri_element_operations kolibri_gui_op_table[KOLIBRI_NUM_GUI_ELEMENTS];
kolibri_element_operations kolibri_gui_op_table[KOLIBRI_NUM_GUI_ELEMENTS];
void kolibri_init_gui_op_table(void)
{
@ -99,9 +99,9 @@ kolibri_gui_op_table[KOLIBRI_FRAME].key_fn = NULL;
/* Create a new main GUI window for KolibriOS */
/* tl stands for TOP LEFT. x and y are coordinates. */
struct kolibri_window * kolibri_new_window(int tlx, int tly, int sizex, int sizey, char *title)
kolibri_window * kolibri_new_window(int tlx, int tly, int sizex, int sizey, char *title)
{
struct kolibri_window *new_win = (struct kolibri_window *)malloc(sizeof(struct kolibri_window));
kolibri_window *new_win = (kolibri_window *)malloc(sizeof(kolibri_window));
new_win->topleftx = tlx;
new_win->toplefty = tly;
@ -115,9 +115,9 @@ struct kolibri_window * kolibri_new_window(int tlx, int tly, int sizex, int size
}
/* Add an element to an existing window */
void kolibri_window_add_element(struct kolibri_window *some_window, enum KOLIBRI_GUI_ELEMENT_TYPE element_type, void *some_gui_element)
void kolibri_window_add_element(kolibri_window *some_window, enum KOLIBRI_GUI_ELEMENT_TYPE element_type, void *some_gui_element)
{
struct kolibri_window_element *new_element = (struct kolibri_window_element *)malloc(sizeof(struct kolibri_window_element));
kolibri_window_element *new_element = (kolibri_window_element *)malloc(sizeof(kolibri_window_element));
new_element -> type = element_type;
new_element -> element = some_gui_element;
@ -130,7 +130,7 @@ void kolibri_window_add_element(struct kolibri_window *some_window, enum KOLIBRI
}
else
{
struct kolibri_window_element *last_element = some_window -> elements -> prev;
kolibri_window_element *last_element = some_window -> elements -> prev;
last_element -> next = new_element;
new_element -> next = some_window -> elements; /* start of linked list */

View File

@ -13,6 +13,50 @@ int kolibri_libimg_init(void)
return 1;
}
//list of format id's
#define LIBIMG_FORMAT_BMP 1
#define LIBIMG_FORMAT_ICO 2
#define LIBIMG_FORMAT_CUR 3
#define LIBIMG_FORMAT_GIF 4
#define LIBIMG_FORMAT_PNG 5
#define LIBIMG_FORMAT_JPEG 6
#define LIBIMG_FORMAT_TGA 7
#define LIBIMG_FORMAT_PCX 8
#define LIBIMG_FORMAT_XCF 9
#define LIBIMG_FORMAT_TIFF 10
#define LIBIMG_FORMAT_PNM 11
#define LIBIMG_FORMAT_WBMP 12
#define LIBIMG_FORMAT_XBM 13
#define LIBIMG_FORMAT_Z80 14
//error codes
#define LIBIMG_ERROR_OUT_OF_MEMORY 1
#define LIBIMG_ERROR_FORMAT 2
#define LIBIMG_ERROR_CONDITIONS 3
#define LIBIMG_ERROR_BIT_DEPTH 4
#define LIBIMG_ERROR_ENCODER 5
#define LIBIMG_ERROR_SRC_TYPE 6
#define LIBIMG_ERROR_SCALE 7
#define LIBIMG_ERROR_INTER 8
#define LIBIMG_ERROR_NOT_INPLEMENTED 9
#define LIBIMG_ERROR_INVALID_INPUT 10
//encode flags (byte 0x02 of _common option)
#define LIBIMG_ENCODE_STRICT_SPECIFIC 0x01
#define LIBIMG_ENCODE_STRICT_BIT_DEPTH 0x02
#define LIBIMG_ENCODE_DELETE_ALPHA 0x08
#define LIBIMG_ENCODE_FLUSH_ALPHA 0x10
#define FLIP_VERTICAL 0x01
#define FLIP_HORIZONTAL 0x02
#define ROTATE_90_CW 0x01
#define ROTATE_180 0x02
#define ROTATE_270_CW 0x03
#define ROTATE_90_CCW ROTATE_270_CW
#define ROTATE_270_CCW ROTATE_90_CW
extern void* (*img_decode)(void *, uint32_t, uint32_t) __attribute__((__stdcall__));
extern void* (*img_encode)(void *, uint32_t, uint32_t) __attribute__((__stdcall__));
extern void* (*img_create)(uint32_t, uint32_t, uint32_t) __attribute__((__stdcall__));

View File

@ -5,7 +5,7 @@ char sz_com_area_name[] = "FFFFFFFF_open_dialog";
char sz_dir_default_path[] = "/rd/1";
char sz_start_path[] = "/rd/1/File managers/opendial";
struct open_dialog {
typedef struct {
unsigned int mode;
unsigned int procinfo;
unsigned int com_area_name;
@ -22,19 +22,19 @@ struct open_dialog {
unsigned short x_start;
unsigned short y_size;
unsigned short y_start;
};
}open_dialog;
struct od_filter {
typedef struct {
unsigned int size;
unsigned char end;
};
}od_filter;
void fake_on_redraw(void) {}
struct open_dialog* kolibri_new_open_dialog(unsigned int mode, unsigned short tlx, unsigned short tly, unsigned short x_size, unsigned short y_size)
{
struct open_dialog *new_opendialog = (struct open_dialog *)malloc(sizeof(struct open_dialog));
struct od_filter *new_od_filter = (struct od_filter *)malloc(sizeof(struct od_filter));
open_dialog *new_opendialog = (open_dialog *)malloc(sizeof(open_dialog));
od_filter *new_od_filter = (od_filter *)malloc(sizeof(od_filter));
char *plugin_path = (char *)calloc(4096, sizeof(char));
char *openfile_path = (char *)calloc(4096, sizeof(char));
char *proc_info = (char *)calloc(1024, sizeof(char));
@ -62,6 +62,6 @@ struct open_dialog* kolibri_new_open_dialog(unsigned int mode, unsigned short tl
return new_opendialog;
}
extern void (*OpenDialog_init)(struct open_dialog *) __attribute__((__stdcall__));
extern void (*OpenDialog_start)(struct open_dialog *) __attribute__((__stdcall__));
extern void (*OpenDialog_init)(open_dialog *) __attribute__((__stdcall__));
extern void (*OpenDialog_start)(open_dialog *) __attribute__((__stdcall__));
#endif /* KOLIBRI_OPENDIALOG_H */