summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/grph-inc.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/grph-inc.mkxl')
-rw-r--r--tex/context/base/mkiv/grph-inc.mkxl1076
1 files changed, 0 insertions, 1076 deletions
diff --git a/tex/context/base/mkiv/grph-inc.mkxl b/tex/context/base/mkiv/grph-inc.mkxl
deleted file mode 100644
index 1e6d614a6..000000000
--- a/tex/context/base/mkiv/grph-inc.mkxl
+++ /dev/null
@@ -1,1076 +0,0 @@
-%D \module
-%D [ file=grph-inc, % moved from core-fig
-%D version=2006.08.26, % overhaul of 1997.03.31
-%D title=\CONTEXT\ Graphic Macros,
-%D subtitle=Figure Inclusion,
-%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.
-
-% \enabledirectives[graphics.conversion.eps.cleanup.ai]
-
-% \setupexternalfigures[directory=dirfile://./test/**]
-% \externalfigure[crappname(2).eps][frame=on]
-
-% todo: messages
-
-\writestatus{loading}{ConTeXt Graphic Macros / Figure Inclusion}
-
-\registerctxluafile{grph-img}{}
-\registerctxluafile{grph-inc}{}
-\registerctxluafile{grph-bmp}{}
-\registerctxluafile{grph-chk}{}
-\registerctxluafile{grph-con}{}
-\registerctxluafile{grph-fil}{}
-\registerctxluafile{grph-mem}{}
-\registerctxluafile{grph-u3d}{} % this will become a module
-\registerctxluafile{grph-swf}{} % this will become a module
-
-\unprotect
-
-%D Including graphics is complicated by the fact that we need to locate them first,
-%D optionally manipulate them and scale then next. Lookups are to be done as efficient
-%D as possible and inclusion of the data might happens only once. In \MKIV\ much of this
-%D is delegated to the \LUA\ end. There is not so much less code as in \MKII\ but it's
-%D more powerful, flexible, pluggable and some of the extended functionality has been
-%D moved from modules to the core. The overall functionality is rather stable and has
-%D not changed much over the years.
-
-\ifdefined\dotagfigure \else \let\dotagfigure\relax \fi
-
-\installcorenamespace{externalfigure}
-\installcorenamespace{externalfigureinstance}
-\installcorenamespace{externalfigurecollection}
-
-\installframedcommandhandler \??externalfigure {externalfigure} \??externalfigure
-
-\aliased\let\setupexternalfigures\setupexternalfigure
-
-\setupexternalfigures[% we really need the defaults
- \c!method =,
- \c!label =,
- \c!size =,
- \c!conversion =,
- \c!resolution =,
- \c!prefix =,
- \c!cache =,
- \c!page =\zerocount,
- \c!file =,
- \c!display =,
- \c!mask =,
- \c!preset =\v!yes,
- \c!split =,
- \c!color =,
- \c!arguments =,
- \c!symbol =\v!no,
- \c!controls =\v!no,
- \c!resources =,
- \c!preview =\v!no,
- \c!repeat =\v!no,
- \c!foregroundcolor=,
- \c!interaction =\v!none,
- \c!hfactor =,
- \c!wfactor =,
- \c!factor =,
- \c!maxwidth =\externalfigureparameter\c!width,
- \c!maxheight =\externalfigureparameter\c!height,
- \c!xscale =,
- \c!yscale =,
- \c!scale =,
- \c!sx =\externalfigureparameter\c!s,
- \c!sy =\externalfigureparameter\c!s,
- \c!s =1,
- \c!width =,
- \c!height =,
- \c!lines =,
- \c!grid =,
- \c!bodyfont =\bodyfontsize,
- \c!object =\v!yes,
- \c!corner =\v!rectangular,
- \c!frame =\v!off,
- \c!option =,
- \c!reset =\v!no,
- \c!directory =,
- \c!radius =.5\bodyfontsize,
- \c!background =,
- \c!splitcolor =\s!white,
- \c!order =,
- \c!equalwidth =,
- \c!equalheight =,
- \c!location ={\v!local,\v!global},
- \c!frames =\v!off,
- \c!ymax =24,
- \c!xmax =,
- \c!align =\v!none, % New, for Tacos extremely large graphics.
- \c!crossreference =\v!no,
- \c!transform =\v!auto,
- \c!userpassword =,
- \c!ownerpassword =,
- \c!compact =,
- \c!cmyk =,
- ]
-
-%D Defining figures.
-
-\newcount\c_grph_include_nesting
-
-\newtoks \everyexternalfigureresets % for the moment still public
-\newtoks \everyexternalfigurechecks % for the moment still public
-
-% \useexternalfigure[alpha][cow]
-% \useexternalfigure[beta] [cow] [width=1cm]
-% \useexternalfigure[gamma][cow][alpha]
-% \useexternalfigure[delta][cow][alpha][width=2cm]
-%
-% full width : \externalfigure[cow] \par
-% 3cm width : \externalfigure[cow] [width=3cm] \par
-% full width : \externalfigure[alpha] \par
-% 1cm width : \externalfigure[beta] \par
-% full width : \externalfigure[gamma] \par
-% 2cm width : \externalfigure[delta] \par
-% 4cm width : \externalfigure[beta] [width=4cm] \par
-% 5cm width : \externalfigure[gamma][width=5cm] \par
-%
-% \defineexternalfigure[a][width=10cm]
-% \defineexternalfigure[b][width=5cm]
-% \externalfigure[cow][a]
-% \externalfigure[cow][b][height=8cm]
-%
-% \useexternalfigure[x][cow][width=10cm,height=1cm]
-% \externalfigure[x]
-% \externalfigure[x][width=3cm]
-%
-% [label] [filename]
-% [label] [filename] [parent]
-% [label] [filename] [parent] [settings]
-% [label] [filename] [settings]
-%
-% new: more convenient/efficient than
-%
-% \use..[a][a][setting] \externalfigure[b][a]
-%
-% is equivalent to:
-%
-% \def..[a][setting] \externalfigure[b][a]
-%
-% see x-res modules for usage:
-%
-% \defineexternalfigure[name][settings]
-
-%D Defining is persistent, i.e.\ when you redefine an instance, the already set
-%D parameters need to be set again or otherwise the old values will be used.
-%D
-%D New: \type {method=auto}: strips suffix and uses \quote {order} which is handy in
-%D some of four workflows where sources are used for web and print and where the web
-%D tools need a suffix (like gif) which we don't want as we want a high quality
-%D format.
-
-\newconditional\c_grph_include_trace_inheritance
-
-\installtextracker
- {graphics.inheritance}
- {\settrue \c_grph_include_trace_inheritance}
- {\setfalse\c_grph_include_trace_inheritance}
-
-\installcorenamespace{externalfiguredefinition}
-
-% \protected\def\defineexternalfigure
-% {\dodoubleargument\grph_include_define}
-%
-% \def\grph_include_define[#1][#2]%
-% {\setvalue{\??externalfiguredefinition#1}{\setupcurrentexternalfigure[#2]}}
-
-\aliased\let\defineexternalfigures\defineexternalfigure
-
-% label file parent settings
-% label file settings
-% label file parent
-
-\permanent\tolerant\protected\def\useexternalfigure[#1]#*[#2]#*[#3]#*[#4]%
- {\iftok{#1}\emptytoks
- \iftok{#2}\emptytoks\else
- \ifhastok={#3}%
- \grph_include_use_indeed{#2}{#2}{#3}{#4}%
- \else
- \grph_include_use_indeed{#2}{#2}\empty{#4}%
- \fi
- \fi
- \orelse\iftok{#2}\emptytoks
- \ifhastok={#3}%
- \grph_include_use_indeed{#1}{#1}\empty{#3}%
- \else
- \grph_include_use_indeed{#1}{#1}{#3}{#4}%
- \fi
- \else
- \ifhastok={#3}%
- \grph_include_use_indeed{#1}{#2}\empty{#3}
- \else
- \grph_include_use_indeed{#1}{#2}{#3}{#4}%
- \fi
- \fi}
-
-\def\grph_include_use_indeed#1#2#3#4%
- {\dodoglobal\setvalue{\??externalfigureinstance#1}{\grph_include_setup{#2}{#3}{#4}}%
- \grph_include_analyze_collection[#2][#4]}
-
-% inclusion
-
-\permanent\tolerant\protected\def\externalfigure[#1]#*[#2]#*[#3]%
- {\ifhastok={#2}%
- \grph_include_place[#1][][#2]%
- \else
- \grph_include_place[#1][#2][#3]%
- \fi}
-
-% todo: chain them
-
-\def\grph_include_setup#1#2#3% name parent settings
- {\edef\m_grph_include_name {#1}%
- \edef\m_grph_include_parent{#2}%
- \ifempty\m_grph_include_name \else
- \let\p_grph_include_name\m_grph_include_name
- \fi
- \ifempty\m_grph_include_parent \else
- \grph_include_inherit_from_parent\m_grph_include_parent
- \fi
- \setupcurrentexternalfigure[#3]}
-
-\def\grph_include_inherit_from_parent#1%
- {\ifcsname\??externalfigure#1:\s!parent\endcsname
- \let\currentexternalfigure#1%
- \fi
- \ifcsname\??externalfigureinstance#1\endcsname
- \ifconditional\c_grph_include_trace_inheritance\writestatus\m!figures{inheriting from instance: #1}\fi
- \csname\??externalfigureinstance#1\endcsname
- \fi}
-
-\newtoks\t_grph_include_local_settings
-
-\appendtoks
- \let\textunderscore\letterunderscore % {\string _} % space needed as _ is now letter in unprotected mode (probably no longer needed)
- %
- \dontcomplain
- \restorecatcodes
- \forgetall
-\to \t_grph_include_local_settings
-
-\def\grph_include_place_inherit
- {\ifconditional\c_grph_include_trace_inheritance
- \writestatus\m!figures{label: \p_grph_include_label, name: \p_grph_include_name, parent: \p_grph_include_parent}%
- \fi
- \ifempty\p_grph_include_parent
- % nothing to be done
- \orelse\ifx\p_grph_include_parent\p_grph_include_label
- % redundant
- \else
- \grph_include_inherit_from_parent\p_grph_include_parent
- \fi
- \ifempty\p_grph_include_label
- % nothing to be done
- \else
- \grph_include_inherit_from_parent\p_grph_include_label
- \fi}
-
-\def\grph_include_place[#1][#2][#3]% [label][file][settings] | [file][settings] | [file][parent][settings]
- {\bgroup
- \advance\c_grph_include_nesting\plusone
- \edef\currentexternalfigure{\the\c_grph_include_nesting}%
- \checkexternalfigureparent % each inherits from the root
- %
- \the\everyexternalfigureresets
- %
- \edef\p_grph_include_label{#1}%
- \let\p_grph_include_name\p_grph_include_label
- \ifhastok={#2}%
- % [label] [settings]
- \let\p_grph_include_parent\p_grph_include_label
- \grph_include_place_inherit
- \setupcurrentexternalfigure[#2]%
- \else
- % [label] [parent] [settings]
- \edef\p_grph_include_parent{#2}%
- \ifempty\p_grph_include_parent
- \let\p_grph_include_parent\p_grph_include_label
- \fi
- \grph_include_place_inherit
- \setupcurrentexternalfigure[#3]%
- \fi
- %
- \the\everyexternalfigurechecks
- %
- \the\t_grph_include_local_settings
- %
- \edef\p_width {\externalfigureparameter\c!width}%
- \edef\p_height {\externalfigureparameter\c!height}%
- \edef\p_label {\externalfigureparameter\c!label}%
- \edef\p_reference{\externalfigureparameter\c!reference}%
- %
- \dostarttagged\t!image\empty
- \clf_figure_push {
- name {\p_grph_include_name}%
- label {\ifempty\p_label\p_grph_include_label\else\p_label\fi}%
- page {\externalfigureparameter\c!page}%
- file {\externalfigureparameter\c!file}%
- size {\externalfigureparameter\c!size}%
- object {\externalfigureparameter\c!object}%
- prefix {\externalfigureparameter\c!prefix}%
- cache {\externalfigureparameter\c!cache}%
- format {\externalfigureparameter\c!method}%
- preset {\externalfigureparameter\c!prefix}%
- controls {\externalfigureparameter\c!controls}%
- resources {\externalfigureparameter\c!resources}%
- preview {\externalfigureparameter\c!preview}%
- display {\externalfigureparameter\c!display}%
- mask {\externalfigureparameter\c!mask}%
- conversion {\externalfigureparameter\c!conversion}%
- resolution {\externalfigureparameter\c!resolution}%
- color {\externalfigureparameter\c!color}% unprocessed raw key
- cmyk {\externalfigureparameter\c!cmyk}% kind of special
- arguments {\externalfigureparameter\c!arguments}% used for converters
- repeat {\externalfigureparameter\c!repeat}%
- transform {\externalfigureparameter\c!transform}%
- compact {\externalfigureparameter\c!compact}% experiment, share fonts
- userpassword {\externalfigureparameter\c!userpassword}%
- ownerpassword{\externalfigureparameter\c!ownerpassword}%
- \ifempty\p_width \else
- width \dimexpr\p_width\relax
- \fi
- \ifempty\p_height \else
- height \dimexpr\p_height\relax
- \fi
- }%\relax
- \clf_figure_identify
- \relax
- \ifconditional\c_grph_include_test_only
- \ifcase\figurestatus \else
- \clf_figure_check
- \clf_figure_dummy
- \clf_figure_scale
- \clf_figure_done
- \fi
- \grph_include_set_mode
- \else
- \ifcase\figurestatus
- \clf_figure_dummy
- \clf_figure_scale
- \else
- \clf_figure_check
- \clf_figure_include
- \clf_figure_scale
- \fi
- \clf_figure_done
- \grph_include_set_mode
- \grph_include_finalize
- \fi
- \clf_figure_pop
- \dotagfigure
- %
- \scratchcounter\zerocount
- \edef\p_crossreference{\externalfigureparameter\c!crossreference}%
- \iflocation\iftrialtypesetting\else
- \ifempty\p_crossreference
- % nothing
- \orelse\ifx\p_crossreference\v!no
- % nothing
- \orelse\ifx\p_crossreference\v!yes
- \ifhastok={#2}%
- \scratchcounter\clf_figure_register_page{#1}{}{#2}\relax
- \else
- \scratchcounter\clf_figure_register_page{#1}{#2}{#3}\relax
- \fi
- \else
- \scratchcounter-\p_crossreference % passed by repeater
- \fi
- \fi\fi
- \naturalvpack
- attr \imageattribute \plustwo
- \ifnum\scratchcounter>\zerocount
- {\strc_references_cross_forward {ex:\number \scratchcounter}{\box\foundexternalfigure}}%
- \orelse\ifnum\scratchcounter<\zerocount
- {\strc_references_cross_backward{ex:\number-\scratchcounter}{\box\foundexternalfigure}}%
- \else
- {\box\foundexternalfigure}%
- \fi
- %
- % \naturalvpack attr \imageattribute \plustwo \bgroup
- % \ifcmpnum\scratchcounter\zerocount
- % \strc_references_cross_backward{ex:\number-\scratchcounter}{\box\foundexternalfigure}%
- % \or % equal
- % \box\foundexternalfigure%
- % \or % more
- % \strc_references_cross_forward {ex:\number \scratchcounter}{\box\foundexternalfigure}%
- % \fi
- % \egroup
- %
- \dostoptagged
- \egroup}
-
-%D Next we provide a cross referenced scale-up mechanism:
-
-\def\strc_references_cross_forward#1#2%
- {\begingroup
- \strc_references_set_simple_internal_reference{cross:b:#1}%
- \naturalhpack
- attr \destinationattribute\number\lastdestinationattribute
- {\naturalhpack{\strc_references_flush_destination_nodes\directgotodumbbox{#2}[cross:f:#1]}}%
- \endgroup}
-
-\def\strc_references_cross_backward#1#2%
- {\begingroup
- \strc_references_set_simple_internal_reference{cross:f:#1}%
- \naturalhpack
- attr \destinationattribute\number\lastdestinationattribute
- {\naturalhpack{\strc_references_flush_destination_nodes\directgotodumbbox{#2}[cross:b:#1]}}%
- \endgroup}
-
-\let\doexternalfigurerepeat\gobblefourarguments % called from lua end
-
-\permanent\tolerant\protected\def\placeregisteredexternalfigures[#1]%
- {\page
- \begingroup
- \protected\def\doexternalfigurerepeat{\grph_include_place_registered_indeed{#1}}%
- \dorecurse\clf_figure_nof_registered_pages
- {\page
- \clf_figure_flush_registered_pages\recurselevel
- \page}%
- \endgroup
- \page}
-
-\protected\def\grph_include_place_registered_indeed#1#2#3#4#5% called from lua end
- {\grph_include_place[#2][#3][#4,%
- \c!hfactor=,\c!wfactor=,\c!factor=,%
- \c!maxwidth=,\c!maxheight=,%
- \c!xscale=,\c!yscale=,\c!scale=,%
- \c!sx=,\c!sy=,\c!s=,%
- \c!width=,\c!height=,%
- \c!crossreference=#5,%
- #1]}
-
-%D Scaling:
-
-\let\dowithfigure\relax % name might change (into a proper hook)
-
-\permanent\protected\def\doscalefigure % used at lua end
- {\global\setbox\foundexternalfigure\vpack{\scale[\v!figure]{\dowithfigure{\box\foundexternalfigure}}}}
-
-\definescale % some day we will inherit
- [\v!figure]
- [\c!hfactor =\externalfigureparameter\c!hfactor,
- \c!wfactor =\externalfigureparameter\c!wfactor,
- \c!factor =\externalfigureparameter\c!factor,
- \c!maxwidth =\externalfigureparameter\c!maxwidth ,
- \c!maxheight =\externalfigureparameter\c!maxheight,
- \c!equalwidth =\externalfigureparameter\c!equalwidth ,
- \c!equalheight=\externalfigureparameter\c!equalheight,
- \c!xscale =\externalfigureparameter\c!xscale,
- \c!yscale =\externalfigureparameter\c!yscale,
- \c!scale =\externalfigureparameter\c!scale,
- \c!sx =\externalfigureparameter\c!sx,
- \c!sy =\externalfigureparameter\c!sy,
- \c!s =\externalfigureparameter\c!s,
- \c!width =\externalfigureparameter\c!width,
- \c!height =\externalfigureparameter\c!height,
- \c!lines =\externalfigureparameter\c!lines]
-
-%D You can register additional suffixes with the following command:
-%D
-%D \starttyping
-%D \definegraphictypesynonym[jbig] [jb2]
-%D \definegraphictypesynonym[jbig2][jb2]
-%D \definegraphictypesynonym[jbg] [jb2]
-%D \stoptyping
-
-\permanent\tolerant\protected\def\definegraphictypesynonym[#1]#*[#2]%
- {\clf_registerfiguresuffix{#1}{#2}}
-
-%D Additional paths can be installed with the regular setup command. The next
-%D macro picks up the list.
-
-\permanent\protected\def\setfigurepathlist
- {\clf_setfigurepaths{\externalfigureparameter\c!location}{\externalfigureparameter\c!directory}}
-
-%D Variables:
-
-\newbox \foundexternalfigure
-\newtoks\externalfigurepostprocessors
-
-\def\defaultfigurewidth {8\lineheight} % permanent ? frozen ?
-\def\defaultfigureheight {6\lineheight} % permanent ? frozen ?
-
-\permanent\def\figurestatus {\numexpr\clf_figurestatus{status}{0}\relax} % number: 0 = not found
-\permanent\def\figurewidth {\clf_figurestatus{width}{0}sp}
-\permanent\def\figureheight {\clf_figurestatus{height}{0}sp}
-\permanent\def\figurexscale {\clf_figurestatus{xscale}{1}}
-\permanent\def\figureyscale {\clf_figurestatus{yscale}{1}}
-
-\permanent\def\figuresize {\clf_figurerequest{size}{}}
-\permanent\def\figurelabel {\clf_figurerequest{label}{}}
-\permanent\def\figurefileoriginal {\clf_figurerequest{name}{}}
-\permanent\def\figurefilepage {\clf_figurerequest{page}{1}}
-\permanent\def\figurefileoptions {\clf_figurerequest{options}{}}
-\permanent\def\figurefileconversion{\clf_figurerequest{conversion}{}}
-\permanent\def\figurefileresolution{\clf_figurerequest{resolution}{}}
-\permanent\def\figurefilecolor {\clf_figurerequest{color}{}}
-\permanent\def\figurefilearguments {\clf_figurerequest{arguments}{}}
-\permanent\def\figurefilecache {\clf_figurerequest{cache}{}}
-\permanent\def\figurefileprefix {\clf_figurerequest{prefix}{}}
-
-\permanent\def\figurenaturalwidth {\clf_figureused{width}{\number\dimexpr\defaultfigurewidth\relax}sp}
-\permanent\def\figurenaturalheight {\clf_figureused{height}{\number\dimexpr\defaultfigureheight\relax}sp}
-\permanent\def\figurexresolution {\clf_figureused{xresolution}{0}}
-\permanent\def\figureyresolution {\clf_figureused{yresolution}{0}}
-\permanent\def\figureorientation {\clf_figureused{orientation}{1}}
-\permanent\def\figurerotation {\clf_figureused{rotation}{0}}
-\permanent\def\figurexsize {\clf_figureused{xsize}{0}}
-\permanent\def\figureysize {\clf_figureused{ysize}{0}}
-\permanent\def\figurecolordepth {\clf_figureused{colordepth}{0}}
-\permanent\def\figuredepth {\clf_figureused{depth}{0}}
-
-\permanent\def\figurefullname {\clf_figureused{fullname}{}}
-\permanent\def\noffigurepages {\clf_figureused{pages}{0}}
-
-% \permanent\def\figurefilepath {\clf_figurefilepath} % public in lua
-% \permanent\def\figurefilename {\clf_figurefilename} % public in lua
-% \permanent\def\figurefiletype {\clf_figurefiletype} % public in lua
-
-\permanent\let\naturalfigurewidth \figurenaturalwidth
-\permanent\let\naturalfigureheight \figurenaturalheight
-
-\aliased\let\figurescalewidth \figurewidth
-\aliased\let\figurescaleheight \figureheight
-\aliased\let\figurescalexscale \figurexscale
-\aliased\let\figurescaleyscale \figureyscale
-
-%D Abuse:
-%D
-%D \starttyping
-%D \externalfigure[rubish.pdf] \ifcase\figurestatus\relax \ctxlua{os.exit(999)} \fi
-%D \stoptyping
-
-%D Calculating:
-
-% \enabletrackers[figures.conversion]
-% \externalfigure[demo.svg]
-% \externalfigure[demo.svg][conversion=png]
-
-%D The following registers are used (if only to be downward compatible).
-
-\newconditional\c_grph_include_skip
-\newconditional\c_grph_include_test_only
-\newconditional\c_grph_include_level \setfalse\c_grph_include_level % true=background false=normal
-\newconditional\c_grph_include_flush \settrue \c_grph_include_flush % true=place false=ignore
-
-\newsystemmode\v!figure
-
-\def\grph_include_set_mode
- {\ifcase\figurestatus
- \globalresetsystemmode\v!figure % todo, also: \v!resource
- \else
- \globalsetsystemmode \v!figure % todo, also: \v!resource
- \fi}
-
-\appendtoks
- \clf_setfigurepaths
- {\externalfigureparameter\c!location}%
- {\externalfigureparameter\c!directory}%
- \clf_figure_reset
- \foundexternalfigure
- \defaultfigurewidth
- \defaultfigureheight
- \relax
-\to \everyexternalfigureresets
-
-\appendtoks
- \edef\p_option{\externalfigureparameter\c!option}%
- \ifx\p_option\v!frame
- \setfalse\c_grph_include_skip
- \letexternalfigureparameter\c!frame\v!on
- \else\ifx\p_option\v!empty
- \settrue\c_grph_include_skip
- \letexternalfigureparameter\c!frame\v!off
- \else
- \setfalse\c_grph_include_skip
- \fi\fi
- % fake color in gray bitmaps, assumes that
- % a transparent color is used
- \edef\p_foregroundcolor{\externalfigureparameter\c!foregroundcolor}%
- \ifempty\p_foregroundcolor \else
- \setexternalfigureparameter\c!background{\v!foreground,\v!color}%
- \letexternalfigureparameter\c!backgroundcolor\p_foregroundcolor
- \fi
-\to \everyexternalfigurechecks
-
-%D Internal graphics are handled at the \TEX\ end:
-
-\def\grph_include_process_tex#1%
- {\framed
- [\c!strut=\v!no,\c!align=\v!normal,\c!frame=\v!off,
- \c!offset=\v!overlay,\c!width=\v!fit,\c!height=\v!fit]
- {\blank[\v!disable]#1\endgraf\removelastskip}} % disable should stay here!
-
-% used al lua end:
-
-\permanent\protected\def\docheckfigurebuffer #1{\global\setbox\foundexternalfigure\vpack{\grph_include_process_tex{\getbuffer[#1]}}}
-\permanent\protected\def\docheckfiguretex #1{\global\setbox\foundexternalfigure\vpack{\grph_include_process_tex{\input{#1}}}}
-\permanent\protected\def\docheckfigurecld #1{\global\setbox\foundexternalfigure\vbox {\cldprocessfile{#1}}}
-\permanent\protected\def\docheckfiguremps #1{\global\setbox\foundexternalfigure\vpack{\convertMPtoPDF{#1}11}}
-\permanent\protected\def\docheckfiguremprun #1#2{\global\setbox\foundexternalfigure\vpack{\useMPrun{#1}{#2}}}
-
-\permanent\protected\def\relocateexternalfigure
- {\global\setbox\foundexternalfigure\vpack to \ht\foundexternalfigure\bgroup
- %
- % The \vss can (!) introduce 1 sp excess visible in xform which in itself
- % is not that important but some don't like these cosmetic side effects, for
- % instance we can get:
- %
- % vss : \vbox(845.1575+0.0)x597.23125, glue set 845.15747fil, direction TLT
- % vskip : \vbox(845.1575+0.0)x597.23125, direction TLT
- %
- % or
- %
- % 1 0 0 1 0 0.00003 cm
- % 1 0 0 1 0 0 cm
- %
- % This is a known property of using glue and can even depend on the architecture
- % (float implementation). Anyway, let's for now use a skip. Of course this can
- % shift the issue elsewhere, as vss is used a lot elsewhere.
- %
- % \vss
- \vkern\ht\foundexternalfigure
- %
- \ht\foundexternalfigure\zeropoint
- \dp\foundexternalfigure\zeropoint
- \hpack to \wd\foundexternalfigure\bgroup
- \box\foundexternalfigure
- \hss
- \egroup
- \egroup}
-
-\permanent\protected\def\startfoundexternalfigure#1#2% ht wd
- {\global\setbox\foundexternalfigure\vbox to #2\bgroup\vss\hbox to #1\bgroup}
-
-\permanent\protected\def\stopfoundexternalfigure
- {\hss\egroup\egroup}
-
-\permanent\protected\def\emptyfoundexternalfigure % sort of obsolete
- {\startfoundexternalfigure\defaultfigurewidth\defaultfigureheight
- \stopfoundexternalfigure}
-
-% \doifmodeelse{*\v!last}
-% {\settrue \c_grph_include_flush}
-% {\setfalse\c_grph_include_flush}%
-
-\def\grph_include_finalize
- {\global\setbox\foundexternalfigure\vbox
- {\ifcase\figurestatus
- \letexternalfigureparameter\c!frame\v!on
- \fi
- \ifconditional\c_grph_include_flush
- \ifconditional\c_grph_include_level % probably background
- \ifconditional\c_grph_include_skip
- % nothing
- \fakebox\foundexternalfigure
- \orelse\ifcase\figurestatus
- % nothing
- \else
- \the\externalfigurepostprocessors
- \box\foundexternalfigure
- \fi
- \else
- \iftrialtypesetting \else \feedbackexternalfigure \fi
- \settrue\c_grph_include_level
- \ifconditional\c_grph_include_skip
- \ifcase\figurestatus
- \grph_include_replacement\figurelabel\figurefileoriginal{unknown}%
- \else
- \grph_include_replacement\figurelabel\figurefullname{skipped}%
- \fi
- \orelse\ifcase\figurestatus
- \grph_include_replacement\figurelabel\figurefileoriginal{unknown}%
- \else
- \the\externalfigurepostprocessors
- \edef\p_reset{\externalfigureparameter\c!reset}%
- \ifx\p_reset\v!yes
- \wd\foundexternalfigure\figurewidth
- \ht\foundexternalfigure\figureheight
- \dp\foundexternalfigure\zeropoint
- \box\foundexternalfigure
- \else
- \letexternalfigureparameter\c!offset\v!overlay
- \letexternalfigureparameter\c!width \figurewidth
- \letexternalfigureparameter\c!height\figureheight
- \inheritedexternalfigureframed{\box\foundexternalfigure}%
- \fi
- \fi
- \fi
- \else
- % maybe also \the\externalfigurepostprocessors
- \iftrialtypesetting \else \feedbackexternalfigure \fi
- \fi}}
-
-\let\feedbackexternalfigure\relax % hook
-
-\permanent\protected\def\getfiguredimensions
- {\dodoubleempty\grph_include_get_dimensions}
-
-\def\grph_include_get_dimensions[#1][#2]%
- {\startnointerference
- \settrue\c_grph_include_test_only
- \externalfigure[#1][#2,\c!display=,\c!mask=,\c!object=\v!no]%
- \stopnointerference}
-
-\permanent\protected\def\doifelsefigure#1%
- {\getfiguredimensions[#1]% so data is available !
- \ifcase\figurestatus
- \expandafter\secondoftwoarguments
- \else
- \expandafter\firstoftwoarguments
- \fi}
-
-\aliased\let\doiffigureelse\doifelsefigure
-
-% No placement, handy for preprocessing:
-
-\permanent\tolerant\protected\def\registerexternalfigure[#1]#*[#2]#*[#3]%
- {\startnointerference
- \c_grph_include_test_only
- \setfalse\c_grph_include_flush % == test ?
- \externalfigure[#1][#2][#3]% or
- \externalfigure[#1][#2,\c!display=,\c!mask=,\c!object=\v!no]%
- \stopnointerference}
-
-% Helpers will be replaced when xforms are accessible at the lua end but then
-% we need to do the object offset there too.
-
-\permanent\protected\def\dosetfigureobject#1#2%
- {\setobject{#1}{#2}\vpack{\box\foundexternalfigure}}
-
-\permanent\protected\def\doboxfigureobject#1#2%
- {\global\setbox\foundexternalfigure\vpack{\getobject{#1}{#2}}} % probably one vbox too many
-
-% Figure bases
-
-\permanent\protected\def\usefigurebase[#1]%
- {\clf_usefigurebase{#1}}
-
-\appendtoks
- \setfigurepathlist % the path may be used elsewhere too (as in x-res-04)
-\to \everysetupexternalfigure
-
-\appendtoks
- \clf_setfigurelookuporder{\externalfigureparameter\c!order}%
-\to \everysetupexternalfigure
-
-\definecolor[missingfigurecolor][s=.8]
-
-\def\grph_include_replacement#1#2#3%
- {\bgroup
- \letexternalfigureparameter\c!width\figurewidth
- \letexternalfigureparameter\c!height\figureheight
- \letexternalfigureparameter\c!background\v!color
- \setexternalfigureparameter\c!backgroundcolor{missingfigurecolor}%
- \setexternalfigureparameter\c!align{\v!middle,\v!lohi}% we default to \v!none
- \inheritedexternalfigureframed
- {\tt\tfxx \nohyphens
- name: \expanded{\verbatimstring{#1}}\\%
- file: \expanded{\verbatimstring{#2}}\\%
- state: \expanded{\verbatimstring{#3}}}%
- \egroup}
-
-% maybe setuphandler
-
-\newconditional\c_grph_include_in_collection
-
-\newdimen\d_grph_include_collection_minwidth
-\newdimen\d_grph_include_collection_maxwidth
-\newdimen\d_grph_include_collection_minheight
-\newdimen\d_grph_include_collection_maxheight
-
-\def\grph_include_analyze_collection[#1][#2]%
- {\ifconditional\c_grph_include_in_collection
- \setfalse\c_grph_include_in_collection
- \getfiguredimensions[#1][#2]%
- \settrue\c_grph_include_in_collection
- \scratchdimen\naturalfigurewidth
- \ifdim\scratchdimen>\d_grph_include_collection_maxwidth \d_grph_include_collection_maxwidth \scratchdimen \fi
- \ifdim\scratchdimen<\d_grph_include_collection_minwidth \d_grph_include_collection_minwidth \scratchdimen \fi
- \scratchdimen\naturalfigureheight
- \ifdim\scratchdimen>\d_grph_include_collection_maxheight \d_grph_include_collection_maxheight\scratchdimen \fi
- \ifdim\scratchdimen<\d_grph_include_collection_minheight \d_grph_include_collection_minheight\scratchdimen \fi
- \fi}
-
-\permanent\protected\def\startexternalfigurecollection[#1]%
- {\begingroup
- \def\currentexternalfigurecollection{#1}%
- \settrue\c_grph_include_in_collection
- \d_grph_include_collection_minwidth \maxdimen
- \d_grph_include_collection_maxwidth \zeropoint
- \d_grph_include_collection_minheight\maxdimen
- \d_grph_include_collection_maxheight\zeropoint}
-
-\permanent\protected\def\stopexternalfigurecollection
- {\setxvalue{\??externalfigurecollection\currentexternalfigurecollection:\c!minwidth }{\the\d_grph_include_collection_minwidth }%
- \setxvalue{\??externalfigurecollection\currentexternalfigurecollection:\c!maxwidth }{\the\d_grph_include_collection_maxwidth }%
- \setxvalue{\??externalfigurecollection\currentexternalfigurecollection:\c!minheight}{\the\d_grph_include_collection_minheight}%
- \setxvalue{\??externalfigurecollection\currentexternalfigurecollection:\c!maxheight}{\the\d_grph_include_collection_maxheight}%
- \endgroup}
-
-\permanent\def\externalfigurecollectionparameter#1#2%
- {\csname
- \ifcsname\??externalfigurecollection#1:#2\endcsname
- \??externalfigurecollection#1:#2%
- \else
- \s!empty
- \fi
- \endcsname}
-
-\permanent\def\externalfigurecollectionminwidth #1{\externalfigurecollectionparameter{#1}\c!minwidth }
-\permanent\def\externalfigurecollectionmaxwidth #1{\externalfigurecollectionparameter{#1}\c!maxwidth }
-\permanent\def\externalfigurecollectionminheight#1{\externalfigurecollectionparameter{#1}\c!minheight}
-\permanent\def\externalfigurecollectionmaxheight#1{\externalfigurecollectionparameter{#1}\c!maxheight}
-
-\aliased\let\efcparameter\externalfigurecollectionparameter % still needed ?
-\aliased\let\efcminwidth \externalfigurecollectionminwidth % still needed ?
-\aliased\let\efcmaxwidth \externalfigurecollectionmaxwidth % still needed ?
-\aliased\let\efcminheight\externalfigurecollectionminheight % still needed ?
-\aliased\let\efcmaxheight\externalfigurecollectionmaxheight % still needed ?
-
-% \startexternalfigurecollection[name]
-% \useexternalfigure[cow] [cow.pdf]
-% \useexternalfigure[mill][mill.png]
-% \stopexternalfigurecollection
-% \starttext
-% \bTABLE
-% \bTR
-% \bTD \externalfigure[cow] [height=\externalfigurecollectionmaxheight{name}] \eTD
-% \bTD \externalfigure[mill][height=\externalfigurecollectionmaxheight{name}] \eTD
-% \eTR
-% \eTABLE
-% \stoptext
-
-\permanent\protected\def\overlayfigure#1%
- {\externalfigure[#1][\c!width=\d_overlay_width,\c!height=\d_overlay_height]}
-
-% Experimental (will become cleaner):
-
-\permanent\tolerant\protected\def\includesvgfile[#1]#*[#2]%
- {\dontleavehmode\begingroup
- \getdummyparameters[\c!offset=\zeropoint,#2]%
- \clf_includesvgfile{#1}\dimexpr\dummyparameter\c!offset\relax
- \endgroup}
-
-\permanent\tolerant\protected\def\includesvgbuffer[#1]#*[#2]%
- {\dontleavehmode\begingroup
- \getdummyparameters[\c!offset=\zeropoint,#2]%
- \clf_includesvgbuffer{#1}\dimexpr\dummyparameter\c!offset\relax
- \endgroup}
-
-% Bonus:
-
-\useexternalfigure
- [\v!buffer]
- [\jobname.buffer]
- [\c!object=\v!no]
-
-% Another two:
-
-\defineexternalfigure
- [\v!inline]
- [\c!height=\lineheight]
-
-\definemeasure
- [\v!combination]
- [(\textwidth
- -\effectiveleftskip
- -\effectiverightskip
- -\numexpr\combinationparameter\c!nx-\plusone\relax\dimexpr\combinationparameter\c!distance\relax
- )/\combinationparameter\c!nx]
-
-\defineexternalfigure
- [\v!combination]
- [\c!width=\measure{\v!combination}]
-
-% \startcombination[nx=2,ny=1]
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% \stopcombination
-
-% \startcombination[nx=2,ny=1]
-% {\externalfigure[dummy][width=\measure{combination}]} {}
-% {\externalfigure[dummy][width=\measure{combination}]} {}
-% \stopcombination
-
-% \startcombination[nx=2,ny=2]
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% \stopcombination
-
-% \startcombination[nx=3,ny=1]
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% \stopcombination
-
-% \startcombination[nx=4,ny=1]
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% {\externalfigure[dummy][combination]} {}
-% \stopcombination
-
-\permanent\protected\def\inlinefigure[#1]%
- {\dontleavehmode
- \sbox{\externalfigure[#1][\v!inline]}}
-
-%D Needs to be done global:
-
-\definelayer[epdfcontent]
-
-\protect \endinput
-
-%D Moved here because this already old code is nowhere documents (so I need to check
-%D it:
-%
-% \starttyping
-% \starttext
-%
-% \startluaparameterset [u3d:myset:controls:1]
-% view = {
-% name = 'default',
-% bg = {1,1,1},
-% mag = 100,
-% coo = {0,0,0},
-% c2c = {0,0,1},
-% rot = {40,0,60},
-% roo = 6,
-% lights = 'CAD'
-% },
-% js = 'cloudq.js'
-% \stopluaparameterset
-%
-% \startluaparameterset [u3d:myset:controls:2]
-% views = {
-% {
-% name = 'AnglePositioning',
-% bg = {1,1,1},
-% azimuth = 45,
-% altitude = 45,
-% roo = 50,
-% aac = 2.5,
-% lights = 'Artwork'
-% },
-% {
-% name = 'RotationPositioning',
-% bg = {1,1,1},
-% rot = {0,45,45},
-% roo = 50,
-% aac = 2.5,
-% lights = 'Artwork'
-% },
-% {
-% name = 'VectorPositioning',
-% bg = {1,0,0},
-% c2c = {1,1,math.sqrt(2)},
-% roo = 50,
-% aac = 2.5,
-% lights = 'CAD'
-% },
-% {
-% name = 'PositionPositioning',
-% bg = {1,0,0},
-% pos = {1+25,1+25,1+50/math.sqrt(2)},
-% aac = 2.5,
-% lights = 'CAD'
-% },
-% {
-% name = 'ortho',
-% bg = {1,1,1},
-% mag = 300,
-% lights = 'CAD',
-% crossection = {}
-% }
-% },
-% view = {
-% name = 'default',
-% bg = {1,1,1},
-% c2c = {-1,-1,0},
-% roo = 50,
-% aac = 2.5,
-% roll = 45,
-% lights = 'CAD',
-% crossection = {
-% normal = {-1,-1,-1},
-% transparent = true
-% },
-% nodes = {
-% {
-% name = 'xlabel',
-% visible = false
-% },
-% {
-% name = 'ylabel',
-% opacity = 0.5
-% },
-% {
-% name = 'zlabel',
-% rendermode = 'Wireframe'
-% }
-% }
-% }
-% \stopluaparameterset
-%
-% \useexternalfigure
-% [cloudq]
-% [cloudq.u3d]
-% [width=0.7\textwidth,
-% height=.7\textwidth,
-% display=u3d:myset:display:1,
-% controls=u3d:myset:controls:1]
-%
-% \useexternalfigure
-% [axes]
-% [axes.u3d]
-% [width=0.7\textwidth,
-% height=.7\textwidth,
-% controls=u3d:myset:controls:1]
-%
-% \startluaparameterset[u3d:myset:display:2]
-% toolbar = true,
-% preview = 'cloudq.png'
-% \stopluaparameterset
-% \startluaparameterset[u3d:myset:display:3]
-% toolbar = true,
-% tree = false,
-% preview = 'axes.png'
-% \stopluaparameterset
-% \startluaparameterset[u3d:myset:display:4]
-% toolbar = true,
-% tree = false,
-% view = {
-% name = 'view',
-% bg = {0.1,0.1,0.1},
-% c2c = {-1,-1,0},
-% roo = 50,
-% aac = 2.5,
-% roll = 45,
-% lights = 'Red'
-% }
-% \stopluaparameterset
-% \startluaparameterset[u3d:myset:display:5]
-% toolbar = true,
-% tree = false,
-% view = 'ortho'
-% \stopluaparameterset
-%
-% \placefigure[here]{none}{\externalfigure[cloudq][frame=on,display=u3d:myset:display:2]}
-% \placefigure[here]{none}{\externalfigure[axes] [frame=on,display=u3d:myset:display:3]}
-% \placefigure[here]{none}{\externalfigure[axes] [frame=on,display=u3d:myset:display:4]}
-% \placefigure[here]{none}{\externalfigure[axes] [frame=on,display=u3d:myset:display:5,width=0.5\textwidth,height=.5\textwidth]}
-%
-% \stoptext