00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024
00025 #include "cinder/Color.h"
00026 #include "cinder/Quaternion.h"
00027 #include "cinder/Function.h"
00028
00029 #include <string>
00030
00031 typedef struct CTwBar TwBar;
00032
00033 namespace cinder {
00034
00035 namespace app {
00036 class Window;
00037 typedef std::shared_ptr<Window> WindowRef;
00038 }
00039
00040 namespace params {
00041
00042 typedef std::shared_ptr<class InterfaceGl> InterfaceGlRef;
00043
00044 class InterfaceGl {
00045 public:
00046 InterfaceGl() {}
00047 InterfaceGl( const std::string &title, const Vec2i &size, const ColorA &color = ColorA( 0.3f, 0.3f, 0.3f, 0.4f ) );
00048 InterfaceGl( cinder::app::WindowRef window, const std::string &title, const Vec2i &size, const ColorA &color = ColorA( 0.3f, 0.3f, 0.3f, 0.4f ) );
00049
00050 static InterfaceGlRef create( const std::string &title, const Vec2i &size, const ColorA &color = ColorA( 0.3f, 0.3f, 0.3f, 0.4f ) );
00051 static InterfaceGlRef create( cinder::app::WindowRef window, const std::string &title, const Vec2i &size, const ColorA &color = ColorA( 0.3f, 0.3f, 0.3f, 0.4f ) );
00052
00053 void draw();
00054
00055 void show( bool visible = true );
00056 void hide();
00057 bool isVisible() const;
00058
00059 void maximize( bool maximized = true );
00060 void minimize();
00061 bool isMaximized() const;
00062
00063 void addParam( const std::string &name, bool *boolParam, const std::string &optionsStr = "", bool readOnly = false );
00064 void addParam( const std::string &name, float *floatParam, const std::string &optionsStr = "", bool readOnly = false );
00065 void addParam( const std::string &name, double *doubleParam, const std::string &optionsStr = "", bool readOnly = false );
00066 void addParam( const std::string &name, int32_t *intParam, const std::string &optionsStr = "", bool readOnly = false );
00067 void addParam( const std::string &name, Vec3f *vectorParam, const std::string &optionsStr = "", bool readOnly = false );
00068 void addParam( const std::string &name, Quatf *quatParam, const std::string &optionsStr = "", bool readOnly = false );
00069 void addParam( const std::string &name, Color *quatParam, const std::string &optionsStr = "", bool readOnly = false );
00070 void addParam( const std::string &name, ColorA *quatParam, const std::string &optionsStr = "", bool readOnly = false );
00071 void addParam( const std::string &name, std::string *strParam, const std::string &optionsStr = "", bool readOnly = false );
00073 void addParam( const std::string &name, const std::vector<std::string> &enumNames, int *param, const std::string &optionsStr = "", bool readOnly = false );
00074 void addSeparator( const std::string &name = "", const std::string &optionsStr = "" );
00075 void addText( const std::string &name = "", const std::string &optionsStr = "" );
00076 void addButton( const std::string &name, const std::function<void()> &callback, const std::string &optionsStr = "" );
00077 void removeParam( const std::string &name );
00079 void clear();
00080 void setOptions( const std::string &name = "", const std::string &optionsStr = "" );
00081
00082 protected:
00083 void init( app::WindowRef window, const std::string &title, const Vec2i &size, const ColorA color );
00084 void implAddParam( const std::string &name, void *param, int type, const std::string &optionsStr, bool readOnly );
00085
00086 std::weak_ptr<app::Window> mWindow;
00087 std::shared_ptr<TwBar> mBar;
00088 int mTwWindowId;
00089
00090 std::vector<std::shared_ptr<std::function<void()> > > mButtonCallbacks;
00091 };
00092
00093 } }