forked from KolibriOS/kolibrios
ktcc + libc.obj:
- ksys.h - added event mask enum - samples - old examples updated - delete junk files git-svn-id: svn://kolibrios.org@8818 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
4dde75a022
commit
599cbe26ed
@ -200,6 +200,21 @@ enum KSYS_SHM_MODE{
|
|||||||
KSYS_SHM_WRITE = 0x01,
|
KSYS_SHM_WRITE = 0x01,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum KSYS_EVENT_MASK{
|
||||||
|
KSYS_EVM_REDRAW = 1,
|
||||||
|
KSYS_EVM_KEY = 2,
|
||||||
|
KSYS_EVM_BUTTON = 4,
|
||||||
|
KSYS_EVM_EXIT = 8,
|
||||||
|
KSYS_EVM_BACKGROUND = 16,
|
||||||
|
KSYS_EVM_MOUSE = 32,
|
||||||
|
KSYS_EVM_IPC = 64,
|
||||||
|
KSYS_EVM_STACK = 128,
|
||||||
|
KSYS_EVM_DEBUG = 256,
|
||||||
|
KSYS_EVM_STACK2 = 512,
|
||||||
|
KSYS_EVM_MOUSE_FILTER = 0x80000000,
|
||||||
|
KSYS_EVM_CURSOR_FILTER = 0x40000000,
|
||||||
|
};
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
int _ksys_strcmp(const char * s1, const char * s2 )
|
int _ksys_strcmp(const char * s1, const char * s2 )
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
KTCC=../../../ktcc/trunk/bin/kos32-tcc
|
KTCC=kos32-tcc
|
||||||
FASM= fasm
|
FASM= fasm
|
||||||
KPACK = kpack
|
KPACK = kpack
|
||||||
CFLAGS = -I../include
|
CFLAGS = -I../include
|
||||||
LDFLAGS = -nostdlib -L../lib ../lib/crt0.o
|
LDFLAGS = -nostdlib -L../../bin/lib ../../bin/lib/crt0.o
|
||||||
|
|
||||||
BIN= stdio_test.kex \
|
BIN= stdio_test.kex \
|
||||||
basic_gui.kex \
|
basic_gui.kex \
|
||||||
@ -13,12 +13,20 @@ string_test.kex \
|
|||||||
whois.kex \
|
whois.kex \
|
||||||
file_io.kex \
|
file_io.kex \
|
||||||
tmpdisk_work.kex \
|
tmpdisk_work.kex \
|
||||||
fasm/sprintf_test.kex
|
consoleio.kex \
|
||||||
|
fasm/sprintf_test.kex \
|
||||||
|
clayer/rasterworks.kex \
|
||||||
|
clayer/libimg.kex \
|
||||||
|
clayer/dialog.kex \
|
||||||
|
clayer/msgbox.kex \
|
||||||
|
clayer/boxlib.kex
|
||||||
|
|
||||||
|
LIBS= -ltcc -ldialog -lrasterworks -limg -lbox -lmsgbox -lnetwork -lc.obj
|
||||||
|
|
||||||
all: $(BIN)
|
all: $(BIN)
|
||||||
|
|
||||||
%.kex : %.c
|
%.kex : %.c
|
||||||
$(KTCC) $(CFLAGS) $(LDFLAGS) $< -o $@ -ltcc -lnetwork -lc.obj
|
$(KTCC) $(CFLAGS) $(LDFLAGS) $< -o $@ $(LIBS)
|
||||||
$(KPACK) --nologo $@
|
$(KPACK) --nologo $@
|
||||||
|
|
||||||
%.kex : %.asm
|
%.kex : %.asm
|
||||||
@ -26,4 +34,4 @@ all: $(BIN)
|
|||||||
$(KPACK) --nologo $@
|
$(KPACK) --nologo $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm *.kex
|
rm *.kex clayer/*.kex
|
||||||
|
92
programs/develop/ktcc/trunk/libc.obj/samples/clayer/boxlib.c
Normal file
92
programs/develop/ktcc/trunk/libc.obj/samples/clayer/boxlib.c
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
// BOXLIB EXAMPLE (scrollbar, progressbar, editbox and checkbox)
|
||||||
|
// Writed by maxcodehack and superturbocat2001
|
||||||
|
|
||||||
|
#include <sys/ksys.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <clayer/boxlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define WIN_W 640
|
||||||
|
#define WIN_H 563
|
||||||
|
|
||||||
|
#define ED_BUFF_LEN 50
|
||||||
|
#define TEXT_SIZE 0x10000000
|
||||||
|
#define SCROLL_BUTTON_SIZE 15
|
||||||
|
#define SCROLL_MAX_LEN 215
|
||||||
|
#define BLACK 0x000000
|
||||||
|
#define WHITE 0xFFFFFF
|
||||||
|
#define BLUE 0x0000FF
|
||||||
|
#define X_W(X, W) ((X<<16)+W)
|
||||||
|
#define Y_H X_W
|
||||||
|
|
||||||
|
uint32_t wheels;
|
||||||
|
char* title = "Boxlib example";
|
||||||
|
char ed_buff[ED_BUFF_LEN];
|
||||||
|
|
||||||
|
scrollbar scroll = {15, WIN_W - 26, WIN_H - 29, 0, 0, 2, 215, SCROLL_BUTTON_SIZE, 0,0x707070,0xD2CED0,0x555555};
|
||||||
|
progressbar pg = {0, 10, 10, 270, 35, 1, 0, 200, 0xB4B4B4, 0x2728FF, 0xA9A9A9};
|
||||||
|
edit_box ed={WIN_W-140,10,60,0xFFFFFF,0x6a9480,0,0x6a9480, BLACK | TEXT_SIZE, ED_BUFF_LEN, ed_buff,NULL,ed_focus};
|
||||||
|
check_box output_off={X_W(10, 15), Y_H(120,15), 10, WHITE, BLUE, BLACK | TEXT_SIZE, "Disable duplicate output",0};
|
||||||
|
|
||||||
|
void draw_window(){
|
||||||
|
_ksys_start_draw();
|
||||||
|
_ksys_create_window(215,100,WIN_W,WIN_H,title, 0x858585, 0x34);
|
||||||
|
edit_box_draw(&ed);
|
||||||
|
check_box_draw2(&output_off);
|
||||||
|
if(!output_off.flags){
|
||||||
|
_ksys_draw_text(ed_buff, 10, 90, strlen(ed_buff), BLACK | TEXT_SIZE);
|
||||||
|
}
|
||||||
|
scrollbar_v_draw(&scroll);
|
||||||
|
progressbar_draw(&pg);
|
||||||
|
_ksys_end_draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
kolibri_boxlib_init();
|
||||||
|
init_checkbox2(&output_off);
|
||||||
|
_ksys_set_event_mask(KSYS_EVM_REDRAW + KSYS_EVM_KEY + KSYS_EVM_BUTTON + KSYS_EVM_MOUSE+ KSYS_EVM_MOUSE_FILTER);
|
||||||
|
while(1){
|
||||||
|
switch(_ksys_get_event()){
|
||||||
|
case KSYS_EVENT_BUTTON:
|
||||||
|
if (_ksys_get_button() == 1) return 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KSYS_EVENT_KEY:
|
||||||
|
edit_box_key(&ed, _ksys_get_key().val);
|
||||||
|
draw_window();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KSYS_EVENT_REDRAW:
|
||||||
|
draw_window();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KSYS_EVENT_MOUSE:
|
||||||
|
edit_box_mouse(&ed);
|
||||||
|
scrollbar_v_mouse(&scroll);
|
||||||
|
pg.value = scroll.position;
|
||||||
|
progressbar_draw(&pg);
|
||||||
|
check_box_mouse2(&output_off);
|
||||||
|
unsigned int scroll_strong = 10;
|
||||||
|
wheels = _ksys_get_mouse_wheels();
|
||||||
|
if(wheels & 0xFFFF){
|
||||||
|
if((short)wheels > 0){
|
||||||
|
scroll.position += scroll_strong;
|
||||||
|
if(scroll.position>scroll.max_area-scroll.cur_area){
|
||||||
|
scroll.position=scroll.max_area-scroll.cur_area;
|
||||||
|
}
|
||||||
|
}else if((short)wheels < 0 && scroll.position > 0){
|
||||||
|
scroll.position -= scroll_strong;
|
||||||
|
if((int)scroll.position<0){
|
||||||
|
scroll.position=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
scrollbar_v_draw(&scroll);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
32
programs/develop/ktcc/trunk/libc.obj/samples/clayer/dialog.c
Normal file
32
programs/develop/ktcc/trunk/libc.obj/samples/clayer/dialog.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include <sys/ksys.h>
|
||||||
|
#include <clayer/dialog.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
kolibri_dialog_init(); // dialog init
|
||||||
|
open_dialog *dlg_open = kolibri_new_open_dialog(OPEN, 10, 10, 420, 320); // create opendialog struct
|
||||||
|
OpenDialog_init(dlg_open); // Initializing an open dialog box.
|
||||||
|
OpenDialog_start(dlg_open); // Show open dialog box
|
||||||
|
|
||||||
|
color_dialog *color_select = kolibri_new_color_dialog(SELECT, 10, 10,420,320); // create colordialog struct
|
||||||
|
ColorDialog_init(color_select); // Initializing an color dialog box.
|
||||||
|
ColorDialog_start(color_select); // Show color dialog
|
||||||
|
|
||||||
|
if(dlg_open->status == SUCCESS){
|
||||||
|
printf("File selected '%s'\n",dlg_open->openfile_path);
|
||||||
|
}else{
|
||||||
|
puts("No file selected!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(color_select->status == SUCCESS){
|
||||||
|
printf("Color selected: #%06X\n",color_select->color);
|
||||||
|
rgb_t color_rgb = (rgb_t)color_select->color;
|
||||||
|
printf("Red:%d Green:%d Blue:%d", color_rgb.red, color_rgb.green, color_rgb.blue);
|
||||||
|
}else{
|
||||||
|
puts("No color selected!");
|
||||||
|
}
|
||||||
|
free(dlg_open);
|
||||||
|
free(color_select);
|
||||||
|
return 0;
|
||||||
|
}
|
101
programs/develop/ktcc/trunk/libc.obj/samples/clayer/libimg.c
Executable file
101
programs/develop/ktcc/trunk/libc.obj/samples/clayer/libimg.c
Executable file
@ -0,0 +1,101 @@
|
|||||||
|
/* Written by turbocat2001 (Logaev Maxim) */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <clayer/libimg.h>
|
||||||
|
#include <sys/ksys.h>
|
||||||
|
|
||||||
|
#define NEW_IMG_H 128
|
||||||
|
#define NEW_IMG_W 128
|
||||||
|
|
||||||
|
#define IMG_H 256
|
||||||
|
#define IMG_W 256
|
||||||
|
|
||||||
|
Image *image_blend; // Create image struct
|
||||||
|
|
||||||
|
ksys_colors_table_t sys_color_table; // Create system colors table
|
||||||
|
|
||||||
|
void* load_img(char* fname, uint32_t* read_sz){ // Image file upload function
|
||||||
|
FILE *f = fopen(fname, "rb");
|
||||||
|
if (!f) {
|
||||||
|
printf("Can't open file: %s\n", fname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (fseek(f, 0, SEEK_END)) {
|
||||||
|
printf("Can't SEEK_END file: %s\n", fname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
int filesize = ftell(f);
|
||||||
|
rewind(f);
|
||||||
|
void* fdata = malloc(filesize);
|
||||||
|
if(!fdata) {
|
||||||
|
printf("No memory for file %s\n", fname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
*read_sz = fread(fdata, 1, filesize, f);
|
||||||
|
if (ferror(f)) {
|
||||||
|
printf("Error reading file %s\n", fname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
return fdata;
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_gui(){
|
||||||
|
_ksys_start_draw();
|
||||||
|
_ksys_create_window(10, 40, (IMG_W+NEW_IMG_W)+50, IMG_H+50, "Libimg", sys_color_table.work_area, 0x34);
|
||||||
|
img_draw(image_blend, 10, 10, IMG_W*2, IMG_H , 0, 0); // Draw blended image to window
|
||||||
|
_ksys_end_draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
if (kolibri_libimg_init() == -1){
|
||||||
|
printf("Error loading lib_img.obj\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
_ksys_get_system_colors(&sys_color_table); // Get system colors theme
|
||||||
|
_ksys_set_event_mask(0xC0000027);
|
||||||
|
|
||||||
|
uint32_t img_size;
|
||||||
|
void *file_data = load_img("logo.png", &img_size); // Get RAW data and size
|
||||||
|
if(!file_data){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Image* image = img_decode(file_data, img_size, 0); // Decode RAW data to Image data
|
||||||
|
|
||||||
|
if (image->Type != IMAGE_BPP32) {
|
||||||
|
image = img_convert(image, NULL, IMAGE_BPP32, 0, 0); // Convert image to format BPP32
|
||||||
|
if (!image) {
|
||||||
|
printf("Сonvert error!: \n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
image_blend = img_create(IMG_W+NEW_IMG_W, IMG_H, IMAGE_BPP32); // Create an empty layer
|
||||||
|
img_fill_color(image_blend, IMG_W+NEW_IMG_W, IMG_H, sys_color_table.work_area); // Fill the layer with one color
|
||||||
|
img_blend(image_blend, image, 0, 0, 0, 0, IMG_W, IMG_H); // Blending images to display the alpha channel.
|
||||||
|
/* Reduce image size from 256x256 to 128x128 */
|
||||||
|
image = img_scale(image, 0, 0, IMG_W, IMG_H, NULL, LIBIMG_SCALE_STRETCH , LIBIMG_INTER_BILINEAR, NEW_IMG_W, NEW_IMG_H);
|
||||||
|
img_blend(image_blend, image, 256, 0, 0, 0, NEW_IMG_W, NEW_IMG_H);
|
||||||
|
img_destroy(image); // Destroy image structure
|
||||||
|
free(file_data); // Free allocated file_data buffer
|
||||||
|
|
||||||
|
/* Main event loop */
|
||||||
|
while (1) {
|
||||||
|
switch(_ksys_get_event()){
|
||||||
|
case KSYS_EVENT_REDRAW:
|
||||||
|
draw_gui();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KSYS_EVENT_BUTTON:
|
||||||
|
if (_ksys_get_button()==1){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
BIN
programs/develop/ktcc/trunk/libc.obj/samples/clayer/logo.png
Normal file
BIN
programs/develop/ktcc/trunk/libc.obj/samples/clayer/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
@ -0,0 +1,8 @@
|
|||||||
|
#include <clayer/msgbox.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
msgbox *msg1 = NULL;
|
||||||
|
msg1 = kolibri_new_msgbox("Title", "Text in window", 0, "Ok");
|
||||||
|
kolibri_start_msgbox(msg1, NULL);
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/ksys.h>
|
||||||
|
#include <clayer/rasterworks.h>
|
||||||
|
|
||||||
|
// Sizes
|
||||||
|
int x_size = 768, y_size = 256;
|
||||||
|
|
||||||
|
// Out example string
|
||||||
|
char* string = "Пример/Example";
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// Count length
|
||||||
|
int ln_str = countUTF8Z(string, -1);
|
||||||
|
|
||||||
|
// Create image buffer
|
||||||
|
void *buffi = malloc(x_size * y_size * 3 * sizeof(char) + 8);
|
||||||
|
|
||||||
|
// Set sizes
|
||||||
|
*((int*)buffi) = x_size;
|
||||||
|
*((int*)buffi+1) = y_size;
|
||||||
|
|
||||||
|
// Fill color
|
||||||
|
memset((char*)buffi + 8, 0xFF, x_size * y_size * 3);
|
||||||
|
|
||||||
|
// Draw text on buffer
|
||||||
|
drawText(buffi, 5, 0, string, ln_str, 0xFF000000, 0x30C18);
|
||||||
|
drawText(buffi, 5, 32, string, ln_str, 0xFF000000, 0x1030C18);
|
||||||
|
drawText(buffi, 5, 64, string, ln_str, 0xFF000000, 0x2030C18);
|
||||||
|
drawText(buffi, 5, 96, string, ln_str, 0xFF000000, 0x4030C18);
|
||||||
|
drawText(buffi, 5, 128, string, ln_str, 0xFF000000, 0x8030C18);
|
||||||
|
drawText(buffi, 5, 160, string, ln_str, 0xFF000000, 0x0F031428);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
switch (_ksys_get_event()){
|
||||||
|
case KSYS_EVENT_REDRAW:
|
||||||
|
_ksys_start_draw();
|
||||||
|
_ksys_create_window(50, 50, 800, 300, "Rasterworks Example", 0x999999, 0x34);
|
||||||
|
_ksys_draw_bitmap(buffi + 8, 10, 10, 768, 256);
|
||||||
|
_ksys_end_draw();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KSYS_EVENT_BUTTON:
|
||||||
|
if(_ksys_get_button() == 1) exit(0);
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
20
programs/develop/ktcc/trunk/libc.obj/samples/consoleio.c
Normal file
20
programs/develop/ktcc/trunk/libc.obj/samples/consoleio.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// demonstration conio use, color text
|
||||||
|
// more info in conio.h
|
||||||
|
|
||||||
|
#include <conio.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
if(con_init()) return 1; // init fail
|
||||||
|
(*con_set_title)("Console colors");
|
||||||
|
|
||||||
|
// con_write_asciiz("\033[0;31;42m test \n"); // red on green bk
|
||||||
|
|
||||||
|
for(int i = 30; i < 48; i++){
|
||||||
|
(*con_printf)("\033[%dmColor 0x%02X: ", i, i);
|
||||||
|
(*con_write_asciiz)("Text sample.");
|
||||||
|
(*con_printf)(" printf %s test %d\n", "small", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
(*con_exit)(0);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user