
#include "includes.h"
#include "installergui_data.h"

/********************************************************************
 *
 *  DESCRIPTION
 *
 */

/********************************************************************
 *
 *  STATIC
 *
 */

/********************************************************************
 *
 *  EXTERN
 *
 */

/********************************************************************
 *
 *  PUBLIC
 *
 */

/********************************************************************
 *
 *  CODE
 *
 */

long __asm igui_QueryDisplay(register __a0 APTR application,
                             register __d0 long object,
                             register __d1 long attribute)
{
  #ifdef DEBUG
  DEBUG_MAKRO
  #endif

  {
    long retval = 0;
    struct Application *app = application;

    struct Screen *scr;
    struct Window *win;

    // get the pointers to the structures
    GetAttr(MUIA_Window_Screen, app->app_MainWindow, (ULONG *) &scr);
    GetAttr(MUIA_Window_Window, app->app_MainWindow, (ULONG *) &win);

    // which object (screen or window)
    switch (object)
    {
      // get a screen attribute
      case GUI_QUERYOBJ_SCREEN:
      {
        switch (attribute)
        {
          case GUI_QUERYATTR_WIDTH:    { retval = scr->Width; break; }
          case GUI_QUERYATTR_HEIGHT:   { retval = scr->Height; break; }
          case GUI_QUERYATTR_DEPTH:    { retval = scr->BitMap.Depth; break; }
          case GUI_QUERYATTR_COLORS:   { retval = 1<<(scr->BitMap.Depth); break; }
        }

        break;
      }

      // get a window attribute
      case GUI_QUERYOBJ_WINDOW:
      {
        switch (attribute)
        {
          case GUI_QUERYATTR_WIDTH:    { retval = win->Width; break; }
          case GUI_QUERYATTR_HEIGHT:   { retval = win->Height; break; }
          case GUI_QUERYATTR_UPPER:    { retval = win->TopEdge - scr->BarHeight - 1; break; }
          case GUI_QUERYATTR_LOWER:    { retval = scr->Height - (win->TopEdge + win->Height); break; }
          case GUI_QUERYATTR_LEFT:     { retval = win->LeftEdge; break; }
          case GUI_QUERYATTR_RIGHT:    { retval = scr->Width - (win->LeftEdge + win->Width); break; }
        }

        break;
      }
    }

    return (retval);
  }
}

