#pragma once #include #include "lib_begin.h" namespace cgv { namespace gui { class provider; /// interface for gui creators struct gui_creator { /// attempt to create a gui and return whether this was successful virtual bool create(provider* p, const std::string& label, void* value_ptr, const std::string& value_type, const std::string& gui_type, const std::string& options, bool* toggles) = 0; }; /// register a gui creator extern CGV_API void register_gui_creator(gui_creator* gc, const char* creator_name); /// create the gui for a composed structure extern CGV_API bool create_gui(provider* p, const std::string& label, void* value_ptr, const std::string& value_type, const std::string& gui_type = "", const std::string& options = "", bool* toggles = 0); /// helper template for registration of gui creators template class gui_creator_registration { public: gui_creator_registration(const char* creator_name) { register_gui_creator(new T(), creator_name); } }; } } #include