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

79 lines
3.0 KiB
C++
Executable File

/**********************************************************************
FILE: IADTCategory.h
DESCRIPTION: Public intefaces that defines the concept of ADT Styles
CREATED BY: Attila Szabo, Discreet
HISTORY: - created Sep 29, 2002
*> Copyright (c) 1998-2002, All Rights Reserved.
**********************************************************************/
#ifndef _IADTCATEGORY_H_
#define _IADTCATEGORY_H_
#include "iFnPub.h"
#include "maxtypes.h"
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
// Forward declarations
class IADTStyle;
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
// class IADTCategory
//
// This interface models an ADT Object category that has styles
// Categories can be created and destroyed via the ADT Object Manager
// Styles are added and deleted to\from categories by the ADT Object Manager
// methods in order to ensure consistency of the data.
//
// Categories should be created and destroyed through the ADT Object Manager
// See IADTStyle* GetStyle(const TCHAR* pCategName, const TCHAR* pStyleName);
// An ADT Category is destroyed by the object manager when there are no styles
// that is references. See iADTObjMgr for more details
//________________________________________________________________________
class IADTCategory : public ReferenceTarget, public FPMixinInterface
{
public:
using ReferenceTarget::GetInterface;
// Access to name. The name is not case sensitive.
virtual const TCHAR* GetName() const = 0;
virtual void SetName(const TCHAR* pName) = 0;
// Returns NULL if the style does not exist
virtual IADTStyle* FindStyle(const TCHAR* pStyleName) const = 0;
// TODO: styles iteration
virtual unsigned long NumStyles() const = 0;
virtual unsigned long GetStyles(Tab<IADTStyle*>& styles) const = 0;
// Returns the number of all nodes in the scene that represent instances of
// all the styles that belong to this category.
virtual unsigned long NumInstances() const = 0;
// Fills out the provided array with all the nodes in the scene that represent
// instances of all the styles that belong to this category. Returns their count
virtual unsigned long GetInstances(Tab<INode*>& instances) const = 0;
// Creates a name that is unique among the style names and it's
// based on the given name. The unique name is seeded by passing in a seed-name
// through the TSTR&
// - TSTR& - Input\Output parameter. As input parameter, it represents a seed
// for the the unique name. As output parameter, it holds the unique name that
// was generated
virtual void MakeUniqueStyleName(TSTR& name) const = 0;
};
#define ADT_CATEGORY_INTERFACE Interface_ID(0x41030580, 0x7bce1c46)
inline IADTCategory* GetADTCategoryInterface(BaseInterface* baseIfc)
{
DbgAssert( baseIfc != NULL);
return static_cast<IADTCategory*>(baseIfc->GetInterface(ADT_CATEGORY_INTERFACE));
}
#endif //_IADTCATEGORY_H_