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 | }1)+2; |
||
87 |