|
|
1.1 ! root 1: /*-------------------------- ! 2: VF13.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_Spokes (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: GpiSetClipPath (hps, ID_PATH, SCP_AND | SCP_ALTERNATE) ; ! 33: ! 34: dMaxRadius = sqrt (pow (cxClient / 2.0, 2.0) + ! 35: pow (cyClient / 2.0, 2.0)) ; ! 36: // Draw spokes ! 37: for (i = 0 ; i < 360 ; i++) ! 38: { ! 39: GpiSetColor (hps, lColors[i % iNumColors]) ; ! 40: ! 41: ptl.x = cxClient / 2 ; ! 42: ptl.y = cyClient / 2 ; ! 43: GpiMove (hps, &ptl) ; ! 44: ! 45: ptl.x += (LONG) (dMaxRadius * cos (i * 6.28 / 360)) ; ! 46: ptl.y += (LONG) (dMaxRadius * sin (i * 6.28 / 360)) ; ! 47: GpiLine (hps, &ptl) ; ! 48: } ! 49: GpiSetCharSet (hps, LCID_DEFAULT) ; // Clean up ! 50: GpiDeleteSetId (hps, LCID_MYFONT) ; ! 51: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.