// Filename: windowProperties.h // Created by: drose (13Aug02) // //////////////////////////////////////////////////////////////////// // // PANDA 3D SOFTWARE // Copyright (c) Carnegie Mellon University. All rights reserved. // // All use of this software is subject to the terms of the revised BSD // license. You should have received a copy of this license along // with this source code in a file named "LICENSE." // //////////////////////////////////////////////////////////////////// #ifndef WINDOWPROPERTIES_H #define WINDOWPROPERTIES_H #include "pandabase.h" #include "filename.h" #include "pnotify.h" //////////////////////////////////////////////////////////////////// // Class : WindowProperties // Description : A container for the various kinds of properties we // might ask to have on a graphics window before we open // it. This also serves to hold the current properties // for a window after it has been opened. //////////////////////////////////////////////////////////////////// class EXPCL_PANDA_DISPLAY WindowProperties { PUBLISHED: enum ZOrder { Z_bottom, Z_normal, Z_top, }; enum MouseMode { M_absolute, M_relative, }; WindowProperties(); INLINE WindowProperties(const WindowProperties ©); void operator = (const WindowProperties ©); INLINE ~WindowProperties(); static WindowProperties get_default(); static WindowProperties size(int x_size, int y_size); bool operator == (const WindowProperties &other) const; INLINE bool operator != (const WindowProperties &other) const; void clear(); INLINE bool is_any_specified() const; INLINE void set_origin(int x_origin, int y_origin); INLINE int get_x_origin() const; INLINE int get_y_origin() const; INLINE bool has_origin() const; INLINE void clear_origin(); INLINE void set_size(int x_size, int y_size); INLINE int get_x_size() const; INLINE int get_y_size() const; INLINE bool has_size() const; INLINE void clear_size(); INLINE bool has_mouse_mode() const; INLINE void set_mouse_mode(MouseMode mode); INLINE MouseMode get_mouse_mode() const; INLINE void clear_mouse_mode(); INLINE void set_title(const string &title); INLINE const string &get_title() const; INLINE bool has_title() const; INLINE void clear_title(); INLINE void set_undecorated(bool undecorated); INLINE bool get_undecorated() const; INLINE bool has_undecorated() const; INLINE void clear_undecorated(); INLINE void set_fixed_size(bool fixed_size); INLINE bool get_fixed_size() const; INLINE bool has_fixed_size() const; INLINE void clear_fixed_size(); INLINE void set_fullscreen(bool fullscreen); INLINE bool get_fullscreen() const; INLINE bool has_fullscreen() const; INLINE void clear_fullscreen(); INLINE void set_foreground(bool foreground); INLINE bool get_foreground() const; INLINE bool has_foreground() const; INLINE void clear_foreground(); INLINE void set_minimized(bool minimized); INLINE bool get_minimized() const; INLINE bool has_minimized() const; INLINE void clear_minimized(); INLINE void set_raw_mice(bool raw_mice); INLINE bool get_raw_mice() const; INLINE bool has_raw_mice() const; INLINE void clear_raw_mice(); INLINE void set_open(bool open); INLINE bool get_open() const; INLINE bool has_open() const; INLINE void clear_open(); INLINE void set_cursor_hidden(bool cursor_hidden); INLINE bool get_cursor_hidden() const; INLINE bool has_cursor_hidden() const; INLINE void clear_cursor_hidden(); INLINE void set_icon_filename(const Filename &icon_filename); INLINE const Filename &get_icon_filename() const; INLINE bool has_icon_filename() const; INLINE void clear_icon_filename(); INLINE void set_cursor_filename(const Filename &cursor_filename); INLINE const Filename &get_cursor_filename() const; INLINE bool has_cursor_filename() const; INLINE void clear_cursor_filename(); INLINE void set_z_order(ZOrder z_order); INLINE ZOrder get_z_order() const; INLINE bool has_z_order() const; INLINE void clear_z_order(); INLINE void set_parent_window(size_t parent); INLINE size_t get_parent_window() const; INLINE bool has_parent_window() const; INLINE void clear_parent_window(); INLINE void set_subprocess_window(const Filename &filename); INLINE const Filename &get_subprocess_window() const; INLINE bool has_subprocess_window() const; INLINE void clear_subprocess_window(); void add_properties(const WindowProperties &other); void output(ostream &out) const; private: // This bitmask indicates which of the parameters in the properties // structure have been filled in by the user, and which remain // unspecified. enum Specified { S_origin = 0x00001, S_size = 0x00002, S_title = 0x00004, S_undecorated = 0x00008, S_fullscreen = 0x00010, S_foreground = 0x00020, S_minimized = 0x00040, S_open = 0x00080, S_cursor_hidden = 0x00100, S_fixed_size = 0x00200, S_z_order = 0x00400, S_icon_filename = 0x00800, S_cursor_filename = 0x01000, S_mouse_mode = 0x02000, S_parent_window = 0x04000, S_raw_mice = 0x08000, S_subprocess_window = 0x10000, }; // This bitmask represents the true/false settings for various // boolean flags (assuming the corresponding S_* bit has been set, // above). enum Flags { F_undecorated = S_undecorated, F_fullscreen = S_fullscreen, F_foreground = S_foreground, F_minimized = S_minimized, F_open = S_open, F_cursor_hidden = S_cursor_hidden, F_fixed_size = S_fixed_size, F_raw_mice = S_raw_mice, }; int _specified; int _x_origin; int _y_origin; int _x_size; int _y_size; MouseMode _mouse_mode; string _title; Filename _cursor_filename; Filename _icon_filename; ZOrder _z_order; unsigned int _flags; size_t _parent_window; // a HWND or WindowRef or .. Filename _subprocess_window; }; EXPCL_PANDA_DISPLAY ostream & operator << (ostream &out, WindowProperties::ZOrder z_order); EXPCL_PANDA_DISPLAY istream & operator >> (istream &in, WindowProperties::ZOrder &z_order); EXPCL_PANDA_DISPLAY ostream & operator << (ostream &out, WindowProperties::MouseMode mode); EXPCL_PANDA_DISPLAY istream & operator >> (istream &in, WindowProperties::MouseMode &mode); INLINE ostream &operator << (ostream &out, const WindowProperties &properties); #include "windowProperties.I" #endif