home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / S12219.ZIP / VF15.C < prev   
C/C++ Source or Header  |  1988-11-30  |  2KB  |  54 lines

  1. /*--------------------------
  2.    VF15.C -- Clipped Spokes
  3.   --------------------------*/
  4.  
  5. #define INCL_GPI
  6. #include <os2.h>
  7. #include <math.h>
  8. #include "vectfont.h"
  9.  
  10. VOID Display_ModSpokes (HPS hps, LONG cxClient, LONG cyClient)
  11.      {
  12.      static CHAR szText[] = "WOW" ;
  13.      static LONG cbText = sizeof szText - 1 ;
  14.      static LONG lColors[] = { CLR_BLUE, CLR_GREEN, CLR_CYAN,
  15.                                CLR_RED,  CLR_PINK,  CLR_YELLOW,
  16.                                CLR_WHITE } ;
  17.      double      dMaxRadius ;
  18.      INT         i, iNumColors = sizeof lColors / sizeof lColors[0] ;
  19.      POINTL      ptl ;
  20.  
  21.      CreateVectorFont (hps, LCID_MYFONT, "Tms Rmn") ;
  22.      GpiSetCharSet (hps, LCID_MYFONT) ;
  23.      ScaleFontToBox (hps, cbText, szText, cxClient, cyClient) ;
  24.      QueryStartPointInTextBox (hps, cbText, szText, &ptl) ;
  25.  
  26.      ColorClient (hps, cxClient, cyClient, CLR_BLACK) ;
  27.  
  28.      GpiBeginPath (hps, ID_PATH) ;
  29.      GpiCharStringAt (hps, &ptl, cbText, szText) ;     // Text string
  30.      GpiEndPath (hps) ;
  31.  
  32.      GpiSetLineWidthGeom (hps, 6L) ;                   // 1/12 inch
  33.      GpiModifyPath (hps, ID_PATH, MPATH_STROKE) ;
  34.      GpiSetClipPath (hps, ID_PATH, SCP_AND | SCP_ALTERNATE) ;
  35.  
  36.      dMaxRadius = sqrt (pow (cxClient / 2.0, 2.0) +
  37.                         pow (cyClient / 2.0, 2.0)) ;
  38.                                                        // Draw spokes
  39.      for (i = 0 ; i < 360 ; i++)
  40.           {
  41.           GpiSetColor (hps, lColors[i % iNumColors]) ;
  42.  
  43.           ptl.x = cxClient / 2 ;
  44.           ptl.y = cyClient / 2 ;
  45.           GpiMove (hps, &ptl) ;
  46.  
  47.           ptl.x += (LONG) (dMaxRadius * cos (i * 6.28 / 360)) ;
  48.           ptl.y += (LONG) (dMaxRadius * sin (i * 6.28 / 360)) ;
  49.           GpiLine (hps, &ptl) ;
  50.           }
  51.      GpiSetCharSet (hps, LCID_DEFAULT) ;               // Clean up
  52.      GpiDeleteSetId (hps, LCID_MYFONT) ;
  53.      }
  54.