REM THIS IS A DEMONSTRATION PROGRAM FOR REM CBASIC GRAPHICS EXTENSIONS REM REM PROGRAM NAME: DEMOGRAF REM %INCLUDE GRAPHCOM.BAS DEF PAUSE REM UTILITY TO SUSPEND PROGRAM EXECUTION UNTIL CHARACTER IS REM ENTERED AT CONSOLE, STOPPING PROGRAM IF CTRL-C IS ENTERED, REM OTHERWISE RETURNING INTEGER VALUE OF CHARACTER ENTERED. REM CHARACTER IS NOT DISPLAYED. INTEGER PAUSE,CHOICE CHOICE = INKEY IF CHOICE = 3 THEN STOP PAUSE = CHOICE FEND GRAPHIC OPEN 1 CLEAR BEEM: GRAPHIC PRINT AT (0,.9): "BEAM STATEMENT" SET BEAM "OFF" PLOT (0,1),(1,1),(1,0),(0,0) KEY% = PAUSE REM WAIT FOR CONSOLE INPUT CLEAR SET BEAM "ON" PLOT (0,1),(1,1),(1,0),(0,0) KEY% = PAUSE REM ILLUSTRATE TECHNIQUE OF SQUARING A DISPLAY BOWNDS: CLEAR GRAPHIC PRINT AT (0,.9): "BOUNDS STATEMENT" ASK DEVICE X.AXIS,Y.AXIS PRINT "THE ASPECT RATIO IS = ";Y.AXIS;"/";X.AXIS KEY% = PAUSE PLOT (0,0),(0,1),(1,1),(1,0),(0,0) KEY% = PAUSE CLEAR SET BOUNDS Y.AXIS,X.AXIS PLOT (0,0),(0,1),(1,1),(1,0),(0,0) SET BOUNDS 1,1 KEY% = PAUSE REM DEMONSTRATE CONTROL OF GRAPHIC CHARACTER HEIGHT REM AND MINIMUM HEIGHT FOR GRAPHIC CHARACTERS HIGH: CLEAR SET CHARACTER HEIGHT 0 GRAPHIC PRINT AT (0,.9): "CHARACTER HEIGHT STATEMENT" SET CHARACTER HEIGHT .1 GRAPHIC PRINT AT (0,.7): "10 PERCENT" KEY% = PAUSE SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 15 GRAPHIC PRINT AT (0,40): "15 PERCENT" KEY% = PAUSE SET CHARACTER HEIGHT 0 ASK CHARACTER HEIGHT CH PRINT "MINIMUM CHARACTER HEIGHT IS = "; CH GRAPHIC PRINT AT (0,20): "MINIMUM HEIGHT" REM DISPLAY SEVERAL RANDOM LINES ON SCREEN, THEN MAKE REM THEM DISAPPEAR VIA "CLEAR" STATEMENT INPUT ""; LINE SEED$ RANDOMIZE CLR: CLEAR GRAPHIC PRINT AT (0,90): "CLEAR STATEMENT" SET WINDOW 0,1,0,1 FOR I.INT% = 1 TO 10 PLOT (RND,RND),(RND,RND) NEXT I.INT% KEY% = PAUSE CLEAR REM ILLUSTRATE EFFECT OF AUTOMATIC CLIPPING WHEN FIGURE REM EXCEEDS ALLOWABLE BOUNDARIES CLP: SET WINDOW 0,100,0,100 GRAPHIC PRINT AT (0,90): "CLIP STATEMENT" PLOT (25,10),(50,150),(75,10),(25,10) KEY% = PAUSE REM DRAW BORDER IN EACH AVAILABLE COLOR (NUMBER OF REM COLORS VARIES WITH RESOLUTION) COLR: CLEAR GRAPHIC PRINT AT (0,90): \ "COLOR AND COLOR COUNT STATEMENTS" SET WINDOW 0,1,0,1 ASK COLOR COUNT CT% FOR I.INT% = 1 TO CT% SET COLOR I.INT% PLOT (0,0),(0,1),(1,1),(1,0),(0,0) KEY% = PAUSE NEXT I.INT% REM RETRIEVE AND DISPLAY SPECIFICATIONS FOR CURRENT DEVICE DEVC: CLEAR SET CHARACTER HEIGHT 0 SET COLOR 1 GRAPHIC PRINT AT (0,.8): "DEVICE STATEMENT" ASK DEVICE X.AXIS,Y.AXIS PRINT "THE VERTICAL AXIS IS "; \ Y.AXIS*100.0/X.AXIS;"PERCENT OF THE"; PRINT " HORIZONTAL AXIS" PRINT "X= ";X.AXIS;" Y= ";Y.AXIS KEY% = PAUSE REM MENTION "GRAPHIC CLOSE" STATEMENT GCLOSE: CLEAR GRAPHIC PRINT AT (0,.9): "GRAPHIC CLOSE STATEMENT" GRAPHIC PRINT AT (0,.5): "GRAPHIC CLOSE HAS NO DEMO" KEY% = PAUSE REM ILLUSTRATE GRAPHIC INPUT VIA CURSOR POSITIONING GIN: CLEAR SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 0 GRAPHIC PRINT AT (0,80): "GRAPHIC INPUT STATEMENT" GRAPHIC PRINT AT (0,25): "OPTION 1 ." SET COLOR 2 GRAPHIC PRINT AT (0,50): "OPTION 2 ." SET COLOR 3 GRAPHIC PRINT AT (0,75): "OPTION 3 ." GRAPHIC INPUT X.AXIS,Y.AXIS,A$ N = INT((Y.AXIS+5)/25) IF N = 0 THEN N = 1 REM NO OPTION ZERO IF N > 3 THEN N = 3 REM ONLY THREE OPTIONS PRINT "THE CURSOR WAS POSITIONED AT: "; X.AXIS,Y.AXIS PRINT "YOU SELECTED OPTION: "; N PRINT "THE TERMINATING KEY WAS: "; A$ KEY% = PAUSE REM MENTION "GRAPHIC OPEN" STATEMENT GOPEN: CLEAR SET COLOR 1 SET CHARACTER HEIGHT 0 GRAPHIC PRINT AT (0,90): "GRAPHIC OPEN STATEMENT" GRAPHIC PRINT AT (0,50): \ "THE GRAPHIC OPEN HAS NO DEMONSTRATION" KEY% = PAUSE REM DEMONSTRATE CENTERING AND JUSTIFICATION GPRT: CLEAR SET WINDOW 0,1,0,1 SET CHARACTER HEIGHT 0 GRAPHIC PRINT AT (0,.9): "GRAPHIC PRINT STATEMENT" SET JUSTIFY 0,0 GRAPHIC PRINT AT (.5,.5): "BEGINS AT CENTER" KEY% = PAUSE SET JUSTIFY .5,0 GRAPHIC PRINT AT (.5,.3): "THIS IS CENTERED" KEY% = PAUSE SET JUSTIFY .5,.5 GRAPHIC PRINT AT (.5,.3): "THIS IS CENTERED" KEY% = PAUSE SET JUSTIFY 1.0,1.0 GRAPHIC PRINT AT (.5,.5): "ENDS AT CENTER" KEY% = PAUSE JUST: CLEAR SET JUSTIFY 0,0 SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 0 GRAPHIC PRINT AT (0,90): "JUSTIFY STATEMENT" PLOT (20,80),(20,20),(80,20) PLOT (15,40),(20,40) PLOT (15,60),(20,60) PLOT (15,80),(20,80) PLOT (40,15),(40,20) PLOT (60,15),(60,20) PLOT (80,15),(80,20) SET JUSTIFY 1,.5 GRAPHIC PRINT AT (14,20): "20" GRAPHIC PRINT AT (14,40): "40" GRAPHIC PRINT AT (14,60): "60" GRAPHIC PRINT AT (14,80): "80" SET JUSTIFY .5,1 GRAPHIC PRINT AT (20,14): "20" GRAPHIC PRINT AT (40,14): "40" GRAPHIC PRINT AT (60,14): "60" GRAPHIC PRINT AT (80,14): "80" KEY% = PAUSE REM EXHIBIT VARIATION OF LINE STYLE STYL: CLEAR SET JUSTIFY 0,0 SET WINDOW 0,1,0,1 GRAPHIC PRINT AT (0,.9): "LINE STYLE STATEMENT" SET LINE STYLE 3 SET JUSTIFY 1,0 GRAPHIC PRINT AT (.5,.5): "Sign here" PLOT (0.5,0.5),(0.8,0.5) KEY% = PAUSE REM ILLUSTRATE VARIATION IN SIZE OF MARKERS MHIGH: CLEAR SET WINDOW 0,1,0,1 SET CHARACTER HEIGHT 0 SET LINE STYLE 1 SET JUSTIFY 0,0 GRAPHIC PRINT AT (0,.9): "MARKER HEIGHT STATEMENT" DIM MX(5) DIM MY(5) MX(0) = .3 : MY(0) = .7 MX(1) = .7 : MY(1) = .7 SET MARKER HEIGHT .1 MAT MARKER 1: MX,MY SET WINDOW 0,100,0,100 MX(0) = 30 : MY(0) = 50 MX(1) = 70 : MY(1) = 50 SET MARKER HEIGHT 15 MAT MARKER 1: MX,MY SET MARKER HEIGHT 0 ASK MARKER HEIGHT MK PRINT "MINIMUM MARKER HEIGHT IS = "; MK KEY% = PAUSE REM DEMONSTRATE ALL MARKER SHAPES MTYPE: CLEAR SET WINDOW 0,1,0,1 SET MARKER HEIGHT 0 GRAPHIC PRINT AT (0,.9): "MARKER TYPE STATEMENT" MX(0) = .5 : MY(0) = .7 FOR I.INT% = 1 TO 5 SET MARKER TYPE I.INT% MAT MARKER 0: MX,MY MY(0) = MY(0) - .1 NEXT I.INT% KEY% = PAUSE REM DEMONSTRATE FILLED POLYGON MFILL: CLEAR SET LINE STYLE 1 SET JUSTIFY 0,0 GRAPHIC PRINT AT (0,.9): "MAT FILL STATEMENT" SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 0 SET COLOR 1 DIM X.ARRAY(10) DIM Y.ARRAY(10) X.ARRAY(0) = 40 : Y.ARRAY(0) = 10 X.ARRAY(1) = 35 : Y.ARRAY(1) = 25 X.ARRAY(2) = 50 : Y.ARRAY(2) = 40 X.ARRAY(3) = 65 : Y.ARRAY(3) = 25 X.ARRAY(4) = 60 : Y.ARRAY(4) = 10 MAT FILL 4: X.ARRAY,Y.ARRAY KEY% = PAUSE REM ILLUSTRATE POSITIONING OF MARKERS VIA AN ARRAY MMARK: CLEAR SET WINDOW 0,100,0,100 GRAPHIC PRINT AT (0,90): "MAT MARKER STATEMENT" SET MARKER HEIGHT 0 SET MARKER TYPE 1 SET COLOR 1 MAT MARKER 4: X.ARRAY,Y.ARRAY KEY% = PAUSE REM DEMONSTRATE DRAWING POLYGON OUTLINE VIA AN ARRAY MPLOT: CLEAR GRAPHIC PRINT AT (0,90): "MAT PLOT STATEMENT" SET COLOR 1 SET WINDOW 0,1,0,1 SET CHARACTER HEIGHT 0 FOR I.INT% = 0 TO 4 X.ARRAY(I.INT%) = .01 * X.ARRAY(I.INT%) Y.ARRAY(I.INT%) = .01 * Y.ARRAY(I.INT%) NEXT I.INT% X.ARRAY(5) = .40 : Y.ARRAY(5) = .10 SET BEAM "OFF" MAT PLOT 4: X.ARRAY,Y.ARRAY KEY% = PAUSE CLEAR MAT PLOT 5: X.ARRAY,Y.ARRAY KEY% = PAUSE REM DO POLYGON VIA "PLOT" STATEMENTS PLT: CLEAR SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 0 SET COLOR 1 GRAPHIC PRINT AT (0,90): "PLOT STATEMENT" PLOT (40,10),(35,25); SET COLOR 2 PLOT (35,25),(50,40); SET LINE STYLE 2 PLOT (50,40),(65,25); SET LINE STYLE 1 SET COLOR 3 PLOT (65,25),(60,10),(40,10) KEY% = PAUSE REM EXERCISE ARBITRARY POSITIONING OF GRAPHIC BEAM POSIT: CLEAR GRAPHIC PRINT AT (0,90): "POSITION STATEMENT" SET BEAM "OFF" SET POSITION 50,50 SET POSITION 50,100 SET BEAM "ON" SET POSITION 0,0 SET POSITION 50,50 KEY% = PAUSE REM SHOW ALL LINE STYLES STCNT: CLEAR GRAPHIC PRINT AT (0,90): "STYLE COUNT STATEMENT" SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 0 ASK STYLE COUNT ST% PRINT "THE NUMBER OF LINE STYLES IS: "; ST% FOR I.INT% = 1 TO ST% SET LINE STYLE I.INT% SET BEAM "OFF" PLOT (10*I.INT%,10),(10*I.INT%,90) NEXT I.INT% KEY% = PAUSE SET LINE STYLE 1 REM DEMONSTRATE ROTATION OF TEXT ANGEL: CLEAR GRAPHIC PRINT AT (0,90): "TEXT ANGLE STATEMENT" SET WINDOW 0,1,0,1 SET CHARACTER HEIGHT 0 PI = 3.1415926 RAD = PI*2 DEG = RAD/360 FOR I.INT% = 90 TO 360 STEP 90 SET TEXT ANGLE I.INT%*DEG GRAPHIC PRINT AT (.5,.5): "ROTATE ME" NEXT I.INT% KEY% = PAUSE SET TEXT ANGLE 0 REM ILLUSTRATE EFFECT OF VARYING VIEWPORT VYOU: CLEAR GRAPHIC PRINT AT (0,.9): "VIEWPORT STATEMENT" X.ARRAY(0) = 0 : Y.ARRAY(0) = 0 X.ARRAY(1) = 0 : Y.ARRAY(1) = 100 X.ARRAY(2) = 100 : Y.ARRAY(2) = 100 X.ARRAY(3) = 100 : Y.ARRAY(3) = 0 X.ARRAY(4) = 0 : Y.ARRAY(4) = 0 SET VIEWPORT 0,1,0,1 SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 0 MAT PLOT 4: X.ARRAY,Y.ARRAY SET VIEWPORT .1,.9,.1,.9 MAT PLOT 4: X.ARRAY,Y.ARRAY SET VIEWPORT .2,.8,.2,.8 MAT PLOT 4: X.ARRAY,Y.ARRAY SET VIEWPORT .3,.5,.3,.5 MAT PLOT 4: X.ARRAY,Y.ARRAY SET VIEWPORT .5,.7,.5,.7 MAT PLOT 4: X.ARRAY,Y.ARRAY KEY% = PAUSE REM ILLUSTRATE EFFECT OF VARYING WINDOW WINDW: CLEAR SET VIEWPORT 0,1,0,1 SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 0 GRAPHIC PRINT AT (0,90): "WINDOW STATEMENT" PLOT (0,0),(60,60),(60,0),(0,0) SET WINDOW 0,200,0,200 SET CHARACTER HEIGHT 0 PLOT (0,0),(60,60),(60,0),(0,0) SET VIEWPORT 0,.5,.5,1.0 PLOT (0,0),(60,60),(60,0),(0,0) KEY% = PAUSE REM FINISH DEMONSTRATION AND END PROGRAM FIN: CLEAR SET WINDOW 0,100,0,100 SET CHARACTER HEIGHT 0 SET VIEWPORT 0,1,0,1 SET COLOR 1 FOR I.INT% = 1 TO CT% SET COLOR I.INT% MAT PLOT 5: X.ARRAY,Y.ARRAY SET VIEWPORT .01*I.INT%,1-(I.INT%*.01), \ .01*I.INT%,1-(I.INT%*.01) NEXT I.INT% SET JUSTIFY .5,.5 SET COLOR 1 SET VIEWPORT 0,1,0,1 GRAPHIC PRINT AT (50,50): "THANKS FOR THE VIEWING" KEY% = PAUSE STOP END