151 lines
5.5 KiB
C++
151 lines
5.5 KiB
C++
// Filename: config_tinydisplay.cxx
|
|
// Created by: drose (24Apr08)
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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."
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
#include "config_tinydisplay.h"
|
|
#include "tinyXGraphicsPipe.h"
|
|
#include "tinyXGraphicsWindow.h"
|
|
#include "tinyWinGraphicsPipe.h"
|
|
#include "tinyWinGraphicsWindow.h"
|
|
#include "tinyOsxGraphicsPipe.h"
|
|
#include "tinyOsxGraphicsWindow.h"
|
|
#include "tinySDLGraphicsPipe.h"
|
|
#include "tinySDLGraphicsWindow.h"
|
|
#include "tinyGraphicsBuffer.h"
|
|
#include "tinyGraphicsStateGuardian.h"
|
|
#include "tinyGeomMunger.h"
|
|
#include "tinyTextureContext.h"
|
|
#include "graphicsPipeSelection.h"
|
|
#include "dconfig.h"
|
|
#include "pandaSystem.h"
|
|
|
|
Configure(config_tinydisplay);
|
|
NotifyCategoryDef(tinydisplay, "display");
|
|
|
|
ConfigureFn(config_tinydisplay) {
|
|
init_libtinydisplay();
|
|
}
|
|
|
|
ConfigVariableString display_cfg
|
|
("display", "",
|
|
PRC_DESC("Specify the X display string for the default display. If this "
|
|
"is not specified, $DISPLAY is used."));
|
|
|
|
ConfigVariableBool x_error_abort
|
|
("x-error-abort", false,
|
|
PRC_DESC("Set this true to trigger and abort (and a stack trace) on receipt "
|
|
"of an error from the X window system. This can make it easier "
|
|
"to discover where these errors are generated."));
|
|
|
|
ConfigVariableInt x_wheel_up_button
|
|
("x-wheel-up-button", 4,
|
|
PRC_DESC("This is the mouse button index of the wheel_up event: which "
|
|
"mouse button number does the system report when the mouse wheel "
|
|
"is rolled one notch up?"));
|
|
|
|
ConfigVariableInt x_wheel_down_button
|
|
("x-wheel-down-button", 5,
|
|
PRC_DESC("This is the mouse button index of the wheel_down event: which "
|
|
"mouse button number does the system report when the mouse wheel "
|
|
"is rolled one notch down?"));
|
|
|
|
ConfigVariableBool show_resize_box
|
|
("show-resize-box", true,
|
|
PRC_DESC("When this variable is true, then resizable OSX Panda windows will "
|
|
"be rendered with a resize control in the lower-right corner. "
|
|
"This is specially handled by Panda, since otherwise the 3-d "
|
|
"window would completely hide any resize control drawn by the "
|
|
"OS. Set this variable false to allow this control to be hidden."));
|
|
|
|
ConfigVariableBool osx_disable_event_loop
|
|
("osx-disable-event-loop", false,
|
|
PRC_DESC("Set this true to disable the window event loop for the Panda "
|
|
"windows. This makes sense only in a publish environment where "
|
|
"the window event loop is already handled by another part of the "
|
|
"app."));
|
|
|
|
ConfigVariableInt osx_mouse_wheel_scale
|
|
("osx-mouse-wheel-scale", 1,
|
|
PRC_DESC("Specify the number of units to spin the Mac mouse wheel to "
|
|
"represent a single wheel_up or wheel_down message."));
|
|
|
|
ConfigVariableBool td_ignore_mipmaps
|
|
("td-ignore-mipmaps", false,
|
|
PRC_DESC("Configure this true to disable use of mipmaps on the "
|
|
"tinydisplay software renderer."));
|
|
|
|
ConfigVariableBool td_perspective_textures
|
|
("td-perspective-textures", true,
|
|
PRC_DESC("Configure this false to disable use of perspective-correct "
|
|
"textures on the tinydisplay software renderer, for a small "
|
|
"performance gain."));
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: init_libtinydisplay
|
|
// Description: Initializes the library. This must be called at
|
|
// least once before any of the functions or classes in
|
|
// this library can be used. Normally it will be
|
|
// called by the static initializers and need not be
|
|
// called explicitly, but special cases exist.
|
|
////////////////////////////////////////////////////////////////////
|
|
void
|
|
init_libtinydisplay() {
|
|
static bool initialized = false;
|
|
if (initialized) {
|
|
return;
|
|
}
|
|
initialized = true;
|
|
|
|
TinyGraphicsBuffer::init_type();
|
|
TinyGraphicsStateGuardian::init_type();
|
|
TinyGeomMunger::init_type();
|
|
TinyTextureContext::init_type();
|
|
|
|
PandaSystem *ps = PandaSystem::get_global_ptr();
|
|
ps->add_system("TinyGL");
|
|
|
|
GraphicsPipeSelection *selection = GraphicsPipeSelection::get_global_ptr();
|
|
|
|
#ifdef IS_LINUX
|
|
TinyXGraphicsPipe::init_type();
|
|
TinyXGraphicsWindow::init_type();
|
|
selection->add_pipe_type(TinyXGraphicsPipe::get_class_type(),
|
|
TinyXGraphicsPipe::pipe_constructor);
|
|
ps->set_system_tag("TinyGL", "native_window_system", "X");
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
TinyWinGraphicsPipe::init_type();
|
|
TinyWinGraphicsWindow::init_type();
|
|
selection->add_pipe_type(TinyWinGraphicsPipe::get_class_type(),
|
|
TinyWinGraphicsPipe::pipe_constructor);
|
|
ps->set_system_tag("TinyGL", "native_window_system", "Win");
|
|
#endif
|
|
|
|
#ifdef IS_OSX
|
|
TinyOsxGraphicsPipe::init_type();
|
|
TinyOsxGraphicsWindow::init_type();
|
|
selection->add_pipe_type(TinyOsxGraphicsPipe::get_class_type(),
|
|
TinyOsxGraphicsPipe::pipe_constructor);
|
|
ps->set_system_tag("TinyGL", "OSX", "OSX");
|
|
#endif
|
|
|
|
#ifdef HAVE_SDL
|
|
TinySDLGraphicsPipe::init_type();
|
|
TinySDLGraphicsWindow::init_type();
|
|
selection->add_pipe_type(TinySDLGraphicsPipe::get_class_type(),
|
|
TinySDLGraphicsPipe::pipe_constructor);
|
|
ps->set_system_tag("TinyGL", "SDL", "SDL");
|
|
#endif
|
|
}
|