*** empty log message ***

This commit is contained in:
David Rose 2001-01-26 19:38:49 +00:00
parent 9a77c5f235
commit c49b34ba44
10 changed files with 126 additions and 62 deletions

View File

@ -6,9 +6,11 @@
#include "panda.h" #include "panda.h"
#include <config_device.h> #include <config_device.h>
#include <config_display.h>
#include <config_graph.h> #include <config_graph.h>
#include <config_sgraph.h>
#include <config_pnmimagetypes.h> #include <config_pnmimagetypes.h>
#include <config_pstats.h>
#include <config_sgraph.h>
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: init_libpanda // Function: init_libpanda
@ -21,7 +23,9 @@
void void
init_libpanda() { init_libpanda() {
init_libdevice(); init_libdevice();
init_libdisplay();
init_libgraph(); init_libgraph();
init_libsgraph();
init_libpnmimagetypes(); init_libpnmimagetypes();
init_libpstatclient();
init_libsgraph();
} }

View File

@ -25,6 +25,7 @@
textureContext.cxx textureContext.h textureContext.cxx textureContext.h
#define INSTALL_HEADERS \ #define INSTALL_HEADERS \
config_display.h \
displayRegion.I displayRegion.h displayRegionStack.I \ displayRegion.I displayRegion.h displayRegionStack.I \
displayRegionStack.h frameBufferStack.I frameBufferStack.h \ displayRegionStack.h frameBufferStack.I frameBufferStack.h \
graphicsChannel.I graphicsChannel.h graphicsLayer.I graphicsLayer.h \ graphicsChannel.I graphicsChannel.h graphicsLayer.I graphicsLayer.h \

View File

@ -25,35 +25,7 @@ static Config::ConfigTable::Symbol *preferred_window;
static Config::ConfigTable::Symbol *preferred_gsg; static Config::ConfigTable::Symbol *preferred_gsg;
ConfigureFn(config_display) { ConfigureFn(config_display) {
GraphicsStateGuardian::init_type(); init_libdisplay();
GraphicsStateGuardian::GsgParam::init_type();
GraphicsStateGuardian::GsgWindow::init_type();
SavedFrameBuffer::init_type();
GraphicsPipe::init_type();
GraphicsPipe::PipeParam::init_type();
GraphicsPipe::PipeSpec::init_type();
InteractiveGraphicsPipe::init_type();
NoninteractiveGraphicsPipe::init_type();
GraphicsWindow::init_type();
GraphicsWindow::WindowParam::init_type();
GraphicsWindow::WindowProps::init_type();
GraphicsWindow::WindowPipe::init_type();
GraphicsChannel::init_type();
HardwareChannel::init_type();
TextureContext::init_type();
disp = new Config::ConfigTable::Symbol;
guard = new Config::ConfigTable::Symbol;
preferred_pipe = new Config::ConfigTable::Symbol;
preferred_window = new Config::ConfigTable::Symbol;
preferred_gsg = new Config::ConfigTable::Symbol;
config_display.GetAll("load-display", *disp);
config_display.GetAll("load-gsg", *guard);
config_display.GetAll("preferred-pipe", *preferred_pipe);
config_display.GetAll("preferred-window", *preferred_window);
config_display.GetAll("preferred-gsg", *preferred_gsg);
} }
const string pipe_spec_machine = config_display.GetString("pipe-machine", ""); const string pipe_spec_machine = config_display.GetString("pipe-machine", "");
@ -111,3 +83,50 @@ Config::ConfigTable::Symbol::iterator preferred_gsg_begin(void) {
Config::ConfigTable::Symbol::iterator preferred_gsg_end(void) { Config::ConfigTable::Symbol::iterator preferred_gsg_end(void) {
return preferred_gsg->end(); return preferred_gsg->end();
} }
////////////////////////////////////////////////////////////////////
// Function: init_libdisplay
// 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_libdisplay() {
static bool initialized = false;
if (initialized) {
return;
}
initialized = true;
GraphicsStateGuardian::init_type();
GraphicsStateGuardian::GsgParam::init_type();
GraphicsStateGuardian::GsgWindow::init_type();
SavedFrameBuffer::init_type();
GraphicsPipe::init_type();
GraphicsPipe::PipeParam::init_type();
GraphicsPipe::PipeSpec::init_type();
InteractiveGraphicsPipe::init_type();
NoninteractiveGraphicsPipe::init_type();
GraphicsWindow::init_type();
GraphicsWindow::WindowParam::init_type();
GraphicsWindow::WindowProps::init_type();
GraphicsWindow::WindowPipe::init_type();
GraphicsChannel::init_type();
HardwareChannel::init_type();
TextureContext::init_type();
disp = new Config::ConfigTable::Symbol;
guard = new Config::ConfigTable::Symbol;
preferred_pipe = new Config::ConfigTable::Symbol;
preferred_window = new Config::ConfigTable::Symbol;
preferred_gsg = new Config::ConfigTable::Symbol;
config_display.GetAll("load-display", *disp);
config_display.GetAll("load-gsg", *guard);
config_display.GetAll("preferred-pipe", *preferred_pipe);
config_display.GetAll("preferred-window", *preferred_window);
config_display.GetAll("preferred-gsg", *preferred_gsg);
}

View File

@ -38,4 +38,6 @@ extern Config::ConfigTable::Symbol::iterator preferred_window_end();
extern Config::ConfigTable::Symbol::iterator preferred_gsg_begin(); extern Config::ConfigTable::Symbol::iterator preferred_gsg_begin();
extern Config::ConfigTable::Symbol::iterator preferred_gsg_end(); extern Config::ConfigTable::Symbol::iterator preferred_gsg_end();
extern EXPCL_PANDA void init_libdisplay();
#endif /* CONFIG_DISPLAY_H */ #endif /* CONFIG_DISPLAY_H */

View File

@ -11,6 +11,7 @@ Configure(config_pstats);
NotifyCategoryDef(pstats, ""); NotifyCategoryDef(pstats, "");
ConfigureFn(config_pstats) { ConfigureFn(config_pstats) {
init_libpstatclient();
} }
string get_pstats_name() { string get_pstats_name() {
@ -29,3 +30,21 @@ const double pstats_target_frame_rate = config_pstats.GetDouble("pstats-target-f
// not the client. // not the client.
const bool pstats_scroll_mode = config_pstats.GetBool("pstats-scroll-mode", true); const bool pstats_scroll_mode = config_pstats.GetBool("pstats-scroll-mode", true);
const double pstats_history = config_pstats.GetDouble("pstats-history", 30.0); const double pstats_history = config_pstats.GetDouble("pstats-history", 30.0);
////////////////////////////////////////////////////////////////////
// Function: init_libpstatclient
// 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_libpstatclient() {
static bool initialized = false;
if (initialized) {
return;
}
initialized = true;
}

View File

@ -23,4 +23,6 @@ extern EXPCL_PANDA const double pstats_target_frame_rate;
extern EXPCL_PANDA const bool pstats_scroll_mode; extern EXPCL_PANDA const bool pstats_scroll_mode;
extern EXPCL_PANDA const double pstats_history; extern EXPCL_PANDA const double pstats_history;
extern EXPCL_PANDA void init_libpstatclient();
#endif #endif

View File

@ -15,18 +15,6 @@ RegistryNode(ButtonHandle handle, const string &name) :
_handle(handle), _name(name) { _handle(handle), _name(name) {
} }
////////////////////////////////////////////////////////////////////
// Function: ButtonRegistry::get_name
// Access: Public
// Description: Returns the name of the indicated button.
////////////////////////////////////////////////////////////////////
INLINE string ButtonRegistry::
get_name(ButtonHandle button) const {
RegistryNode *rnode = look_up(button);
nassertr(rnode != (RegistryNode *)NULL, "");
return rnode->_name;
}
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: ButtonRegistry::ptr // Function: ButtonRegistry::ptr
// Access: Public, Static // Access: Public, Static
@ -40,3 +28,15 @@ ptr() {
} }
return _global_pointer; return _global_pointer;
} }
////////////////////////////////////////////////////////////////////
// Function: ButtonRegistry::get_name
// Access: Public
// Description: Returns the name of the indicated button.
////////////////////////////////////////////////////////////////////
INLINE string ButtonRegistry::
get_name(ButtonHandle button) const {
RegistryNode *rnode = look_up(button);
nassertr(rnode != (RegistryNode *)NULL, "");
return rnode->_name;
}

View File

@ -17,9 +17,17 @@ ButtonRegistry *ButtonRegistry::_global_pointer = NULL;
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: ButtonRegistry::register_type // Function: ButtonRegistry::register_button
// Access: Public // Access: Public
// Description: // Description: Registers a new ButtonHandle with the indicated name,
// and if specified, the indicated ASCII equivalent.
// Returns true if the button was registered, or false
// it was already registered; in either case, the new
// ButtonHandle is loaded into the first parameter.
//
// This defines a new kind of button matching the
// indicated name. The ButtonHandle can then be passed
// around to devices as a button in its own right.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
bool ButtonRegistry:: bool ButtonRegistry::
register_button(ButtonHandle &button_handle, const string &name, register_button(ButtonHandle &button_handle, const string &name,
@ -82,28 +90,35 @@ register_button(ButtonHandle &button_handle, const string &name,
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: ButtonRegistry::find_button // Function: ButtonRegistry::get_button
// Access: Public // Access: Public
// Description: // Description: Finds a ButtonHandle in the registry matching the
// indicated name. If there is no such ButtonHandle,
// registers a new one and returns it.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
ButtonHandle ButtonRegistry:: ButtonHandle ButtonRegistry::
find_button(const string &name) const { get_button(const string &name) {
NameRegistry::const_iterator ri; NameRegistry::const_iterator ri;
ri = _name_registry.find(name); ri = _name_registry.find(name);
if (ri == _name_registry.end()) {
return ButtonHandle::none(); if (ri != _name_registry.end()) {
} else {
return (*ri).second->_handle; return (*ri).second->_handle;
} }
ButtonHandle button;
register_button(button, name);
return button;
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: ButtonRegistry::find_button // Function: ButtonRegistry::find_ascii_button
// Access: Public // Access: Public
// Description: // Description: Finds a ButtonHandle in the registry matching the
// indicated ASCII equivalent character. If there is no
// such ButtonHandle, returns ButtonHandle::none().
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
ButtonHandle ButtonRegistry:: ButtonHandle ButtonRegistry::
find_button(char ascii_equivalent) const { find_ascii_button(char ascii_equivalent) const {
if (_handle_registry[ascii_equivalent] == (RegistryNode *)NULL) { if (_handle_registry[ascii_equivalent] == (RegistryNode *)NULL) {
return ButtonHandle::none(); return ButtonHandle::none();
} }

View File

@ -31,20 +31,22 @@ protected:
string _name; string _name;
}; };
PUBLISHED: public:
bool register_button(ButtonHandle &button_handle, const string &name, bool register_button(ButtonHandle &button_handle, const string &name,
char ascii_equivalent = '\0'); char ascii_equivalent = '\0');
ButtonHandle find_button(const string &name) const; PUBLISHED:
ButtonHandle find_button(char ascii_equivalent) const; ButtonHandle get_button(const string &name);
ButtonHandle find_ascii_button(char ascii_equivalent) const;
INLINE string get_name(ButtonHandle button) const;
void write(ostream &out) const;
// ptr() returns the pointer to the global ButtonRegistry object. // ptr() returns the pointer to the global ButtonRegistry object.
INLINE static ButtonRegistry *ptr(); INLINE static ButtonRegistry *ptr();
public:
INLINE string get_name(ButtonHandle button) const;
void write(ostream &out) const;
private: private:
// The ButtonRegistry class should never be constructed by user code. // The ButtonRegistry class should never be constructed by user code.
// There is only one in the universe, and it constructs itself! // There is only one in the universe, and it constructs itself!

View File

@ -55,7 +55,7 @@ static ButtonHandle _shift_lock;
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
ButtonHandle KeyboardButton:: ButtonHandle KeyboardButton::
ascii_key(char ascii_equivalent) { ascii_key(char ascii_equivalent) {
return ButtonRegistry::ptr()->find_button(ascii_equivalent); return ButtonRegistry::ptr()->find_ascii_button(ascii_equivalent);
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////