% File:       TeX Inputs Cell1.tex
% Author:     J E Pittman
% Bitnet:     JEPTeX@TAMVenus
% Internet:   JEPTeX@Venus.TAMU.EDU
% Date:       October 11, 1988
%
% Set up the cellular environment
%
\catcode`_=11 % Protect local macros.
%
\ifx\forcount\undefined \input loopy \fi
\ifx\declarecount\undefined \input declare \fi
%
% Handy abbreviations
%
\def\half{0.5}%
\def\by{by}%
\def\height{height}%
\def\depth{depth}%
\def\width{width}%
\def\to{to}%
\def\zeropt{0pt}%
\let\x_after=\expandafter
%
% When using the Xerox 9700s or 4050, use \setverticaladjustment for 
% portrait output and \sethorizontaladjustment for landscape output 
% due to the differences in the way that vertical and horizontal lines 
% of the same weight are printed.
%
\declaredimen\pixelwidth
\pixelwidth=1in
\divide\pixelwidth by 300                         % assume 300dpi
%
\declaredimen\horizontal_rule_adjust
\horizontal_rule_adjust=\zeropt
\def\sethorizontaladjustment{\horizontal_rule_adjust=\pixelwidth}%
%
\declaredimen\vertical_rule_adjust
\vertical_rule_adjust=\zeropt
\def\setverticaladjustment{\vertical_rule_adjust=\pixelwidth}%
%
% The left, right, bottom, and top rule widths are used to determine
% the widths of the box around each cell.
%
\declaredimen\leftrulewidth
\declaredimen\rightrulewidth
\declaredimen\bottomrulewidth
\declaredimen\toprulewidth
%
% The left, right, bottom, and top border skips are used to position 
% the text of a cell within it, relative to the centers of the rulers.
%
\declareskip\leftborderskip
\declareskip\rightborderskip
\declareskip\bottomborderskip
\declareskip\topborderskip
%
\declarecount\last_column
\declaredimen\columnwidth
\declarecount\merge_columns
\declaredimen\merge_width
%
\declarecount\last_row
\declaredimen\rowheight
\declarecount\merge_rows
\declaredimen\merge_height
\declarecount\rowpenalty
%
% The row info and column info token registers contain a list of 
% tokens of the form /number/info, where number is the number of a 
% row or column of interest and info is information, usually register 
% assignments, that pertains to the row or column.
%
\declaretoks\column_info
\column_info={/}%
%
\declaretoks\row_info
\row_info={/}%
%
\def\everycolumn{\leftrulewidth=0.4pt\relax
   \rightrulewidth=\leftrulewidth
   \leftborderskip=6pt plus 1fil\relax
   \rightborderskip=\leftborderskip
   \columnwidth=\zeropt\relax
   \merge_rows=0\relax
   \merge_height=\zeropt\relax
   \columnwidth=\zeropt\relax
   }%
%
\def\everyrow{\toprulewidth=0.4pt\relax
   \bottomrulewidth=\toprulewidth
   \topborderskip=3pt plus 1fil\relax
   \bottomborderskip=\topborderskip
   \rowheight=\zeropt\relax
   \merge_columns=0\relax
   \merge_width=\zeropt\relax
   }%
%
\def\get_data#1<#2{\relax
   \def\temp##1/#1/##2/##3***{\relax
      \def\temp{##2}%
      \ifnum1=0\temp
         #2={##1/#1//}%
      \else
%        \message{extracted ##2}% debug
         ##2%
      \fi
      }%
   \x_after\temp\the#2#1/1/***%
   }%
%
\def\add_data#1>#2#3{\relax
   \def\temp##1/#1/##2/##3***{\relax
      #2={##1/#1/##2#3/##3}%
%     \message{\string#2=\the#2}% debug
      }%
   \x_after\temp\the#2***%
   }%
%
\def\add_column_number_data{\relax
   \x_after \add_data \the\column_number>\column_info
   }%
%
\def\get_column_number_data{\relax
   \x_after \get_data \the\column_number<\column_info
   }%
%
\def\add_row_number_data{\relax
   \x_after \add_data \the\row_number>\row_info
   }%
%
\def\get_row_number_data{\relax
   \x_after \get_data \the\row_number<\row_info
   }%
%
\declarebox\temp_box
\declarebox\scratch_box
\declaredimen\temp_dimen
\declaredimen\scratch_dimen
\declareskip\temp_skip
\declarecount\temp_count
%
\declarecount\tracingexpansions
\tracingexpansions=0
%
\catcode`_=8 % Return to normal.
%
\endinput
