tge/lib/maxsdk70/include/tvutil.h
2017-04-17 06:17:10 -06:00

94 lines
3.1 KiB
C++
Executable File

/**********************************************************************
*<
FILE: tvutil.h
DESCRIPTION: Track view utility plug-in class
CREATED BY: Rolf Berteig
HISTORY: 12/18/96
03/11/02 -- Adam Felt. Expanded the interfaces.
WARNING: Plugin compatibility is not preserved between R4.x and R5
for TrackviewUtility plugins. R4.x TrackViewUtility plugins need
to be recompiled before running on R5.x and later. R5 and later
plugins will not run properly on previous versions.
*> Copyright (c) 1996-2002, All Rights Reserved.
**********************************************************************/
#ifndef __TVUTIL_H__
#define __TVUTIL_H__
class TrackViewUtility;
#include "ref.h"
// The five track view major modes
#define TVMODE_EDITKEYS 0
#define TVMODE_EDITTIME 1
#define TVMODE_EDITRANGES 2
#define TVMODE_POSRANGES 3
#define TVMODE_EDITFCURVE 4
// This is an interface that is given to track view utilities
// that allows them to access the track view they were launched from.
class ITVUtility : public InterfaceServer {
public:
virtual int GetNumTracks()=0;
virtual Animatable *GetAnim(int i)=0;
virtual Animatable *GetClient(int i)=0;
virtual int GetSubNum(int i)=0;
virtual TSTR GetTrackName(int i)=0;
virtual BOOL IsSelected(int i)=0;
virtual void SetSelect(int i,BOOL sel)=0;
virtual HWND GetTrackViewHWnd()=0;
virtual int GetMajorMode()=0;
virtual Interval GetTimeSelection()=0;
virtual BOOL SubTreeMode()=0;
virtual Animatable *GetTVRoot()=0;
// This must be called when a track view utility is closing
// so that it can be unregistered from notifications
virtual void TVUtilClosing(TrackViewUtility *util)=0;
// Access to the trackview interface. R5 and later only
virtual ITreeView* GetTVInterface()=0;
};
// Results for TrackViewUtility::FilterAnim
#define FILTER_SUBTREE 0 // Filter out this anim and it's subtree
#define FILTER_NONE 1 // Don't filter anything
#define FILTER_ANIM -1 // Filter out this anim, but include it's subtree
#define FILTER_NODE -2 // Filter out this node and subAnims, but include it's children
// This is the base class for track view utilities. Plug-ins will
// derive their classes from this class.
class TrackViewUtility : public InterfaceServer {
public:
virtual void DeleteThis()=0;
virtual void BeginEditParams(Interface *ip,ITVUtility *iu) {}
virtual void EndEditParams(Interface *ip,ITVUtility *iu) {}
virtual void TrackSelectionChanged() {}
virtual void NodeSelectionChanged() {}
virtual void KeySelectionChanged() {}
virtual void TimeSelectionChanged() {}
virtual void MajorModeChanged() {}
virtual void TrackListChanged() {}
// available in R5 and later only
virtual int FilterAnim(Animatable* anim, Animatable* client, int subNum) {return FILTER_NONE;}
// used to identify registered utilities
virtual void GetClassName(TSTR& s) { s = TSTR(_T("")); }
virtual Class_ID ClassID() { return Class_ID(0,0); }
// end of R5 additions
};
#endif //__TVUTIL_H__