Subversion Repositories Kolibri OS

Rev

Rev 5098 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5132 clevermous 1
#include 
4973 right-hear 2
 
3
#define B_SZ	10
4
 
5
static char * Title="BinClock";
6
 
5098 clevermous 7
static void draw_small_box(int x,int y,int is_on)
4973 right-hear 8
{
5132 clevermous 9
 draw_bar(x,y,B_SZ,B_SZ,is_on ? 0xFF0000 : 0x103000);
4973 right-hear 10
}
11
 
5098 clevermous 12
static void draw_box_group(int x,int y,int num)
4973 right-hear 13
{
14
 int i,j;
15
 char buf[2];
16
 buf[0]=(num&(1+2+4+8))+'0';
17
 buf[1]='\0';
18
 for(i=0;i<4;i++)
19
 {
20
  j=(B_SZ+2)*i;
21
  draw_small_box(x,y+((B_SZ+2)*i),num & (1<<(3-i)) ? 1 : 0);
22
 }
5132 clevermous 23
 draw_bar(x,y+((B_SZ+2)*4),B_SZ,B_SZ,0x800000);
24
 draw_text_sys(buf,x+2,y+((B_SZ+2)*4)+3,1,0xFFFFFF);
4973 right-hear 25
}
26
 
5098 clevermous 27
static void draw_bcd_num(int x,int y,int num)
4973 right-hear 28
{
29
 int v1,v2;
30
 v1=(num>>4)&(1+2+4+8);
31
 v2=num & (1+2+4+8);
32
 draw_box_group(x,y,v1);
33
 draw_box_group(x+B_SZ+2,y,v2);
34
}
35
 
5098 clevermous 36
static void draw_hms(int x,int y)
4973 right-hear 37
{
5132 clevermous 38
 unsigned t;
4973 right-hear 39
 int h,m,s;
5132 clevermous 40
 __asm__ __volatile__("int $0x40" : "=a"(t) : "a"(3));
4973 right-hear 41
 s=(t & 0x00FF0000)>>16;
42
 m=(t & 0x0000FF00)>>8;
43
 h=(t & 0x000000FF);
44
 draw_bcd_num(x,y,h);
45
 x+=((B_SZ+2)<<1)+2;
46
 draw_bcd_num(x,y,m);
47
 x+=((B_SZ+2)<<1)+2;
48
 draw_bcd_num(x,y,s);
49
}
50
 
5098 clevermous 51
static void draw_h(void)
4973 right-hear 52
{
53
 draw_hms(22,28);
54
}
55
 
5098 clevermous 56
static void paint(void)
4973 right-hear 57
{
5132 clevermous 58
 BeginDraw();
59
 DrawWindow(100,100,40+((B_SZ+2)*6)+4,30+((B_SZ+2)*4)+16,Title,0x80,0x13);
60
 draw_bar(20,26,((B_SZ+2)*6)+4+2,4+((B_SZ+1)*4)+2,0);
4973 right-hear 61
 draw_h();
5132 clevermous 62
 EndDraw();
4973 right-hear 63
}
64
 
5132 clevermous 65
int main(void)
4973 right-hear 66
{
67
 int i;
68
 paint();
69
 for(;;)
70
 {
5132 clevermous 71
  i=wait_for_event(20);
4973 right-hear 72
  draw_h();
73
  switch(i)
74
  {
75
   case 1:
76
    paint();
77
    continue;
78
   case 2:
5132 clevermous 79
    get_key();
4973 right-hear 80
    continue;
81
   case 3:
5132 clevermous 82
    if(get_os_button()==1) return 0;
4973 right-hear 83
    continue;
84
  }
85
 }
86
}
87