\documentstyle[epsfig,psfig,portrait]{seminar}
% \input{eepic.sty}



\pagestyle{empty}
\thispagestyle{empty}

\portraitonly
\def\printportrait{\special{portrait}}    % Works with dvips.
\slideframe{none}

%\setlength{\topmargin}{-0.1in}
\setlength{\textwidth}{6.5in}
\setlength{\textheight}{9.0in}

\newcommand{\Reals}{\mbox{\normalsize{I\mbox{\hspace{-0.03in}}R}}}
\newcommand{\inner}[2]{\left<{#1}, {#2} \right>}

\setlength{\oddsidemargin}{-10mm}

\begin{document}


\begin{slide*}
Technion - Israel Institute of Technology \\
Computer Science Department \vspace{0.8in} \\

\begin{center}
{\Large WD-pic, A WYSIWYG, Direct-Manipulation {\bf Pic} \vspace{0.2in}}\\ 
Shpilberg Faina
\vspace{0.4in}\\ 
Supervision: Daniel Berry\\
\end{center}
\end{slide*}

\begin{small}

\begin{slide*}

{\large Two kinds of picture drawing software  \vspace{0.1in}}

\begin{itemize}
	\item	{\bf batch}, such as {\bf Pic}

	\item	{\bf WYSIWYG} (What You See Is What You Get), direct manipulation,
		such as {\it xfig}, {\it VISIO}, etc.

\end{itemize}

\end{slide*}

\begin{slide*}
{\large The advantages of batch drawing software are:}  
\begin{itemize}
   \item User can insert or delete an element or change its sizes or location without destroying the entire picture.
   \item It is easier to manipulate large groups of elements treated as a unit.
\end{itemize}

{\large The disadvantages of batch drawing software are:}
\begin{itemize}
   \item User cannot see picture as it is being composed, and because of it he/she could have problems with proportions, sizes, text string's length, etc.
   \item It is easier to make an error.
\end{itemize}
\end{slide*}

\begin{slide*}

{\large The advantages of WYSIWYG, direct-manipulation drawing software are:}

\begin{itemize}
  \item User can see  a whole  picture. 
  \item It is easier to make decision about such matters as exact type of element (for example {\bf box} or {\bf circle}), element size, position of text string, etc. and to avoid  obvious errors.
\end{itemize}

{\large The disadvantages of WYSIWYG, direct-manipulation drawing software are:}
\begin{itemize}
  \item A change of one element can destroy an entire picture.
  \item It is not comfortable to manipulate parameters  large groups of elements, for example changing the default size for all {\bf boxes} or changing the direction of elements in the picture. 
\end{itemize}

\end{slide*}
\begin{slide*}

\begin{figure}[h]
\begin{center}
\epsfysize = 4in \epsfbox{Slide11.ps}
\caption{\tiny
 WD-pic is a combination batch,
WYSIWYG, direct-manipulation drawing program enhancement of the well-known batch {\bf Pic} program that works with the
same {\bf Pic} language. The internal representation of any picture is
editable {\bf Pic} language of the style that a human would enter.}

\end{center}
\end{figure}
\end{slide*}

\begin{slide*}
\begin{figure}[h]
\begin{center}
\epsfysize = 4in \epsfbox{Slide3.ps}
\caption{ Pic is a language for specifying pictures, so they can be typeset as an integral part of a document preparation system.}
\end{center}
\end{figure}

\end{slide*}
 


\begin{slide*}
\begin{center}
{\large Classification of  {\bf Pic} language elements.  \vspace{0.1in} }

\begin{figure}[h]
\begin{center}
\epsfysize = 4in \epsfbox{Slide4.ps}
\end{center}
\end{figure}


\end{slide*}



\begin{slide*}

\begin{center}
{\large {\bf Pic} compiler  execution.}
\end{center}

 \begin{slide*}
\begin{figure}[h]
\begin{center}
\epsfysize = 3in \epsfbox{Slide5.ps}
\caption{ Pic is a language for specifying pictures, so they can be typeset as an integral part of a document preparation system.}
\end{center}
\end{figure}
 

\end{slide*}




\begin{slide*}
\begin{figure}
\epsfysize = 5in \epsfbox{ObjStr.ps} 
\end{figure}
\end{slide*}




\begin{slide*}
 \begin{figure}[h]
\begin{center}
\epsfysize = 4in \epsfbox{Slide6.ps}
\end{center}
\end{figure}
\begin{enumerate}
\item First mode: the  WD-pic updates its data structures. 
\item Second mode: picture representation in the {\bf Pic} language is used. The WD-editor changes only
this representation and uses it to create a file according to the {\bf Pic} standard. This file is passed to the {\bf Pic} compiler as an input data. 
The {\bf Pic} compiler creates all necessary data structures and passes them to the WD-editor for it to draw the picture.
\end{enumerate}

\end{slide*}



\begin{slide*}

\begin{figure}[h]
\begin{center}
\epsfysize = 4in \epsfbox{Slide6.ps}
\caption{Examples of two modes of WD-pic execution.}
\end{center}
\end{figure}


\end{slide*}

\begin{slide*}

\begin{figure}[h]
\begin{center}
\epsfysize = 9in \epsfbox{PicObjStr.ps}
\caption{Examples of two modes of WD-pic execution.}
\end{center}
\end{figure}


\begin{slide*}

\begin{center}

{\large Pic data structures.}

\end{center}

 Each element of the Pic text list corresponds either to a {\bf Pic} element or to a {\bf Pic} operator, or to the {\bf Pic} default sizes changing and contains the following fields:
\newline
   {\it  \  \newline
 \hspace*{1in} char *curString;  \newline                
 \hspace*{1in} int   curStringLength; \newline
} 
\newline
  Where, 
\begin{enumerate}
     \item {\it curString} is a pointer to the string, written in the {\bf Pic} language.\newline
    \item {\it curStringLength} is a number of characters in this string.

\end{enumerate}

\end{slide*}

\begin{slide*}

\begin{center}
 Examples of strings:
\end{center}

\begin{itemize} 
  \item  a string, corresponding to a {\bf Pic} element: \newline

    {\em A1: box dotted width 1}  \newline

   or {\em circle rad 1 ``CIRCLE''  }

          \item a string, corresponding to a {\bf Pic} operator: \newline

  {\em  for $i = 1$ to 10 by 2 do \{ \newline
      circle radius $0.5 * i$ \newline
      \}}
       \item a string, corresponding to the {\bf Pic} default sizes changing:\newline

{\em boxwid = 1.5} \newline
or {\em reset boxwid} \newline


\end{slide*}
  
\begin{slide*}

\begin{center}
  {\large Object array}
\end{center}

{\it\hspace*{1in}  union \{ \newline
  \hspace*{1.2in}             PicTextDef     *Ptr; \newline
  \hspace*{1.2in}            int             Num; \newline
  \hspace*{1in}       \}PicTextUnion;\newline
  \hspace*{1in}  	int	o\_type;\newline
  \hspace*{1in}  	int	o\_count;\newline
  \hspace*{1in}  	int	o\_nobj;	\newline
  \hspace*{1in}  	int	o\_mode; \newline
  \hspace*{1in}  	float	o\_x;  \newline
  \hspace*{1in}  	float	o\_y; \newline
  \hspace*{1in}  	int	o\_nt1; \newline
  \hspace*{1in}  	int	o\_nt2; \newline
  \hspace*{1in}  	int	o\_attr; \newline
  \hspace*{1in}  	int	o\_size;	\newline
  \hspace*{1in}  	int	o\_nhead;\newline
  \hspace*{1in}  	void   *o\_symtab;\newline
  \hspace*{1in}  	float	o\_ddval;	\newline
  \hspace*{1in}  	float	o\_fillval;\newline
  \hspace*{1in}  	ofloat	o\_val[1];\newline }

\begin{center}
  {\large String array}
\end{center}
 \newline
\hspace*{1in}{\it int     t\_type;} \newline
\hspace*{1in}{\it char   t\_op;}	\newline
\hspace*{1in}{\it char   t\_size;}\newline	
\hspace*{1in}{\it char  *t\_val;}\newline


			
\end{slide*}

\begin{slide*}

Using {\bf Pic} compiler data structures, we created  the WD-pic data
structures, allowing  us to store all necessary information  for
working with a picture via both graphical interface and a text editor interface. After that,
we modified the {\bf Pic} compiler data structures in order that they conform  to the 
WD-editor data structures. Also we changed  the {\bf Pic} compiler code
so that it supports the modified data structures.

\end{slide*}


\begin{slide*}



\end{slide*}




\end{document}
