home *** CD-ROM | disk | FTP | other *** search
/ YPA: Your Privacy Assured / YPA.ISO / other_goodies / utilities / amigaguid.lha / AmigaGuide / AG_V39 / Source / HyperBrowser / screen.c < prev    next >
C/C++ Source or Header  |  1993-01-08  |  5KB  |  130 lines

  1. /* screen.c
  2.  *
  3.  * (c) Copyright 1992 Commodore-Amiga, Inc.  All rights reserved.
  4.  *
  5.  * This software is provided as-is and is subject to change; no warranties
  6.  * are made.  All use is at your own risk.  No liability or responsibility
  7.  * is assumed.
  8.  *
  9.  */
  10.  
  11. #include "hyperbrowser.h"
  12.  
  13. /*****************************************************************************/
  14.  
  15. STRPTR ScreenType (struct GlobalData * gd, struct Screen * scr)
  16. {
  17.     STRPTR retval = NULL;
  18.  
  19.     switch (scr->Flags & SCREENTYPE)
  20.     {
  21.     case WBENCHSCREEN:
  22.         retval = "Workbench";
  23.         break;
  24.  
  25.     case PUBLICSCREEN:
  26.         retval = "Public";
  27.         break;
  28.  
  29.     case CUSTOMSCREEN:
  30.         retval = "Custom";
  31.         break;
  32.     }
  33.  
  34.     return (retval);
  35. }
  36.  
  37. /*****************************************************************************/
  38.  
  39. STRPTR DumpScreenFlags (struct GlobalData * gd, struct Screen * scr)
  40. {
  41.     UWORD flags = scr->Flags;
  42.  
  43.     memset (gd->gd_FBuffer, 0, sizeof (gd->gd_FBuffer));
  44.     if (flags & SHOWTITLE)
  45.     strcat (gd->gd_FBuffer, "showtitle ");
  46.     if (flags & CUSTOMBITMAP)
  47.     strcat (gd->gd_FBuffer, "custombitmap ");
  48.     if (flags & SCREENQUIET)
  49.     strcat (gd->gd_FBuffer, "screenquiet ");
  50.     if (flags & NS_EXTENDED)
  51.     strcat (gd->gd_FBuffer, "extended ");
  52.     if (flags & AUTOSCROLL)
  53.     strcat (gd->gd_FBuffer, "autoscroll ");
  54.     return (gd->gd_FBuffer);
  55. }
  56.  
  57. /*****************************************************************************/
  58.  
  59. void showscreenlist (struct GlobalData * gd)
  60. {
  61.     struct Screen *scr;
  62.     ULONG lock;
  63.  
  64.     /* Make the title */
  65.     strcpy (gd->gd_Node, "@{b}Screen Name                                Address@{ub}\n");
  66.  
  67.     /* Build the screen list */
  68.     lock = LockIBase (0);
  69.     for (scr = IntuitionBase->FirstScreen; scr; scr = scr->NextScreen)
  70.     {
  71.     bprintf (gd, "@{\"%-40s\" link HYPERNOZY.SCREEN.(%08lx)} @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)}\n",
  72.          scr->Title, scr, scr, scr);
  73.     }
  74.     UnlockIBase (lock);
  75. }
  76.  
  77. /*****************************************************************************/
  78.  
  79. void showscreen (struct GlobalData * gd, ULONG address)
  80. {
  81.     struct Screen *scr;
  82.     struct Window *win;
  83.     ULONG lock;
  84.  
  85.     /* Just in case we don't find the screen */
  86.     strcpy (gd->gd_Node, "@{b}screen gone@{ub}\n");
  87.  
  88.     /* Search for the screen */
  89.     lock = LockIBase (0);
  90.     for (scr = IntuitionBase->FirstScreen; scr; scr = scr->NextScreen)
  91.     {
  92.     /* Is this the screen we were looking for? */
  93.     if (scr == (struct Screen *) address)
  94.     {
  95.         /* Build the screen information */
  96.         strcpy (gd->gd_Node, "@{b}Screen@{ub}\n\n");
  97.         bprintf (gd, "        Address: @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)}\n", (void *) address, (void *) address);
  98.         bprintf (gd, "    Next Screen: @{\"%08lx\" link HYPERNOZY.SCREEN.(%08lx)}\n", scr->NextScreen, scr->NextScreen);
  99.         bprintf (gd, "         Offset: %ld, %ld\n", (void *) scr->LeftEdge, (void *) scr->TopEdge);
  100.         bprintf (gd, "     Dimensions: %ld x %ld x %ld\n", (void *) scr->Width, (void *) scr->Height, (void *) scr->RastPort.BitMap->Depth);
  101.         bprintf (gd, "          Flags: %s\n", DumpScreenFlags (gd, scr));
  102.         bprintf (gd, "          Title: %s\n", ((scr->Title) ? scr->Title : ""));
  103.         bprintf (gd, "  Default Title: %s\n", ((scr->DefaultTitle) ? scr->DefaultTitle : ""));
  104.         bprintf (gd, "           Type: %s\n", ScreenType (gd, scr));
  105.         bprintf (gd, "           Font: @{\"%08lx\" link HYPERNOZY.FONT.(%08lx)}\n", scr->Font, scr->Font);
  106.         bprintf (gd, "       ViewPort: @{\"%08lx\" link HYPERNOZY.VIEWPORT.(%08lx)}\n", &scr->ViewPort, &scr->ViewPort);
  107.         bprintf (gd, "       RastPort: @{\"%08lx\" link HYPERNOZY.RASTPORT.(%08lx)}\n", &scr->RastPort, &scr->RastPort);
  108.         bprintf (gd, "         BitMap: @{\"%08lx\" link HYPERNOZY.BITMAP.(%08lx)}\n", scr->RastPort.BitMap);
  109. #if 0
  110.         bprintf (gd, "   BitMap Flags: %s\n", DumpBitMapFlags (scr));
  111. #endif
  112.         bprintf (gd, "      LayerInfo: @{\"%08lx\" link HYPERNOZY.LAYERINFO.(%08lx)}\n", &scr->LayerInfo, &scr->LayerInfo);
  113.         bprintf (gd, "   First Gadget: @{\"%08lx\" link HYPERNOZY.GADGETLIST.(%08lx)}\n", scr->FirstGadget, scr->FirstGadget);
  114.         bprintf (gd, "  Detail, Block: %ld, %ld\n", (void *) scr->DetailPen, (void *) scr->BlockPen);
  115.         bprintf (gd, "       BarLayer: @{\"%08lx\" link HYPERNOZY.LAYER.(%08lx)}\n", scr->BarLayer, scr->BarLayer);
  116.         bprintf (gd, "        ExtData: @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)}\n", scr->ExtData, scr->ExtData);
  117.         bprintf (gd, "       UserData: @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)}\n", scr->UserData, scr->UserData);
  118.  
  119.         /* Build the window list */
  120.         strcat (gd->gd_Node, "\n@{b}Windows@{ub}\n\n");
  121.         for (win = scr->FirstWindow; win; win = win->NextWindow)
  122.         bprintf (gd, "  @{\"%-40s\" link HYPERNOZY.WINDOW.(%08lx)} @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)}\n",
  123.              win->Title, win, win, win);
  124.         break;
  125.     }
  126.     }
  127.     UnlockIBase (lock);
  128.  
  129. }
  130.