Class FormHelper¶
Defined in File formhelper.h
Page Contents
Class Documentation¶
-
class
FormHelper
¶ Convenience class to create simple AntTweakBar-style layouts that expose variables of various types using NanoGUI widgets.
Example:
// [ ... initialize NanoGUI, construct screen ... ] FormHelper* h = new FormHelper(screen); // Add a new windows widget h->addWindow(Eigen::Vector2i(10,10),"Menu"); // Start a new group h->addGroup("Group 1"); // Expose an integer variable by reference h->addVariable("integer variable", aInt); // Expose a float variable via setter/getter functions h->addVariable( [&](float value) { aFloat = value; }, [&]() { return *aFloat; }, "float variable"); // add a new button h->addButton("Button", [&]() { std::cout << "Button pressed" << std::endl; });
Public Functions
-
Window *
addWindow
(const Vector2i &pos, const std::string &title = "Untitled")¶ Add a new top-level window.
-
template<typename
Type
>
detail::FormWidget<Type> *addVariable
(const std::string &label, const std::function<void(const Type&)> &setter, const std::function<Type()> &getterbool editable = true, )¶ Add a new data widget controlled using custom getter/setter functions.
-
template<typename
Type
>
detail::FormWidget<Type> *addVariable
(const std::string &label, Type &value, bool editable = true)¶ Add a new data widget that exposes a raw variable in memory.
-
Button *
addButton
(const std::string &label, const std::function<void()> &cb)¶ Add a button with a custom callback.
-
void
addWidget
(const std::string &label, Widget *widget)¶ Add an arbitrary (optionally labeled) widget to the layout.
-
void
refresh
()¶ Cause all widgets to re-synchronize with the underlying variable state.
-
const std::string &
groupFontName
() const¶ The font name being used for group headers.
-
void
setGroupFontName
(const std::string &name)¶ Sets the font name to be used for group headers.
-
const std::string &
labelFontName
() const¶ The font name being used for labels.
-
void
setLabelFontName
(const std::string &name)¶ Sets the font name being used for labels.
-
int
groupFontSize
() const¶ The size of the font being used for group headers.
-
void
setGroupFontSize
(int value)¶ Sets the size of the font being used for group headers.
-
int
labelFontSize
() const¶ The size of the font being used for labels.
-
void
setLabelFontSize
(int value)¶ Sets the size of the font being used for labels.
-
int
widgetFontSize
() const¶ The size of the font being used for non-group / non-label widgets.
-
void
setWidgetFontSize
(int value)¶ Sets the size of the font being used for non-group / non-label widgets.
Protected Attributes
-
ref<Screen>
mScreen
¶ A reference to the nanogui::Screen this FormHelper is assisting.
-
ref<Window>
mWindow
¶ A reference to the nanogui::Window this FormHelper is controlling.
-
ref<AdvancedGridLayout>
mLayout
¶ A reference to the nanogui::AdvancedGridLayout this FormHelper is using.
-
std::vector<std::function<void()>>
mRefreshCallbacks
¶ The callbacks associated with all widgets this FormHelper is managing.
-
std::string
mGroupFontName
= "sans-bold"¶ The group header font name.
-
std::string
mLabelFontName
= "sans"¶ The label font name.
-
int
mGroupFontSize
= 20¶ The font size for group headers.
-
int
mLabelFontSize
= 16¶ The font size for labels.
-
int
mWidgetFontSize
= 16¶ The font size for non-group / non-label widgets.
-
int
mPreGroupSpacing
= 15¶ The spacing used before new groups.
-
int
mPostGroupSpacing
= 5¶ The spacing used after each group.
-
int
mVariableSpacing
= 5¶ The spacing between all other widgets.
-
Window *