home *** CD-ROM | disk | FTP | other *** search
- /* bits and pieces for rubik.c M.J.R. 4th Feb 90 */
-
- extern struct Window *wnd1,*wnd2;
- extern struct Screen *scr1,*scr2;
- extern struct Gadget redplus;
- extern struct Gadget greenplus;
- extern struct Gadget blueplus;
- extern struct Gadget redminus;
- extern struct Gadget greenminus;
- extern struct Gadget blueminus;
- extern struct Gadget colour1;
- extern struct Gadget colour2;
- extern struct Gadget colour3;
- extern struct Gadget colour4;
- extern struct Gadget colour5;
- extern struct Gadget colour6;
- extern struct Gadget redplusa;
- extern struct Gadget greenplusa;
- extern struct Gadget blueplusa;
- extern struct Gadget redminusa;
- extern struct Gadget greenminusa;
- extern struct Gadget blueminusa;
- extern struct Gadget colour1a;
- extern struct Gadget colour2a;
- extern struct Gadget colour3a;
- extern struct Gadget colour4a;
- extern struct Gadget colour5a;
- extern struct Gadget colour6a;
-
- void getcolours(int pen, int *red, int *green, int *blue)
- {
- struct ViewPort *vp;
- UWORD colour;
-
- vp = ViewPortAddress(wnd1);
-
- colour = GetRGB4(vp->ColorMap,pen);
-
- *blue = colour & 0x00f;
- *green = (colour & 0x0f0) >> 4;
- *red = (colour & 0xf00) >> 8;
- }
-
- void showcolours (int red, int green, int blue)
- {
- char buffer[7];
-
- sprintf(buffer,"%02d%02d%02d",red,green,blue);
-
- SetAPen(wnd1->RPort,7);
- SetBPen(wnd1->RPort,0);
- SetDrMd(wnd1->RPort,JAM2);
-
- Move(wnd1->RPort,249,184);
- Text(wnd1->RPort,buffer,2);
- Move(wnd1->RPort,273,184);
- Text(wnd1->RPort,&(buffer[2]),2);
- Move(wnd1->RPort,297,184);
- Text(wnd1->RPort,&(buffer[4]),2);
-
- ClipBlit
- (
- wnd1->RPort,243,157,
- wnd2->RPort,243,157,
- 75,41,
- 0xc0
- );
- }
-
- void modcolours (int pen, int colour, int change)
- {
- int primary[3];
-
- getcolours(pen,&(primary[0]),&(primary[1]),&(primary[2]));
-
- if ((((primary[colour]) += change) > 15) || ((primary[colour]) < 0))
- (primary[colour]) -= change;
-
- SetRGB4(&(scr1->ViewPort),pen,primary[0],primary[1],primary[2]);
- SetRGB4(&(scr2->ViewPort),pen,primary[0],primary[1],primary[2]);
-
- showcolours(primary[0],primary[1],primary[2]);
- }
-
- void selectpen (int pen)
- {
- int i,j,red,green,blue;
-
- SetAPen(wnd1->RPort,0);
- SetDrMd(wnd1->RPort,JAM1);
-
- for (i=0; i<4; i++)
- {
- Move(wnd1->RPort,202+10*i,165);
- Draw(wnd1->RPort,202+10*i,185);
- }
-
- for (i=0; i<3; i++)
- {
- Move(wnd1->RPort,202,165+10*i);
- Draw(wnd1->RPort,232,165+10*i);
- }
-
- SetAPen(wnd1->RPort,7);
-
-
- if (pen > 3)
- {
- i = 162+10*pen;
- j = 175;
- }
- else
- {
- i = 192+10*pen;
- j = 165;
- }
-
- Move (wnd1->RPort,i,j);
- Draw (wnd1->RPort,i+10,j);
- Draw (wnd1->RPort,i+10,j+10);
- Draw (wnd1->RPort,i,j+10);
- Draw (wnd1->RPort,i,j);
-
- ClipBlit
- (
- wnd1->RPort,201,164,
- wnd2->RPort,201,164,
- 32,22,
- 0xc0
- );
-
- getcolours(pen,&red,&green,&blue);
- showcolours(red,green,blue);
- }
-
- void addpaints()
- {
- int i;
-
- AddGadget(wnd1,&redplus,-1);
- AddGadget(wnd1,&greenplus,-1);
- AddGadget(wnd1,&blueplus,-1);
- AddGadget(wnd1,&redminus,-1);
- AddGadget(wnd1,&greenminus,-1);
- AddGadget(wnd1,&blueminus,-1);
- AddGadget(wnd1,&colour1,-1);
- AddGadget(wnd1,&colour2,-1);
- AddGadget(wnd1,&colour3,-1);
- AddGadget(wnd1,&colour4,-1);
- AddGadget(wnd1,&colour5,-1);
- AddGadget(wnd1,&colour6,-1);
-
- AddGadget(wnd2,&redplusa,-1);
- AddGadget(wnd2,&greenplusa,-1);
- AddGadget(wnd2,&blueplusa,-1);
- AddGadget(wnd2,&redminusa,-1);
- AddGadget(wnd2,&greenminusa,-1);
- AddGadget(wnd2,&blueminusa,-1);
- AddGadget(wnd2,&colour1a,-1);
- AddGadget(wnd2,&colour2a,-1);
- AddGadget(wnd2,&colour3a,-1);
- AddGadget(wnd2,&colour4a,-1);
- AddGadget(wnd2,&colour5a,-1);
- AddGadget(wnd2,&colour6a,-1);
-
- SetAPen(wnd1->RPort,7);
- SetDrMd(wnd1->RPort,JAM1);
-
- for (i=0; i<3; i++)
- {
- Move(wnd1->RPort,253+i*24,168);
- Draw(wnd1->RPort,260+i*24,168);
- Move(wnd1->RPort,253+i*24,186);
- Draw(wnd1->RPort,260+i*24,186);
- }
-
- Move(wnd1->RPort,200,163);
- Draw(wnd1->RPort,234,163);
- Draw(wnd1->RPort,234,187);
- Draw(wnd1->RPort,200,187);
- Draw(wnd1->RPort,200,163);
-
- for (i=0; i<4; i++)
- {
- Move(wnd1->RPort,244+24*i,158);
- Draw(wnd1->RPort,244+24*i,195);
- Draw(wnd1->RPort,245+24*i,195);
- Draw(wnd1->RPort,245+24*i,158);
- }
-
- for (i=0; i<2; i++)
- {
- Move(wnd1->RPort,244,157+39*i);
- Draw(wnd1->RPort,317,157+39*i);
- Draw(wnd1->RPort,317,158+39*i);
- Draw(wnd1->RPort,244,158+39*i);
- }
-
- Move(wnd1->RPort,253,166);
- Text(wnd1->RPort,"R G B",7);
-
- ClipBlit
- (
- wnd1->RPort,190,150,
- wnd2->RPort,190,150,
- 128,48,
- 0xc0
- );
-
- RefreshGadgets(&redplus,wnd1,NULL);
- RefreshGadgets(&redplusa,wnd2,NULL);
-
- selectpen(1);
- }
-
-
- void removepaints()
- {
- RemoveGadget(wnd1,&redplus);
- RemoveGadget(wnd1,&greenplus);
- RemoveGadget(wnd1,&blueplus);
- RemoveGadget(wnd1,&redminus);
- RemoveGadget(wnd1,&greenminus);
- RemoveGadget(wnd1,&blueminus);
- RemoveGadget(wnd1,&colour1);
- RemoveGadget(wnd1,&colour2);
- RemoveGadget(wnd1,&colour3);
- RemoveGadget(wnd1,&colour4);
- RemoveGadget(wnd1,&colour5);
- RemoveGadget(wnd1,&colour6);
-
- RemoveGadget(wnd2,&redplusa);
- RemoveGadget(wnd2,&greenplusa);
- RemoveGadget(wnd2,&blueplusa);
- RemoveGadget(wnd2,&redminusa);
- RemoveGadget(wnd2,&greenminusa);
- RemoveGadget(wnd2,&blueminusa);
- RemoveGadget(wnd2,&colour1a);
- RemoveGadget(wnd2,&colour2a);
- RemoveGadget(wnd2,&colour3a);
- RemoveGadget(wnd2,&colour4a);
- RemoveGadget(wnd2,&colour5a);
- RemoveGadget(wnd2,&colour6a);
-
- SetDrMd(wnd1->RPort,JAM1);
- SetAPen(wnd1->RPort,0);
- RectFill(wnd1->RPort,190,150,317,197);
-
- ClipBlit
- (
- wnd1->RPort,190,150,
- wnd2->RPort,190,150,
- 128,48,
- 0xc0
- );
- }
-