File: f_point.c

package info (click to toggle)
plotutils 2.4.1-11
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 11,676 kB
  • ctags: 6,967
  • sloc: ansic: 76,305; sh: 15,172; cpp: 12,403; yacc: 2,604; makefile: 888; lex: 144
file content (66 lines) | stat: -rw-r--r-- 2,071 bytes parent folder | download | duplicates (3)
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
57
58
59
60
61
62
63
64
65
66
/* The internal point-drawing function, which point() is a wrapper around.
   It draws a point at the current location.  There is no standard
   definition of `point', so any Plotter is free to implement this as it
   sees fit. */

/* So far as a FigPlotter objects goes, a point is a single-vertex polyline
   (that is the only sort of point that xfig supports). */

#include "sys-defines.h"
#include "extern.h"

/* xfig polyline subtypes */
#define P_OPEN 1
#define P_BOX 2
#define P_CLOSED 3

void
#ifdef _HAVE_PROTOS
_f_paint_point (S___(Plotter *_plotter))
#else
_f_paint_point (S___(_plotter))
     S___(Plotter *_plotter;)
#endif
{
  double x, y;
  
  if (_plotter->drawstate->pen_type != 0)
    /* have a pen to draw with */
    {
      /* evaluate fig colors lazily, i.e. only when needed */
      _f_set_pen_color (S___(_plotter));
      _f_set_fill_color (S___(_plotter));
      
      /* update xfig's `depth' attribute */
      if (_plotter->fig_drawing_depth > 0)
	(_plotter->fig_drawing_depth)--;
      
      /* get location */
      x = _plotter->drawstate->pos.x;
      y = _plotter->drawstate->pos.x;

      sprintf(_plotter->data->page->point,
	      "#POLYLINE [OPEN]\n%d %d %d %d %d %d %d %d %d %.3f %d %d %d %d %d %d\n\t%d %d\n",
	      2,		/* polyline object */
	      P_OPEN,		/* polyline subtype */
	      FIG_L_SOLID,	/* style */
	      1,		/* thickness, in Fig display units */
	      _plotter->drawstate->fig_fgcolor, /* pen color */
	      _plotter->drawstate->fig_fgcolor, /* fill color */
	      _plotter->fig_drawing_depth, /* depth */
	      0,		/* pen style, ignored */
	      20,		/* fig fill level (20 = full intensity) */
	      0.0,		/* style val, ignored (?) */
	      FIG_JOIN_ROUND,	/* join style = round */
	      FIG_CAP_ROUND,	/* cap style = round */
	      0,		/* radius (of arc boxes, ignored) */
	      0,		/* forward arrow */
	      0,		/* backward arrow */
	      1,		/* number of points in polyline */
	      IROUND(XD(x,y)), 
	      IROUND(YD(x,y))
	      );
      
      _update_buffer (_plotter->data->page);
    }
}