summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/metafont/mftoeps/m2esamp
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/metafont/mftoeps/m2esamp')
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/0m2esamp.doc35
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/clipcir.mf39
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/clipsqu.mf39
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/holeclip.mf20
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/holeclip.tex22
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/holefill.mf21
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/polygons.mf32
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/rectan.mf19
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/rectan_.bat4
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample1a.mf24
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample1b.mf28
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2a.mf23
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2b.mf23
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2c.mf23
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2d.mf23
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2e.mf23
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample3.mf53
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample4.mf45
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample5.mf38
-rw-r--r--Master/texmf-dist/source/metafont/mftoeps/m2esamp/stereo.mf53
20 files changed, 587 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/0m2esamp.doc b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/0m2esamp.doc
new file mode 100644
index 00000000000..fd27e761c4a
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/0m2esamp.doc
@@ -0,0 +1,35 @@
+This file belongs to the MFTOEPS package.
+
+The directory M2ESAMP contains the following files:
+ 0M2ESAMP.DOC this file
+ CLIPCIR.MF a bogus application of clipping: a variation of CLIPSQR.MF
+ CLIPSQR.MF a bogus application of clipping: Sierpi\'nski's carpet
+ HOLECLIP.MF a nearly trivial example
+ HOLECLIP.TEX an example of using HOLECLIP.EPS
+ HOLEFILL.MF a nearly trivial example
+ POLYGONS.MF input for SAMPLE*.MF files
+ RECTAN.MF a truly trivial example
+ RECTAN_.BAT DOS batch file for RECTAN.MF (generates RECTAN.EPS)
+ SAMPLE1A.MF less trivial example
+ SAMPLE1B.MF modification of SAMPLE1A.MF
+ SAMPLE2A.MF regular polygon with circumscribed ``flex'' polygon
+ SAMPLE2B.MF ditto---a variation
+ SAMPLE2C.MF ditto---a variation
+ SAMPLE2D.MF ditto---a variation
+ SAMPLE2E.MF ditto---a variation
+ SAMPLE3.MF four pictures (``flowers'')
+ SAMPLE4.MF four pictures (``galaxies'')
+ SAMPLE5.MF four pictures (``shells'')
+ STEREO.MF two pictures that can be used for
+ constructing a simple stereogram
+
+You are entitled to do with these files whatever you wish. If you alter
+a file, however, please remove the comment line:
+
+ `This file belongs to the MFTOEPS package.'
+
+in order to avoid mess.
+
+-----------------------------------------------------------------------------
+
+END OF THE 0M2ESAMP.DOC FILE
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/clipcir.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/clipcir.mf
new file mode 100644
index 00000000000..50cf091764a
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/clipcir.mf
@@ -0,0 +1,39 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% CLIPCIR.MF
+% ---
+input mftoeps; eps_mode_setup;
+% ---
+def ^ = ** enddef; % syntactic sugar
+primarydef i // n = % ditto
+ (if n=0: 0 else: i/n fi)
+% why not to divide by 0?
+enddef;
+def shifted_accordingly(expr i,j,n,D)=
+ shifted ((i//n)[1/2D,w-1/2D],(j//n)[1/2D,w-1/2D])
+enddef;
+% ---
+w#=16mm#; h#=16mm#; define_pixels(w,h);
+for N:=1,2,3,4: % 5, 6, ..., infinity
+ set_BB 0,0,w,h;
+ write_preamble jobname & decimal(N);
+ D:=2w;
+ for n:=0 for q:=1 upto N-1: , 2^q-1 endfor:
+% i.e., |for n:=0, 2^1-1, 2^2-1, ..., 2^(N-1)-1:|
+ path p[], q[]; D:=1/2D; k:=-1;
+ for i:=0 upto n: for j:=0 upto n:
+ k:=k+1;
+ p[k]=fullcircle scaled D
+ shifted_accordingly(i,j,n,D);
+ q[k]=reverse fullcircle scaled 1/3D
+ shifted_accordingly(i,j,n,D);
+ endfor; endfor;
+ clip_C p0, q0 for i:=1 upto k: , p[i], q[i] endfor;
+ endfor;
+ fill_C unitsquare scaled w;
+ write_postamble;
+endfor;
+% ---
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/clipsqu.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/clipsqu.mf
new file mode 100644
index 00000000000..266ec217ae8
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/clipsqu.mf
@@ -0,0 +1,39 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% CLIPSQU.MF (Sierpi\'nski's carpet)
+% ---
+input mftoeps; eps_mode_setup;
+% ---
+def ^ = ** enddef; % syntactic sugar
+primarydef i // n = % ditto
+ (if n=0: 0 else: i/n fi)
+% why not to divide by 0?
+enddef;
+def shifted_accordingly(expr i,j,n,D)=
+ shifted ((i//n)[0,w-D],(j//n)[0,w-D])
+enddef;
+% ---
+w#=16mm#; h#=16mm#; define_pixels(w,h);
+for N:=1,2,3: % 4, 5, 6, ..., infinity
+ set_BB 0,0,w,h;
+ write_preamble jobname & decimal(N);
+ D:=3w;
+ for n:=0 for q:=1 upto N-1: , 3^q-1 endfor:
+% i.e., |for n:=0, 3^1-1, 3^2-1, ..., 3^(N-1)-1:|
+ path p[], q[]; D:=1/3D; k:=-1;
+ for i:=0 upto n: for j:=0 upto n:
+ k:=k+1;
+ p[k]=unitsquare scaled D
+ shifted_accordingly(i,j,n,D);
+ q[k]=reverse unitsquare scaled 1/3D
+ shifted (1/3D,1/3D) shifted_accordingly(i,j,n,D);
+ endfor; endfor;
+ clip_C p0, q0 for i:=1 upto k: , p[i], q[i] endfor;
+ endfor;
+ fill_C unitsquare scaled w;
+ write_postamble;
+endfor;
+% ---
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holeclip.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holeclip.mf
new file mode 100644
index 00000000000..0b5850a8892
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holeclip.mf
@@ -0,0 +1,20 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% HOLECLIP.MF---a nearly trivial example
+% ---
+input mftoeps; eps_mode_setup;
+w#=4cm#; h#=2cm#; define_pixels(w,h);
+set_BB origin, (w,h);
+write_preamble jobname;
+ fix_fill_cmyk 0,0,0,.25; % 25 percent of black
+ for oper:="draw_C", "clip_C":
+ scantokens oper
+% outer edge:
+ fullcircle xscaled w yscaled h shifted (.5w,.5h),
+% inner edge:
+ reverse fullcircle xscaled .7w yscaled .7h shifted (.5w,.5h);
+ endfor
+write_postamble;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holeclip.tex b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holeclip.tex
new file mode 100644
index 00000000000..8f314a6ba89
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holeclip.tex
@@ -0,0 +1,22 @@
+\input epsf
+
+\centerline{
+\setbox0\vbox{
+ \hbox{It is a clipped text.}\hbox{It is a clipped text.}
+ \hbox{It is a clipped text.}\hbox{It is a clipped text.}
+ \vss % no depth
+}%
+\special{ps:
+ /mftoeps_save save def % the snapshoot of a current stage
+ /mftoeps_bhook {/q {} def /Q {} def} def
+ /CM matrix currentmatrix def
+ currentpoint /cy exch def /cx exch def
+ /ori@endspecial /@endspecial load def
+ /@endspecial {} def % neutralize /@endspecial locally
+}
+\hbox to\wd0{\hss\epsfysize\ht0\epsffile{holeclip.eps}\hss}% perform clipping
+\special{ps:cx cy moveto CM setmatrix}\llap{\copy0}% set the text
+\special{ps:ori@endspecial mftoeps_save restore}% restore a previous stage
+}
+
+\end
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holefill.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holefill.mf
new file mode 100644
index 00000000000..7478df585de
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/holefill.mf
@@ -0,0 +1,21 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% HOLEFILL.MF---a nearly trivial example
+% ---
+input mftoeps; eps_mode_setup;
+w#=4cm#; h#=2cm#; define_pixels(w,h);
+set_BB origin, (w,h);
+write_preamble jobname;
+ fix_fill_cmyk 0,0,0,.25; % 25 percent of black
+ fix_line_width 1pt;
+ for oper:="draw_C", "fill_C":
+ scantokens oper
+% outer edge:
+ fullcircle xscaled w yscaled h shifted (.5w,.5h),
+% inner edge:
+ reverse fullcircle xscaled .7w yscaled .7h shifted (.5w,.5h);
+ endfor
+write_postamble;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/polygons.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/polygons.mf
new file mode 100644
index 00000000000..29d370d8ee6
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/polygons.mf
@@ -0,0 +1,32 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% POLYGONS.MF
+% ---
+vardef regular_polygon(expr n) =
+% |n| is the number of vertices; the diameter of the circumscribed circle
+% is equal to 1, its center is in the origin
+ (up % first vertex
+ for i:=1 upto n-1:
+ -- (up rotated (i*(360/n))) % next vertices
+ endfor
+ -- cycle) scaled .5
+enddef;
+vardef flex_polygon(expr n,a,b) =
+% |n| is the number of vertices, |a|, |b| are the angles (at vertices)
+% between a tangent to a ``flex side'' and the corresponding secant
+ save zz; pair zz[ ]; % array of vertices
+ for i:=0 upto n-1:
+ zz[i]:=up rotated (i*(360/n));
+ endfor
+ (zz[0] {(zz[1]-zz[0]) rotated a}
+ for i:=1 upto n-1:
+ .. {(zz[i]-zz[i-1]) rotated b}
+ zz[i]
+ {(zz[(i+1) mod n]-zz[i]) rotated a}
+ endfor
+ .. {(zz[0]-zz[n-1]) rotated b} cycle)
+ scaled .5
+enddef;
+endinput
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/rectan.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/rectan.mf
new file mode 100644
index 00000000000..63802ab54d0
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/rectan.mf
@@ -0,0 +1,19 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% RECTAN.MF---a trivial example
+% ---
+input mftoeps;
+EPS_mode_setup;
+beginchar(48, % ASCII code (unimportant)
+ 2cm#, % width
+ 1cm#, % height
+ 0cm# % depth
+ );
+ set_BB 0,-d,w,h; % coordinates of the corners of the bounding box
+ write_preamble "rectan";
+ fill_C unitsquare xscaled w yscaled h;
+ write_postamble;
+endchar;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/rectan_.bat b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/rectan_.bat
new file mode 100644
index 00000000000..b344676ca6e
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/rectan_.bat
@@ -0,0 +1,4 @@
+::
+:: This file belongs to the MFTOEPS package.
+::
+call m2e rectan
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample1a.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample1a.mf
new file mode 100644
index 00000000000..cd34bd33077
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample1a.mf
@@ -0,0 +1,24 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE1A.MF
+% ---
+input polygons; % the definition of the |regular_polygon| function
+input mftoeps;
+eps_mode_setup;
+beginchar(0,2cm#,2cm#,0);
+ path P[ ]; % ,,room'' for polygons
+ N:=25; % the number of polygons
+% preparing:
+ for i:=1 upto N:
+ P[i]:=regular_polygon(7)
+ scaled ((i/N)**2*w) rotated (i/N*360) shifted (.5w,.5h);
+ endfor;
+% exporting:
+ find_BB for i:=1 upto N-1: P[i], endfor P[N];
+ write_preamble jobname;
+ draw_C for i:=1 upto N-1: P[i], endfor P[N];
+ write_postamble;
+endchar;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample1b.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample1b.mf
new file mode 100644
index 00000000000..499650af1fa
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample1b.mf
@@ -0,0 +1,28 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE1B.MF
+% ---
+input polygons; % the definition of the |regular_polygon| function
+input mftoeps;
+eps_mode_setup;
+beginchar(0,2cm#,2cm#,0);
+ path P[ ]; % ,,room'' for polygons
+ N:=25; % the number of polygons
+% preparing:
+ for i:=1 upto N:
+ P[i]:=regular_polygon(7)
+ scaled ((i/N)**2*w) rotated (i/N*360) shifted (.5w,.5h);
+ endfor;
+% exporting:
+ find_BB for i:=1 upto N-1: P[i], endfor P[N];
+ write_preamble jobname;
+% Adobe Illustrator likes to control the orientation of paths
+ fill_C
+ for i:=1 upto N-1:
+ if odd(N-i+1): pos_turn else: neg_turn fi P[i],
+ endfor pos_turn P[N];
+ write_postamble;
+endchar;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2a.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2a.mf
new file mode 100644
index 00000000000..ef34b34ea84
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2a.mf
@@ -0,0 +1,23 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE2A.MF
+% ---
+input polygons;
+input mftoeps;
+eps_mode_setup;
+beginchar(0,16mm#,16mm#,0);
+ path P[ ]; % ``room'' for two polygons
+% preparing:
+ P[1]:=regular_polygon(7) scaled w shifted (.5w,.5h);
+ P[2]:=flex_polygon(7,0,0) scaled w shifted (.5w,.5h);
+% exporting:
+ find_BB P[1], P[2];
+ write_preamble jobname;
+ fix_fill_cmyk 0,0,0,.25; % 25 percent of black
+ fix_line_width 1pt;
+ fill_C P1; draw_C P2;
+ write_postamble;
+endchar;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2b.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2b.mf
new file mode 100644
index 00000000000..e6d82b3175e
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2b.mf
@@ -0,0 +1,23 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE2B.MF
+% ---
+input polygons;
+input mftoeps;
+eps_mode_setup;
+beginchar(0,16mm#,16mm#,0);
+ path P[ ]; % ``room'' for two polygons
+% preparing:
+ P[1]:=regular_polygon(7) scaled w shifted (.5w,.5h);
+ P[2]:=flex_polygon(7,-180/7,180/7) scaled w shifted (.5w,.5h);
+% exporting:
+ find_BB P[1], P[2];
+ write_preamble jobname;
+ fix_fill_cmyk 0,0,0,.25; % 25 percent of black
+ fix_line_width 1pt;
+ fill_C P1; draw_C P2;
+ write_postamble;
+endchar;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2c.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2c.mf
new file mode 100644
index 00000000000..2a2ebffb4fb
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2c.mf
@@ -0,0 +1,23 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE2C.MF
+% ---
+input polygons;
+input mftoeps;
+eps_mode_setup;
+beginchar(0,16mm#,16mm#,0);
+ path P[ ]; % ``room'' for two polygons
+% preparing:
+ P[1]:=regular_polygon(7) scaled w shifted (.5w,.5h);
+ P[2]:=flex_polygon(7,45,45) scaled w shifted (.5w,.5h);
+% exporting:
+ find_BB P[1], P[2];
+ write_preamble jobname;
+ fix_fill_cmyk 0,0,0,.25; % 25 percent of black
+ fix_line_width 1pt;
+ fill_C P1; draw_C P2;
+ write_postamble;
+endchar;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2d.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2d.mf
new file mode 100644
index 00000000000..8fe9f9bfb5f
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2d.mf
@@ -0,0 +1,23 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE2D.MF
+% ---
+input polygons;
+input mftoeps;
+eps_mode_setup;
+beginchar(0,16mm#,16mm#,0);
+ path P[ ]; % ``room'' for two polygons
+% preparing:
+ P[1]:=regular_polygon(7) scaled w shifted (.5w,.5h);
+ P[2]:=flex_polygon(7,-45,45) scaled w shifted (.5w,.5h);
+% exporting:
+ find_BB P[1], P[2];
+ write_preamble jobname;
+ fix_fill_cmyk 0,0,0,.25; % 25 percent of black
+ fix_line_width 1pt;
+ fill_C P1; draw_C P2;
+ write_postamble;
+endchar;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2e.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2e.mf
new file mode 100644
index 00000000000..9411c1db405
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample2e.mf
@@ -0,0 +1,23 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE2E.MF
+% ---
+input polygons;
+input mftoeps;
+eps_mode_setup;
+beginchar(0,16mm#,16mm#,0);
+ path P[ ]; % ``room'' for two polygons
+% preparing:
+ P[1]:=regular_polygon(7) scaled w shifted (.5w,.5h);
+ P[2]:=flex_polygon(7,45,-45) scaled w shifted (.5w,.5h);
+% exporting:
+ find_BB P[1], P[2];
+ write_preamble jobname;
+ fix_fill_cmyk 0,0,0,.25; % 25 percent of black
+ fix_line_width 1pt;
+ fill_C P1; draw_C P2;
+ write_postamble;
+endchar;
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample3.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample3.mf
new file mode 100644
index 00000000000..c58756e37a6
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample3.mf
@@ -0,0 +1,53 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE3.MF
+% ---
+input mftoeps;
+input polygons;
+eps_mode_setup;
+% unpercent the following line if the coloured version is needed
+% coloured:=1;
+% ---
+def write_paths(expr name) =
+ find_BB elem_path1;
+ write_preamble name;
+ for i:=1 upto objects:
+ coeff:=
+ if objects=1: 0 else: .5(1-cosd(((i-1)/(objects-1))[alpha1,alpha2])) fi;
+ fix_fill_cmyk forsuffixes $:=cyan, magenta, yellow: coeff[$1,$2], endfor
+ coeff[black1,black2];
+ fill_C elem_path[i];
+ endfor;
+ write_postamble;
+enddef;
+% ---
+ch_max:=3;
+% ---
+for ch:=0 upto ch_max:
+ beginchar(char(ASCII("a")+ch), 1in#, 1in#, 0);
+ path elem_path[\\];
+ objects:=100; transitions:=3;
+ sca1:=w; sca2:=.02w;
+ rot1:=0; rot2:=(ch/ch_max)[25,180];
+ skew1:=45; skew2:=0;
+ alpha1:=0; alpha2:=transitions*360;
+ if known coloured:
+ cyan1:=0; magenta1:=0; yellow1:=1; black1:=0;
+ cyan2:=0.35294; magenta2:=0.8353; yellow2:=0.8353; black2:=0; % brown
+ else:
+ cyan1:=0; magenta1:=0; yellow1:=0; black1:=0.7;
+ cyan2:=0; magenta2:=0; yellow2:=0; black2:=0.15;
+ fi
+ for i:=1 upto objects:
+ coeff:=if objects=1: 0 else: (i-1)/(objects-1) fi;
+ elem_path[i]:=flex_polygon(5,coeff[skew1,skew2],coeff[skew1,skew2])
+ scaled (coeff[sca1,sca2])
+ rotated (coeff[rot1,rot2]) shifted (.5w,.5h);
+ endfor
+ write_paths(jobname & char(ASCII("a")+ch));
+ endchar;
+endfor
+% ---
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample4.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample4.mf
new file mode 100644
index 00000000000..37acefb4d05
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample4.mf
@@ -0,0 +1,45 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE4.MF
+% ---
+input mftoeps;
+input polygons;
+eps_mode_setup;
+% ---
+def write_paths(expr name) =
+ find_BB elem_path1;
+ write_preamble name;
+ for i:=1 upto objects:
+ coeff:=
+ if objects=1: 0 else: .5(1-cosd(((i-1)/(objects-1))[alpha1,alpha2])) fi;
+ fix_fill_cmyk forsuffixes $:=cyan, magenta, yellow: coeff[$1,$2], endfor
+ coeff[black1,black2];
+ fill_C elem_path[i];
+ endfor;
+ write_postamble;
+enddef;
+% ---
+ch_max:=3;
+% ---
+for ch:=0 upto ch_max:
+ beginchar(char(ASCII("a")+ch), 1in#, 1in#, 0);
+ path elem_path[\\];
+ objects:=100; transitions:=.5; % regular 2
+ sca1:=w; sca2:=.05w;
+ rot1:=0; rot2:=(ch/ch_max)[0,-360];
+ alpha1:=0; alpha2:=transitions*360;
+ cyan1:=0; magenta1:=0; yellow1:=0; black1:=0.05;
+ cyan2:=0; magenta2:=0; yellow2:=0; black2:=0.9;
+ for i:=1 upto objects:
+ coeff:=if objects=1: 0 else: (i-1)/(objects-1) fi;
+ elem_path[i]:= flex_polygon(6,(coeff**.1)[-30,0],(coeff**.1)[30,0])
+ scaled (coeff[sca1,sca2])
+ rotated (coeff[rot1,rot2]+30) shifted (.5w,.5h);
+ endfor
+ write_paths(jobname & char(ASCII("a")+ch));
+ endchar;
+endfor
+% ---
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample5.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample5.mf
new file mode 100644
index 00000000000..c7e0c7742b3
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/sample5.mf
@@ -0,0 +1,38 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% SAMPLE5.MF
+% ---
+input mftoeps;
+input polygons;
+eps_mode_setup;
+% ---
+def soft_polygon (expr n,a) = flex_polygon(n,a-180/n,a+180/n) enddef;
+% ---
+def write_paths(expr name) =
+ find_BB for i:=1 upto objects: elem_path[i], endfor elem_path[objects];
+ write_preamble name;
+ fix_line_width .2pt; for i:=1 upto objects: draw_C elem_path[i]; endfor;
+ write_postamble;
+enddef;
+% ---
+ch_max:=3;
+% ---
+for ch:=0 upto ch_max:
+ beginchar(char(ASCII("a")+ch), 1in#, 1in#, 0);
+ path elem_path[\\];
+ objects:=17;
+ sca1:=.85w; sca2:=.02w;
+ rot1:=0; rot2:=(ch/ch_max)[5,120];
+ skew1:=(ch/ch_max)[60,30]; skew2:=0;
+ for i:=1 upto objects:
+ coeff:=if objects=1: 0 else: (i-1)/(objects-1) fi;
+ elem_path[i]:= soft_polygon(7,coeff[skew1,skew2])
+ scaled (coeff[sca1,sca2]) rotated (coeff[rot1,rot2]+30) shifted (.5w,.5h);
+ endfor
+ write_paths(jobname & char(ASCII("a")+ch));
+ endchar;
+endfor
+% ---
+end.
diff --git a/Master/texmf-dist/source/metafont/mftoeps/m2esamp/stereo.mf b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/stereo.mf
new file mode 100644
index 00000000000..c3e85ec53fe
--- /dev/null
+++ b/Master/texmf-dist/source/metafont/mftoeps/m2esamp/stereo.mf
@@ -0,0 +1,53 @@
+%%%%
+%%%% This file belongs to the MFTOEPS package.
+%%%%
+% ---
+% STEREO.MF
+% ---
+input mftoeps;
+input polygons;
+eps_mode_setup;
+% ---
+def soft_polygon (expr n,a) = flex_polygon(n,a-180/n,a+180/n) enddef;
+% ---
+def write_paths(expr name) =
+ find_BB for i:=1 upto objects: elem_path[i], endfor elem_path[objects];
+ write_preamble name;
+ for i:=1 upto objects:
+ coeff:=
+ if objects=1: 0 else: .5(1-cosd(((i-1)/(objects-1))[alpha1,alpha2])) fi;
+ coeff:=if coeff>.5: 1 else: 0 fi;
+ fix_fill_cmyk forsuffixes $:=cyan, magenta, yellow: coeff[$1,$2], endfor
+ coeff[black1,black2];
+ fill_C elem_path[i];
+ endfor;
+ write_postamble;
+enddef;
+% ---
+for ch:=0,1:
+ beginchar("0",117pt#, 117pt#, 0);
+ path elem_path[\\];
+ objects:=100; transitions:=7;
+ pair cent[\\];
+ sca1:=.5w; sca2:=.01w;
+ skew1:=60; skew2:=0;
+ alpha1:=0; alpha2:=transitions*360;
+ cshift0:=-.02w; cshift1:=-cshift0;
+ cent1:=(.5w,.5h);
+ rot1:=0; rot2:=rot1+60;
+ cent2:=(.5w+cshift[ch],.49h);
+ cyan1:=0; magenta1:=0; yellow1:=0; black1:=1;
+ cyan2:=0; magenta2:=0; yellow2:=0; black2:=0;
+ for i:=1 upto objects:
+ if objects=1: coeff:=0; else: coeff:=(i-1)/(objects-1); fi
+ elem_path[i]:= soft_polygon(4,coeff[skew1,skew2])
+ scaled (coeff[sca1,sca2])
+ rotated (coeff[rot1,rot2]+30)
+ shifted (coeff[cent1,cent2]);
+ endfor
+ write_paths(jobname & decimal(ch));
+endchar;
+
+endfor
+
+end.