14 #ifndef COCOAGRAPHICSWINDOW_H 15 #define COCOAGRAPHICSWINDOW_H 22 #import <AppKit/NSEvent.h> 23 #import <AppKit/NSView.h> 24 #import <AppKit/NSWindow.h> 26 #import <CoreVideo/CoreVideo.h> 35 const std::string &name,
51 void handle_move_event();
52 void handle_resize_event();
53 void handle_minimize_event(
bool minimized);
54 void handle_foreground_event(
bool foreground);
55 bool handle_close_request();
56 void handle_close_event();
57 void handle_key_event(NSEvent *event);
58 void handle_mouse_button_event(
int button,
bool down);
59 void handle_mouse_moved_event(
bool in_window,
double x,
double y,
bool absolute);
60 void handle_wheel_event(
double x,
double y);
67 virtual void close_window();
68 virtual bool open_window();
70 #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1060 71 CGDisplayModeRef find_display_mode(
int width,
int height);
72 bool do_switch_fullscreen(CGDisplayModeRef mode);
74 CFDictionaryRef find_display_mode(
int width,
int height);
75 bool do_switch_fullscreen(CFDictionaryRef mode);
78 virtual void mouse_mode_absolute();
79 virtual void mouse_mode_relative();
82 NSImage *load_image(
const Filename &filename);
84 void handle_modifier(NSUInteger modifierFlags, NSUInteger mask,
ButtonHandle button);
91 NSUInteger _modifier_keys;
92 UInt32 _dead_key_state;
93 CGDirectDisplayID _display;
96 bool _context_needs_update;
97 bool _vsync_enabled =
false;
99 #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1060 100 CGDisplayModeRef _fullscreen_mode;
101 CGDisplayModeRef _windowed_mode;
103 CFDictionaryRef _fullscreen_mode;
104 CFDictionaryRef _windowed_mode;
118 static void init_type() {
119 GraphicsWindow::init_type();
121 GraphicsWindow::get_class_type());
124 return get_class_type();
126 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual void end_frame(FrameMode mode, Thread *current_thread)
This function will be called within the draw thread after rendering is completed for a given frame.
virtual void end_flip()
This function will be called within the draw thread after begin_flip() has been called on all windows...
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual bool begin_frame(FrameMode mode, Thread *current_thread)
This function will be called within the draw thread before beginning rendering for a given frame.
A window, fullscreen or on a desktop, into which a graphics device sends its output for interactive d...
virtual void set_properties_now(WindowProperties &properties)
Applies the requested set of properties to the window, if possible, for instance to request a change ...
A container for the various kinds of properties we might ask to have on a graphics window before we o...
NSView * get_nsview() const
Returns a pointer to the underlying NSView.
virtual bool move_pointer(int device, int x, int y)
Forces the pointer to the indicated position within the window, if possible.
The name of a file, such as a texture file or an Egg file.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
An object to create GraphicsOutputs that share a particular 3-D API.
NSWindow * get_nswindow() const
Returns a pointer to the underlying NSWindow.
virtual void process_events()
Do whatever processing is necessary to ensure that the window responds to user events.
This is a base class for the various different classes that represent the result of a frame of render...
A thread; that is, a lightweight process.
Encapsulates all the communication with a particular instance of a given rendering backend.
virtual ButtonMap * get_keyboard_map() const
Returns a ButtonMap containing the association between raw buttons and virtual buttons.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class is the main interface to controlling the render process.
TypeHandle is the identifier used to differentiate C++ class types.
A container for the various kinds of properties we might ask to have on a graphics frameBuffer before...
An interface to the Cocoa system for managing OpenGL windows under Mac OS X.