1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
/* This file contains a low-level routine for repositioning the graphics
cursor on a Tektronix display, by emitting an escape sequence.
The reposition command automatically knocks the Tektronix into a
non-alpha mode. We choose either PLOT or POINT mode, depending on
whether the polyline we're drawing is connected, or is simply a set of
disconnected points. That information is stored in our drawing state.
If we are already in PLOT/POINT mode, emitting the escape sequence will
prevent a line being drawn at the time of the move (the "dark vector"
concept). That is just what we want. */
#include "sys-defines.h"
#include "extern.h"
void
#ifdef _HAVE_PROTOS
_tek_move (R___(Plotter *_plotter) int xx, int yy)
#else
_tek_move (R___(_plotter) xx, yy)
S___(Plotter *_plotter;)
int xx, yy;
#endif
{
int correct_tek_mode =
_plotter->drawstate->points_are_connected ? MODE_PLOT : MODE_POINT;
switch (correct_tek_mode)
{
case MODE_POINT:
/* ASCII FS, i.e. ^\ (enter POINT mode)*/
_write_byte (_plotter->data, '\034');
break;
case MODE_PLOT:
/* ASCII GS, i.e. ^] (enter PLOT mode) */
_write_byte (_plotter->data, '\035');
break;
default: /* shouldn't happen */
return;
}
/* output location to the Tektronix */
_tek_vector (R___(_plotter) xx, yy);
/* Tek position is now correct */
_plotter->tek_pos.x = xx;
_plotter->tek_pos.y = yy;
_plotter->tek_position_is_unknown = false;
/* Tek is now in correct mode for plotting vectors */
_plotter->tek_mode_is_unknown = false;
_plotter->tek_mode = correct_tek_mode;
/* re-emphasize: on return we'll be in either PLOT or POINT mode. */
return;
}
|