#ifndef APP_ScreenC_H
#define APP_ScreenC_H
/******************************************************************************
 **
 **	C++ Class Library for the Amiga© system software.
 **
 **	Copyright (C) 1994 by Armin Vogt  **  EMail: armin@uni-paderborn.de
 **	All Rights Reserved.
 **
 **	$VER: apphome:APlusPlus/intuition/ScreenC.h 1.04 (04.05.94) $
 **	
 ******************************************************************************/

extern "C" {
#include <intuition/screens.h>
}
#include <APlusPlus/graphics/GraphicObject.h>


/******************************************************************************************
         » ScreenC class «

 ******************************************************************************************/

class ScreenC : public GraphicObject
{
   private:
      struct DrawInfo *drawInfo;
      APTR           visualInfo;
      BOOL         lockOnPublic;    // TRUE if this has locked a public screen.

	   BOOL fillInfo();

   protected:
      struct Screen*& screen() { return (struct Screen*&)IObject(); }

   public:
      ScreenC(OWNER,AttrList& attrs);
      ScreenC(OWNER,UBYTE *name);
      ~ScreenC();

      struct Screen *screenPtr() { return (Screen*)IObject(); }

      ULONG setAttributes(AttrList& attrs);
      ULONG getAttribute(Tag,ULONG&);

      struct DrawInfo *getScreenDrawInfo();
      APTR getVisualInfo();

      BOOL isPublicScreen() { return lockOnPublic; }
};

#define SCREENC_NOINFO                       (IOTYPE_SCREEN+1)
#define SCREENC_OPENSCREEN_FAILED            (IOTYPE_SCREEN+2)
#define SCREENC_PUBLICSCREEN_NOT_FOUND       (IOTYPE_SCREEN+3)
#endif
