00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef __vsteditcontroller__
00037 #define __vsteditcontroller__
00038
00039 #include "public.sdk/source/vst/vstcomponentbase.h"
00040 #include "public.sdk/source/common/pluginview.h"
00041 #include "public.sdk/source/common/array.h"
00042
00043 #include "pluginterfaces/vst/ivsteditcontroller.h"
00044
00045
00046 namespace Steinberg {
00047 namespace Vst {
00048
00049
00050
00051
00052 class Parameter: public CArrayElement
00053 {
00054 public:
00055
00056 Parameter ();
00057 Parameter (const ParameterInfo&);
00058 virtual ~Parameter ();
00059
00061 const ParameterInfo& getInfo () const {return info;}
00062
00064 ParamValue getNormalized () const { return valueNormalized; }
00066 bool setNormalized (ParamValue v);
00067
00069 virtual void toString (ParamValue valueNormalized, String128 string) const;
00071 virtual bool fromString (const TChar* string, ParamValue& valueNormalized) const;
00072
00074 virtual ParamValue toPlain (ParamValue valueNormalized) const;
00076 virtual ParamValue toNormalized (ParamValue plainValue) const;
00077
00078
00079 protected:
00080 ParameterInfo info;
00081 ParamValue valueNormalized;
00082 };
00083
00084
00085
00086
00087 class ParameterContainer
00088 {
00089 public:
00090
00091 ParameterContainer ();
00092
00094 Parameter* addParameter (const ParameterInfo& info);
00095
00097 Parameter* addParameter (const TChar* title, const TChar* units = 0,
00098 int32 stepCount = 0,
00099 ParamValue defaultValueNormalized = 0.,
00100 int32 flags = ParameterInfo::kCanAutomate,
00101 int32 tag = -1);
00102
00104 bool addParameter (Parameter* p) { return params.add (p); }
00105
00107 int32 getParameterCount () const { return params.total (); }
00108
00110 Parameter* getParameterByIndex (int32 index) { return (Parameter*)params.at (index); }
00111
00113 void removeAll () { return params.removeAll (); }
00114
00116 Parameter* getParameter (ParamID tag);
00117
00118
00119 protected:
00120 CArray params;
00121 };
00122
00123
00124
00125
00126 class EditController: public ComponentBase,
00127 public IEditController
00128 {
00129 public:
00130
00131 EditController ();
00132
00133
00134 tresult PLUGIN_API setComponentState (IBStream* state);
00135 tresult PLUGIN_API setState (IBStream* state);
00136 tresult PLUGIN_API getState (IBStream* state);
00137 int32 PLUGIN_API getParameterCount ();
00138 tresult PLUGIN_API getParameterInfo (int32 paramIndex, ParameterInfo& info);
00139 tresult PLUGIN_API getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string);
00140 tresult PLUGIN_API getParamValueByString (ParamID tag, TChar* string, ParamValue& valueNormalized);
00141 ParamValue PLUGIN_API normalizedParamToPlain (ParamID tag, ParamValue valueNormalized);
00142 ParamValue PLUGIN_API plainParamToNormalized (ParamID tag, ParamValue plainValue);
00143 ParamValue PLUGIN_API getParamNormalized (ParamID tag);
00144 tresult PLUGIN_API setParamNormalized (ParamID tag, ParamValue value);
00145 tresult PLUGIN_API setComponentHandler (IComponentHandler* handler);
00146 IPlugView* PLUGIN_API createView (const char* name);
00147
00148
00149 DELEGATE_REFCOUNT (ComponentBase)
00150 tresult PLUGIN_API queryInterface (const char* iid, void** obj);
00151 tresult PLUGIN_API initialize (FUnknown* context);
00152 tresult PLUGIN_API terminate ();
00153
00154
00155 tresult beginEdit (ParamID tag);
00156 tresult performEdit (ParamID tag, ParamValue valueNormalized);
00157 tresult endEdit (ParamID tag);
00158
00159
00160 protected:
00161 IComponentHandler* componentHandler;
00162 ParameterContainer parameters;
00163 };
00164
00165
00166
00167
00168 class EditorView: public CPluginView
00169 {
00170 public:
00171
00172 EditorView (EditController* controller, ViewRect* size = 0);
00173 ~EditorView ();
00174
00176 EditController* getController () { return controller; }
00177
00178
00179 protected:
00180 EditController* controller;
00181 };
00182
00183
00184 }
00185 }
00186
00187 #endif // __vsteditcontroller__