From 5cf09a98b2eedb6e4fbfe1cd46a168285173d7da Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Tue, 18 Jul 2000 03:22:32 +0000 Subject: [PATCH] r151: Initial CVS import --- doc/Makefile.am | 4 + doc/ctsim.tex | 20 ++++ doc/ctsim.texi | 74 ++++++++++++ doc/sgp.doc | 183 +++++++++++++++++++++++++++++ doc/texhelp.sty | 298 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 579 insertions(+) create mode 100644 doc/Makefile.am create mode 100644 doc/ctsim.tex create mode 100644 doc/ctsim.texi create mode 100644 doc/sgp.doc create mode 100644 doc/texhelp.sty diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..2f709d9 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,4 @@ +EXTRA_DIST=sgp.1 ctsim.tex texhelp.sty + +dvi: ctsim.tex + latex ctsim.tex diff --git a/doc/ctsim.tex b/doc/ctsim.tex new file mode 100644 index 0000000..d4207ff --- /dev/null +++ b/doc/ctsim.tex @@ -0,0 +1,20 @@ +\documentstyle[a4,texhelp]{report} +\title{CTSim - An Open-Source Computed Tomography Simulator} +\author{Kevin Rosenberg} +\date{July 2000} +\begin{document} +\maketitle +\chapter{Introduction} +Welcome to CT. +\section{Theory} +Theory of CT. +\chapter{The Programs} +\centerline{This is a centered line} +\begin{center} +This is a +centered paragraph. +\end{center} + +{\bf This is in bold font} + +\end{document} diff --git a/doc/ctsim.texi b/doc/ctsim.texi new file mode 100644 index 0000000..f024f08 --- /dev/null +++ b/doc/ctsim.texi @@ -0,0 +1,74 @@ +input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename ctsim.info +@settitle CTSim Manual +@c %**end of header + +@setchapternewpage odd + +@ifinfo +Reference Manual for CTSim + +Copyright (c) 2000 Kevin Rosenberg +@end ifinfo + +@titlepage +@sp 10 +@comment The title is printed in a large font. +@center @titlefont{CTSim Manual} + +@c The following two commands start the copyright page. +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 2000 Kevin Rosenberg +@end titlepage + +@node Top, Computed Tomography Overview, (dir), (dir) +@comment node-name, next, previous, up + +@menu +* Computed Tomography Overview:: The first chapter +* Algorithms:: Algorithms used by this program +* Concept Index:: This index has two entries. +@end menu + +@node Computed Tomography Overview, Algorithms, Top, Top +@comment node-name, next, previous, up +@chapter Computed Tomography Overview +@cindex Overview + +@section Overview +Computed Tomography is a process to reconstruction internal images of +an object by taking projection data through that object. + +@cindex Another sample index entry + +Here is a numbered list. + +@enumerate +@item +This is the first item. + +@item +This is the second item. +@end enumerate + +The @code{makeinfo} and @code{texinfo-format-buffer} +commands transform a Texinfo file such as this into +an Info file; and @TeX{} typesets it for a printed +manual. + +@node Algorithms , Concept Index , Computed Tomography Overview , Top + +@section Theory +This is great. + +@node Concept Index, , Algorithms , Top +@comment node-name, next, previous, up +@unnumbered Concept Index + +@printindex cp + +@contents +@bye + diff --git a/doc/sgp.doc b/doc/sgp.doc new file mode 100644 index 0000000..f6f56d6 --- /dev/null +++ b/doc/sgp.doc @@ -0,0 +1,183 @@ + Simple Graphics Package (SGP) Documentation + ------------------------------------------- + + + Documentation and Software Written by Kevin Rosenberg + Copyright (c) 1984, Kevin Rosenberg + + + + + + OVERVIEW + -------- + + +------------------------+ + | World Coordinate level | + +-----------+------------+ + | + | + +------------+-------------+ + | Convert to Normalized | + | device coordinates (NDC) | + +------------+-------------+ + | + | + +------+-------+ +--------------+ + | Segmentation +-----------+ Disk Storage | + +------+-------+ +--------------+ + | + +------------+-------------+ + | Convert to Physical | + | device coordinates (PDC) | + +--------------------------+ + + +World Coordinate Level +---------------------- + initgrf2 () Initialize 2 dimensional graphics + termgrf2 () Terminate 2 dimensional graphics + window2 (xmin, ymin, xmax, ymax) Set window for world coord + viewprt2 (xmin, ymin, xmax, ymax) Viewport for window in NDC + moveabs2 (x, y) Move graphics cursor + moverel2 (dx, dy) + pntabs2 (x, y) Plot point at current position + pntrel2 (dx, dy) + lineabs2 (x, y) Draw line from current point to point + linerel2 (dx, dy) + markabs2 (x, y) Draw marker at current position + markrel2 (dx, dy) + polylnabs (x[], y[], n) Draw a set of lines + polylnrel (dx[]. dy[]. n) + wc_to_ndc (xwc, ywc, xndc, yndc) Convert from world coord to NDC + ndc_to_wc (xndc, yndc, xwc, ywc) Convert from NDC to world coord + drawtext (str) Draw text string at current positon + + INTERNAL: + calc_map () Calculate wc to ndc factors + clip(rectangle[4], x1, y1, x2, y2) Clip a line againt rectangle + + +Normalized Coordinate level +-------------------------- + stylus (x, y, beam) Draw a line from current position + opendevice (device) Open a device for output + closedevice (device) Close a device for output + flushdevice (device) Put all pending data on device + inqdev (device, xmax, ymax) Return data on device + setcolor (color) Set current drawing color + setlinestyle (style) Set current line style + setlinewidth (width) Set current line width + settext (h, w, orientation, dir, font) Set text attributes + settextclr (foreground, background) If back=-1, then transparent backg + inqtext(h, w, o, dir, font, fore, back) Get current text attributes + charndc (c, xndc, yndc) Draw char at NDC position + textndc (str, xndc, yndc) Draw text string at NDC position + + setmarker (marker_type, color) Set marker attibutes + markndc (xndc, yndc) Draw marker at NDC position + + ndc_to_pdc (device, xndc, yndc, xpdc, ypdc) + savescrn (filename, xmin, ymin, xmax, ymax) + readscrn (filename) + +Physical Device Level +--------------------- + crtdot (x, y, c) + crtline (x1, y1, x2, y2, color, style) + wrtchar (char, x, y, dotfunc()) + wrttext (str, x, y, dotfunc()) + + readblock (array, xmin, ymin, xmax, ymax) + writeblock (array, xmin, ymin, mode) + + prtdot (x, y, c) + prtline (func, x1, y1, x2, y2, color, style) + + +Input Functions +--------------- +Physical device level + joystk (sticknum, x, y) + +Normalized Coordinate level + readloc (xndc, yndc) + inithcur (height, width, color) Initialize haircross cursor + movhcurabs (xndc, yndc) Move haircross cursor to point + movhcurrel (dxndc, dyndc) Move relatively + termhcur () Turn off haircross cursor + readpnt (xndc, yndc) Have cursor track joystick + User press button at desired point + + DATA STRUCTURES + --------------- +struct DEVICE { + int xsize, ysize; Size of device in pixels + int xmax, ymax; Maximum coordinates + int colormax; Maximum color number of device + int style; Current linestyle of device + int width; Current width of device + int color; Current color of device + int curx, cury; Current position + int charwidth, charheight; Size of characters in pixels + float aspt Aspect ratio Multiple coord + int (*dot)(); Dot function for device + int (*line)(); Line function for device + int mode; Device mode +}; + +struct CHARSPEC { + float width, height; size of characters in NDC + int dirflag, orientflag text direction, character orientation + int fore, back; foreground & background color +}; + +struct CURRENT { + int color; + int linestyle; + int linewidth; + float xndc, yndc; +} + + Map directly from world coords to physical device coords + -------------------------------------------------------- + +Window: xwmin, xwmax, ywmin, ywmax +Viewport: xvmin, xvmax, yvmin, yvmax +Physical: xpmax, ypmax + +To convert from wc to ndc: + xndc = xvmin + (xwc - xwmin) / (xwmax - xwmin) + yndc = yvmin + (ywc - ywmin) / (ywmax - ywmin) + +To convert from ndc to pdc: + xpdc = xndc * xpmax + ypdc = yndc * ypmax + +So, for each device set up the following composite transformation: + xpdc = xpmax * (xvmin + (xwc - xwmin) / (xwmax - xwmin)) + ypdc = ypmax * (yvmin + (ywc - ywmin) / (ywmax - ywmin)) + + xpdc = xpmax * xvmin + (xwc - xwmin) * (xpmax / (xwmax - xwmin)) + = xadd + (xwc - xsub) * xfact + +Characters +---------- + Fonts: + NORMAL Regular character set + BOLD Overstike chars with x offset by 1 pixel + ITALICS Shear characters along character height + + NORMAL BOLD ITALICS + X XX X + XXX XXXX XXX + X X XX XX X X + X X XX XX X X + XXXXX XXXXXX XXXXX + X X XX XX X X + X X XX XX X X + + + + + diff --git a/doc/texhelp.sty b/doc/texhelp.sty new file mode 100644 index 0000000..af91bd5 --- /dev/null +++ b/doc/texhelp.sty @@ -0,0 +1,298 @@ +% LaTeX style file +% Name: texhelp.sty +% Author: Julian Smart +% +% Purpose +% ------- +% Style file to enable the simultaneous preparation of printed LaTeX and on-line +% hypertext manuals. +% Use in conjunction with Tex2RTF (see Tex2RTF documentation). +% +% Note that if a non-ASCII character starts a newline and there should be a space +% between the last word on the previous line and the first word on this line, +% you need to use \rtfsp to generate a space in Windows Help. \rtfsp is ignored +% in all other formats. +% +% Julian Smart +% Artificial Intelligence Applications Institute +% +% +% ============== C++/CLIPS Documentation Facilities ============== +% +% Each class definition should be typeset with e.g. +% +% \section{\class{Name}: Parent} +% +% followed by a description of the class. +% Each member should follow: +% +% \membersection{wxName::Member} +% +% with a description of what this member does. +% Then, one (or more if overloaded) member (function) in detail: +% +% \func{return type}{name}{args} +% or +% \member{type}{name} +% +% where args is a list of \param{type}{name}, ... + +% Function, e.g. +% e.g. to typeset +% +% void DoIt(char *string); +% +% write: +% +% \func{void}{DoIt}{\param{char *}{string}} +% + +\newcommand{\func}[3]{\hangafter=1\noindent\hangindent=10mm +{{\it #1} {\bf #2}\index{#2}}(#3)} + +% For function/type definition where the name is a pointer, +% e.g. to typeset +% +% typedef void (*wxFunction)(wxObject&) +% +% write: +% +% \pfunc{typedef void}{wxFunction}{param{wxObject&}} + +\newcommand{\pfunc}[3]{\hangafter=1\noindent\hangindent=10mm +{{\it #1} ({\bf *#2})\index{#2}}(#3)} + +% Use an ordinary \section command for class name definitions. + +% This is used for a member, such as wxBitmap: GetDepth +\newcommand{\membersection}[1]{\subsection*{#1}\index{#1}} + +% CLIPS function +\newcommand{\clipsfunc}[3]{\hangafter=1\noindent\hangindent=10mm +{{\bf #1} ({\bf #2}\index{#2}}#3)} + +\newcommand{\clipssection}[1]{\chapter{#1}} + +% This is used for a CLIPS function name +\newcommand{\functionsection}[1]{\subsection*{#1}} + +% Member: a type and a name +\newcommand{\member}[2]{{\bf #1 \it #2}} + +% C++ Parameter: a type and a name (no intervening space) +\newcommand{\param}[2]{{\it #1}{\bf #2}} + +% CLIPS Parameter: a type and a name (one intervening space) +\newcommand{\cparam}[2]{{\bf #1} {\it #2}} + +% Class: puts in index +\newcommand{\class}[1]{#1\index{#1}} + +%\newcommand{\docparam}[2]{\parskip=0pt {\it #1}\par\parskip=10pt\begin{indented}{1cm}{#2}\end{indented}} + +% Void type +\newcommand{\void}{{\it void}} + +% Typeset destructor +\newcommand{\destruct}[1]{{$\sim$}#1} + +% Typeset insert/extract operators +\newcommand{\cinsert}{$<<$} +\newcommand{\cextract}{$>>$} + + +% =================== Hypertext facilities =================== +% +% To insert hyperlinks (or references, in Latex), \label the sections +% or membersections \label{ref-label} immediately after the section, on the same line, +% and use \helpref{text-to-show}{ref-label} to make a reference. +% + +% Type text with section reference +\newcommand{\helpref}[2]{{\it #1} (p.\ \pageref{#2}) } + +% Type text with URL in verbatim mode +\newcommand{\urlref}[2]{#1 (\verb$#2$)} + +% Don't typeset section number in LaTeX +\newcommand{\helprefn}[2]{{\it #1}} + +% Like helpref, but popup text in WinHelp instead of hyperlinked +\newcommand{\popref}[2]{{\it #1}} + +% Like footnote, but popup text. +\newcommand{\footnotepopup}[2]{{\it #1}\footnote{#2}} + +% =================== On-line help specific macros =================== +% + +% Global document font size/family, help only. +\newcommand{\helpfontsize}[1]{} +\newcommand{\helpfontfamily}[1]{} + +% Ignore in all on-line help +\newcommand{\helpignore}[1]{#1} +% Only print in all on-line help +\newcommand{\helponly}[1]{} + +% Ignore in LaTeX +\newcommand{\latexignore}[1]{} +% Only print in LaTeX +\newcommand{\latexonly}[1]{#1} + +% Ignore in linear RTF +\newcommand{\rtfignore}[1]{#1} +% Only print in linear RTF +\newcommand{\rtfonly}[1]{} + +% Ignore in WinHelp RTF +\newcommand{\winhelpignore}[1]{#1} +% Only print in WinHelp RTF +\newcommand{\winhelponly}[1]{} + +% Ignore in wxHelp +\newcommand{\xlpignore}[1]{#1} +% Only print in wxHelp +\newcommand{\xlponly}[1]{} + +% Ignore in HTML +\newcommand{\htmlignore}[1]{#1} +% Only print in HTML +\newcommand{\htmlonly}[1]{} + +% Input a file only for help system (binder thickness is not a limitation +% in help systems!) +\newcommand{\helpinput}[1]{} + +\newcommand{\rtfsp}{ } % Force a space in RTF, ignore in Latex + +% =================== Miscellaneous macros =================== +% +% Headings consistent with generated ones +\newcommand{\myheading}[1]{\vspace*{25pt} +\begin{flushleft} +{\LARGE \bf #1} +\end{flushleft} +\vskip 20pt +} + +% Heading with entry in contents page. +\newcommand{\chapterheading}[1]{\myheading{#1} +\addcontentsline{toc}{chapter}{#1}} + +\newcommand{\sectionheading}[1]{\myheading{#1} +\addcontentsline{toc}{section}{#1}} + +% Glossary environment +\newenvironment{helpglossary}{\newpage\chapterheading{Glossary}\begin{description}}{\end{description}} + +% Glossary entry +\newcommand{\gloss}[1]{\item[#1]\index{#1}} + +% Image: EPS in Latex, BMP or MF (whatever's available) in RTF. Requires psbox. +\newcommand{\image}[2]{\psboxto(#1){#2}} + +% Image, left aligned (HTML) +\newcommand{\imager}[2]{\psboxto(#1){#2}} + +% Image, right aligned (HTML) +\newcommand{\imagel}[2]{\psboxto(#1){#2}} + +% Imagemap: principally for HTML only. In Latex, +% acts like \image. +\newcommand{\imagemap}[3]{\psboxto(#1){#2}} + +% Headers and footers +% \setheader{EvenPageLeft}{EvenPageCentre}{EvenPageRight} +% {OddPageLeft}{OddPageCentre}{OddPageRight} +\newcommand{\setheader}[6]{ +\lhead[\fancyplain{}{#1}]{\fancyplain{}{#4}} +\chead[\fancyplain{}{#2}]{\fancyplain{}{#5}} +\rhead[\fancyplain{}{#3}]{\fancyplain{}{#6}} +} + +% \setfooter{EvenPageLeft}{EvenPageCentre}{EvenPageRight} +% {OddPageLeft}{OddPageCentre}{OddPageRight} +\newcommand{\setfooter}[6]{ +\lfoot[\fancyplain{#1}{#1}]{\fancyplain{#4}{#4}} +\cfoot[\fancyplain{#2}{#2}]{\fancyplain{#5}{#5}} +\rfoot[\fancyplain{#3}{#3}]{\fancyplain{#6}{#6}} +} + +% Needed for telling RTF where margin paragraph should go +% in mirrored margins mode. +\newcommand{\marginpareven}[1]{\hspace*{0pt}\marginpar{#1}} +\newcommand{\marginparodd}[1]{\hspace*{0pt}\marginpar{#1}} + +% Environment for two-column table popular in WinHelp and manuals. +\newcommand{\twocolwidtha}[1]{\def\twocolwidthaval{#1}} +\newcommand{\twocolwidthb}[1]{\def\twocolwidthbval{#1}} +\newcommand{\twocolspacing}[1]{\def\twocolspacingval{#1}} + +\twocolwidtha{3cm} +\twocolwidthb{8.5cm} +\twocolspacing{2} + +\newcommand{\twocolitem}[2]{#1 & #2\\} +\newcommand{\twocolitemruled}[2]{#1 & #2\\\hline} + +\newenvironment{twocollist}{\renewcommand{\arraystretch}{\twocolspacingval}\begin{tabular}{lp{\twocolwidthbval}}}% +{\end{tabular}\renewcommand{\arraystretch}{1}} + +% Specifying table rows for RTF compatibility +\newcommand{\row}[1]{#1\\} + +% Use for the last ruled row for correct RTF generation. +\newcommand{\ruledrow}[1]{#1\\\hline} + +% Indentation environment. Arg1 is left margin size +\newenvironment{indented}[1]{\begin{list}{}{\leftmargin=#1}\item[]}% +{\end{list}} + +% Framed box of text, normal formatting. +\newcommand{\normalbox}[1]{\fbox{\vbox{#1}}} +% Double-framed box of text. +\newcommand{\normalboxd}[1]{\fbox{\fbox{\vbox{#1}}}} + +% WITHDRAWN -- can't do in RTF, easily. +% Framed box of text, horizontally centred. Ragged right within box. +% \newcommand{\centeredbox}[2]{\begin{center}\fbox{\parbox{#1}{\raggedright#2}}\end{center}} +% Double-framed box of text, horizontally centred. Ragged right within box. +% \newcommand{\centeredboxd}[2]{\begin{center}\fbox{\fbox{\parbox{#1}{\raggedright#2}}}\end{center}} + +% toocomplex environment: simply prints the argument in LaTeX, +% comes out verbatim in all generated formats. +\newenvironment{toocomplex}{}{} + +% Colour: dummy commands since LaTeX doesn't support colour. +% \definecolour{name}{red}{blue}{green} +% \fcol{name}{text} ; Foreground +% \bcol{name}{text} ; Background +\newcommand{\definecolour}[4]{} +\newcommand{\definecolor}[4]{} +\newcommand{\fcol}[2]{#2} +\newcommand{\bcol}[2]{#2} +\newcommand{\sethotspotcolour}[1]{} +\newcommand{\sethotspotunderline}[1]{} +\newcommand{\settransparency}[1]{} +\newcommand{\backslashraw}[0]{} +\newcommand{\lbraceraw}[0]{} +\newcommand{\rbraceraw}[0]{} +\newcommand{\registered}[0]{(r)} +\newcommand{\background}[1]{} +\newcommand{\textcolour}[1]{} +\newcommand{\overview}[2]{See \helpref{#1}{#2}.} +\newcommand{\docparam}[2]{{\it #1}\begin{list}{}{\leftmargin=1cm}\item[] +#2% +\end{list}} +\newcommand{\wxheading}[1]{{\bf #1}} +\newcommand{\const}[0]{{\bf const}} +\newcommand{\constfunc}[3]{{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}} +\newcommand{\windowstyle}[1]{{\bf #1}\index{#1}} + +\addtolength{\textwidth}{1in} +\addtolength{\oddsidemargin}{-0.5in} +\addtolength{\topmargin}{-0.5in} +\addtolength{\textheight}{1in} +\sloppy + -- 2.34.1