summaryrefslogtreecommitdiff
path: root/tex/context/base/mkii/meta-dum.mkii
blob: dae30ed695b7d2c5ce6b197fc30475d707a4439e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
%D \module
%D   [       file=meta-dum,
%D        version=2003.03.21,
%D          title=\METAPOST\ Graphics,
%D       subtitle=Dummy (External) Graphics,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\unprotect

%D This library overloads the normal external figure
%D placeholder by a nicer one.
%D
%D \startbuffer
%D \useMPlibrary[dum]
%D
%D \startlinecorrection
%D \externalfigure[unknown-a][width=3cm,height=1cm]
%D \stoplinecorrection
%D
%D \startlinecorrection
%D \externalfigure[unknown-b][width=4cm,height=5cm]
%D \stoplinecorrection
%D \stopbuffer
%D
%D \typebuffer \getbuffer

% currently preparempvariables is unable to resolve number
% fractions like reduction

% June 22, 2003, this definition was patched to adapt itself
% to transparent colors

\startuseMPgraphic{placeholder}{width,height,reduction,color}
    numeric w, h, d, r ; color c, b, cc ; path p ; boolean t ;
    t := is_transparent(\MPvar{color}) ;
    c := not_transparent(\MPvar{color}) ;
    b := not_transparent(white) ;
    w := \MPvar{width} ;
    h := \MPvar{height} ;
    r := \MPvar{reduction} ;
    d := max(w,h) ;
    p := unitsquare xyscaled (w,h) ;
    cc := r[.5c,b] ;
    fill p withcolor if t : transparent(1,.5,cc) else : cc fi ;
    for i := 1 upto 60 :
        cc := r[c randomized(.3,.9),b] ;
        fill fullcircle
            scaled (d/5 randomized (d/5))
            shifted (center p randomized (d))
            withcolor if t : transparent(1,.5,cc) else : cc fi ;
    endfor ;
    clip currentpicture to p ;
\stopuseMPgraphic

\definepalet
  [placeholder]
  [1=red,2=green,3=blue,4=cyan,5=magenta,6=yellow]

% \newcounter \figurereplacementcycle

\let\figurereplacementcycle\relax

\setupexternalfigures
  [\c!reduction=0,
   \c!text=\v!yes]

\let\normalexternalfigurereplacement\externalfigurereplacement

\def\externalfigurereplacement#1#2#3%
  {\getpaletsize[placeholder]%
   \ifx\figurereplacementcycle\relax
     \getrandomnumber \figurereplacementcycle \!!plusone \paletsize
     \globallet \figurereplacementcycle \figurereplacementcycle
   \else
     \doglobal\increment\figurereplacementcycle
   \fi
   \ifnum\figurereplacementcycle>\paletsize
     \globallet\figurereplacementcycle\!!plusone
   \fi
   \weightGRAYfalse % monochrome anyway
   \MPcmykcolorsfalse
   \MPspotcolorsfalse
   \defineoverlay
     [\s!dummy]
     [\useMPgraphic
       {placeholder}%
       {width=\figurewidth,
        height=\figureheight,
        reduction=\@@efreduction,
        color=placeholder:\figurereplacementcycle}]%
   \expanded{\localframed
     [\??ef]
     [\c!width=\figurewidth,
      \c!height=\figureheight,
      \c!frame=\v!off,
      \c!strut=\v!no,
      \c!background=\s!dummy,
      \c!foregroundcolor=\s!white]}%
     {\doif\@@eftext\v!yes
        {\infofont \setupinterlinespace \dohyphens % \nohyphens
         \doifelse{#1}\s!dummy  \!!doneafalse\!!doneatrue
         \doifelse{#2}\s!dummy  \!!donebfalse\!!donebtrue
         \doifelse{#3}\s!unknown\!!donecfalse\!!donectrue
         \if!!donea
           name: \expanded{\verbatimstring{#1}}\strut\endgraf
         \fi
         \if!!doneb
           \if!!donea file: \else \if!!donec file: \fi \fi
           \expanded{\verbatimstring{#2}}\strut\endgraf
         \fi
         \if!!donec
           state: \expanded{\verbatimstring{#3}}\strut\endgraf
         \fi}}}

\def\dummyfigure{\externalfigure[placeholder]}

\protect \endinput