From 23b2f8b13c1bd8f1bdba4c93768dfae8e7961f1d Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Thu, 10 Oct 2013 22:42:17 +0000 Subject: [PATCH] @notify: C-- version 0.7 git-svn-id: svn://kolibrios.org@4004 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../notify/{compile.bat => compile_en.bat} | 4 + programs/cmm/notify/compile_ru.bat | 9 + programs/cmm/notify/notify.c | 159 +++++++++--------- 3 files changed, 95 insertions(+), 77 deletions(-) rename programs/cmm/notify/{compile.bat => compile_en.bat} (53%) create mode 100644 programs/cmm/notify/compile_ru.bat diff --git a/programs/cmm/notify/compile.bat b/programs/cmm/notify/compile_en.bat similarity index 53% rename from programs/cmm/notify/compile.bat rename to programs/cmm/notify/compile_en.bat index 52bcbedaad..79e1472412 100644 --- a/programs/cmm/notify/compile.bat +++ b/programs/cmm/notify/compile_en.bat @@ -1,5 +1,9 @@ +@del lang.h-- +@echo #define LANG_ENG 1 >lang.h-- + ..\C--\C-- notify.c @del @notify @rename notify.com @notify @del warning.txt +@del lang.h-- @pause diff --git a/programs/cmm/notify/compile_ru.bat b/programs/cmm/notify/compile_ru.bat new file mode 100644 index 0000000000..1603196742 --- /dev/null +++ b/programs/cmm/notify/compile_ru.bat @@ -0,0 +1,9 @@ +@del lang.h-- +@echo #define LANG_RUS 1 >lang.h-- + +..\C--\C-- notify.c +@del @notify +@rename notify.com @notify +@del warning.txt +@del lang.h-- +@pause diff --git a/programs/cmm/notify/notify.c b/programs/cmm/notify/notify.c index 620b5658dc..3f71aed3f5 100644 --- a/programs/cmm/notify/notify.c +++ b/programs/cmm/notify/notify.c @@ -1,62 +1,83 @@ -//notify 0.52 +//notify 0.7 //SoUrcerer 2010, Leency 2012-2013, GNU GPLv2 -#define MEMSIZE 0x3E80 +#define MEMSIZE 0x2F00 #include "..\lib\kolibri.h" #include "..\lib\strings.h" #include "..\lib\mem.h" #include "..\lib\figures.h" +?define PADDING 12; + int SCREEN_SIZE_X, SCREEN_SIZE_Y; -int WIN_Y=0, - WIN_SIZE_X=300, +int WIN_X, + WIN_Y, + WIN_SIZE_X=256, WIN_SIZE_Y=28; -int delay = 500; - +int delay = 400; + +#include "lang.h--" +#ifdef LANG_RUS + ?define DEFAULT_TEXT "Эта программа показывает уведомления."; +#else + ?define DEFAULT_TEXT "This program shows notices. Open it with params."; +#endif + +void PutText(dword x, y) { + WriteText(x,y, 0x80, 0, #param); +} + +inline fastcall int GetClientTop() +{ + $mov eax, 48 + $mov ebx, 5 + $int 0x40 + $mov eax, ebx + $shr eax, 16 +} + +dword shadow_buf, lighter_pixel1, lighter_pixel2; +void GetBackground() +{ + CopyScreen(shadow_buf, WIN_X, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y); + CopyScreen(lighter_pixel1, WIN_X, WIN_Y, 1, 1); + CopyScreen(lighter_pixel2, WIN_X, WIN_Y+WIN_SIZE_Y, 1, 1); + ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 6); + ShadowImage(lighter_pixel1, 1, 1, 2); + ShadowImage(lighter_pixel2, 1, 1, 2); +} + + void main() { int TEXT_X=4, TEXT_Y=12; - dword shadow_buf, lighter_pixel1, lighter_pixel2; + char drawn; - if (!param) - { - if (GetSystemLanguage()==4) - strcpy(#param, "Эта программа показывает уведомления."); - else - strcpy(#param, "This program shows notices. Open it with params."); - } - - SCREEN_SIZE_X=GetScreenWidth()+1; + if (!param) strcpy(#param, DEFAULT_TEXT); if (strlen(#param)*6>WIN_SIZE_X) { - WIN_SIZE_X=strlen(#param)*6+8; + WIN_SIZE_X=strlen(#param)*6+PADDING; delay = strlen(#param)*10; } + + SCREEN_SIZE_X=GetScreenWidth()+1; + WIN_X = SCREEN_SIZE_X-WIN_SIZE_X-1; + WIN_Y = GetClientTop(); + TEXT_X = -6*strlen(#param)+WIN_SIZE_X/2; + TEXT_Y = WIN_SIZE_Y/2-3; - TEXT_X=-6*strlen(#param)+WIN_SIZE_X/2; - TEXT_Y=WIN_SIZE_Y/2-3; - - //шч   ∙э√щ ъюёЄ√ы№, Ёхрышчє■∙шщ ьэюуюяюЄюўэюёЄ№ :) + //emulate multithread :) while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17; - #if !defined(AUTOBUILD) - { - mem_Init(); - shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3); - lighter_pixel1 = malloc(3); - lighter_pixel2 = malloc(3); - CopyScreen(shadow_buf, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y); - CopyScreen(lighter_pixel1, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, 1, 1); - CopyScreen(lighter_pixel2, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y+WIN_SIZE_Y, 1, 1); - ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 4); - ShadowImage(lighter_pixel1, 1, 1, 1); - ShadowImage(lighter_pixel2, 1, 1, 1); - } - #endif + mem_Init(); + shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3); + lighter_pixel1 = malloc(3); + lighter_pixel2 = malloc(3); + GetBackground(); loop() { @@ -64,37 +85,37 @@ void main() switch(EAX & 0xFF) { case evButton: - if (GetButtonID()==1) ExitProcess(); - break; - - case evKey: + ExitProcess(); break; case evReDraw: - DefineAndDrawWindow(SCREEN_SIZE_X-WIN_SIZE_X,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF); - DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0); - //draw_grid(); - //PutShadow(0,0,WIN_SIZE_X,WIN_SIZE_Y, 0, 4); - #ifdef AUTOBUILD - { draw_grid(); } - #else + DefineAndDrawWindow(WIN_X+1,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF); + if (drawn==1) { - _PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf); - PutPixel(0,0,ESDWORD[lighter_pixel1]); - PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]); - } - #endif + drawn=2; + MoveSize(0,0,-1,-1); + pause(3); + GetBackground(); + MoveSize(WIN_X,WIN_Y,-1,-1); + drawn=1; + } + DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0); + + _PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf); + PutPixel(0,0,ESDWORD[lighter_pixel1]); + PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]); DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333); - WriteText(TEXT_X-1,TEXT_Y, 0x80, 0,#param); //Єхэ№ - WriteText(TEXT_X+1,TEXT_Y, 0x80, 0,#param); - WriteText(TEXT_X,TEXT_Y-1, 0x80, 0,#param); - WriteText(TEXT_X,TEXT_Y+1, 0x80, 0,#param); - WriteText(TEXT_X-1,TEXT_Y-1, 0x80, 0,#param); - WriteText(TEXT_X+1,TEXT_Y+1, 0x80, 0,#param); - WriteText(TEXT_X-1,TEXT_Y+1, 0x80, 0,#param); - WriteText(TEXT_X+1,TEXT_Y-1, 0x80, 0,#param); - - WriteText(TEXT_X,TEXT_Y, 0x80, 0xFFFfff,#param); + + PutText(TEXT_X-1,TEXT_Y+1); + PutText(TEXT_X-1,TEXT_Y-1); + PutText(TEXT_X-1,TEXT_Y ); + PutText(TEXT_X+1,TEXT_Y-1); + PutText(TEXT_X+1,TEXT_Y ); + PutText(TEXT_X+1,TEXT_Y+1); + PutText(TEXT_X, TEXT_Y+1); + PutText(TEXT_X, TEXT_Y-1); + WriteText(TEXT_X, TEXT_Y, 0x80, 0xFFFfff, #param); + if (drawn==0) drawn=1; break; default: ExitProcess(); @@ -103,20 +124,4 @@ void main() } - -:void draw_grid() -{ - int x, y; - - for (y=0; y<=WIN_SIZE_Y; y++) - { - for (x=0; x<=WIN_SIZE_X; x++) - { - if (! y&1) && (! x&1) PutPixel(x, y, 0); - if ( y&1) && ( x&1) PutPixel(x, y, 0); - } - } -} - - stop: