open_toontown_panda3d/panda/src/display/callbackGraphicsWindow.I

261 lines
11 KiB
Plaintext

// Filename: callbackGraphicsWindow.I
// Created by: drose (06Jan11)
//
////////////////////////////////////////////////////////////////////
//
// 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."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::set_events_callback
// Access: Published
// Description: Sets the CallbackObject that will be notified when
// this window is polled for window events, including
// mouse and keyboard events, as well as window resize
// events and other system-generated events.
//
// This callback will receive a
// CallbackGraphicsWindow::EventsCallbackData.
//
// This callback should process any system-generated
// events, and call data->upcall() to process requested
// property change requests made via
// request_properties().
////////////////////////////////////////////////////////////////////
INLINE void CallbackGraphicsWindow::
set_events_callback(CallbackObject *object) {
_events_callback = object;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::clear_events_callback
// Access: Published
// Description: Removes the callback set by an earlier call to
// set_events_callback().
////////////////////////////////////////////////////////////////////
INLINE void CallbackGraphicsWindow::
clear_events_callback() {
set_events_callback(NULL);
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::get_events_callback
// Access: Published
// Description: Returns the CallbackObject set by set_events_callback().
////////////////////////////////////////////////////////////////////
INLINE CallbackObject *CallbackGraphicsWindow::
get_events_callback() const {
return _events_callback;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::set_properties_callback
// Access: Published
// Description: Sets the CallbackObject that will be notified when
// this window receives a property change request from
// user code (e.g. via request_properties).
//
// This callback will receive a
// CallbackGraphicsWindow::PropertiesCallbackData, which
// provides a get_properties() method that returns a
// modifiable reference to a WindowsProperties object.
// This object will contain only those properties
// requested by user code. The callback should handle
// any of the requests it finds, including and
// especially set_open(), and remove them from the
// object when it has handled them. Any unhandled
// properties should be left unchanged in the properties
// object.
////////////////////////////////////////////////////////////////////
INLINE void CallbackGraphicsWindow::
set_properties_callback(CallbackObject *object) {
_properties_callback = object;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::clear_properties_callback
// Access: Published
// Description: Removes the callback set by an earlier call to
// set_properties_callback().
////////////////////////////////////////////////////////////////////
INLINE void CallbackGraphicsWindow::
clear_properties_callback() {
set_properties_callback(NULL);
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::get_properties_callback
// Access: Published
// Description: Returns the CallbackObject set by set_properties_callback().
////////////////////////////////////////////////////////////////////
INLINE CallbackObject *CallbackGraphicsWindow::
get_properties_callback() const {
return _properties_callback;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::set_render_callback
// Access: Published
// Description: Sets the CallbackObject that will be notified when
// this window is invoked (in the draw thread) to render
// its contents, and/or flip the graphics buffers.
//
// This callback will actually serve several different
// functions. It receivces a RenderCallbackData, and
// you can query data->get_callback_type() to return the
// actual function of each particular callback.
////////////////////////////////////////////////////////////////////
INLINE void CallbackGraphicsWindow::
set_render_callback(CallbackObject *object) {
_render_callback = object;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::clear_render_callback
// Access: Published
// Description: Removes the callback set by an earlier call to
// set_render_callback().
////////////////////////////////////////////////////////////////////
INLINE void CallbackGraphicsWindow::
clear_render_callback() {
set_render_callback(NULL);
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::get_render_callback
// Access: Published
// Description: Returns the CallbackObject set by set_render_callback().
////////////////////////////////////////////////////////////////////
INLINE CallbackObject *CallbackGraphicsWindow::
get_render_callback() const {
return _render_callback;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::WindowCallbackData::Constructor
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
INLINE CallbackGraphicsWindow::WindowCallbackData::
WindowCallbackData(CallbackGraphicsWindow *window) : _window(window) {
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::WindowCallbackData::get_window
// Access: Published
// Description: Returns the window this callback was triggered from.
////////////////////////////////////////////////////////////////////
INLINE CallbackGraphicsWindow *CallbackGraphicsWindow::WindowCallbackData::
get_window() const {
return _window;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::EventsCallbackData::Constructor
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
INLINE CallbackGraphicsWindow::EventsCallbackData::
EventsCallbackData(CallbackGraphicsWindow *window) :
WindowCallbackData(window)
{
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::PropertiesCallbackData::Constructor
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
INLINE CallbackGraphicsWindow::PropertiesCallbackData::
PropertiesCallbackData(CallbackGraphicsWindow *window, WindowProperties &properties) :
WindowCallbackData(window),
_properties(properties)
{
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::PropertiesCallbackData::get_properties
// Access: Published
// Description: Returns the WindowProperties object that this
// callback should process. Any properties that are
// handled should be removed from this object;
// properties that are unhandled should be left alone.
////////////////////////////////////////////////////////////////////
INLINE WindowProperties &CallbackGraphicsWindow::PropertiesCallbackData::
get_properties() const {
return _properties;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::RenderCallbackData::Constructor
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
INLINE CallbackGraphicsWindow::RenderCallbackData::
RenderCallbackData(CallbackGraphicsWindow *window, RenderCallbackType callback_type, FrameMode frame_mode) :
WindowCallbackData(window),
_callback_type(callback_type),
_frame_mode(frame_mode),
_render_flag(true)
{
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::RenderCallbackData::get_callback_type
// Access: Published
// Description: Since the render callback is shared for several
// functions, this method is needed to indicate which
// particular function is being invoked with this
// callback.
////////////////////////////////////////////////////////////////////
INLINE CallbackGraphicsWindow::RenderCallbackType CallbackGraphicsWindow::RenderCallbackData::
get_callback_type() const {
return _callback_type;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::RenderCallbackData::get_frame_mode
// Access: Published
// Description: If the callback type (returned by get_callback_type)
// is RCT_begin_frame or RCT_end_frame, then this method
// will return the particular frame mode indicating
// what, precisely, we want to do this frame.
////////////////////////////////////////////////////////////////////
INLINE GraphicsOutput::FrameMode CallbackGraphicsWindow::RenderCallbackData::
get_frame_mode() const {
return _frame_mode;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::RenderCallbackData::set_render_flag
// Access: Published
// Description: If the callback type is RCT_begin_frame, this call is
// available to specify the return value from the
// begin_frame() call. If this is true (the default),
// the frame is rendered normally; if it is false, the
// frame is omitted.
////////////////////////////////////////////////////////////////////
INLINE void CallbackGraphicsWindow::RenderCallbackData::
set_render_flag(bool render_flag) {
_render_flag = render_flag;
}
////////////////////////////////////////////////////////////////////
// Function: CallbackGraphicsWindow::RenderCallbackData::get_render_flag
// Access: Published
// Description: Returns the current setting of the render flag. See
// set_render_flag().
////////////////////////////////////////////////////////////////////
INLINE bool CallbackGraphicsWindow::RenderCallbackData::
get_render_flag() const {
return _render_flag;
}