home *** CD-ROM | disk | FTP | other *** search
- /* Bench.c (c) Axel Salomon, 1990, Public Domain */
-
- #define INCL_DOS
- #define INCL_WIN
- #define INCL_GPI
-
- #include <os2.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include "bench.h"
-
- #define FLOAT float
- #define MIN(a,b) ( a<b ? a : b )
-
- MRESULT EXPENTRY BenchProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2);
-
- VOID cdecl main (VOID);
- VOID do_paint (HWND hwnd);
- VOID do_size (MPARAM mp2);
- VOID do_command (HWND hwnd, MPARAM mp1);
- VOID do_clear_screen( HWND hwnd );
- INT do_init (VOID);
-
- VOID Display_Time( HWND hwnd);
- LONG Calc_MSec( PDATETIME dt );
- LONG Calc_Fraction( LONG value );
-
- VOID do_gpi_fonts_box (HWND hwnd);
- VOID do_gpi_fonts_chars (HWND hwnd);
- VOID do_gpi_fonts_direct (HWND hwnd);
- VOID do_gpi_fonts_angle (HWND hwnd);
- VOID do_gpi_fonts_shear (HWND hwnd);
- VOID do_gpi_fonts_all (HWND hwnd);
-
- VOID do_gpi_lines_arcs (HWND hwnd);
- VOID do_gpi_lines_boxes (HWND hwnd);
- VOID do_gpi_lines_fillets (HWND hwnd);
- VOID do_gpi_lines_lines (HWND hwnd);
- VOID do_gpi_lines_splines (HWND hwnd);
- VOID do_gpi_lines_styles (HWND hwnd);
- VOID do_gpi_lines_all (HWND hwnd);
-
- VOID do_gpi_marker_all (HWND hwnd);
- VOID do_gpi_marker_box (HWND hwnd);
- VOID do_gpi_marker_poly (HWND hwnd);
- VOID do_gpi_marker_single (HWND hwnd);
- VOID do_gpi_marker_userdef(HWND hwnd);
-
- VOID do_gpi_paths_ends (HWND hwnd);
- VOID do_gpi_paths_fill (HWND hwnd);
- VOID do_gpi_paths_join (HWND hwnd);
- VOID do_gpi_paths_lines (HWND hwnd);
- VOID do_gpi_paths_pattern (HWND hwnd);
- VOID do_gpi_paths_width (HWND hwnd);
- VOID do_gpi_paths_all (HWND hwnd);
-
- VOID do_gpi_all (HWND hwnd);
- VOID do_gpi_extend (HWND hwnd);
-
- HAB hab;
- HMQ hmq;
- HDC hdc;
- HWND hwndMainFrame,hwndMainClient;
-
- POINTL center;
- INT cx,cy;
-
- DATETIME start_dt,ende_dt;
-
- LONG colors[16] = { CLR_BLACK,
- CLR_DARKBLUE,
- CLR_DARKGREEN,
- CLR_DARKCYAN,
- CLR_DARKPINK,
- CLR_DARKRED,
- CLR_BROWN,
- CLR_PALEGRAY,
- CLR_DARKGRAY,
- CLR_BLUE,
- CLR_GREEN,
- CLR_CYAN,
- CLR_PINK,
- CLR_RED,
- CLR_YELLOW,
- CLR_WHITE };
-
- LONG linetype[8] = { LINETYPE_DEFAULT,
- LINETYPE_DOT,
- LINETYPE_SHORTDASH,
- LINETYPE_DASHDOT,
- LINETYPE_DOUBLEDOT,
- LINETYPE_LONGDASH,
- LINETYPE_DASHDOUBLEDOT,
- LINETYPE_SOLID };
-
- CHAR linetext[8][15] = { "DEFAULT",
- "DOT",
- "SHORTDASH",
- "DASHDOT",
- "DOUBLEDOT",
- "LONGDASH",
- "DASHDOUBLEDOT",
- "SOLID" };
-
- LONG endstyles[4] = { LINEEND_DEFAULT,
- LINEEND_FLAT,
- LINEEND_ROUND,
- LINEEND_SQUARE };
-
- LONG markertype[11] = { MARKSYM_DEFAULT,
- MARKSYM_CROSS,
- MARKSYM_PLUS,
- MARKSYM_DIAMOND,
- MARKSYM_SQUARE,
- MARKSYM_SIXPOINTSTAR,
- MARKSYM_EIGHTPOINTSTAR,
- MARKSYM_SOLIDDIAMOND,
- MARKSYM_SOLIDSQUARE,
- MARKSYM_DOT,
- MARKSYM_SMALLCIRCLE };
-
- LONG pattern[19] = { PATSYM_BLANK,
- PATSYM_DEFAULT,
- PATSYM_DENSE1,
- PATSYM_DENSE2,
- PATSYM_DENSE3,
- PATSYM_DENSE4,
- PATSYM_DENSE5,
- PATSYM_DENSE6,
- PATSYM_DENSE7,
- PATSYM_DENSE8,
- PATSYM_DIAG1,
- PATSYM_DIAG2,
- PATSYM_DIAG3,
- PATSYM_DIAG4,
- PATSYM_HALFTONE,
- PATSYM_HORIZ,
- PATSYM_NOSHADE,
- PATSYM_SOLID,
- PATSYM_VERT };
-
- SHORT select[15] = { 0,
- FATTR_SEL_ITALIC,
- FATTR_SEL_ITALIC ^ FATTR_SEL_UNDERSCORE,
- FATTR_SEL_ITALIC ^ FATTR_SEL_STRIKEOUT,
- FATTR_SEL_ITALIC ^ FATTR_SEL_BOLD,
- FATTR_SEL_ITALIC ^ FATTR_SEL_UNDERSCORE ^ FATTR_SEL_STRIKEOUT,
- FATTR_SEL_ITALIC ^ FATTR_SEL_UNDERSCORE ^ FATTR_SEL_BOLD,
- FATTR_SEL_ITALIC ^ FATTR_SEL_UNDERSCORE ^ FATTR_SEL_STRIKEOUT ^ FATTR_SEL_BOLD,
- FATTR_SEL_UNDERSCORE,
- FATTR_SEL_UNDERSCORE ^ FATTR_SEL_STRIKEOUT,
- FATTR_SEL_UNDERSCORE ^ FATTR_SEL_BOLD,
- FATTR_SEL_UNDERSCORE ^ FATTR_SEL_STRIKEOUT ^ FATTR_SEL_BOLD,
- FATTR_SEL_STRIKEOUT,
- FATTR_SEL_STRIKEOUT ^ FATTR_SEL_BOLD,
- FATTR_SEL_BOLD };
-
- LONG direct[4] = { CHDIRN_LEFTRIGHT,
- CHDIRN_RIGHTLEFT,
- CHDIRN_TOPBOTTOM,
- CHDIRN_BOTTOMTOP };
-
-
- /*-----------------------------------------------------------------*/
- /* M A I N */
- /*-----------------------------------------------------------------*/
- void cdecl main()
- {
- QMSG qmsg;
-
- srand( (unsigned) time(NULL) );
-
- if ( do_init() ){
- while(WinGetMsg(hab, &qmsg, NULL, 0, 0))
- WinDispatchMsg(hab, &qmsg);
-
- WinDestroyWindow( hwndMainFrame );
- WinDestroyMsgQueue( hmq );
- WinTerminate( hab );
- }
-
- }
-
- /*-----------------------------------------------------------------*/
- /* Initialisierungs-Prozedur */
- /*-----------------------------------------------------------------*/
- INT do_init()
- {
- BOOL ok;
- ULONG flFlags = FCF_STANDARD;
-
- hab = WinInitialize( NULL );
- hmq = WinCreateMsgQueue( hab,0 );
-
- ok = GpiLoadFonts( hab, "C:\\OS2\\DLL\\TIMES.FON" );
-
- if (!(WinRegisterClass(hab,"BenchProc", BenchProc, CS_SIZEREDRAW, 0))) {
- WinDestroyMsgQueue( hmq );
- WinTerminate( hab );
- return FALSE;
- }
-
- if (!(hwndMainFrame = WinCreateStdWindow(HWND_DESKTOP,WS_VISIBLE,&flFlags,
- "BenchProc",NULL,WS_SYNCPAINT,NULL,MID_MAIN,&hwndMainClient))) {
- WinDestroyMsgQueue( hmq );
- WinTerminate( hab );
- return FALSE;
- }
-
- WinSetWindowText(hwndMainFrame,"Benchmark Program");
- return TRUE;
- }
-
- /*-----------------------------------------------------------------*/
- /* M A I N C L I E N T P R O C */
- /*-----------------------------------------------------------------*/
- MRESULT EXPENTRY BenchProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
- {
- switch (msg)
- {
- case WM_CREATE:
- break;
- case WM_COMMAND:
- do_command(hwnd,mp1);
- return 0;
- case WM_PAINT:
- do_paint(hwnd);
- return 0;
- case WM_SIZE:
- do_size(mp2);
- return 0;
- case WM_CLOSE:
- WinPostMsg( hwnd, WM_QUIT, 0L, 0L);
- return 0;
- default:
- break;
- }
- return (WinDefWindowProc(hwnd, msg, mp1, mp2 ));
- }
-
- /*-----------------------------------------------------------------*/
- /* Command-Prozeduren */
- /*-----------------------------------------------------------------*/
- VOID do_command(HWND hwnd, MPARAM mp1)
- {
- HPOINTER hptr;
-
- hptr = WinQueryPointer( HWND_DESKTOP );
- WinSetPointer( HWND_DESKTOP, (HPOINTER) NULL );
-
- DosGetDateTime(&start_dt);
-
- switch (SHORT1FROMMP(mp1))
- {
- case MID_GPI_FONTS_BOX:
- do_gpi_fonts_box(hwnd);
- break;
- case MID_GPI_FONTS_CHARS:
- do_gpi_fonts_chars(hwnd);
- break;
- case MID_GPI_FONTS_DIRECT:
- do_gpi_fonts_direct(hwnd);
- break;
- case MID_GPI_FONTS_ANGLE:
- do_gpi_fonts_angle(hwnd);
- break;
- case MID_GPI_FONTS_SHEAR:
- do_gpi_fonts_shear(hwnd);
- break;
- case MID_GPI_FONTS_ALL:
- do_gpi_fonts_all(hwnd);
- break;
- case MID_GPI_LINES_ARCS:
- do_gpi_lines_arcs(hwnd);
- break;
- case MID_GPI_LINES_BOXES:
- do_gpi_lines_boxes(hwnd);
- break;
- case MID_GPI_LINES_FILLETS:
- do_gpi_lines_fillets(hwnd);
- break;
- case MID_GPI_LINES_LINES:
- do_gpi_lines_lines(hwnd);
- break;
- case MID_GPI_LINES_SPLINES:
- do_gpi_lines_splines(hwnd);
- break;
- case MID_GPI_LINES_STYLES:
- do_gpi_lines_styles(hwnd);
- break;
- case MID_GPI_LINES_ALL:
- do_gpi_lines_all(hwnd);
- break;
- case MID_GPI_MARKER_BOX :
- do_gpi_marker_box(hwnd);
- break;
- case MID_GPI_MARKER_POLY :
- do_gpi_marker_poly(hwnd);
- break;
- case MID_GPI_MARKER_SINGLE :
- do_gpi_marker_single(hwnd);
- break;
- case MID_GPI_MARKER_USERDEF :
- do_gpi_marker_userdef(hwnd);
- break;
- case MID_GPI_MARKER_ALL :
- do_gpi_marker_all(hwnd);
- break;
- case MID_GPI_PATHS_ENDS:
- do_gpi_paths_ends(hwnd);
- break;
- case MID_GPI_PATHS_FILL:
- do_gpi_paths_fill(hwnd);
- break;
- case MID_GPI_PATHS_JOIN:
- do_gpi_paths_join(hwnd);
- break;
- case MID_GPI_PATHS_LINES:
- do_gpi_paths_lines(hwnd);
- break;
- case MID_GPI_PATHS_PATTERN:
- do_gpi_paths_pattern(hwnd);
- break;
- case MID_GPI_PATHS_WIDTH:
- do_gpi_paths_width(hwnd);
- break;
- case MID_GPI_PATHS_ALL:
- do_gpi_paths_all(hwnd);
- break;
- case MID_GPI_ALL:
- do_gpi_all(hwnd);
- break;
- case MID_GPI_EXTEND:
- do_gpi_extend(hwnd);
- break;
- case CMD_CLEAR:
- do_clear_screen(hwnd);
- break;
- case CMD_EXIT:
- WinPostMsg(hwnd,WM_CLOSE,(MPARAM) NULL,(MPARAM) NULL);
- return;
- default:
- return;
- }
-
- DosGetDateTime(&ende_dt);
- Display_Time( hwnd );
-
- WinSetPointer( HWND_DESKTOP, hptr );
-
- }
-
- VOID Display_Time(HWND hwnd)
- {
- CHAR buffer[50];
-
- sprintf( buffer, "Benchmark result : %lu ms", Calc_MSec(&ende_dt)-Calc_MSec(&start_dt));
-
- WinSetWindowText( hwndMainFrame, buffer );
-
- }
-
- #define MS_HUNDREDTHS 10L
- #define MS_SECONDS 1000L
- #define MS_MINUTES 60000L
- #define MS_HOUR 3600000L
-
- LONG Calc_MSec( PDATETIME dt )
- {
-
- return dt->hours * MS_HOUR +
- dt->minutes * MS_MINUTES +
- dt->seconds * MS_SECONDS +
- dt->hundredths * MS_HUNDREDTHS;
-
- }
-
- LONG Calc_Fraction( LONG value )
- {
- return (LONG)((FLOAT)rand()/(FLOAT)RAND_MAX*(FLOAT)value);
- }
-
- /*-----------------------------------------------------------------*/
- /* Zeichen-Prozeduren */
- /*-----------------------------------------------------------------*/
- VOID do_paint(HWND hwnd)
- {
- RECTL rc;
- HPS hps;
-
- hps = WinBeginPaint(hwnd, (HPS)NULL, &rc);
- WinFillRect( hps, &rc, SYSCLR_WINDOW);
- WinEndPaint(hps);
- }
-
- VOID do_clear_screen( HWND hwnd )
- {
- HPS hps;
- RECTL rc;
-
- rc.xLeft = rc.yBottom = 0L;
- rc.xRight = cx;
- rc.yTop = cy;
-
- hps = WinGetPS( hwnd );
- WinFillRect( hps, &rc, colors[ rand() % 16 ] );
- WinReleasePS( hwnd );
-
- }
-
-
- VOID do_size( MPARAM mp2 )
- {
- cx = SHORT1FROMMP(mp2);
- cy = SHORT2FROMMP(mp2);
- center.x = (LONG)cx/2;
- center.y = (LONG)cy/2;
- }
-
- /* Fonts */
-
- VOID do_gpi_fonts_box(HWND hwnd)
- {
- INT i,j;
- POINTL pkt;
- FATTRS fat;
- SIZEF siz;
- BOOL ok;
- HPS hps;
-
- fat.usRecordLength = sizeof(FATTRS);
- fat.fsSelection = 0;
- fat.lMatch = 0;
- fat.idRegistry = 0;
- fat.usCodePage = 850;
- fat.lMaxBaselineExt= 0L;
- fat.lAveCharWidth = 0L;
- fat.fsType = 0;
- fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
- strcpy(fat.szFacename,"Tms Rmn");
-
- hps = WinGetPS( hwnd );
-
- ok = GpiCreateLogFont( hps, (PSTR8) NULL, 1, &fat );
- ok = GpiSetCharSet( hps, 1 );
-
- for (i=0; i<100; i++ ) {
- pkt.x = Calc_Fraction( cx/3 );
- pkt.y = Calc_Fraction( cy );
- siz.cx = MAKEFIXED( rand() % 200 ,0 );
- siz.cy = MAKEFIXED( rand() % 200 ,0 );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiSetCharBox( hps, &siz );
- ok = GpiCharString( hps, 10, "Benchmark");
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_fonts_direct(HWND hwnd)
- {
- INT i,j;
- POINTL pkt;
- FATTRS fat;
- SIZEF size;
- BOOL ok;
- HPS hps;
-
- fat.usRecordLength = sizeof(FATTRS);
- fat.fsSelection = 0;
- fat.lMatch = 0;
- fat.idRegistry = 0;
- fat.usCodePage = 850;
- fat.lMaxBaselineExt= 0L;
- fat.lAveCharWidth = 0L;
- fat.fsType = 0;
- fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
- strcpy(fat.szFacename,"Tms Rmn");
-
- size.cx = MAKEFIXED( 50,0 );
- size.cy = MAKEFIXED( 50,0 );
-
- hps = WinGetPS( hwnd );
-
- ok = GpiCreateLogFont( hps, (PSTR8) NULL, 1, &fat );
- ok = GpiSetCharSet( hps, 1 );
- ok = GpiSetCharBox( hps, &size );
-
- for (i=0; i<100; i++ ) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetCharDirection( hps, direct[rand() % 4] );
- ok = GpiMove( hps, &pkt );
- ok = GpiCharString( hps, 10, "Benchmark");
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_fonts_chars(HWND hwnd)
- {
- INT i,j;
- POINTL pkt;
- FATTRS fat;
- SIZEF size;
- BOOL ok;
- HPS hps;
-
- fat.usRecordLength = sizeof(FATTRS);
- fat.fsSelection = 0;
- fat.lMatch = 0;
- fat.idRegistry = 0;
- fat.usCodePage = 850;
- fat.lMaxBaselineExt= 0L;
- fat.lAveCharWidth = 0L;
- fat.fsType = 0;
- fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
- strcpy(fat.szFacename,"Tms Rmn");
-
- size.cx = MAKEFIXED( 50,0 );
- size.cy = MAKEFIXED( 50,0 );
-
- hps = WinGetPS( hwnd );
-
- for (i=0; i<100; i++ ) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- fat.fsSelection = select[ rand() % 15 ];
- ok = GpiCreateLogFont( hps, (PSTR8) NULL, 1, &fat );
- ok = GpiSetCharSet( hps, 1 );
- ok = GpiSetCharBox( hps, &size );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiCharString( hps, 10, "Benchmark");
- ok = GpiSetCharSet( hps, 0 );
- ok = GpiDeleteSetId( hps, 1);
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_fonts_angle(HWND hwnd)
- {
- INT i;
- POINTL pkt;
- FATTRS fat;
- GRADIENTL grad;
- SIZEF size;
- BOOL ok;
- HPS hps;
-
- fat.usRecordLength = sizeof(FATTRS);
- fat.fsSelection = 0;
- fat.lMatch = 0;
- fat.idRegistry = 0;
- fat.usCodePage = 850;
- fat.lMaxBaselineExt= 0L;
- fat.lAveCharWidth = 0L;
- fat.fsType = 0;
- fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
- strcpy(fat.szFacename,"Tms Rmn");
-
- size.cx = MAKEFIXED( 50,0 );
- size.cy = MAKEFIXED( 50,0 );
-
- hps = WinGetPS( hwnd );
-
- ok = GpiCreateLogFont( hps, (PSTR8) NULL, 1, &fat );
- ok = GpiSetCharSet( hps, 1 );
- ok = GpiSetCharBox( hps, &size );
-
- for (i=0; i<100; i++ ) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- grad.x = (LONG)(25-rand() % 50 );
- grad.y = (LONG)(25-rand() % 50 );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiSetCharAngle( hps, &grad );
- ok = GpiCharString( hps, 10, "Benchmark" );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_fonts_shear(HWND hwnd)
- {
- INT i;
- POINTL pkt,shear;
- FATTRS fat;
- SIZEF size;
- BOOL ok;
- HPS hps;
-
- fat.usRecordLength = sizeof(FATTRS);
- fat.fsSelection = 0;
- fat.lMatch = 0;
- fat.idRegistry = 0;
- fat.usCodePage = 850;
- fat.lMaxBaselineExt= 0L;
- fat.lAveCharWidth = 0L;
- fat.fsType = 0;
- fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
- strcpy(fat.szFacename,"Tms Rmn");
-
- size.cx = MAKEFIXED( 50,0 );
- size.cy = MAKEFIXED( 50,0 );
-
- hps = WinGetPS( hwnd );
-
- ok = GpiCreateLogFont( hps, (PSTR8) NULL, 1, &fat );
- ok = GpiSetCharSet( hps, 1 );
- ok = GpiSetCharBox( hps, &size );
-
- for (i=0; i<100; i++ ) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- shear.x = (LONG)(25-rand() % 50 );
- shear.y = (LONG)(25-rand() % 50 );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiSetCharShear( hps, &shear );
- ok = GpiCharString( hps, 10, "Benchmark" );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_fonts_all(HWND hwnd)
- {
- do_gpi_fonts_box (hwnd);
- do_gpi_fonts_chars (hwnd);
- do_gpi_fonts_direct (hwnd);
- do_gpi_fonts_angle (hwnd);
- do_gpi_fonts_shear (hwnd);
- }
-
- /* Lines */
-
- VOID do_gpi_lines_arcs(HWND hwnd)
- {
-
- INT i;
- ARCPARAMS arcp = { 1, 1, 0, 0 };
- POINTL pkt;
- BOOL ok;
- HPS hps;
-
- hps = WinGetPS( hwnd );
-
- ok = GpiSetArcParams( hps, &arcp );
-
- for (i=0; i<500; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiFullArc( hps, DRO_OUTLINEFILL, MAKEFIXED( rand() % 64, 0 ) );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_lines_boxes(HWND hwnd)
- {
-
- INT i;
- BOOL ok;
- HPS hps;
- POINTL pkt;
-
- hps = WinGetPS( hwnd );
-
- ok = GpiMove( hps, ¢er );
- ok = GpiSetColor( hps, CLR_DARKGRAY );
-
- for (i=0; i<500; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiBox( hps, DRO_OUTLINEFILL, &pkt, NULL, NULL );
- ok = GpiMove( hps, &pkt );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_lines_fillets(HWND hwnd)
- {
- HPS hps;
- POINTL Multipkt[2];
- BOOL ok;
- INT i,j;
-
- hps = WinGetPS( hwnd );
-
- ok = GpiMove(hps, ¢er);
- for (j=0; j<500; j++ ) {
- for (i=0; i<2; i++ ) {
- ok = GpiSetColor( hps, colors[rand() % 16] );
- Multipkt[i].x = Calc_Fraction( cx );
- Multipkt[i].y = Calc_Fraction( cy );
- ok = GpiPolyFillet(hps, 2, Multipkt);
- }
- }
-
- WinReleasePS( hwnd );
- }
-
- VOID do_gpi_lines_lines(HWND hwnd)
- {
- BOOL ok;
- POINTL p1;
- INT i,c;
- HPS hps;
-
- hps = WinGetPS( hwnd );
-
- p1.x = 0L;
- p1.y = 0L;
-
- for (c=0; c<16; c++ ) {
- ok = GpiSetColor( hps, colors[c] );
- for (i=0 ; i<360; i++ ) {
- ok = GpiMove( hps, ¢er );
- if (i<90) {
- p1.x =(LONG)((FLOAT)cx*(FLOAT)i/90.0);
- }
- else if ( i<180 ) {
- p1.x = cx;
- p1.y = (LONG)((FLOAT)cy*(FLOAT)(i-90)/90.0);
- }
- else if ( i<270 ) {
- p1.x = (LONG)((FLOAT)cx*(FLOAT)(270-i)/90.0);
- p1.y = cy;
- }
- else if ( i<360 ) {
- p1.x = 0L;
- p1.y = (LONG)((FLOAT)cy*(FLOAT)(360-i)/90.0);
- }
- ok = GpiLine( hps, &p1 );
- }
- }
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_lines_splines(HWND hwnd)
- {
- HPS hps;
- POINTL Multipkt[3];
- BOOL ok;
- INT i,j;
-
- hps = WinGetPS( hwnd );
-
- ok = GpiSetColor(hps, CLR_CYAN);
- ok = GpiMove(hps, ¢er);
-
- for (i=0; i<500; i++ ) {
- for (j=0;j<3;j++) {
- Multipkt[j].x = Calc_Fraction( cx );
- Multipkt[j].y = Calc_Fraction( cy );
- }
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiPolySpline(hps, 3, Multipkt);
- }
-
-
- WinReleasePS( hwnd );
- }
-
- VOID do_gpi_lines_styles(HWND hwnd)
- {
- HPS hps;
- BOOL ok;
- POINTL pkt;
- INT i,j;
-
- hps = WinGetPS( hwnd );
-
- for ( i=0; i<8; i++) {
- pkt.y = (LONG)((FLOAT)cy/8.0*(FLOAT)i);
- ok = GpiSetLineType(hps,linetype[i]);
- for (j=0; j<(INT)((FLOAT)cy/8.0);j+=3) {
- ok = GpiSetColor( hps, colors[rand() % 16] );
- pkt.x = 0L;
- ok = GpiMove(hps,&pkt);
- pkt.x = cx;
- ok = GpiLine(hps,&pkt);
- pkt.y+=3;
- }
- ok = GpiSetColor( hps, colors[0] );
- pkt.x = 10L;
- pkt.y = (LONG)((FLOAT)cy/8.0*(FLOAT)i);
- ok = GpiMove( hps, &pkt );
- ok = GpiCharString( hps, strlen(linetext[i]), linetext[i] );
- }
-
- WinReleasePS( hwnd );
- }
-
- VOID do_gpi_lines_all(HWND hwnd)
- {
- do_gpi_lines_arcs (hwnd);
- do_gpi_lines_boxes (hwnd);
- do_gpi_lines_fillets (hwnd);
- do_gpi_lines_lines (hwnd);
- do_gpi_lines_splines (hwnd);
- do_gpi_lines_styles (hwnd);
- }
-
-
- /* marker */
-
- VOID do_gpi_marker_box(HWND hwnd)
- {
-
- INT i,j;
- POINTL pkt;
- FATTRS fat;
- SIZEF siz;
- BOOL ok;
- HPS hps;
-
- fat.usRecordLength = sizeof(FATTRS);
- fat.fsSelection = 0;
- fat.lMatch = 0;
- fat.idRegistry = 0;
- fat.usCodePage = 850;
- fat.lMaxBaselineExt= 0L;
- fat.lAveCharWidth = 0L;
- fat.fsType = 0;
- fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
- strcpy(fat.szFacename,"Tms Rmn");
-
- hps = WinGetPS( hwnd );
-
- ok = GpiCreateLogFont( hps, (PSTR8) NULL, 1, &fat );
- ok = GpiSetMarkerSet( hps, 1 );
-
- for (i=0; i<500; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- siz.cx = MAKEFIXED( rand() % 200, 0 );
- siz.cy = MAKEFIXED( rand() % 200, 0 );
- ok = GpiSetColor( hps, colors[ rand() % 16 ] );
- ok = GpiSetMarker( hps, rand() % 256 );
- ok = GpiSetMarkerBox( hps, &siz );
- ok = GpiMarker( hps, &pkt );
-
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_marker_poly(HWND hwnd)
- {
-
- INT i,j;
- POINTL pkt,pkte[30];
- BOOL ok;
- HPS hps;
-
- hps = WinGetPS( hwnd );
- for (i=0; i<17; i++) {
- for (j=0; j<30; j++ ) {
- pkte[j].x = Calc_Fraction( cx );
- pkte[j].y = Calc_Fraction( cy );
- }
- ok = GpiSetColor( hps, colors[ rand() % 16 ] );
- ok = GpiSetMarker( hps, markertype[ rand() % 11 ] );
- ok = GpiPolyMarker( hps, 30, pkte );
-
- }
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_marker_single(HWND hwnd)
- {
-
- INT i;
- POINTL pkt;
- BOOL ok;
- HPS hps;
-
- hps = WinGetPS( hwnd );
- for( i=0; i<500; i++ ) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- ok = GpiSetColor( hps, colors[ rand() % 16 ] );
- ok = GpiSetMarker( hps, markertype[ rand() % 11 ] );
- ok = GpiMarker( hps, &pkt );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_marker_userdef(HWND hwnd)
- {
-
- INT i,j;
- POINTL pkt;
- FATTRS fat;
- BOOL ok;
- HPS hps;
-
- fat.usRecordLength = sizeof(FATTRS);
- fat.fsSelection = 0;
- fat.lMatch = 0;
- fat.idRegistry = 0;
- fat.usCodePage = 850;
- fat.lMaxBaselineExt= 0L;
- fat.lAveCharWidth = 0L;
- fat.fsType = 0;
- fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
-
- hps = WinGetPS( hwnd );
-
- ok = GpiCreateLogFont( hps, (PSTR8) NULL, 1, &fat );
- ok = GpiSetMarkerSet( hps, 1 );
-
- for (i=0; i<500; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- ok = GpiSetColor( hps, colors[ rand() % 16 ] );
- ok = GpiSetMarker( hps, rand() % 256 );
- ok = GpiMarker( hps, &pkt );
-
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_marker_all(HWND hwnd)
- {
- do_gpi_marker_box(hwnd);
- do_gpi_marker_poly(hwnd);
- do_gpi_marker_single(hwnd);
- do_gpi_marker_userdef(hwnd);
- }
-
-
- /* paths */
-
- VOID do_gpi_paths_ends(HWND hwnd)
- {
- HPS hps;
- BOOL ok;
- POINTL p1,p2;
- INT i,j;
-
- hps = WinGetPS( hwnd );
-
- for (i=0; i<4; i++ ) {
- for (j=0; j<125; j++) {
- p1.x = Calc_Fraction( cx );
- p1.y = Calc_Fraction( cy );
- p2.x = Calc_Fraction( cx );
- p2.y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetLineEnd( hps, endstyles[i] );
- ok = GpiSetLineWidthGeom( hps, 20L );
- ok = GpiSetColor( hps, colors[ rand() % 16 ] );
- ok = GpiMove( hps, &p1 );
- ok = GpiLine( hps, &p2 );
- ok = GpiEndPath( hps );
- ok = GpiStrokePath( hps, 1L, NULL );
- }
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_paths_fill(HWND hwnd)
- {
- HPS hps;
- BOOL ok;
- INT i;
- POINTL p1, pkt[2];
-
- hps = WinGetPS( hwnd );
- for (i=0; i<500; i++) {
- p1.x = Calc_Fraction( cx );
- p1.y = Calc_Fraction( cy );
- pkt[0].x = Calc_Fraction( cx );
- pkt[0].y = Calc_Fraction( cy );
- pkt[1].x = Calc_Fraction( cx );
- pkt[1].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[ rand() % 16 ] );
- ok = GpiMove( hps, &p1 );
- ok = GpiPolyLine( hps, 2, pkt );
- ok = GpiLine( hps, &p1 );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_paths_join(HWND hwnd)
- {
- static LONG joinstyle[4] = { LINEJOIN_BEVEL,
- LINEJOIN_DEFAULT,
- LINEJOIN_MITRE,
- LINEJOIN_ROUND };
- HPS hps;
- BOOL ok;
- INT i;
- POINTL p1, pkt[2];
-
- hps = WinGetPS( hwnd );
- for (i=0; i<500; i++) {
- p1.x = Calc_Fraction( cx );
- p1.y = Calc_Fraction( cy );
- pkt[0].x = Calc_Fraction( cx );
- pkt[0].y = Calc_Fraction( cy );
- pkt[1].x = Calc_Fraction( cx );
- pkt[1].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[ rand() % 16 ] );
- ok = GpiSetLineWidthGeom( hps, 10L );
- ok = GpiSetLineJoin( hps, joinstyle[ rand() % 4 ] );
- ok = GpiMove( hps, &p1 );
- ok = GpiPolyLine( hps, 2, pkt );
- ok = GpiLine( hps, &p1 );
- ok = GpiEndPath( hps );
- ok = GpiStrokePath( hps, 1L, NULL );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_paths_lines(HWND hwnd)
- {
- HPS hps;
- BOOL ok;
- POINTL pkt,pa1[2],pa2[3];
- INT i,sa,ea,ra;
-
- hps = WinGetPS( hwnd );
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- sa = (INT) Calc_Fraction( 360L );
- ea = (INT) Calc_Fraction( 360L );
- ra = (INT) Calc_Fraction( 200L );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiPartialArc( hps, &pkt, MAKEFIXED( ra, 0), MAKEFIXED( sa, 0 ), MAKEFIXED( ea,0) );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa1[0].x = Calc_Fraction( cx );
- pa1[0].y = Calc_Fraction( cy );
- pa1[1].x = Calc_Fraction( cx );
- pa1[1].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolyFillet( hps, 2, pa1 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa2[0].x = Calc_Fraction( cx );
- pa2[0].y = Calc_Fraction( cy );
- pa2[1].x = Calc_Fraction( cx );
- pa2[1].y = Calc_Fraction( cy );
- pa2[2].x = Calc_Fraction( cx );
- pa2[2].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolySpline( hps, 3, pa2 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa2[0].x = Calc_Fraction( cx );
- pa2[0].y = Calc_Fraction( cy );
- pa2[1].x = Calc_Fraction( cx );
- pa2[1].y = Calc_Fraction( cy );
- pa2[2].x = Calc_Fraction( cx );
- pa2[2].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolyLine( hps, 3, pa2 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_paths_pattern(HWND hwnd)
- {
- HPS hps;
- BOOL ok;
- POINTL pkt,pa1[2],pa2[3];
- INT i,sa,ea,ra;
-
- hps = WinGetPS( hwnd );
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- sa = (INT) Calc_Fraction( 360L );
- ea = (INT) Calc_Fraction( 360L );
- ra = (INT) Calc_Fraction( 200L );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetPattern( hps, pattern[ rand() % 19 ] );
- ok = GpiMove( hps, &pkt );
- ok = GpiPartialArc( hps, &pkt, MAKEFIXED( ra, 0), MAKEFIXED( sa, 0 ), MAKEFIXED( ea,0) );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa1[0].x = Calc_Fraction( cx );
- pa1[0].y = Calc_Fraction( cy );
- pa1[1].x = Calc_Fraction( cx );
- pa1[1].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetPattern( hps, pattern[ rand() % 19 ] );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolyFillet( hps, 2, pa1 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa2[0].x = Calc_Fraction( cx );
- pa2[0].y = Calc_Fraction( cy );
- pa2[1].x = Calc_Fraction( cx );
- pa2[1].y = Calc_Fraction( cy );
- pa2[2].x = Calc_Fraction( cx );
- pa2[2].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetPattern( hps, pattern[ rand() % 19 ] );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolySpline( hps, 3, pa2 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa2[0].x = Calc_Fraction( cx );
- pa2[0].y = Calc_Fraction( cy );
- pa2[1].x = Calc_Fraction( cx );
- pa2[1].y = Calc_Fraction( cy );
- pa2[2].x = Calc_Fraction( cx );
- pa2[2].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetPattern( hps, pattern[ rand() % 19 ] );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolyLine( hps, 3, pa2 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_paths_width(HWND hwnd)
- {
- HPS hps;
- BOOL ok;
- POINTL pkt,pa1[2],pa2[3];
- INT i,sa,ea,ra;
-
- hps = WinGetPS( hwnd );
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- sa = (INT) Calc_Fraction( 360L );
- ea = (INT) Calc_Fraction( 360L );
- ra = (INT) Calc_Fraction( 200L );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetLineWidthGeom( hps, Calc_Fraction( 64L ) );
- ok = GpiMove( hps, &pkt );
- ok = GpiPartialArc( hps, &pkt, MAKEFIXED( ra, 0), MAKEFIXED( sa, 0 ), MAKEFIXED( ea,0) );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiStrokePath( hps, 1L, NULL );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa1[0].x = Calc_Fraction( cx );
- pa1[0].y = Calc_Fraction( cy );
- pa1[1].x = Calc_Fraction( cx );
- pa1[1].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetLineWidthGeom( hps, Calc_Fraction( 64L ) );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolyFillet( hps, 2, pa1 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiStrokePath( hps, 1L, NULL );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa2[0].x = Calc_Fraction( cx );
- pa2[0].y = Calc_Fraction( cy );
- pa2[1].x = Calc_Fraction( cx );
- pa2[1].y = Calc_Fraction( cy );
- pa2[2].x = Calc_Fraction( cx );
- pa2[2].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetLineWidthGeom( hps, Calc_Fraction( 64L ) );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolySpline( hps, 3, pa2 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiStrokePath( hps, 1L, NULL );
- }
-
- for (i=0; i<125; i++) {
- pkt.x = Calc_Fraction( cx );
- pkt.y = Calc_Fraction( cy );
- pa2[0].x = Calc_Fraction( cx );
- pa2[0].y = Calc_Fraction( cy );
- pa2[1].x = Calc_Fraction( cx );
- pa2[1].y = Calc_Fraction( cy );
- pa2[2].x = Calc_Fraction( cx );
- pa2[2].y = Calc_Fraction( cy );
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, colors[rand() % 16] );
- ok = GpiSetLineWidthGeom( hps, Calc_Fraction( 64L ) );
- ok = GpiMove( hps, &pkt );
- ok = GpiPolyLine( hps, 3, pa2 );
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiStrokePath( hps, 1L, NULL );
- }
-
- WinReleasePS( hwnd );
-
- }
-
- VOID do_gpi_paths_all(HWND hwnd)
- {
- do_gpi_paths_ends (hwnd);
- do_gpi_paths_fill (hwnd);
- do_gpi_paths_join (hwnd);
- do_gpi_paths_lines (hwnd);
- do_gpi_paths_pattern (hwnd);
- do_gpi_paths_width (hwnd);
- }
-
- VOID do_gpi_all(HWND hwnd)
- {
- do_gpi_fonts_all (hwnd);
- do_gpi_lines_all (hwnd);
- do_gpi_marker_all (hwnd);
- do_gpi_paths_all (hwnd);
- }
-
- VOID do_gpi_extend(HWND hwnd)
- {
- HPS hps;
- BOOL ok;
- POINTL pkt,shear;
- INT i,sa,ea,ra;
- FATTRS fat;
- SIZEF size;
- GRADIENTL grad;
-
- static INT pie[5] = { 40, 60, 95, 65, 50 };
- static LONG col[5] = { CLR_PINK, CLR_DARKCYAN, CLR_YELLOW, CLR_DARKPINK, CLR_CYAN };
-
- fat.usRecordLength = sizeof(FATTRS);
- fat.fsSelection = 0;
- fat.lMatch = 0;
- fat.idRegistry = 0;
- fat.usCodePage = 850;
- fat.lMaxBaselineExt= 0L;
- fat.lAveCharWidth = 0L;
- fat.fsType = 0;
- fat.fsFontUse = FATTR_FONTUSE_OUTLINE;
- strcpy(fat.szFacename,"Tms Rmn");
-
- size.cx = MAKEFIXED( 50,0 );
- size.cy = MAKEFIXED( 50,0 );
-
- shear.x = 20;
- shear.y = 20;
-
- pkt.x = 10;
- pkt.y = 10;
-
- hps = WinGetPS( hwnd );
-
- ok = GpiCreateLogFont( hps, (PSTR8) NULL, 1, &fat );
- ok = GpiSetCharSet( hps, 1 );
- ok = GpiSetCharBox( hps, &size );
- ok = GpiSetCharShear( hps, &shear );
- ok = GpiMove( hps, &pkt );
- ok = GpiSetColor( hps, CLR_DARKGRAY );
- ok = GpiCharString( hps, 10, "Benchmark" );
-
- shear.x = 0;
- shear.y = 0;
-
- ok = GpiMove( hps, &pkt );
- ok = GpiSetColor( hps, CLR_PALEGRAY );
- ok = GpiSetCharShear( hps, &shear );
- ok = GpiCharString( hps, 10, "Benchmark" );
-
- pkt.x = center.x/2;
- pkt.y = center.y;
-
- ra = 75; sa = 0; ea = 50;
-
- for (i=0; i<5; i++ ) {
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, col[i] );
- ok = GpiMove( hps, &pkt);
- ok = GpiPartialArc( hps, &pkt, MAKEFIXED( ra, 0 ), MAKEFIXED( sa, 0 ), MAKEFIXED( ea, 0 ) );
- ok = GpiLine( hps, &pkt);
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
- sa += ea; ea = pie[i];
- }
-
- pkt.x += 10;
- pkt.y -= 4;
-
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, CLR_BLUE );
- ok = GpiMove( hps, &pkt);
- ok = GpiPartialArc( hps, &pkt, MAKEFIXED( ra, 0 ), MAKEFIXED( sa, 0 ), MAKEFIXED( ea, 0 ) );
- ok = GpiLine( hps, &pkt);
- ok = GpiEndPath( hps );
- ok = GpiFillPath( hps, 1L, FPATH_ALTERNATE );
-
- grad.x = 50;
- grad.y = -25;
-
- size.cx = MAKEFIXED( 20,0 );
- size.cy = MAKEFIXED( 20,0 );
-
- pkt.x += 80;
- pkt.y -= 38;
-
- ok = GpiSetColor( hps, CLR_DARKBLUE );
- ok = GpiMove( hps, &pkt );
- ok = GpiSetCharAngle( hps, &grad );
- ok = GpiSetCharBox( hps, &size );
- ok = GpiCharString( hps, 14, "Extra Segment" );
-
- ok = GpiBeginPath( hps, 1L );
- ok = GpiSetColor( hps, CLR_BLACK );
- pkt.x = center.x+20;
- pkt.y = center.y-5;
- ok = GpiMove( hps, &pkt );
- pkt.y = cy-5;
- ok = GpiLine( hps, &pkt );
- pkt.x = center.x+15;
- pkt.y = center.y;
- ok = GpiMove( hps, &pkt );
- pkt.x = cx-5;
- ok = GpiLine( hps, &pkt );
- ok = GpiEndPath( hps );
- ok = GpiStrokePath( hps, 1L, FPATH_ALTERNATE );
-
- WinReleasePS( hwnd );
-
- }
-