#define NULL 0L #include struct NewScreen ns = { 0,0,320,200,6, 1,2,EXTRA_HALFBRITE, CUSTOMSCREEN, NULL, (UBYTE *)"Test screen", NULL, NULL }; struct NewWindow nw = { 20,20,280,160,1,2, CLOSEWINDOW | RAWKEY, WINDOWCLOSE | WINDOWSIZING | WINDOWDEPTH | WINDOWDRAG | GIMMEZEROZERO | SMART_REFRESH | ACTIVATE | NOCAREREFRESH, NULL, NULL, (UBYTE *)"Test Window: borderless or not", NULL, NULL, 20,20, -1, -1, CUSTOMSCREEN }; struct Library *GfxBase, *IntuitionBase, *LayersBase, *OpenLibrary(); struct Screen *screen, *OpenScreen(); struct Window *window, *OpenWindow(); struct RastPort *rp; struct IntuiMessage *im, *WaitPort(), *GetMsg(); struct Gadget *gadget; long int movex, movey, sizex, sizey; struct BorderInfo { BYTE SizeX, SizeY; BYTE MoveX, MoveY; } borderinfo; void DoBorderless(window, borderinfo) struct Window *window; struct BorderInfo *borderinfo; { /* Make window borderless */ register struct Layer_Info *LayerInfo = &window->WScreen->LayerInfo; register struct Layer *Layer = window->RPort->Layer; register long movex; register long movey; register long sizex; register long sizey; if (window->Flags & BORDERLESS) return; LockLayer(LayerInfo, Layer); window->Flags |= BORDERLESS; movex = -window->BorderLeft; movey = -window->BorderTop; sizex = window->BorderRight - movex; sizey = window->BorderBottom - movey; window->BorderLeft = window->BorderTop = window->BorderRight = window->BorderBottom = 0; window->GZZWidth += sizex; window->GZZHeight += sizey; MoveLayer(LayerInfo, Layer, movex, movey); SizeLayer(LayerInfo, Layer, sizex, sizey); UnlockLayer(window->RPort->Layer); borderinfo->MoveX = movex; borderinfo->MoveY = movey; borderinfo->SizeX = sizex; borderinfo->SizeY = sizey; /* Done making borderless */ } void UndoBorderless(window, borderinfo) struct Window *window; struct BorderInfo *borderinfo; { /* ``Another fine mess you got me into!'' */ register struct Layer_Info *LayerInfo = &window->WScreen->LayerInfo; register struct Layer *Layer = window->RPort->Layer; register long movex = borderinfo->MoveX; register long movey = borderinfo->MoveY; register long sizex = borderinfo->SizeX; register long sizey = borderinfo->SizeY; if (window->Flags & BORDERLESS == 0) return; LockLayer(LayerInfo, Layer); SizeLayer(LayerInfo, Layer, -sizex, -sizey); MoveLayer(LayerInfo, Layer, -movex, -movey); window->GZZWidth -= sizex; window->GZZHeight -= sizey; window->BorderLeft = -movex; window->BorderTop = -movey; window->BorderRight = sizex + movex; window->BorderBottom = sizey + movey; window->Flags &= ~BORDERLESS; RefreshWindowFrame(window); UnlockLayer(Layer); /* Done Undoing Borderless */ } main() { long i; char text[50]; GfxBase = OpenLibrary("graphics.library", LIBRARY_VERSION); LayersBase = OpenLibrary("layers.library", LIBRARY_VERSION); IntuitionBase = OpenLibrary("intuition.library", LIBRARY_VERSION); screen = OpenScreen(&ns); nw.Screen = screen; window = OpenWindow(&nw); DoBorderless(window, &borderinfo); rp = window->RPort; SetDrMd(rp, (long)JAM1); for (i=0; i < 64; i++) { sprintf(text, "This Is Color %2ld", i); Move(rp, i < 32? 10L: 150L, 10L + 4*(i & 31)); SetAPen(rp, i); Text(rp, &text[0], (long) strlen(text)); } printf("FirstGadget points at %lx\n", window->FirstGadget); for(gadget = window->FirstGadget; gadget; gadget=gadget->NextGadget) { PrintGadget(gadget); getchar(); } UndoBorderless(window, &borderinfo); getchar(); CloseWindow(window); CloseScreen(screen); CloseLibrary(IntuitionBase); CloseLibrary(LayersBase); CloseLibrary(GfxBase); } PrintGadget(gadget) struct Gadget *gadget; { short Bits; printf("----------------------------------------------------------\n"); printf("Struct Gadget:\n"); printf("NextGadget.....%08lx\n",gadget->NextGadget); printf("LeftEdge.......%d(dec)\n", gadget->LeftEdge); printf("TopEdge........%d(dec)\n", gadget->TopEdge); printf("Width..........%d(dec)\n", gadget->Width); printf("Height.........%d(dec)\n", gadget->Height); printf("Flags..........%04x\n", gadget->Flags); Bits = gadget->Flags; switch (Bits & GADGHIGHBITS) { case GADGHCOMP: printf(" GADGHCOMP\n"); break; case GADGHBOX: printf(" GADGHBOX\n"); break; case GADGHIMAGE: printf(" GADGHIMAGE\n"); break; case GADGHNONE: printf(" GADGHNONE\n"); break; } if (Bits & GADGIMAGE) printf(" GADGIMAGE\n"); if (Bits & GRELBOTTOM) printf(" GRELBOTTOM\n"); if (Bits & GRELRIGHT) printf(" GRELRIGHT\n"); if (Bits & GRELWIDTH) printf(" GRELWIDTH\n"); if (Bits & GRELHEIGHT) printf(" GRELHEIGHT\n"); if (Bits & SELECTED) printf(" SELECTED\n"); if (Bits & GADGDISABLED) printf(" GADGDISABLED\n"); printf("Activation.....%04x\n", gadget->Activation); Bits = gadget->Activation; if (Bits & RELVERIFY) printf(" RELVERIFY\n"); if (Bits & GADGIMMEDIATE) printf(" GADGIMMEDIATE\n"); if (Bits & ENDGADGET) printf(" ENDGADGET\n"); if (Bits & FOLLOWMOUSE) printf(" FOLLOWMOUSE\n"); if (Bits & RIGHTBORDER) printf(" RIGHTBORDER\n"); if (Bits & LEFTBORDER) printf(" LEFTBORDER\n"); if (Bits & TOPBORDER) printf(" TOPBORDER\n"); if (Bits & BOTTOMBORDER) printf(" BOTTOMBORDER\n"); if (Bits & TOGGLESELECT) printf(" TOGGLESELECT\n"); if (Bits & STRINGCENTER) printf(" STRINGCENTER\n"); if (Bits & STRINGRIGHT) printf(" STRINGRIGHT\n"); if (Bits & LONGINT) printf(" LONGINT\n"); if (Bits & ALTKEYMAP) printf(" ALTKEYMAP\n"); printf("GadgetType.....%04x\n", gadget->GadgetType); Bits = gadget->GadgetType; if (Bits & SYSGADGET) printf(" SYSGADGET\n"); if (Bits & SCRGADGET) printf(" SCRGADGET\n"); if (Bits & GZZGADGET) printf(" GZZGADGET\n"); if (Bits & REQGADGET) printf(" REQGADGET\n"); switch (Bits & 0x00F0) { case SIZING: printf(" SIZING\n"); break; case WDRAGGING: printf(" WDRAGGING\n"); break; case SDRAGGING: printf(" SDRAGGING\n"); break; case WUPFRONT: printf(" WUPFRONT\n"); break; case SUPFRONT: printf(" SUPFRONT\n"); break; case WDOWNBACK: printf(" WDOWNBACK\n"); break; case SDOWNBACK: printf(" SDOWNBACK\n"); break; case CLOSE: printf(" CLOSE\n"); break; default: printf(" Unknown System Gadget\n"); } switch (Bits & 0x000F) { case BOOLGADGET: printf(" BOOLGADGET\n"); break; case GADGET0002: printf(" GADGET0002\n"); break; case PROPGADGET: printf(" PROPGADGET\n"); break; case STRGADGET: printf(" STRGADGET\n"); break; default: printf(" Unknown Appli Gadget\n"); } printf("GadgetRender...%08lx\n",gadget->GadgetRender); printf("SelectRender...%08lx\n",gadget->SelectRender); printf("GadgetText.....%08lx\n",gadget->GadgetText); printf("MutualExclude..%08lx\n",gadget->MutualExclude); printf("SpecialInfo....%08lx\n",gadget->SpecialInfo); printf("GadgetID.......%04x\n", gadget->GadgetID); printf("UserData.......%08lx\n",gadget->UserData); }