From 15f607fd643c6c6848e037133862f616b9cdc811 Mon Sep 17 00:00:00 2001 From: jacekm Date: Fri, 8 Feb 2008 18:18:56 +0000 Subject: [PATCH] scc 0.5.3 b + new examples git-svn-id: svn://kolibrios.org@721 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/scc/README.TXT | 13 ++-- programs/develop/scc/example/EXAMPLE.C | 81 +++++++++++++--------- programs/develop/scc/example/klib.h | 95 +++++++++++++++++++++----- 3 files changed, 134 insertions(+), 55 deletions(-) diff --git a/programs/develop/scc/README.TXT b/programs/develop/scc/README.TXT index bac753132e..54743dc188 100644 --- a/programs/develop/scc/README.TXT +++ b/programs/develop/scc/README.TXT @@ -1,10 +1,9 @@ -############################## -# SCC (simple c compiler) -# port of CCOMP to KolibriOS -# -###### -# contact: jacekm.pl@gmail.com -############################## + ############################## +# SCC (simple c compiler) # +# port of CCOMP to KolibriOS # + ############################## +# contact: jacekm.pl@gmail.com # + ############################## KNOWN BUGS: * only directiory /rd/1/ works diff --git a/programs/develop/scc/example/EXAMPLE.C b/programs/develop/scc/example/EXAMPLE.C index d1828991ea..6b453a2bbb 100644 --- a/programs/develop/scc/example/EXAMPLE.C +++ b/programs/develop/scc/example/EXAMPLE.C @@ -14,24 +14,35 @@ include 'INTRINS.ASM' #endasm #include "klib.h" + +// CONTROLS: +#define CONTROLS 2 +int control[CONTROLS]; +int cont1[7] = { CheckBox,4,10,40,0x111111,0xFFFFFF,0}; +int cont2[7] = { CheckBox,5,25,55,0xBBBBBB,0,0}; void main() -{int event; - int button_id; - - draw_window(); - while(1) - { - event=get_event(); - switch(event) +{ + int event; + int button_id; + + control[0]=&cont1[0]; + control[1]=&cont2[0]; + + draw_window(); + while(1) { - case 1: draw_window(); break; - case 2: get_button(); break; - case 3: button_id=get_button(); - if(button_id==1) s_quit(); - break; + event=get_event(); + switch(event) + { + case 1: draw_window(); break; + case 2: get_button(); break; + case 3: button_id=get_button(); + eventControls(control,CONTROLS,button_id); + if(button_id==1) s_quit(); + break; + } } - } } char text1[50]="THIS IS AN EXAMPLE OF C"; @@ -39,26 +50,32 @@ char text2[50]="PROGRAM IN KOLIBRIOS"; char text3[50]=""; char text4[50]="SUCCESS"; int p_text[4]; + + draw_window() -{int i; /* for index */ - int y;y=25; - - p_text[0]=&text1[0]; - p_text[1]=&text2[0]; - p_text[2]=&text3[0]; - p_text[3]=&text4[0]; - - begin_draw(); - - window(100,100,320,150,0x03ffffff,0x805080d0,0x005080d0); - label(8,8,0x10ddeeff,"Example application"); - buttonT(50,35,60,12,0x111111,1, "Click Me!", 0xFFFFFF); - - for(i=0;i<4;i++) - label(20,40+(y+=10),0x000000,p_text[i]); - - end_draw(); +{ + int i; /* for index */ + int y;y=25; + + p_text[0]=&text1[0]; + p_text[1]=&text2[0]; + p_text[2]=&text3[0]; + p_text[3]=&text4[0]; + + begin_draw(); + + window(100,100,320,150,0x03ffffff,0x805080d0,0x005080d0); + label(8,8,0x10ddeeff,"Example application"); + buttonT(50,35,60,12,0x111111,1, "Click Me!", 0xFFFFFF); + //checkbox(cbTest); + + renderControls(control, CONTROLS); + + for(i=0;i<4;i++) + label(20,40+(y+=10),0x000000,p_text[i]); + + end_draw(); } #asm diff --git a/programs/develop/scc/example/klib.h b/programs/develop/scc/example/klib.h index 3297824f77..818d3d32cf 100644 --- a/programs/develop/scc/example/klib.h +++ b/programs/develop/scc/example/klib.h @@ -1,3 +1,6 @@ +#ifndef __KLIB_H__ +#define __KLIB_H__ + /********* C library *********/ get_event() @@ -99,6 +102,8 @@ char *p_string; /* esp +8 */ #endasm } + + // Button + Text buttonT(x1,y1,w,h,color,id,p_string, str_color) int x1,y1,w,h; /* esp +28 +24 +20 +16 */ @@ -111,6 +116,7 @@ int str_color; label(x1+4,y1+2,str_color,p_string); } +// Button button(x1,y1,w,h,color,id) int x1,y1,w,h; /* esp +28 +24 +20 +16 */ int color,id; /* esp +12 +8 */ @@ -132,6 +138,75 @@ int color,id; /* esp +12 +8 */ int 0x40 #endasm } +// CONTROLS: +#define CheckBox 1 + +/* CheckBox +array[ ]: +0 int type +1 int id +2 int x, +3 int y, +4 int color, +5 int colorText +6 int checked +*/ +char cbt[2] = " "; +checkbox(cb) +int *cb; +{ + if (cb[6] == 1) // cheked is set + cbt[0] = 'X'; + else + cbt[0] = ' '; + + buttonT(cb[2], cb[3], 12,10,cb[4],cb[1],cbt,cb[5]); +} + +eventControls(control,count,id) +int* control; +int count; +int id; +{ + int i; + int *cont; + for (i=0; i