00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00019 #ifndef __vtkKWMaterialPropertyWidget_h
00020 #define __vtkKWMaterialPropertyWidget_h
00021
00022 #include "vtkKWCompositeWidget.h"
00023
00024 class vtkKWFrame;
00025 class vtkKWLabel;
00026 class vtkKWFrameWithLabel;
00027 class vtkKWLabelWithLabel;
00028 class vtkKWPushButtonSetWithLabel;
00029 class vtkKWPopupButtonWithLabel;
00030 class vtkKWPushButton;
00031 class vtkKWScaleWithEntry;
00032 class vtkKWMaterialPropertyWidgetInternals;
00033
00034 class KWWidgets_EXPORT vtkKWMaterialPropertyWidget : public vtkKWCompositeWidget
00035 {
00036
00037 public:
00038 vtkTypeRevisionMacro(vtkKWMaterialPropertyWidget, vtkKWCompositeWidget);
00039 void PrintSelf(ostream& os, vtkIndent indent);
00040
00042
00045 vtkSetMacro(PopupMode, int);
00046 vtkGetMacro(PopupMode, int);
00047 vtkBooleanMacro(PopupMode, int);
00048 vtkGetObjectMacro(PopupButton, vtkKWPopupButtonWithLabel);
00050
00053 virtual void Update();
00054
00056 virtual void UpdatePreview();
00057
00059
00060 virtual void SetPreviewSize(int);
00061 virtual void SetPresetSize(int);
00062 virtual void SetPopupPreviewSize(int);
00063 vtkGetMacro(PreviewSize, int);
00064 vtkGetMacro(PresetSize, int);
00065 vtkGetMacro(PopupPreviewSize, int);
00067
00069
00070 virtual void SetGridOpacity(double);
00071 vtkGetMacro(GridOpacity, double);
00073
00075
00076 vtkGetVector3Macro(MaterialColor, double);
00077 void SetMaterialColor(double r, double g, double b);
00078 void SetMaterialColor(double color[3])
00079 { this->SetMaterialColor(color[0], color[1], color[2]); }
00081
00083
00085 virtual void SetLightingParametersVisibility(int);
00086 vtkBooleanMacro(LightingParametersVisibility, int);
00087 vtkGetMacro(LightingParametersVisibility, int);
00089
00091
00096 vtkSetMacro(PropertyChangedEvent, int);
00097 vtkGetMacro(PropertyChangedEvent, int);
00098 vtkSetMacro(PropertyChangingEvent, int);
00099 vtkGetMacro(PropertyChangingEvent, int);
00101
00103
00123 virtual void SetPropertyChangedCommand(
00124 vtkObject *object, const char *method);
00125 virtual void SetPropertyChangingCommand(
00126 vtkObject *object, const char *method);
00128
00135 virtual void UpdateEnableState();
00136
00138
00139 virtual void PropertyChangingCallback(double value);
00140 virtual void PropertyChangedCallback(double value);
00141 virtual void PresetMaterialCallback(int preset_idx);
00143
00144
00145
00146 protected:
00147 vtkKWMaterialPropertyWidget();
00148 ~vtkKWMaterialPropertyWidget();
00149
00151 virtual void CreateWidget();
00152
00153 int PopupMode;
00154 int PreviewSize;
00155 int PresetSize;
00156 int PopupPreviewSize;
00157 double GridOpacity;
00158 int LightingParametersVisibility;
00159
00160 double MaterialColor[3];
00161
00163
00164 int PropertyChangedEvent;
00165 int PropertyChangingEvent;
00167
00169
00170 char *PropertyChangedCommand;
00171 char *PropertyChangingCommand;
00173
00174 virtual void InvokePropertyChangedCommand();
00175 virtual void InvokePropertyChangingCommand();
00176
00177
00178
00179
00180 class Preset
00181 {
00182 public:
00183 double Ambient;
00184 double Diffuse;
00185 double Specular;
00186 double SpecularPower;
00187 char *HelpString;
00188
00189 Preset() { this->HelpString = 0; };
00190 };
00191
00192
00193
00194 vtkKWMaterialPropertyWidgetInternals *Internals;
00195 friend class vtkKWMaterialPropertyWidgetInternals;
00196
00197
00198
00199
00200 vtkKWPopupButtonWithLabel *PopupButton;
00201 vtkKWFrameWithLabel *MaterialPropertiesFrame;
00202 vtkKWFrame *ControlFrame;
00203 vtkKWFrame *LightingFrame;
00204 vtkKWScaleWithEntry *AmbientScale;
00205 vtkKWScaleWithEntry *DiffuseScale;
00206 vtkKWScaleWithEntry *SpecularScale;
00207 vtkKWScaleWithEntry *SpecularPowerScale;
00208 vtkKWFrame *PresetsFrame;
00209 vtkKWLabelWithLabel *PreviewLabel;
00210 vtkKWPushButtonSetWithLabel *PresetPushButtonSet;
00211
00213 virtual void Pack();
00214
00216
00217 virtual void CreateImage(unsigned char *data,
00218 double ambient,
00219 double diffuse,
00220 double specular,
00221 double specular_power,
00222 int size);
00224
00226 virtual void SendStateEvent(int event);
00227
00229 virtual void AddDefaultPresets();
00230
00232 virtual void CreatePresets();
00233
00235 virtual void UpdatePopupPreview();
00236
00238
00240 virtual int UpdatePropertyFromInterface() = 0;
00241 virtual int UpdatePropertyFromPreset(const Preset *preset) = 0;
00243
00245
00246 virtual int UpdateScalesFromPreset(const Preset *preset);
00247 virtual void UpdateScales(double ambient,
00248 double diffuse,
00249 double specular,
00250 double specular_power);
00252
00254 virtual int AreControlsEnabled() { return 1; };
00255
00256
00257
00258 private:
00259 vtkKWMaterialPropertyWidget(const vtkKWMaterialPropertyWidget&);
00260 void operator=(const vtkKWMaterialPropertyWidget&);
00261 };
00262
00263 #endif
00264