201 lines
5.2 KiB
C++
Executable File
201 lines
5.2 KiB
C++
Executable File
/**********************************************************************
|
|
*<
|
|
FILE: IParamM.h
|
|
|
|
DESCRIPTION: Parameter Maps
|
|
|
|
CREATED BY: Rolf Berteig
|
|
|
|
HISTORY: created 10/10/95
|
|
|
|
*> Copyright (c) 1994, All Rights Reserved.
|
|
**********************************************************************/
|
|
|
|
|
|
#ifndef __IPARAMM__
|
|
#define __IPARAMM__
|
|
|
|
|
|
class IParamMap;
|
|
class IRendParams;
|
|
|
|
// If custom handling of controls needs to be done, ParameterMap
|
|
// client can't implement one of these and set is as the ParameterMap's
|
|
// user callback.
|
|
class ParamMapUserDlgProc {
|
|
public:
|
|
virtual BOOL DlgProc(TimeValue t,IParamMap *map,HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)=0;
|
|
virtual void DeleteThis()=0;
|
|
virtual void Update(TimeValue t) {}
|
|
};
|
|
|
|
// Return this from DlgProc to get the viewports redrawn.
|
|
#define REDRAW_VIEWS 2
|
|
|
|
|
|
|
|
class IParamMap {
|
|
public:
|
|
// Mark the UI as needing to be updated.
|
|
virtual void Invalidate()=0;
|
|
|
|
// Swaps the existing parameter block with a new one and updates UI.
|
|
virtual void SetParamBlock(IParamArray *pb)=0;
|
|
|
|
// The given proc will be called _after_ default processing is done.
|
|
// The callback can then apply constraints to controls.
|
|
// Note that if the proc is non-NULL when the ParamMap is deleted
|
|
// its DeleteThis() method will be called.
|
|
virtual void SetUserDlgProc(ParamMapUserDlgProc *proc=NULL)=0;
|
|
virtual ParamMapUserDlgProc *GetUserDlgProc()=0;
|
|
|
|
// Changes a map entry to refer to a different item in the parameter block.
|
|
virtual void SetPBlockIndex(int mapIndex, int blockIndex)=0;
|
|
|
|
// Access the dialog window.
|
|
virtual HWND GetHWnd()=0;
|
|
|
|
// Access the parameter block
|
|
virtual IParamArray *GetParamBlock()=0;
|
|
|
|
// Is the dialog proc active
|
|
virtual BOOL DlgActive()=0;
|
|
};
|
|
|
|
|
|
|
|
|
|
enum ControlType {
|
|
TYPE_SPINNER,
|
|
TYPE_RADIO,
|
|
TYPE_SINGLECHEKBOX,
|
|
TYPE_MULTICHEKBOX,
|
|
TYPE_COLORSWATCH,
|
|
};
|
|
|
|
|
|
// Giving this value for scale specifies autoscale
|
|
#define SPIN_AUTOSCALE -1.0f
|
|
|
|
class ParamUIDesc {
|
|
public:
|
|
// Float or int controlled by a single spinner
|
|
CoreExport ParamUIDesc(
|
|
int index,EditSpinnerType spinType,int idEdit,int idSpin,
|
|
float lowLim,float highLim,float scale,ParamDimension *dim=defaultDim);
|
|
|
|
// int controlelled by n radio buttons
|
|
// vals[i] represents the value if ctrlIDs[i] is checked.
|
|
// if vals=NULL then ctrlIDs[i] represents a value of i.
|
|
//
|
|
// OR
|
|
//
|
|
// int controlled by multiple check boxes where each
|
|
// check boxes controlls a single bit.
|
|
// vals[i] specifies which bit ctrlIds[i] controls.
|
|
// If vals=NULL ctrlIDs[i] controls the ith bit.
|
|
CoreExport ParamUIDesc(
|
|
int index,ControlType type,int *ctrlIDs,int count,int *vals=NULL);
|
|
|
|
// int controlled by a single check box (BOOL)
|
|
// or Point3 controlled by a color swatch.
|
|
CoreExport ParamUIDesc(int index,ControlType type,int id);
|
|
|
|
// Point3 controlled by 3 spinners
|
|
CoreExport ParamUIDesc(int index,
|
|
EditSpinnerType spinType,
|
|
int idEdit1,int idSpin1,
|
|
int idEdit2,int idSpin2,
|
|
int idEdit3,int idSpin3,
|
|
float lowLim,float highLim,float scale,
|
|
ParamDimension *dim=defaultDim);
|
|
|
|
|
|
int pbIndex;
|
|
ParamType ptype;
|
|
ControlType ctype;
|
|
int id[6];
|
|
int *ids;
|
|
int *vals;
|
|
int count;
|
|
|
|
EditSpinnerType spinType;
|
|
float lowLim;
|
|
float highLim;
|
|
float scale;
|
|
ParamDimension *dim;
|
|
};
|
|
|
|
// Creates a parameter map that will handle a parameter block in a modeless
|
|
// dialog where time does not change and the viewport is not redrawn.
|
|
// Note that there is no need to destroy it. It executes the dialog and then
|
|
// destorys itself. Returns TRUE if the user selected OK, FALSE otherwise.
|
|
CoreExport BOOL CreateModalParamMap(
|
|
ParamUIDesc *desc,int count,
|
|
IParamArray *pb,
|
|
TimeValue t,
|
|
HINSTANCE hInst,
|
|
TCHAR *dlgTemplate,
|
|
HWND hParent,
|
|
ParamMapUserDlgProc *proc=NULL);
|
|
|
|
|
|
// Creates a parameter map to handle the display of parameters in the command panal.
|
|
//
|
|
// This will add a rollup page to the command panel.
|
|
// DestroyCPParamMap().
|
|
//
|
|
CoreExport IParamMap *CreateCPParamMap(
|
|
ParamUIDesc *desc,int count,
|
|
IParamArray *pb,
|
|
Interface *ip,
|
|
HINSTANCE hInst,
|
|
TCHAR *dlgTemplate,
|
|
TCHAR *title,
|
|
DWORD flags);
|
|
|
|
|
|
CoreExport IParamMap *ReplaceCPParamMap(
|
|
HWND oldhw,
|
|
ParamUIDesc *desc,int count,
|
|
IParamArray *pb,
|
|
Interface *ip,
|
|
HINSTANCE hInst,
|
|
TCHAR *dlgTemplate,
|
|
TCHAR *title,
|
|
DWORD flags);
|
|
|
|
CoreExport void DestroyCPParamMap(IParamMap *m);
|
|
|
|
|
|
// Creates a parameter map to handle the display of render parameters or
|
|
// atmospheric plug-in parameters.
|
|
CoreExport IParamMap *CreateRParamMap(
|
|
ParamUIDesc *desc,int count,
|
|
IParamArray *pb,
|
|
IRendParams *ip,
|
|
HINSTANCE hInst,
|
|
TCHAR *dlgTemplate,
|
|
TCHAR *title,
|
|
DWORD flags);
|
|
CoreExport void DestroyRParamMap(IParamMap *m);
|
|
|
|
// Creates a parameter map to handle the display of texture map or
|
|
// material parameters in the material editor.
|
|
CoreExport IParamMap *CreateMParamMap(
|
|
ParamUIDesc *desc,int count,
|
|
IParamArray *pb,
|
|
IMtlParams *ip,
|
|
HINSTANCE hInst,
|
|
TCHAR *dlgTemplate,
|
|
TCHAR *title,
|
|
DWORD flags);
|
|
CoreExport void DestroyMParamMap(IParamMap *m);
|
|
|
|
|
|
|
|
#endif // __IPARAMM__
|
|
|
|
|
|
|