%
% this is file 'unilogo15mm.mf' written by Stefan Gastinger, August 1988.
%
 
%mode=CanonCX;
mode_setup;
special "grayfont grays";
 
numeric Faktor;  Faktor      := 1;
numeric Rotation; Rotation     := 0;
 
numeric Durchmesser#; Durchmesser# := Faktor*15mm#;
numeric PenThin#; PenThin#     := 0.1*0.001*Durchmesser#;
numeric PenThick#; PenThick#    := 0.1*0.003*Durchmesser#;
numeric PenXThick#; PenXThick#   := 0.008*Durchmesser#;
numeric PenXXThick#; PenXXThick#  := 0.016*Durchmesser#;
numeric CharWidth#; CharWidth#   := Durchmesser#;
numeric CharHeight#; CharHeight#  := Durchmesser#;
numeric Dummy#;  Dummy#      := 10mm#;
 
define_pixels( CharWidth, CharHeight );
define_pixels( PenThin, Dummy );
define_pixels( PenThick, Dummy );
define_pixels( PenXThick, Dummy );
define_pixels( PenXXThick, Dummy );
 
def Distance = (0.022*CharHeight) enddef;
 
numeric LetterHeight; LetterHeight := 0.107*CharHeight;
numeric FigureHeight; FigureHeight := 0.94*(CharHeight-LetterHeight-Distance);
numeric FigureWidth;  FigureWidth  := 0.94*(FigureHeight*145/245);
numeric Radius;       Radius     := 0.5*(CharWidth-PenXThick);
 
 
beginchar( "a", CharWidth#, CharHeight#, 0 );
 
input unilogos;
 
%%% Test-Makros:
   %def   mode = draw enddef;
   %def unmode = draw enddef;
    def   mode =   fill enddef;
    def unmode = unfill enddef;
 
%%% Stift-Dicken:
    def penthin    = pickup pencircle scaled PenThin    enddef;
    def penthick   = pickup pencircle scaled PenThick   enddef;
    def penXthick  = pickup pencircle scaled PenXThick  enddef;
    def penXXthick = pickup pencircle scaled PenXXThick enddef;
 
%%% Drehen des Button um den Mittelpunkt:
    CopySystem;
    MoveSystem(  0.5*CharWidth,  0.5*CharHeight );
    RotateSystem( Rotation, Rotation );
    MoveSystem( -0.5*CharWidth, -0.5*CharHeight );
 
%%% Verschieben des Button zum Testen am Bildschirm:
  %  MoveSystem( -30, -95 );
 
%%% Stift aufnehmen:
    pickup pencircle;
 
%%%%% Drawing Button %%%%%
EnterSystem( (0.5*CharWidth,0.5*CharHeight), 1, Radius, 0, 1, Radius, 0 );
   penXthick; show reading file; input easycircle;
LeaveSystem;
 
 
%%%%% Drawing Figure %%%%%
EnterSystem( (0.5*(CharWidth-FigureWidth), Distance ),
      145, FigureWidth , 0,
      245, FigureHeight, 0
    );
       show reading file; input  filled;
   penthin; show reading file; input  thin;
   penthick; show reading file; input  thick;
   penXthick; show reading file; input  Xthick;
   penXXthick; show reading file; input  XXthick;
LeaveSystem;
 
def Letter( expr w, h, r ) =
    CopySystem;
    MoveSystem( 0.5*CharWidth, 0.5*CharHeight );
    RotateSystem( r, r );
    MoveSystem( 0, (0.5*CharHeight)-LetterHeight-Distance );
    SetInputScale ( w, h );
    SetOutputScale( 0.95,0.95 );
    SetOutputScale( LetterHeight/h*w/CharWidth, LetterHeight/CharHeight );
    MoveSystem( -0.5*w, 0 );
    show reading file;
enddef;
 
%%%%% Drawing Letters %%%%%
numeric rot; rot = -1;
 
   penthick;
   Letter( 145, 142,  142.0+rot ); input  v; LeaveSystem;
   Letter( 149, 142,  127.0+rot ); input  n; LeaveSystem;
   Letter(  64, 142,  115.0+rot ); input  i; LeaveSystem;
   Letter( 145, 142,  105.0+rot ); input  v; LeaveSystem;
   Letter( 125, 140,   92.0+rot ); input  e; LeaveSystem;
   Letter( 135, 139,   76.6+rot ); input  r; LeaveSystem;
   Letter(  97, 146,   62.4+rot ); input  s; LeaveSystem;
   Letter(  64, 142,   52.7+rot ); input  i; LeaveSystem;
   Letter( 123, 142,   42.2+rot ); input  t; LeaveSystem;
   Letter( 149, 146,   29.7+rot ); input  a; LeaveSystem;
   Letter(  97, 146,   14.6+rot ); input  s; LeaveSystem;
 
   Letter( 116, 142,   -8.5+rot ); input  p; LeaveSystem;
   Letter( 149, 146,  -19.5+rot ); input  a; LeaveSystem;
   Letter( 123, 142,  -33.5+rot ); input  t; LeaveSystem;
   Letter( 149, 146,  -46.0+rot ); input  a; LeaveSystem;
   Letter( 145, 142,  -58.0+rot ); input  v; LeaveSystem;
   Letter(  64, 142,  -68.2+rot ); input  i; LeaveSystem;
   Letter( 125, 140,  -80.1+rot ); input  e; LeaveSystem;
   Letter( 149, 142,  -96.5+rot ); input  n; LeaveSystem;
   Letter(  97, 146, -110.0+rot ); input  s; LeaveSystem;
   Letter(  64, 142, -120.0+rot ); input  i; LeaveSystem;
   Letter(  97, 146, -131.0+rot ); input  s; LeaveSystem;
 
%SystemInfo;
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
endchar;
end;
