/* subroutines to make pattern play program work */ #include "stdio.h" #include "fcntl.h" extern struct Screen *sC; extern struct Window *wG; extern struct RastPort *rpG; extern int mousex, mousey; static char def_name[50] = ""; static char def_dir[50] = ""; struct patdata { unsigned int ourpattern[32], power_of_2, pen1color, pen2color; } it; extern struct Gadget Pen1; DoPen1() { it.pen1color= (mousex-Pen1.LeftEdge)/(Pen1.Width/4)+4*((mousey- Pen1.TopEdge)>Pen1.Height/2); fillsamples(); } extern struct Gadget Pen2; DoPen2() { it.pen2color= (mousex-Pen2.LeftEdge)/(Pen2.Width/4)+4*((mousey- Pen2.TopEdge)>Pen2.Height/2); fillsamples(); } extern struct Gadget Pen1Sample, Pen2Sample, Bigsample; fillsamples() { SetAPen(rpG, (long)it.pen1color); SetAfPt(rpG, 0l, 0l); SetDrMd(rpG, JAM1); RectFill(rpG, (long)Pen1Sample.LeftEdge, (long)Pen1Sample.TopEdge, (long)(Pen1Sample.LeftEdge+Pen1Sample.Width), (long)(Pen1Sample.TopEdge+Pen1Sample.Height)); SetAPen(rpG, (long)it.pen2color); RectFill(rpG, (long)Pen2Sample.LeftEdge, (long)Pen2Sample.TopEdge, (long)(Pen2Sample.LeftEdge+Pen2Sample.Width), (long)(Pen2Sample.TopEdge+Pen2Sample.Height)); SetAPen(rpG, (long)it.pen1color); SetBPen(rpG, (long)it.pen2color); SetDrMd(rpG, JAM1|JAM2); SetAfPt(rpG, it.ourpattern, (long)it.power_of_2); RectFill(rpG, (long)Bigsample.LeftEdge, (long)Bigsample.TopEdge, (long)(Bigsample.LeftEdge+Bigsample.Width), (long)(Bigsample.TopEdge+Bigsample.Height-1)); RefreshGadgets(&Pen1Sample, wG, 0l); } extern struct Gadget Grid; DoGrid() { int bit, word, mask; bit = (mousex-Grid.LeftEdge)/(Grid.Width/16); mask=0x8000>>bit; word= (mousey-Grid.TopEdge)/(Grid.Height/32); if (word>=(1<>11; for(size=1, it.power_of_2=0; x; x=x>>1, size*=2, ++it.power_of_2); SetAPen(rpG, 3l); SetAfPt(rpG, 0l, 0l); SetDrMd(rpG, JAM1); RectFill(rpG, (long)(Grid.LeftEdge), (long)(Grid.TopEdge), (long)(Grid.LeftEdge+Grid.Width-1), (long)(Grid.TopEdge+Grid.Height-1)); for (x=0, mask=0x8000; x<16; ++x, mask=mask>>1) { for (y=0; y