cunniff@hpfclq.HP.COM (Ross Cunniff) (01/23/88)
Here is my suggestion for 1.3 enhancements: don't ignore the line drawing
pattern (set with SetDrPt()) when drawing the borders of filled polygons.
Appended is a shar file containing a program which demonstrates AreaMove
and AreaDraw's ignorance of the line drawing pattern.
Ross Cunniff
Hewlett-Packard System Software Operation
...{ucbvax,hplabs}!hpda!cunniff
cunniff%hpda@hplabs.ARPA
---cut here---------------------cut here---------------------cut here---
cat >PatTest.c <<SHAR_EOF
#include <stdio.h>
#include <exec/types.h>
#include <exec/memory.h>
#include <intuition/intuition.h>
#include <graphics/gfxmacros.h>
struct GfxBase
*GfxBase;
struct IntuitionBase
*IntuitionBase;
struct NewScreen
MyNewScreen = {
0, 0, 320, 200, 3, /* Left, Top, Width, Height, Depth */
0, 0, 0, /* DetailPen, BlockPen, ViewModes */
CUSTOMSCREEN, /* Type */
NULL, NULL, NULL, NULL /* Font, Title, Gadget, Bitmap */
};
UBYTE
*MyAFRast;
struct Screen
*MyScreen;
struct RastPort
*MyRast;
struct ViewPort
*MyView;
struct TmpRas
MyTmpRas;
struct AreaInfo
MyAreaInfo;
WORD
MyAreaBuffer[250],
MyPattern[3*8] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
},
*MyPat;
void main()
{
int
i;
UBYTE
*AllocRaster(),
*AllocMem();
struct TmpRas
*InitTmpRas();
struct Screen
*OpenScreen();
struct Library
*OpenLibrary();
void
FreeRaster(),
FreeMem(),
exit(),
CloseScreen(),
CloseLibrary();
IntuitionBase = (struct IntuitionBase *)
OpenLibrary( "intuition.library", 29L );
GfxBase = (struct GfxBase *)OpenLibrary( "graphics.library", 29L );
MyScreen = OpenScreen( &MyNewScreen );
if( MyScreen == (struct Screen *)NULL ) {
printf( "Unable to open screen.\n" );
exit( 1 );
}
MyView = &MyScreen->ViewPort;
MyRast = &MyScreen->RastPort;
SetRGB4( MyView, 0, 0x0, 0x0, 0x0 );
SetRGB4( MyView, 1, 0xF, 0xF, 0xF );
SetRGB4( MyView, 2, 0xF, 0x0, 0x0 );
SetRGB4( MyView, 3, 0xF, 0xF, 0x0 );
SetRGB4( MyView, 4, 0x0, 0xF, 0x0 );
SetRGB4( MyView, 5, 0x0, 0xF, 0xF );
SetRGB4( MyView, 6, 0x0, 0x0, 0xF );
SetRGB4( MyView, 7, 0xF, 0x0, 0xF );
InitArea( &MyAreaInfo, MyAreaBuffer, 100 );
MyRast->AreaInfo = &MyAreaInfo;
MyAFRast = AllocRaster( 320, 200 );
MyRast->TmpRas = InitTmpRas(&MyTmpRas,MyAFRast,RASSIZE(320,200));
MyPat = (WORD *)AllocMem( 3*8*sizeof(WORD), MEMF_CHIP | MEMF_PUBLIC );
for( i = 0; i < 24; i++ ) {
MyPat[i] = MyPattern[i];
}
SetOPen( MyRast, 1 ); /* White outline */
SetAfPt( MyRast, MyPat, -3 ); /* Dotty red interior */
SetDrPt( MyRast, 0xF0F0 ); /* Dashed outline */
SetAPen( MyRast, 255 ); /* A, B, and Mode are for fills */
SetBPen( MyRast, 0 );
SetDrMd( MyRast, JAM2 );
AreaMove( MyRast, 50, 50 );
AreaDraw( MyRast, 150, 150 );
AreaDraw( MyRast, 50, 150 );
AreaDraw( MyRast, 150, 50 );
AreaEnd( MyRast );
(void)getchar(); /* Wait for user to hit <cr> */
FreeMem( MyPat, 3 * 8 * sizeof( WORD ) );
FreeRaster( MyAFRast, 320, 200 );
CloseScreen( MyScreen );
CloseLibrary( (struct Library *)GfxBase );
CloseLibrary( (struct Library *)IntuitionBase );
}
/*** EOF PatTest.c ***/
SHAR_EOF