89 lines
2.1 KiB
Plaintext
89 lines
2.1 KiB
Plaintext
(){
|
|
cls(0);
|
|
drawclock(150);
|
|
}
|
|
drawclock(rad) {
|
|
hand_color = 0x6a6a6a;
|
|
seconds_color = 0xff0000;
|
|
radius_notches = rad*.95;
|
|
radius_numbers = rad*.85;
|
|
small_notch_size =rad*0.04;
|
|
big_notch_size = rad*0.08;
|
|
cx=rad+1;
|
|
cy=rad+1;
|
|
|
|
// Face background
|
|
setcol(0x5aaaaa); drawsph(cx,cy,rad);
|
|
|
|
// Highlight from stopwatch.kc
|
|
setcol(0xffffff); gldisable(GL_DEPTH_TEST);
|
|
glbegin(GL_COMPLEX); glsettex("whitepix.tga");
|
|
for(a=3.5;a<=4.5;a+=.25) { gltexcoord(0,0); glvertex(cos(a)*rad*.55+cx,sin(a)*rad*.55+cy); }
|
|
for(a=4.5;a>=3.5;a-=.25) { gltexcoord(0,0); glvertex(cos(a)*rad*.45+cx,sin(a)*rad*.45+cy); }
|
|
glend();
|
|
|
|
moveto(cx-4*6, cy-.5*rad);
|
|
setfont(6,8);
|
|
setcol(0); printf("Evaltime");
|
|
|
|
// Face
|
|
setcol(0x015151);
|
|
hr=0;
|
|
for(i=0; i<60; i++)
|
|
{
|
|
a = i/60*2*pi - pi/2;
|
|
ca=cos(a);
|
|
sa=sin(a);
|
|
if (i%5==0)
|
|
{
|
|
hour = hr; if (hour==0) hour=12;
|
|
draw_hour(cx,cy,ca,sa,radius_numbers,hour);
|
|
hr++;
|
|
|
|
r=radius_notches;
|
|
x=cx + ca*r; y=cy+sa*r;
|
|
drawcone(x,y,big_notch_size*.5,x+big_notch_size*ca,y+big_notch_size*sa,-big_notch_size*.5,0);
|
|
} else {
|
|
r=radius_notches;
|
|
x=cx + ca*r; y=cy+sa*r;
|
|
drawcone(x,y,small_notch_size*.5,x+small_notch_size*ca,y+small_notch_size*sa,-small_notch_size*.5,0);
|
|
}
|
|
}
|
|
|
|
|
|
int_hours = klock(6);
|
|
int_minutes = klock(7);
|
|
int_seconds = klock(8);
|
|
int_millis = klock(9);
|
|
|
|
// Hour and Minute hand
|
|
hours = (int_hours+int_minutes/60.0) / 24.0;
|
|
a = hours * 2*pi - pi/2;
|
|
drawhand(cx,cy,a, rad*.64, 6,4, hand_color);
|
|
a = ( (int_minutes+int_seconds/60+int_millis/1000/60) / 60) * 2*pi - pi/2;
|
|
drawhand(cx,cy,a, rad*.84, 4,2, hand_color);
|
|
|
|
a = ((int_seconds+int_millis/1000) / 60) * 2*pi - pi/2;
|
|
drawhand(cx,cy,a, rad*.9, 3,1, seconds_color);
|
|
}
|
|
|
|
draw_hour(cx,cy,ca,sa,r,hr) {
|
|
x=cx + ca*r; y=cy+sa*r;
|
|
ofs=0; if(hr>9 || hr==0) ofs=5;
|
|
setfont(9,16);
|
|
moveto(x-4.5-ofs,y-8);
|
|
printf("%g", hr);
|
|
}
|
|
drawhand(cx,cy,angle,forward,r0,r1,kolor) {
|
|
back = .19*forward;
|
|
sx=cx - cos(angle)*back;
|
|
sy=cy - sin(angle)*back;
|
|
ex=cx + cos(angle)*forward;
|
|
ey=cy + sin(angle)*forward;
|
|
setcol(0);
|
|
drawcone(sx,sy,r0+1,ex,ey,r1+1);
|
|
setcol(kolor);
|
|
drawsph(cx,cy,r0+3);
|
|
drawcone(sx,sy,-r0,ex,ey,r1);
|
|
}
|