3ds Max C++ API Reference
icurvctl.h File Reference
#include <Wtypes.h>
#include <CommCtrl.h>
#include "maxheap.h"
#include "ref.h"

Classes

class  ICurveCtl
 
class  CurvePoint
 
class  ICurve
 
class  ResourceMakerCallback
 

Macros

#define CURVE_CONTROL_CLASS_ID   Class_ID(0x14585773, 0x483a7dcf)
 
#define I_RESMAKER_INTERFACE   0x2474334a
 
#define WM_CC_SEL_CURVEPT   WM_USER+0x2b70
 
#define WM_CC_CHANGE_CURVEPT   WM_USER+0x2b71
 
#define WM_CC_CHANGE_CURVETANGENT   WM_USER+0x2b72
 
#define WM_CC_DEL_CURVEPT   WM_USER+0x2b73
 
#define WM_CC_INSERT_CURVEPT   WM_USER+0x2b74
 
#define WM_CC_LBUTTONDOWN   WM_USER+0x2b75
 
#define WM_CC_RBUTTONDOWN   WM_USER+0x2b76
 
#define WM_CC_LBUTTONUP   WM_USER+0x2b77
 
#define IN_CURVETANGENT_CHANGED   (1<<0)
 
#define OUT_CURVETANGENT_CHANGED   (1<<1)
 
#define IN_CURVETANGENT_CHANGED   (1<<0)
 
#define OUT_CURVETANGENT_CHANGED   (1<<1)
 
#define CC_DRAWBG   (1<<0)
 Draw the white background in the graph window. More...
 
#define CC_DRAWGRID   (1<<1)
 Draw the grid lines and coordinates in the graph window. More...
 
#define CC_DRAWUTOOLBAR   (1<<2)
 Draw the upper toolbar above the control. More...
 
#define CC_SHOWRESET   (1<<3)
 Display the Reset button in the upper toolbar. More...
 
#define CC_DRAWLTOOLBAR   (1<<4)
 Draw the lower toolbar beneath the control. More...
 
#define CC_DRAWSCROLLBARS   (1<<5)
 Draw the horizontal and vertical scroll bars for the control. More...
 
#define CC_AUTOSCROLL   (1<<6)
 Auto scroll happens when you drag a CurvePoint out of the currently visible range. More...
 
#define CC_DRAWRULER   (1<<7)
 Draw a small moveable ruler window that measures horizontal coordinates. More...
 
#define CC_ASPOPUP   (1<<8)
 Show the window as popup window. More...
 
#define CC_CONSTRAIN_Y   (1<<9)
 No points (or handles) can be moved out of the value that is set by SetYRange(). More...
 
#define CC_HIDE_DISABLED_CURVES   (1<<10)
 If this is not set, the disabled curves will be drawn by the color set by SetDisabledPenProperty(). More...
 
#define CC_RCMENU_MOVE_XY   (1<<11)
 Right-click menu item. More...
 
#define CC_RCMENU_MOVE_X   (1<<12)
 Right-click menu item. More...
 
#define CC_RCMENU_MOVE_Y   (1<<13)
 Right-click menu item. More...
 
#define CC_RCMENU_SCALE   (1<<14)
 Right-click menu item. More...
 
#define CC_RCMENU_INSERT_CORNER   (1<<15)
 Right-click menu item. More...
 
#define CC_RCMENU_INSERT_BEZIER   (1<<16)
 Right-click menu item. More...
 
#define CC_RCMENU_DELETE   (1<<17)
 Right-click menu item. More...
 
#define CC_SHOW_CURRENTXVAL   (1<<18)
 You loose the automatic switch from insert to move mode when right-clicking, if a RightClick menu is active. More...
 
#define CC_SINGLESELECT   (1<<19)
 Normally, if several points are stacked in area, clicking on the area you get all of them. More...
 
#define CC_NOFILTERBUTTONS   (1<<20)
 This is useful when there are many curves and you want to manage the display yourself. More...
 
#define CC_ALL_RCMENU   (CC_RCMENU_MOVE_XY|CC_RCMENU_MOVE_X|CC_RCMENU_MOVE_Y|CC_RCMENU_SCALE|CC_RCMENU_INSERT_CORNER|CC_RCMENU_INSERT_BEZIER|CC_RCMENU_DELETE)
 Entire right click menu. More...
 
#define CC_ALL   (CC_DRAWBG|CC_DRAWGRID|CC_DRAWUTOOLBAR|CC_SHOWRESET|CC_DRAWLTOOLBAR|CC_DRAWSCROLLBARS|CC_AUTOSCROLL|CC_DRAWRULER|CC_ASPOPUP|CC_CONSTRAIN_Y|CC_HIDE_DISABLED_CURVES| CC_ALL_RCMENU )
 
#define CC_NONE   0
 
#define CID_CC_MOVE_XY   0
 
#define CID_CC_MOVE_X   1
 
#define CID_CC_MOVE_Y   2
 
#define CID_CC_SCALE   3
 
#define CID_CC_INSERT_CORNER   4
 
#define CID_CC_INSERT_BEZIER   5
 
#define CURVE_EXTRAPOLATE_LINEAR   0
 
#define CURVE_EXTRAPOLATE_CONSTANT   1
 
#define CURVEP_BEZIER   (1<<0)
 
#define CURVEP_CORNER   (1<<1)
 
#define CURVEP_LOCKED_Y   (1<<2)
 
#define CURVEP_LOCKED_X   (1<<3)
 
#define CURVEP_SELECTED   (1<<4)
 
#define CURVEP_ENDPOINT   (1<<8)
 
#define CURVEP_NO_X_CONSTRAINT   (1<<9)
 
#define SELPTS_SELECT   (1<<0)
 
#define SELPTS_DESELECT   (1<<1)
 
#define SELPTS_CLEARPTS   (1<<2)
 
#define IS_CORNER(flags)   ( ( (flags) & CURVEP_CORNER) && !((flags) & CURVEP_BEZIER) )
 
#define IS_BEZIERSMOOTH(flags)   ( ( (flags) & CURVEP_BEZIER) && !((flags) & CURVEP_CORNER) )
 
#define IS_BEZIERCORNER(flags)   ( ( (flags) & CURVEP_BEZIER) && ((flags) & CURVEP_CORNER) )
 

Macro Definition Documentation

◆ CURVE_CONTROL_CLASS_ID

#define CURVE_CONTROL_CLASS_ID   Class_ID(0x14585773, 0x483a7dcf)

◆ I_RESMAKER_INTERFACE

#define I_RESMAKER_INTERFACE   0x2474334a

◆ WM_CC_SEL_CURVEPT

#define WM_CC_SEL_CURVEPT   WM_USER+0x2b70

◆ WM_CC_CHANGE_CURVEPT

#define WM_CC_CHANGE_CURVEPT   WM_USER+0x2b71

◆ WM_CC_CHANGE_CURVETANGENT

#define WM_CC_CHANGE_CURVETANGENT   WM_USER+0x2b72

◆ WM_CC_DEL_CURVEPT

#define WM_CC_DEL_CURVEPT   WM_USER+0x2b73

◆ WM_CC_INSERT_CURVEPT

#define WM_CC_INSERT_CURVEPT   WM_USER+0x2b74

◆ WM_CC_LBUTTONDOWN

#define WM_CC_LBUTTONDOWN   WM_USER+0x2b75

◆ WM_CC_RBUTTONDOWN

#define WM_CC_RBUTTONDOWN   WM_USER+0x2b76

◆ WM_CC_LBUTTONUP

#define WM_CC_LBUTTONUP   WM_USER+0x2b77

◆ IN_CURVETANGENT_CHANGED [1/2]

#define IN_CURVETANGENT_CHANGED   (1<<0)

◆ OUT_CURVETANGENT_CHANGED [1/2]

#define OUT_CURVETANGENT_CHANGED   (1<<1)

◆ IN_CURVETANGENT_CHANGED [2/2]

#define IN_CURVETANGENT_CHANGED   (1<<0)

◆ OUT_CURVETANGENT_CHANGED [2/2]

#define OUT_CURVETANGENT_CHANGED   (1<<1)

◆ CID_CC_MOVE_XY

#define CID_CC_MOVE_XY   0

◆ CID_CC_MOVE_X

#define CID_CC_MOVE_X   1

◆ CID_CC_MOVE_Y

#define CID_CC_MOVE_Y   2

◆ CID_CC_SCALE

#define CID_CC_SCALE   3

◆ CID_CC_INSERT_CORNER

#define CID_CC_INSERT_CORNER   4

◆ CID_CC_INSERT_BEZIER

#define CID_CC_INSERT_BEZIER   5

◆ CURVE_EXTRAPOLATE_LINEAR

#define CURVE_EXTRAPOLATE_LINEAR   0

◆ CURVE_EXTRAPOLATE_CONSTANT

#define CURVE_EXTRAPOLATE_CONSTANT   1

◆ CURVEP_BEZIER

#define CURVEP_BEZIER   (1<<0)

◆ CURVEP_CORNER

#define CURVEP_CORNER   (1<<1)

◆ CURVEP_LOCKED_Y

#define CURVEP_LOCKED_Y   (1<<2)

◆ CURVEP_LOCKED_X

#define CURVEP_LOCKED_X   (1<<3)

◆ CURVEP_SELECTED

#define CURVEP_SELECTED   (1<<4)

◆ CURVEP_ENDPOINT

#define CURVEP_ENDPOINT   (1<<8)

◆ CURVEP_NO_X_CONSTRAINT

#define CURVEP_NO_X_CONSTRAINT   (1<<9)

◆ SELPTS_SELECT

#define SELPTS_SELECT   (1<<0)

◆ SELPTS_DESELECT

#define SELPTS_DESELECT   (1<<1)

◆ SELPTS_CLEARPTS

#define SELPTS_CLEARPTS   (1<<2)

◆ IS_CORNER

#define IS_CORNER (   flags)    ( ( (flags) & CURVEP_CORNER) && !((flags) & CURVEP_BEZIER) )

◆ IS_BEZIERSMOOTH

#define IS_BEZIERSMOOTH (   flags)    ( ( (flags) & CURVEP_BEZIER) && !((flags) & CURVEP_CORNER) )

◆ IS_BEZIERCORNER

#define IS_BEZIERCORNER (   flags)    ( ( (flags) & CURVEP_BEZIER) && ((flags) & CURVEP_CORNER) )