C*PGPT -- draw several graph markers C%void cpgpt(int n, const float *xpts, const float *ypts, int symbol); C+ SUBROUTINE PGPT (N, XPTS, YPTS, SYMBOL) INTEGER N REAL XPTS(*), YPTS(*) INTEGER SYMBOL C C Primitive routine to draw Graph Markers (polymarker). The markers C are drawn using the current values of attributes color-index, C line-width, and character-height (character-font applies if the symbol C number is >31). If the point to be marked lies outside the window, C no marker is drawn. The "pen position" is changed to C (XPTS(N),YPTS(N)) in world coordinates (if N > 0). C C Arguments: C N (input) : number of points to mark. C XPTS (input) : world x-coordinates of the points. C YPTS (input) : world y-coordinates of the points. C SYMBOL (input) : code number of the symbol to be drawn at each C point: C -1, -2 : a single dot (diameter = current C line width). C -3..-31 : a regular polygon with ABS(SYMBOL) C edges (style set by current fill style). C 0..31 : standard marker symbols. C 32..127 : ASCII characters (in current font). C e.g. to use letter F as a marker, let C SYMBOL = ICHAR('F'). C > 127 : a Hershey symbol number. C C Note: the dimension of arrays X and Y must be greater than or equal C to N. If N is 1, X and Y may be scalars (constants or variables). If C N is less than 1, nothing is drawn. C-- C 27-Nov-1986 C 17-Dec-1990 - add polygons [PAH]. C 14-Mar-1997 - optimization: use GRDOT1 [TJP]. C----------------------------------------------------------------------- LOGICAL PGNOTO C IF (N.LT.1) RETURN IF (PGNOTO('PGPT')) RETURN C CALL PGBBUF IF (SYMBOL.GE.0 .OR. SYMBOL.LE.-3) THEN CALL GRMKER(SYMBOL,.FALSE.,N,XPTS,YPTS) ELSE CALL GRDOT1(N,XPTS,YPTS) END IF CALL PGEBUF END