File: r_attribs.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 (39 lines) | stat: -rw-r--r-- 1,329 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
/* This internal method is invoked before drawing any polyline.  It sets
   the relevant attributes of a ReGIS display to what they should be. */

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

/* ReGIS 8-bit `patterns', i.e., line types, indexed into by our internal
   line style number (L_SOLID/L_DOTTED/
   L_DOTDASHED/L_SHORTDASHED/L_LONGDASHED/L_DOTDOTDASHED/L_DOTDOTDOTDASHED).

   ReGIS supports standard patterns P0..P9, and user-specified patterns
   made up of 2 to 8 bits.  If fewer than 8 bits are supplied, ReGIS
   repeats as much of the pattern as possible in what remains of the 8-bit
   segment.  Standard pattern P1 is solid. */

static const char *_regis_line_types[] =
{ "P1", "P1000", 
  "P11100100", "P11110000", "P11111100", "P11101010", "P10" };

void
#ifdef _HAVE_PROTOS
_r_set_attributes (S___(Plotter *_plotter))
#else
_r_set_attributes (S___(_plotter))
     S___(Plotter *_plotter;)
#endif
{
  if (_plotter->regis_line_type_is_unknown
      || _plotter->regis_line_type != _plotter->drawstate->line_type)
    {
      char tmpbuf[32];

      sprintf (tmpbuf, "W(%s)\n",
	       _regis_line_types[_plotter->drawstate->line_type]);
      _write_string (_plotter->data, tmpbuf);
      _plotter->regis_line_type_is_unknown = false;
      _plotter->regis_line_type = _plotter->drawstate->line_type;
    }
}