%D \module
%D   [      file=t-construction-plan,
%D        version=2008.04.05,
%D          title=\CONTEXT\ User Module,
%D       subtitle=Construction plans,
%D         author=Peter Münster,
%D           date=\currentdate,
%D      copyright={Peter Münster}]
%C This module is copyrighted by Peter Münster.
%C Please send any comments to pmrb at free.fr.

% This program is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License
% as published by the Free Software Foundation; either version 2
% of the License, or (at your option) any later version.

% This program is distributed in the hope that it will be useful,
% but without any warranty; without even the implied warranty of
% merchantability or fitness for a particular purpose.  See the
% GNU General Public License for more details.

\writestatus{loading}{Typesetting construction plans}

\unprotect

%D We need a lot of space.
\setuplayout[header=0pt,footer=0pt,backspace=2cm,width=middle,
  topspace=1cm,height=middle]

%D Doing pagenumbering on our own.
\setuppagenumbering[state=stop]

%D \macros
%D   {setupPlan}
%D
%D Setting up some values.
%D
%D Default setup:
%D
%D \starttyping
%D \setupPlan[paper=A3,project=,author=,prec=10]
%D \stoptyping
%D
%D Example:
%D
%D \starttyping
%D \setupPlan[paper=A3,project=My garage,author=Peter Münster,
%D   prec=Precision factor for figure width]
%D \stoptyping
\def\setupPlan[#1]{\getparameters[CP][#1]}
\setupPlan[paper=A4,project=,author=,date=,prec=10]

%D Support for more than one language!
\setuplabeltext[fr][project=Projet,author=Auteur,date=Date,scale=Échelle]
\setuplabeltext[en][project=Project,author=Author,date=Date,scale=Scale]
\setuplabeltext[de][project=Projekt,author=Autor,date=Datum,scale=Maßstab]

%D \macros
%D   {Plan}
%D
%D Makes a page with a plan and some comments below it.
%D
%D Example:
%D
%D \starttyping
%D \Plan[Prefix=file prefix,Scale=scale of figure,mm=width of figure in mm,
%D   Title=title of plan]
%D \stoptyping
%D
%D If you want to include the file \type{plan-20000.eps} you have to use
%D \type{Prefix=plan,mm=20000}.
%D
%D Sample document:
%D
%D \starttyping
%D \usemodule[construction-plan]
%D \mainlanguage[fr] % or better: \usemodule[french]
%D \starttext
%D \Plan[Prefix=situ,Scale=2000,mm=351000,Title=Plan de situation]
%D \Plan[Prefix=masse,Scale=400,mm=66000,Title=Plan de masse]
%D \Plan[Prefix=nord,Scale=100,mm=20906,Title=Façade nord]
%D \Plan[Prefix=sud,mm=18900,Title=Façade sud]
%D \Plan[Prefix=west,mm=23390,Title=Pignon ouest]
%D \Plan[Prefix=ost,mm=23513,Title=Pignon est]
%D \Plan[Prefix=rdc,mm=18456,Title=Rez-de-chaussée]
%D \Plan[Prefix=etage,mm=16695,Title=Étage]
%D \Plan[Prefix=haus1,Scale=150,mm=30000,Title=Simulation 1]
%D \Plan[Prefix=haus2,Scale=100,mm=20000,Title=Simulation 2]
%D \stoptext
%D \stoptyping

\def\@BottomLine{{\tx\doifsomething\CPproject{%
      \labeltext{project}: \CPproject, }%
      \doifsomething\CPauthor{\labeltext{author}: \CPauthor, }%
      \labeltext{date}: \doifelsenothing\CPdate\currentdate\CPdate}\hfill}

\newdimen\CPwidth \newdimen\CPheight
\def\Plan[#1]{%
  \getparameters[CP][#1]
  \CPwidth=\dimexpr(\the\numexpr(\CPprec*\CPmm/\CPscale)mm/\CPprec)
  \def\CPfig{\externalfigure[\CPprefix-\CPmm][width=\the\CPwidth]}%
  \setbox\scratchbox\hbox{\CPfig}\CPheight=\ht\scratchbox
  \ifdim\CPwidth>1.1\CPheight
    \setuppapersize[\CPpaper,landscape,rotated][\CPpaper]
  \else
    \setuppapersize[\CPpaper][\CPpaper]
  \fi
  \startstandardmakeup
    \midaligned{\CPfig}\vfil\@BottomLine
    \framed[align=lohi,offset=2ex]{{\bfc\CPtitle}\blank
    \labeltext{scale}: 1/\CPscale\quad\hfill(\currentpage/\lastpage)}%
    \vskip0pt plus -1fil
  \stopstandardmakeup}

%D \macros
%D   {NoPlan}
%D
%D Makes a page with some content and some comments below it.
%D
%D Example:
%D
%D \starttyping
%D \NoPlan[Title=Some notes]{Here are some notes about the plans.}
%D \stoptyping

\long\def\NoPlan[#1]#2{%
  \getparameters[CP][#1]
  \setuppapersize[\CPpaper][\CPpaper]
  \startstandardmakeup
    #2\vfil\@BottomLine
    \framed[align=lohi,offset=2ex]{{\bfc\CPtitle}\blank
    (\currentpage/\lastpage)}\vskip0pt plus -1fil
  \stopstandardmakeup}

\protect

\doifnotmode{demo}{\endinput}

%D Usage example:
\usemodule[construction-plan]
\setupexternalfigures[directory=samples]
\mainlanguage[de]
\setupPlan[paper=A3,project=Mein Haus,prec=15]
\starttext
\Plan[prefix=unten,scale=100,mm=21478,title=Erdgeschoß]
\Plan[prefix=oben,mm=21345,title=Obergeschoß]
\Plan[prefix=simulation,scale=250,mm=80000,title=Simulation]
\NoPlan[title=Notizen,paper=A4]{\tfb\setupinterlinespace
  Einige Notizen, die das Bauvorhaben beschreiben...}
\stoptext
