125 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* Copyright (c) 1985 Ceriel J.H. Jacobs */
 | |
| 
 | |
| /* $Header$ */
 | |
| 
 | |
| # ifndef _DISPLAY_
 | |
| # define PUBLIC extern
 | |
| # else
 | |
| # define PUBLIC
 | |
| # endif
 | |
| 
 | |
| # define MINPAGESIZE 5
 | |
| 
 | |
| PUBLIC int	pagesize;	/* How many lines on a page */
 | |
| PUBLIC int	maxpagesize;	/* Maximum # of lines on a page */
 | |
| PUBLIC int	scrollsize;	/* number of lines in a scroll */
 | |
| struct scr_info {
 | |
| 	struct linelist {
 | |
| 	    int cnt;		/* # of screenlines for this line */
 | |
| 	    long line;		/* lineno of this line */
 | |
| # define firstline head->line
 | |
| # define lastline tail->line
 | |
| 	    struct linelist *next;
 | |
| 	    struct linelist *prev;
 | |
| 	} *tail, *head;		/* Of all lines of the input file that are
 | |
| 				 * on the screen, remember how many
 | |
| 				 * screenlines they occupy. Keep this
 | |
| 				 * info in a doubly linked list.
 | |
| 				 */
 | |
| 	int	nf;		/* How many screenlines of the first line
 | |
| 				 * on the screen are not on the screen?
 | |
| 				 */
 | |
| 	int	currentpos;	/* Y coordinate of first free line */
 | |
| 	struct linelist ssaavv; /* Mark */
 | |
| # define savfirst ssaavv.line
 | |
| # define savnf ssaavv.cnt
 | |
| };
 | |
| 
 | |
| PUBLIC struct scr_info scr_info;
 | |
| PUBLIC int	status;		/* EOFILE on end of file
 | |
| 				 * START on start of file
 | |
| 				 * logical "or" if both
 | |
| 				 */
 | |
| /* Flags for status field */
 | |
| 
 | |
| # define EOFILE 01
 | |
| # define START 02
 | |
| 
 | |
| VOID	redraw();
 | |
| /*
 | |
|  * void redraw(flag)
 | |
|  * int flag;			Either 0 or 1
 | |
|  *
 | |
|  * Redraws the screen. If flag = 1, the screen is redrawn as precisely
 | |
|  * as possible, otherwise one page is displayed (which possibly does not
 | |
|  * take a whole screen.
 | |
|  */
 | |
| 
 | |
| int	display();
 | |
| /*
 | |
|  * int display(firstline, nodispl, nlines, really)
 | |
|  * long firstline;		Line with which to start
 | |
|  * int nodispl;			Do not display nodispl lines of it
 | |
|  * int nlines;			Number of screen lines that must be displayed
 | |
|  * int really;			Either 0 or 1
 | |
|  *
 | |
|  * Displays nlines as a page. if "really" = 0, the actual displaying is not
 | |
|  * performed. Only the computing associated with it is done.
 | |
|  */
 | |
| 
 | |
| int	scrollf();
 | |
| /*
 | |
|  * int scrollf(nlines,really)
 | |
|  * int nlines;			Number of lines to scroll
 | |
|  * int really;			Either 0 or 1, see explanation above
 | |
|  *
 | |
|  * Scroll forwards "nlines" (screen)lines.
 | |
|  */
 | |
| 
 | |
| int	scrollb();
 | |
| /*
 | |
|  * int scrollb(nlines,really)
 | |
|  * int nlines;			Number of lines to scroll
 | |
|  * int really;			Either 0 or 1, see explanation above
 | |
|  *
 | |
|  * Scroll backwards "nlines" (screen)lines.
 | |
|  */
 | |
| 
 | |
| int	tomark();
 | |
| /*
 | |
|  * int tomark(cnt)
 | |
|  * long cnt;			(Argument ignored)
 | |
|  *
 | |
|  * Display a page starting at the mark. If there was no
 | |
|  * mark, display the first page of the file.
 | |
|  * (There is always assumed to be a mark, the initial one is on the first page
 | |
|  * of the file).
 | |
|  */
 | |
| 
 | |
| int	setmark();
 | |
| /*
 | |
|  * int setmark(cnt)
 | |
|  * long cnt;			(Argument ignored)
 | |
|  *
 | |
|  * Sets a mark on the current page.
 | |
|  * It returns nothing (but the address is taken ...)
 | |
|  */
 | |
| 
 | |
| int	exgmark();
 | |
| /*
 | |
|  * int exgmark(cnt)
 | |
|  * long cnt;			(Argumewnt ignored)
 | |
|  *
 | |
|  * Sets the mark on the current page and displays the
 | |
|  * previously marked page.
 | |
|  */
 | |
| 
 | |
| VOID	d_clean();
 | |
| /*
 | |
|  * void d_clean()
 | |
|  *
 | |
|  * Clean up and initialize. To be called before displaying a new file
 | |
|  */
 | |
| 
 | |
| # undef PUBLIC
 | 
