summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/clock/mfinput/clock.mf
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/clock/mfinput/clock.mf')
-rw-r--r--macros/latex/contrib/clock/mfinput/clock.mf137
1 files changed, 137 insertions, 0 deletions
diff --git a/macros/latex/contrib/clock/mfinput/clock.mf b/macros/latex/contrib/clock/mfinput/clock.mf
new file mode 100644
index 0000000000..5438012337
--- /dev/null
+++ b/macros/latex/contrib/clock/mfinput/clock.mf
@@ -0,0 +1,137 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% File: clock.mf
+% Date: April 10, 2001
+% Author: Oliver Corff
+% (c) 2001 Ulaanbaatar, Beijing, Berlin
+%
+% A metafont for providing the clock to LaTeX-users.
+%
+% Usage: see package clock
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% This font contains characters for hands and dials. %%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+mode_setup;
+ mg:=4/4;
+ thin#:=mg*1pt#;
+ width#:=mg*16pt#;
+ height#:=mg*12pt#;
+ depth#:=mg*4pt#;
+ margin#:=mg*1.05pt#;
+
+ define_pixels(width,height,depth,thin,margin);
+
+ font_size = 10pt#;
+
+ font_x_height = 16pt#;
+ % font_quad = 16pt#;
+ font_normal_space = 0pt#;
+ font_extra_space = 0pt#;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% All sorts of clock parts
+%
+def MinuteHand (expr minutes) = % Minutenzeiger
+ z1=(w/2,1/2(h-d));
+ z2=(w/2,27/36h-margin);
+ pickup pencircle scaled 1/2thin; % rotated (-minutes*6);
+ draw (z1--z2) rotatedabout (z1,-minutes*6);
+enddef;
+
+def HourHand (expr minutes) = % Stundenzeiger
+ z1=(w/2,1/2(h-d));
+ z2=(w/2,24/36h-margin);
+ pickup pencircle scaled 9/16thin; % rotated (-minutes*6);
+ draw (z1--z2) rotatedabout (z1,-minutes*6);
+enddef;
+
+def Hands (expr minutes) = % Beide Zeiger
+ %
+ beginchar(minutes+64,width#,height#,depth#);
+ MinuteHand(minutes);
+ endchar;
+ %
+ beginchar(minutes+128,width#,height#,depth#);
+ HourHand(minutes);
+ endchar;
+enddef;
+
+def NESW =
+ % This routine places ticks at 12, 3, 6 and 9 o'clock
+ for l = 0,3,6,9:
+ top z5=(w/2,h-margin);
+ z7=(w/2,1/2(h-d));
+ z6=6/36[z5,z7];
+ draw (z5--z6) rotatedabout (z7,-l*30);
+ endfor;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% All sorts of dials
+%
+beginchar("0",width#,height#,depth#);
+ top z1=(0.5w,h-margin); % 12 Uhr
+ rt z2=(w-margin,0.5(h-d)); % 3 Uhr
+ bot z3=(x1,-d+margin); % 6 Uhr
+ lft z4=(0+margin,y2); % 9 Uhr
+
+ pickup pencircle scaled 1/2thin;
+ draw z1...z2...z3...z4...cycle;
+endchar;
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+beginchar("1",width#,height#,depth#);
+ %
+ % "Standard", or "Classical" dial
+ % with indications for every hour
+ %
+ pickup pencircle scaled 5/8thin;
+ NESW;
+
+ pickup pencircle scaled 2/4thin;
+ for l = 1,2,4,5,7,8,10,11:
+ numeric x[];
+ numeric y[];
+ top z5=(w/2,h-margin);
+ z7=(w/2,1/2(h-d));
+ z6=3/36[z5,z7];
+ draw (z5--z6) rotatedabout (z7,-l*30);
+ endfor;
+endchar;
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+beginchar("2",width#,height#,depth#);
+ %
+ % A rather minimalist dial, with
+ % just a dot marking each hour
+ %
+ pickup pencircle scaled 2/4thin;
+ for l = 0 step 1 until 11:
+ top z2=(w/2,h-margin-6/8thin);
+ z1=(w/2,1/2(h-d));
+ drawdot(z2) rotatedabout (z1,-l*30);
+ endfor;
+endchar;
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+beginchar("3",width#,height#,depth#);
+ % A radically minimalist dial
+ pickup pencircle scaled 5/8thin;
+ NESW;
+endchar;
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The true center of activity:
+% create both hands at the same time
+%
+for minutes = 0 step 1 until 59:
+ Hands(minutes);
+endfor;
+end.
+