79 lines
3.0 KiB
C++
Executable File
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_
|