1C*PGPT -- draw several graph markers 2C%void cpgpt(int n, const float *xpts, const float *ypts, int symbol); 3C+ 4 SUBROUTINE PGPT (N, XPTS, YPTS, SYMBOL) 5 INTEGER N 6 REAL XPTS(*), YPTS(*) 7 INTEGER SYMBOL 8C 9C Primitive routine to draw Graph Markers (polymarker). The markers 10C are drawn using the current values of attributes color-index, 11C line-width, and character-height (character-font applies if the symbol 12C number is >31). If the point to be marked lies outside the window, 13C no marker is drawn. The "pen position" is changed to 14C (XPTS(N),YPTS(N)) in world coordinates (if N > 0). 15C 16C Arguments: 17C N (input) : number of points to mark. 18C XPTS (input) : world x-coordinates of the points. 19C YPTS (input) : world y-coordinates of the points. 20C SYMBOL (input) : code number of the symbol to be drawn at each 21C point: 22C -1, -2 : a single dot (diameter = current 23C line width). 24C -3..-31 : a regular polygon with ABS(SYMBOL) 25C edges (style set by current fill style). 26C 0..31 : standard marker symbols. 27C 32..127 : ASCII characters (in current font). 28C e.g. to use letter F as a marker, let 29C SYMBOL = ICHAR('F'). 30C > 127 : a Hershey symbol number. 31C 32C Note: the dimension of arrays X and Y must be greater than or equal 33C to N. If N is 1, X and Y may be scalars (constants or variables). If 34C N is less than 1, nothing is drawn. 35C-- 36C 27-Nov-1986 37C 17-Dec-1990 - add polygons [PAH]. 38C 14-Mar-1997 - optimization: use GRDOT1 [TJP]. 39C----------------------------------------------------------------------- 40 LOGICAL PGNOTO 41C 42 IF (N.LT.1) RETURN 43 IF (PGNOTO('PGPT')) RETURN 44C 45 CALL PGBBUF 46 IF (SYMBOL.GE.0 .OR. SYMBOL.LE.-3) THEN 47 CALL GRMKER(SYMBOL,.FALSE.,N,XPTS,YPTS) 48 ELSE 49 CALL GRDOT1(N,XPTS,YPTS) 50 END IF 51 CALL PGEBUF 52 END 53