tge/lib/maxsdk40/notetrck.h
2017-04-17 06:17:10 -06:00

134 lines
4.5 KiB
C++
Executable File

/**********************************************************************
*<
FILE: notetrck.h
DESCRIPTION: Note track plug-in class
CREATED BY: Rolf Berteig
HISTORY: created July 20, 1995
*> Copyright (c) 1994, All Rights Reserved.
**********************************************************************/
#ifndef __NOTETRCK_H__
#define __NOTETRCK_H__
class NoteTrack : public ReferenceTarget {
public:
SClass_ID SuperClassID() {return SClass_ID(NOTETRACK_CLASS_ID);}
RefResult AutoDelete() {return REF_SUCCEED;}
};
class NoteAnimProperty : public AnimProperty {
public:
NoteTrack *note;
DWORD ID() {return PROPID_NOTETRACK;}
NoteAnimProperty(NoteTrack *n=NULL) {note = n;}
~NoteAnimProperty() {if (note) note->DeleteMe();}
};
CoreExport NoteTrack *NewDefaultNoteTrack();
// Standard note track plug-in class definitions:
// Note Key Flags
#define NOTEKEY_SELECTED (1<<0)
#define NOTEKEY_LOCKED (1<<1)
#define NOTEKEY_FLAGGED (1<<2)
class NoteKey {
public:
TimeValue time;
TSTR note;
DWORD flags;
NoteKey(TimeValue t,const TSTR &n,DWORD f=0) {time=t;note=n;flags=f;}
NoteKey(NoteKey& n) {time=n.time;note=n.note;flags=n.flags;}
void SetFlag(DWORD mask) { flags|=(mask); }
void ClearFlag(DWORD mask) { flags &= ~(mask); }
BOOL TestFlag(DWORD mask) { return(flags&(mask)?1:0); }
};
class NoteKeyTab : public Tab<NoteKey*> {
public:
~NoteKeyTab() {Clear();}
CoreExport void Clear();
void DelKey(int i) {delete (*this)[i]; Delete(i,1);}
CoreExport NoteKeyTab &operator=(NoteKeyTab &keys);
CoreExport void KeysChanged();
};
class NoteKeyClipObject : public TrackClipObject {
public:
NoteKeyTab tab;
Class_ID ClassID() {return Class_ID(NOTETRACK_CLASS_ID,0);}
SClass_ID SuperClassID() { return NOTETRACK_CLASS_ID; }
void DeleteThis() {delete this;}
NoteKeyClipObject(Interval iv) : TrackClipObject(iv) {}
};
class DefNoteTrack : public NoteTrack {
public:
NoteKeyTab keys;
DefNoteTrack() {}
DefNoteTrack(DefNoteTrack &n) {keys=n.keys;}
DefNoteTrack& operator=(DefNoteTrack &track) {keys=track.keys;return *this;}
CoreExport void HoldTrack();
Class_ID ClassID() {return Class_ID(NOTETRACK_CLASS_ID,0);}
// Tree view methods from animatable
int NumKeys() {return keys.Count();}
TimeValue GetKeyTime(int index) {return keys[index]->time;}
CoreExport void MapKeys(TimeMap *map,DWORD flags );
CoreExport void DeleteKeys( DWORD flags );
CoreExport void CloneSelectedKeys(BOOL offset);
CoreExport void DeleteTime( Interval iv, DWORD flags );
CoreExport void ReverseTime( Interval iv, DWORD flags );
CoreExport void ScaleTime( Interval iv, float s);
CoreExport void InsertTime( TimeValue ins, TimeValue amount );
CoreExport void AddNewKey(TimeValue t,DWORD flags);
CoreExport int GetSelKeyCoords(TimeValue &t, float &val,DWORD flags);
CoreExport void SetSelKeyCoords(TimeValue t, float val,DWORD flags);
CoreExport int GetTrackVSpace( int lineHeight ) {return 1;}
CoreExport BOOL CanCopyTrack(Interval iv,DWORD flags) {return 1;}
CoreExport BOOL CanPasteTrack(TrackClipObject *cobj,Interval iv,DWORD flags) {return cobj->ClassID()==ClassID();}
CoreExport TrackClipObject *CopyTrack(Interval iv,DWORD flags);
CoreExport void PasteTrack(TrackClipObject *cobj,Interval iv,DWORD flags);
CoreExport Interval GetTimeRange(DWORD flags) ;
CoreExport int HitTestTrack(TrackHitTab& hits,Rect& rcHit,Rect& rcTrack,float zoom,int scroll,DWORD flags );
CoreExport int PaintTrack(ParamDimensionBase *dim,HDC hdc,Rect& rcTrack,Rect& rcPaint,float zoom,int scroll,DWORD flags );
CoreExport void SelectKeys( TrackHitTab& sel, DWORD flags );
CoreExport void SelectKeyByIndex(int i,BOOL sel);
CoreExport int NumSelKeys();
CoreExport void FlagKey(TrackHitRecord hit);
CoreExport int GetFlagKeyIndex();
CoreExport BOOL IsAnimated() {return TRUE;}
CoreExport void EditTrackParams(TimeValue t,ParamDimensionBase *dim,TCHAR *pname,HWND hParent,IObjParam *ip,DWORD flags);
CoreExport int TrackParamsType() {return TRACKPARAMS_KEY;}
CoreExport BOOL SupportTimeOperations() {return TRUE;}
CoreExport IOResult Save(ISave *isave);
CoreExport IOResult Load(ILoad *iload);
void DeleteThis() {delete this;}
RefResult NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget,
PartID& partID, RefMessage message) {return REF_SUCCEED;}
RefTargetHandle Clone(RemapDir &remap);
};
#endif // __NOTETRCK_H__