lib2648 man page on NeXTSTEP

Man page or keyword search:  
man Server   1419 pages
apropos Keyword Search (all sections)
Output format
NeXTSTEP logo
[printable version]


LIB2648(3X)							   LIB2648(3X)

NAME
       lib2648 - subroutines for the HP 2648 graphics terminal

SYNOPSIS
       #include <stdio.h>

       typedef char *bitmat;
       FILE *trace;

       cc file.c -l2648

DESCRIPTION
       Lib2648	is  a  general	purpose	 library  of  subroutines  useful  for
       interactive graphics on the Hewlett-Packard 2648 graphics terminal.  To
       use  it	you  must  call	 the  routine  ttyinit()  at  the beginning of
       execution, and done() at the end of execution.  All terminal input  and
       output  must  go	 through  the routines rawchar, readline, outchar, and
       outstr.

       Lib2648	does  the  necessary  ^E/^F  handshaking  if  getenv(``TERM'')
       returns	``hp2648'',  as	 it  will if set by tset(1).  Any other value,
       including for example ``2648'', will disable handshaking.

       Bit matrix routines are provided to model the graphics  memory  of  the
       2648.  These routines are generally useful, but are specifically useful
       for the update function which efficiently changes what is on the screen
       to  what	 is  supposed  to  be on the screen.  The primative bit matrix
       routines are newmat, mat, and setmat.

       The file trace, if non-null, is expected to be  a  file	descriptor  as
       returned	 by  fopen.   If  so,  lib2648	will trace the progress of the
       output by writing onto this file.  It is	 provided  to  make  debugging
       output  feasible for graphics programs without messing up the screen or
       the escape sequences being sent.	 Typical use of trace will include:
	    switch (argv[1][1]) {
	    case 'T':
		 trace = fopen("trace", "w");
		 break;
	    ...
	    if (trace)
		 fprintf(trace, "x is %d, y is %s\n", x, y);
	    ...
	    dumpmat("before update", xmat);

ROUTINES
       agoto(x, y)
	      Move the alphanumeric cursor to position (x, y),	measured  from
	      the upper left corner of the screen.

       aoff() Turn the alphanumeric display off.

       aon()  Turn the alphanumeric display on.

       areaclear(rmin, cmin, rmax, cmax)
	      Clear  the  area	on  the	 graphics  screen bordered by the four
	      arguments.  In normal mode the area is  set  to  all  black,  in
	      inverse video mode it is set to all white.

       beep() Ring the bell on the terminal.

       bitcopy(dest, src, rows, cols) bitmat dest, src;
	      Copy a rows by cols bit matrix from src to (user provided) dest.

       cleara()
	      Clear the alphanumeric display.

       clearg()
	      Clear  the graphics display.  Note that the 2648 will only clear
	      the part of the screen that is visible if zoomed in.

       curoff()
	      Turn the graphics cursor off.

       curon()
	      Turn the graphics cursor on.

       dispmsg(str, x, y, maxlen) char *str;
	      Display the message str in graphics text	at  position  (x,  y).
	      The maximum message length is given by maxlen, and is needed for
	      dispmsg to know how big an area  to  clear  before  drawing  the
	      message.	The lower left corner of the first character is at (x,
	      y).

       done() Should be called before the program exits.  Restores the tty  to
	      normal, turns off graphics screen, turns on alphanumeric screen,
	      flushes the standard output, etc.

       draw(x, y)
	      Draw a line from the pen	location  to  (x,  y).	 As  with  all
	      graphics	coordinates,  (x,  y) is measured from the bottom left
	      corner of the screen.  (x, y) coordinates	 represent  the	 first
	      quadrant of the usual Cartesian system.

       drawbox(r, c, color, rows, cols)
	      Draw  a  rectangular box on the graphics screen.	The lower left
	      corner is at location (r, c).  The box is	 rows  rows  high  and
	      cols  columns  wide.   The box is drawn if color is 1, erased if
	      color is 0.  (r,	c)  absolute  coordinates  represent  row  and
	      column  on  the screen, with the origin at the lower left.  They
	      are equivalent to (x, y) except for being reversed in order.

       dumpmat(msg, m, rows, cols) char *msg; bitmat m;
	      If trace is non-null, write a readable ASCII  representation  of
	      the matrix m on trace.  Msg is a label to identify the output.

       emptyrow(m, rows, cols, r) bitmat m;
	      Returns  1  if  row  r  of matrix m is all zero, else returns 0.
	      This routine is provided because	it  can	 be  implemented  more
	      efficiently with a knowledge of the internal representation than
	      a series of calls to mat.

       error(msg) char *msg;
	      Default error handler.  Calls message(msg) and returns.  This is
	      called  by certain routines in lib2648.  It is also suitable for
	      calling by the user program.  It is probably a good idea	for  a
	      fancy  graphics  program to supply its own error procedure which
	      uses setjmp(3) to restart the program.

       gdefault()
	      Set the terminal to the default graphics modes.

       goff() Turn the graphics display off.

       gon()  Turn the graphics display on.

       koff() Turn the keypad off.

       kon()  Turn the keypad on.  This means that most special	 keys  on  the
	      terminal	(such as the alphanumeric arrow keys) will transmit an
	      escape sequence instead of doing their function locally.

       line(x1, y1, x2, y2)
	      Draw a line in the current mode from (x1, y1) to (x2, y2).  This
	      is  equivalent  to move(x1, y1); draw(x2, y2); except that a bug
	      in the terminal involving repeated lines from the same point  is
	      compensated for.

       lowleft()
	      Move  the	 alphanumeric  cursor  to  the	lower left (home down)
	      position.

       mat(m, rows, cols, r, c) bitmat m;
	      Used to retrieve an element from a bit matrix.  Returns 1	 or  0
	      as the value of the [r, c] element of the rows by cols matrix m.
	      Bit matrices are numbered (r, c) from the upper left  corner  of
	      the  matrix,  beginning  at (0, 0).  R represents the row, and c
	      represents the column.

       message(str) char *str;
	      Display the text message str  at	the  bottom  of	 the  graphics
	      screen.

       minmax(g, rows, cols, rmin, cmin, rmax, cmax) bitmat g;
	 int *rmin, *cmin, *rmax, *cmax;
	      Find  the	 smallest  rectangle  that  contains  all  the	1 (on)
	      elements in the bit matrix g.  The coordinates are  returned  in
	      the variables pointed to by rmin, cmin, rmax, cmax.

       move(x, y)
	      Move  the	 pen  to location (x, y).  Such motion is internal and
	      will not cause output until a subsequent sync().

       movecurs(x, y)
	      Move the graphics cursor to location (x, y).

       bitmat newmat(rows, cols)
	      Create (with malloc(3)) a new bit matrix of size rows  by	 cols.
	      The  value  created  (e.g.  a  pointer to the first location) is
	      returned.	 A bit matrix can be freed directly with free.

       outchar(c) char c;
	      Print the character c on the standard output.  All output to the
	      terminal should go through this routine or outstr.

       outstr(str) char *str;
	      Print the string str on the standard output by repeated calls to
	      outchar.

       printg()
	      Print the graphics display on the printer.  The printer must  be
	      configured as device 6 (the default) on the HPIB.

       char rawchar()
	      Read  one	 character  from  the  terminal	 and  return it.  This
	      routine or readline should be used to get all input, rather than
	      getchar(3).

       rboff()
	      Turn the rubber band line off.

       rbon() Turn the rubber band line on.

       char *rdchar(c) char c;
	      Return  a readable representation of the character c.  If c is a
	      printing character it returns itself, if a control character  it
	      is  shown	 in  the  ^X  notation,	 if  negative an apostrophe is
	      prepended.  Space returns ^`, rubout returns ^?.

	      NOTE: A pointer to a static place is returned.  For this reason,
	      it   will	  not	work   to   pass  rdchar  twice	 to  the  same
	      fprintf/sprintf call.  You must instead save one of  the	values
	      in your own buffer with strcpy.

       readline(prompt, msg, maxlen) char *prompt, *msg;
	      Display  prompt  on  the bottom line of the graphics display and
	      read one line of text from the user, terminated  by  a  newline.
	      The  line	 is  placed  in	 the buffer msg, which has size maxlen
	      characters.  Backspace processing is supported.

       setclear()
	      Set the display to draw lines in erase mode.  (This is  reversed
	      by inverse video mode.)

       setmat(m, rows, cols, r, c, val) bitmat m;
	      The  basic  operation  to	 store	a value in an element of a bit
	      matrix.  The [r, c] element of m is set to val, which should  be
	      either 0 or 1.

       setset()
	      Set  the display to draw lines in normal (solid) mode.  (This is
	      reversed by inverse video mode.)

       setxor()
	      Set the display to draw lines in exclusive or mode.

       sync() Force all accumulated output to  be  displayed  on  the  screen.
	      This  should  be	followed by fflush(stdout).  The cursor is not
	      affected by this function.   Note	 that  it  is  normally	 never
	      necessary	 to  call sync, since rawchar and readline call sync()
	      and fflush(stdout) automatically.

       togvid()
	      Toggle the state of video.  If in normal mode, go	 into  inverse
	      video  mode,  and vice versa.  The screen is reversed as well as
	      the internal state of the library.

       ttyinit()
	      Set up the terminal for  processing.   This  routine  should  be
	      called at the beginning of execution.  It places the terminal in
	      CBREAK mode, turns off  echo,  sets  the	proper	modes  in  the
	      terminal, and initializes the library.

       update(mold, mnew, rows, cols, baser, basec) bitmat mold, mnew;
	      Make  whatever changes are needed to make a window on the screen
	      look like mnew.  Mold is what the window on the screen currently
	      looks  like.   The  window  has size rows by cols, and the lower
	      left corner on the screen	 of  the  window  is  [baser,  basec].
	      Note:  update was not intended to be used for the entire screen.
	      It would work but be very slow and take 64K bytes of memory just
	      for  mold and mnew.  It was intended for 100 by 100 windows with
	      objects in the center of	them,  and  is	quite  fast  for  such
	      windows.

       vidinv()
	      Set inverse video mode.

       vidnorm()
	      Set normal video mode.

       zermat(m, rows, cols) bitmat m;
	      Set the bit matrix m to all zeros.

       zoomn(size)
	      Set  the	hardware zoom to value size, which can range from 1 to
	      15.

       zoomoff()
	      Turn zoom off.  This forces the screen to zoom level  1  without
	      affecting the current internal zoom number.

       zoomon()
	      Turn  zoom  on.	This  restores	the  screen  to the previously
	      specified zoom size.

DIAGNOSTICS
       The routine error is called when an error is detected.  The only	 error
       currently detected is overflow of the buffer provided to readline.

       Subscripts out of bounds to setmat return without setting anything.

FILES
       /usr/lib/lib2648.a

SEE ALSO
       fed(1)

AUTHOR
       Mark Horton

BUGS
       This  library  is not supported.	 It makes no attempt to use all of the
       features of the terminal, only those needed by fed.  Contributions from
       users will be accepted for addition to the library.

       The  HP	2648 terminal is somewhat unreliable at speeds over 2400 baud,
       even with the ^E/^F handshaking.	 In an effort to improve  reliability,
       handshaking is done every 32 characters.	 (The manual claims it is only
       necessary every 80  characters.)	  Nonetheless,	I/O  errors  sometimes
       still occur.

       There  is no way to control the amount of debugging output generated on
       trace without modifying the source to the library.

4.2 Berkeley Distribution	 May 27, 1986			   LIB2648(3X)
[top]

List of man pages available for NeXTSTEP

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net