Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8282 → Rev 8283

/programs/bcc32/examples/color_dlg/Makefile
0,0 → 1,19
# Path to /programs
SVN_PROGR:=../../..
 
# Path to /programs/bcc32
SVN_BCC32:=$(SVN_PROGR)/bcc32
 
# Path to t2fasm
T2FASM:=$(SVN_BCC32)/t2fasm
 
# Path to include
INCLUDE:=$(SVN_BCC32)/include
 
# Path to Bin folder
KOS32_BCC:=/home/autobuild/borlandcpp/bin
 
# Filename without .cpp
FILENAME:=color_dlg
 
include $(SVN_BCC32)/Makefile_app
/programs/bcc32/examples/color_dlg/color_dlg.cpp
0,0 → 1,94
#include <kolibri.h>
#include <kos_heap.h>
#include <kos_file.h>
#include <load_lib.h>
#include <l_proc_lib.h>
 
using namespace Kolibri;
 
const char header[] = "Color Dialog";
char library_path[2048];
long color1,color2,color3;
 
ColorDialog_data cold;
unsigned char procinfo[1024];
 
namespace Kolibri{
char CurrentDirectoryPath[2048];
}
 
void KolibriOnPaint(void);
 
void __stdcall DrawWindow()
{
asm{
push ebx
mcall SF_REDRAW,SSF_BEGIN_DRAW
}
KolibriOnPaint();
asm{
mcall SF_REDRAW,SSF_END_DRAW
pop ebx
}
}
 
bool KolibriOnStart(TStartData &kos_start, TThreadData /*th*/)
{
kos_start.Left = 10;
kos_start.Top = 40;
kos_start.Width = 420;
kos_start.Height = 320;
kos_start.WinData.WindowColor = 0xFFFFFF;
kos_start.WinData.WindowType = 0x33; // 0x34 - fixed, 0x33 - not fixed
kos_start.WinData.Title = header;
if(LoadLibrary("proc_lib.obj", library_path, "/sys/lib/proc_lib.obj", &import_proc_lib))
{
cold.type = 0;
cold.procinfo = procinfo;
cold.com_area_name = "FFFFFFFF_color_dialog";
cold.com_area = 0;
cold.start_path = "/rd/1/colrdial";
cold.draw_window = DrawWindow;
cold.status = 0;
cold.x_size = 420;
cold.x_start = 10;
cold.y_size = 320;
cold.y_start = 10;
ColorDialog_Init(&cold);
} else return false;
color1=color2=color3=0xffffff;
return true;
}
 
void KolibriOnPaint(void)
{
// If button have ID 1, this is close button
DrawButton(2,0xf0f0f0, 10,10,60,20);
DrawText(20,16,0,"Color 1");
DrawButton(3,0xf0f0f0, 80,10,60,20);
DrawText(90,16,0,"Color 2");
DrawButton(4,0xf0f0f0, 150,10,60,20);
DrawText(160,16,0,"Color 3");
 
DrawRect( 10,40,61,100,color1);
DrawRect( 80,40,61,100,color2);
DrawRect(150,40,61,100,color3);
}
 
void KolibriOnButton(long id, TThreadData /*th*/)
{
switch(id){
case 2:
ColorDialog_Start(&cold);
if(cold.status==1){ color1 = cold.color; }
break;
case 3:
ColorDialog_Start(&cold);
if(cold.status==1){ color2 = cold.color; }
break;
case 4:
ColorDialog_Start(&cold);
if(cold.status==1){ color3 = cold.color; }
//break;
};
}
/programs/bcc32/examples/color_dlg/color_dlg_cpp.bat
0,0 → 1,15
Set NAME=color_dlg
Set BCC_DIR=..\..\..\bcc32
kos32-bcc -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__KOLIBRI__ -I..\..\..\bcc32\include %NAME%.cpp
 
echo STACKSIZE equ 8192> kos_make.inc
echo include "%BCC_DIR%\include\kos_start.inc">> kos_make.inc
echo include "%BCC_DIR%\include\kos_func.inc">> kos_make.inc
echo include "%BCC_DIR%\include\kos_heap.inc">> kos_make.inc
 
echo include "kos_make.inc" > f_%NAME%.asm
t2fasm < %NAME%.asm >> f_%NAME%.asm
fasm f_%NAME%.asm %NAME%.kex
if exist %NAME%.kex kpack %NAME%.kex
if exist %NAME%.kex del kos_make.inc
pause
/programs/bcc32/include/kolibri.h
135,6 → 135,7
//_ of the stack if (stack_end) is zero or (stack_size) is not zero, in this case stack
//_ will be deleted automaticaly from dynamic memory at the finish of the thread.
void DrawText(short x, short y, int color, const char* string);
void DrawRect(long l, long t, long w, long h, long color);
void PutImage(unsigned char* img_data, long img_l, long img_t, long img_w, long img_h);
void SetWindowCaption(const char* caption);
}
/programs/bcc32/include/kos_func.inc
70,6 → 70,7
mov dword [address+1],val
}
 
align 4
proc @Kolibri@Main$qv
and esp,not 3
sub esp,1024
118,6 → 119,7
int 0x40
endp
 
align 4
proc @Kolibri@ThreadMain$qpvt1
xchg ebx,[esp+4]
xchg ebp,[esp+8]
329,6 → 331,7
ret
endp
 
align 4
proc @Kolibri@Redraw$qippv
push ebp
mov ebp,[esp+12]
379,6 → 382,7
ret
endp
 
align 4
proc @Kolibri@MoveWindow$qxpxi uses ebx esi
mov eax,[esp+12]
mov ebx,[eax]
390,6 → 394,7
ret
endp
 
align 4
proc @Kolibri@ExitDebug$qv
push dword [@Kolibri@DebugPrefix]
call @Kolibri@DebugPutString$qpxc
399,6 → 404,7
jmp @Kolibri@ExitProcess$qv
endp
 
align 4
proc @Kolibri@ExitProcess$qv
lock bts dword [@Kolibri@_ExitProcessNow],0
jc .exit_process_wait
464,11 → 470,13
jmp .exit_process_wait_loop
endp
 
align 4
proc @Kolibri@ExitThread$qppv
mov esp,[esp+4]
jmp @Kolibri@ThreadMain$qpvt1.main_end
endp
 
align 4
proc @Kolibri@ReturnMessageLoop$qppv
mov esp,[esp+4]
bt dword [esp+KOLIBRI_THREAD_DATA_FLAG*4],30
476,6 → 484,7
jmp @Kolibri@ThreadMain$qpvt1.main_cycle
endp
 
align 4
proc @Kolibri@Delay$qui uses ebx
mov eax,SF_SLEEP
mov ebx,[esp+8]
483,6 → 492,7
ret
endp
 
align 4
proc @Kolibri@Clock$qv uses ebx
mov eax,SF_SYSTEM_GET
mov ebx,SSF_TIME_COUNT
490,6 → 500,7
ret
endp
 
align 4
proc @Kolibri@DrawButton$qllllll uses ebx esi
mov eax,SF_DEFINE_BUTTON
mov ebx,[esp+12-2+8]
502,6 → 513,7
ret
endp
 
align 4
proc @Kolibri@GetPackedTime$qv
mov eax,SF_GET_SYS_TIME
int 0x40
508,6 → 520,7
ret
endp
 
align 4
proc @Kolibri@GetTime$qpi
mov eax,SF_GET_SYS_TIME
int 0x40
534,6 → 547,7
ret
endp
 
align 4
proc @Kolibri@GetPackedDate$qv
mov eax,SF_GET_SYS_DATE
int 0x40
540,6 → 554,7
ret
endp
 
align 4
proc @Kolibri@GetDate$qpi
mov eax,SF_GET_SYS_DATE
int 0x40
566,6 → 581,7
ret
endp
 
align 4
proc @Kolibri@ReadCommonColors$qpui uses ebx
mov eax,SF_STYLE_SETTINGS
mov ebx,SSF_GET_COLORS
575,6 → 591,7
ret
endp
 
align 4
proc @Kolibri@DrawText$qssipxc uses ebx
mov eax,SF_DRAW_TEXT
mov ebx,[esp+8-2]
586,6 → 603,19
ret
endp
 
align 4
proc @Kolibri@DrawRect$qlllll uses ebx
mov eax,SF_DRAW_RECT
mov ebx,[esp+8-2]
mov bx,[esp+16]
mov ecx,[esp+12-2]
mov cx,[esp+20]
mov edx,[esp+24]
int 0x40
ret
endp
 
align 4
proc @Kolibri@PutImage$qpucllll uses ebx
mov eax,SF_PUT_IMAGE
mov ebx,[esp+8]
597,6 → 627,7
ret
endp
 
align 4
proc @Kolibri@SetWindowCaption$qpxc uses ebx
mov eax,SF_SET_CAPTION
mov ebx,2
605,6 → 636,7
ret
endp
 
align 4
proc @Kolibri@GetProcessInfo$qpuipct1t1piui uses ebx esi edi
sub esp,1024
mov eax,SF_THREAD_INFO
654,6 → 686,7
ret
endp
 
align 4
proc @Kolibri@GetPid$qv uses ebx
sub esp,1024
mov eax,SF_THREAD_INFO
660,11 → 693,12
mov ebx,esp
mov ecx,-1
int 0x40
mov eax,[esp+30]
mov eax,[esp+process_information.PID]
add esp,1024
ret
endp
 
align 4
proc @Kolibri@GetPid$qppv
mov ecx,[esp+4]
mov eax,[ecx+KOLIBRI_THREAD_DATA_PID*4]
671,6 → 705,7
ret
endp
 
align 4
proc @Kolibri@_HashByte$qui
@Kolibri@_HashWord$qui:
@Kolibri@_HashDword$qui:
694,6 → 729,7
dd 0x9193780B
end if
 
align 4
proc @Kolibri@GetThreadData$qv
call @Kolibri@GetPid$qv
push eax
702,6 → 738,7
ret
endp
 
align 4
proc @Kolibri@GetThreadData$qui
mov eax,[esp+4]
call Kolibri_HashInt
741,6 → 778,7
jmp .get_thread_data_nowait
endp
 
align 4
proc @Kolibri@_GetSkinHeader$qv uses ebx
mov eax,SF_STYLE_SETTINGS
mov ebx,SSF_GET_SKIN_HEIGHT
748,6 → 786,7
ret
endp
 
align 4
proc @Kolibri@GetScreenSize$qrust1
mov eax,SF_GET_SCREEN_SIZE
int 0x40
759,6 → 798,7
ret
endp
 
align 4
proc Kolibri_MutexLockNoWait
pop eax
xor al,al
765,6 → 805,7
ret
endp
 
align 4
proc Kolibri_MutexLockWait uses ebx
mov eax,SF_SLEEP
xor ebx,ebx
776,6 → 817,7
ret
endp
 
align 4
proc Kolibri_MutexLockWaitTime
cmp dword [esp+12],0
jng .MutexLockWait
805,6 → 847,7
ret
endp
 
align 4
proc Kolibri_MutexLock
shl byte [ecx],1
jnz .lock_first
814,6 → 857,7
ret
endp
 
align 4
proc @Kolibri@TryLock$qp14Kolibri@TMutex
mov eax,Kolibri_MutexLockNoWait
mov ecx,[esp+4]
820,6 → 864,7
jmp Kolibri_MutexLock
endp
 
align 4
proc @Kolibri@Lock$qp14Kolibri@TMutex
mov eax,Kolibri_MutexLockWait
mov ecx,[esp+4]
826,6 → 871,7
jmp Kolibri_MutexLock
endp
 
align 4
proc @Kolibri@LockTime$qp14Kolibri@TMutexi
mov eax,Kolibri_MutexLockWaitTime
mov ecx,[esp+4]
832,6 → 878,7
jmp Kolibri_MutexLock
endp
 
align 4
proc @Kolibri@UnLock$qp14Kolibri@TMutex
mov ecx,[esp+4]
shr byte [ecx],1
847,6 → 894,7
ret
endp
 
align 4
proc Kolibri_MutexLockRec
shl byte [ecx],1
jng .lock_first
871,6 → 919,7
jmp @Kolibri@ExitDebug$qv
endp
 
align 4
proc @Kolibri@TryLock$qp16Kolibri@TRecMutexui
mov eax,Kolibri_MutexLockNoWait
mov ecx,[esp+4]
878,6 → 927,7
jmp Kolibri_MutexLockRec
endp
 
align 4
proc @Kolibri@Lock$qp16Kolibri@TRecMutexui
mov eax,Kolibri_MutexLockWait
mov ecx,[esp+4]
885,6 → 935,7
jmp Kolibri_MutexLockRec
endp
 
align 4
proc @Kolibri@LockTime$qp16Kolibri@TRecMutexiui
mov eax,Kolibri_MutexLockWaitTime
mov ecx,[esp+4]
892,6 → 943,7
jmp Kolibri_MutexLockRec
endp
 
align 4
proc @Kolibri@UnLock$qp16Kolibri@TRecMutexui
mov ecx,[esp+4]
mov edx,[esp+8]
922,6 → 974,7
jmp @Kolibri@ExitDebug$qv
endp
 
align 4
proc @Kolibri@DebugPutChar$qc
mov cl,byte [esp+4]
cmp cl,13
945,6 → 998,7
jmp .debug_put_char_after_cmp
endp
 
align 4
proc @Kolibri@DebugPutString$qpxc uses esi
push dword 0
mov esi,dword [esp+12]
962,6 → 1016,7
ret
endp
 
align 4
proc @Kolibri@GetKey$qv
mov eax,SF_GET_KEY
int 0x40
974,6 → 1029,7
ret
endp
 
align 4
proc @Kolibri@GetMouseButton$qv uses ebx
mov eax,SF_MOUSE_GET
mov ebx,SSF_BUTTON
981,6 → 1037,7
ret
endp
 
align 4
proc @Kolibri@GetMousePosition$qrst1o uses ebx
mov eax,SF_MOUSE_GET
xor ebx,ebx ;SSF_SCREEN_POSITION
997,6 → 1054,7
ret
endp
 
align 4
proc @Kolibri@WasThreadCreated$qv
cmp byte [@Kolibri@_ThreadSavedBegProc],0x90
setz al
1003,6 → 1061,7
ret
endp
 
align 4
proc @Kolibri@CreateThread$qpvuit1
push ebx
mov edx,[esp+16]
1078,6 → 1137,7
jmp .create_thread_fill_stack
endp
 
align 4
proc @Kolibri@_FileAccess$qp21Kolibri@FileInfoBlock uses ebx
mov eax,SF_FILE
mov ebx,[esp+8]