39 #if defined(HX_INTERNAL_CLASS_WARN) 40 #undef HX_INTERNAL_CLASS_WARN 41 #define HX_INTERNAL_CLASS_WARN_HXBASE 44 #pragma warning(disable:4996) 51 #include <hxcore/api.h> 55 #pragma warning( disable: 4355 ) 59 #include <xpand/hxdefs/HxInternalRules.h> 60 #include <mclib/McDArray.h> 61 #include <mclib/McInterfaceOwner.h> 62 #include <mclib/McInterface.h> 63 #include <amiramesh/HxParseUtils.h> 72 class SoRenderAreaSwitch;
77 class HxPlanarModBase;
81 class HxVolumeDataObject;
93 template<
class T>
class QxGlobalDisplayUnitsChangesListener;
95 struct HxBaseTclMembersPriv;
155 class HXCORE_API
HxBase :
public McInterface {
157 MC_ABSTRACT_HEADER(
HxBase);
182 virtual void setLabel(
const QString& label);
186 virtual void setDisplayLabel(
const QString& displayLabel );
198 const QString& getLabel(
bool withDoubleQuotes=
false)
const;
206 const char* getName(
bool withDoubleQuotes=
false)
const;
228 static QString convertToCamelCase(
const char* name );
235 const QString& getCamelCaseLabel()
const;
245 virtual bool isCamelCaseSupported()
const;
257 void composeLabel(
const QString& otherLabel,
const QString& replacement);
272 virtual void setViewerMask(
int mask,
int masterMask=0xffffffff);
280 int getViewerMask()
const;
287 int getViewerMaskAsIs()
const;
294 int getViewerMasterMask()
const;
303 void copyViewerVisibility(
unsigned int fromViewerId,
unsigned int toViewerId);
311 static int getDefaultViewerMask();
324 void showGeom(SoNode *node, HxSpatialData* controllData);
331 virtual void showGeom(SoNode *node);
339 void hideGeom(SoNode *node);
349 virtual void clipGeom(HxPlanarModBase* planarMod,
int viewerMask = 0xffff);
356 virtual void unclipGeom(HxPlanarModBase* planarMod);
363 bool isClipped()
const;
372 int getClipperMask(HxPlanarModBase* planarMod);
382 virtual int parse(Tcl_Interp* interpreter,
int argc,
char **argv);
389 static int getNumInstances();
396 void setControllingData(HxSpatialData* data);
403 HxSpatialData* getControllingData()
const;
410 void showPinButtons(
bool showIt );
417 int getNumPorts()
const;
425 HxPort* getPort(
int i)
const;
433 HxPort* getPort(
const QString& name)
const;
441 HxPort* getPortByLabel(
const QString& label)
const;
450 HxPort* getPortOfType(
const McTypeInfo *type,
bool ignoreInvisible=
true )
const;
459 static void addForbiddenLabel(
const char* forbiddenLabel);
466 static void removeForbiddenLabel(
const char* forbiddenLabel);
471 static void removeAllForbiddenLabels();
478 HxINTERNAL
void saveTclMemberVars(FILE* fp);
487 bool getTclMemberVar(
const char *name, QString& result)
const;
495 void setTclMemberVar(
const char *name,
const char* value);
504 HxINTERNAL
int setTclMemberVarSerialize(
const char *name,
bool serialize);
507 HxINTERNAL
int unsetTclMemberVar(
const char *name);
509 HxINTERNAL
int hasTclMemberFunction(
const char *name);
511 HxINTERNAL
void undefineTclMemberFunctions();
513 HxINTERNAL
const char* defineTclMemberFunction(
const char *name,
const char* args,
515 HxINTERNAL
void clearTclMembers();
516 HxINTERNAL
int callTclMemberFunction(
const char *name,
const char* args, QString& result);
525 SoSeparator* getSeparator()
const;
530 virtual void checkRemoteMode();
535 HxINTERNAL
virtual int getGeometryWeight();
553 void setRequiresPolygonOffset(
bool value);
560 bool requiresPolygonOffset()
const;
571 static bool polygonOffsetRequired();
579 virtual void setDisplayViewers(
const std::set<int>& visibleAreas);
587 void setDisplayViewers(
const McDArray<int>& visibleAreas);
596 void getDisplayViewers(std::set<int>& visibleAreas)
const;
604 void setDisplay(HxDisplay *display);
611 HxDisplay *getDisplay();
619 virtual const QxBaseNotifier* getNotifier()
const;
627 void notifyPortAdded(HxPort* port);
628 void notifyPortRemoved(HxPort* port);
641 QxGlobalDisplayUnitsChangesListener<HxBase>* getDisplayUnitsChangesListener()
const;
650 virtual void globalUnitChanged(
const int& oldUnit,
const int& newUnit);
659 virtual void globalCoordinatesUnitChanged(
const int& oldUnit,
const int& newUnit);
667 bool getFlag(
unsigned int flag )
const;
675 void setFlag(
unsigned int flag,
bool value );
685 static QString translate(
const char * context,
const char * sourceText,
const char * disambiguation = 0);
723 HxINTERNAL HxPort* createOnTheFlyPortFromClassName(
const QString& className,
const QString& name,
const QString& label);
738 HxINTERNAL
virtual HxPort* createOnTheFlyPort(
const HxPortTypeInfo* typeInfo,
const QString& name,
const QString& label);
745 HxINTERNAL
void removeOnTheFlyPort(HxPort* port);
750 HxINTERNAL
void removeAllOnTheFlyPorts();
764 HxINTERNAL
HxBase(McInterfaceOwner* owner = 0, QxBaseNotifier* notifier = 0);
771 HxINTERNAL
virtual ~HxBase();
778 void useWorldCoords(
int trueOrFalse=1);
783 virtual void updateTransform();
786 SoTransform* globalToLocalTransform;
789 SoTransform* globalToWorldTransform;
793 QString theLabelWithDoubleQuotes;
794 QString theLabelCamelCase;
797 QString theDisplayLabel;
800 HxSpatialData* controllingData;
803 McDArray<HxPort*> allPorts;
812 std::vector<HxPort*> m_allOnTheFlyPorts;
819 SoRenderAreaSwitch* raSwitch;
822 SoFieldSensor* raSwitchOnSensor;
825 HxDisplay *m_display;
828 unsigned short viewerMask;
829 unsigned short viewerMasterMask;
833 int m_geometryWeight;
837 SoRenderAreaSwitch* clipSwitch;
838 SoFieldSensor* clipSwitchOnSensor;
843 std::map<HxPlanarModBase*, ClipperInfo> clipperList;
854 static int staticParse(ClientData data, Tcl_Interp* interpreter,
int argc,
char** argv);
862 std::set<int> m_visibleAreas;
867 virtual void projectionActivated();
872 virtual void projectionDeactivated();
884 HxINTERNAL
void deleteSceneGraph();
896 virtual void addRootToController(SoSeparator* rootSep,
int rootViewerMask = 0xffff);
904 virtual void removeRootFromController(SoSeparator* rootSep);
912 HxINTERNAL
static int renderAreaSwitchStaticCB(
void* localUserData, HxBase* moduleBase, SoSwitch* traversingSwitch, HxRenderArea* renderArea, SoAction* action);
924 virtual int renderAreaSwitchCB(SoSwitch* traversingSwitch, HxRenderArea* renderArea, SoAction* action);
930 HxINTERNAL
int handleRenderAreaSwitchTraversing(
const std::set<int>& visibleAreas, SoSwitch* traversingSwitch, HxRenderArea* renderArea, SoAction* action);
935 HxINTERNAL
static void raSwitchOnSensorCB(
void* data, SoSensor* sensor);
946 HxINTERNAL
void handleNewDisplayViewersList(std::set<int>& visibleAreas);
951 McDArray<bool> m_flags;
957 QxGlobalDisplayUnitsChangesListener<HxBase>* m_displayUnitsChangesListener;
962 virtual void initScenegraph();
973 int parseAllInterfaces( Tcl_Interp* t,
int argc,
char** argv );
975 HxBaseTclMembersPriv* tclMembers;
978 HxBasePrivate* m_private;
980 QByteArray theLabelQBA;
981 QByteArray theLabelWithDoubleQuotesQBA;
982 QByteArray theLabelCamelCaseQBA;
986 void setLabelWDOUC(
const char* label);
992 HxINTERNAL
void internalSetLabel(
const char* label);
995 friend class HxSpatialData;
996 friend class HxBasePool;
997 friend class HxProjection;
998 friend class HxBasePrivate;
1022 #define HX_ABSTRACT_HEADER(className) \ 1023 MC_ABSTRACT_HEADER(className); \ 1024 static inline QString tr(const char *s, const char *c = 0, const char *dummy=0) { dummy = 0; return HxBase::translate(#className, s, c); } 1026 #define HX_HEADER(className) \ 1027 MC_HEADER(className); \ 1028 static inline QString tr(const char *s, const char *c = 0, const char *dummy=0) { dummy = 0; return HxBase::translate(#className, s, c); } 1030 #define HX_TEMPLATE_HEADER(className) \ 1031 MC_TEMPLATE_HEADER(className); \ 1032 static inline QString tr(const char *s, const char *c = 0, const char *dummy=0) { dummy = 0; return HxBase::translate(#className, s, c); } 1040 #define HX_INIT_ABSTRACT_CLASS(className,parentClass) \ 1041 MC_INIT_ABSTRACT_CLASS(className,parentClass); 1044 #define HX_INIT_ABSTRACT_CLASS2(className,parent1,parent2)\ 1045 MC_INIT_ABSTRACT_CLASS2(className,parent1,parent2); 1048 #define HX_INIT_CLASS(className,parentClass)\ 1049 MC_INIT_CLASS(className,parentClass); 1052 #define HX_INIT_TEMPLATE_CLASS(className,parentName) \ 1053 MC_INIT_TEMPLATE_CLASS(className,parentName); 1056 #define HX_INIT_CLASS2(className,parent1,parent2)\ 1057 MC_INIT_CLASS2(className,parent1,parent2); 1068 const QString& originalName,
const QString& replacement);
1074 #pragma warning(pop) 1076 #if defined(HX_INTERNAL_CLASS_WARN_HXBASE) 1077 #undef HX_INTERNAL_CLASS_WARN_HXBASE 1078 #define HX_INTERNAL_CLASS_WARN Object can have console completion.
Definition: HxBase.h:168
Object can be clipped by other modules.
Definition: HxBase.h:166
HXCORE_API void setResultName(QString &result, const QString &originalName, const QString &replacement)
Set result name.
const QString & getDisplayLabel() const
Returns the object's display label.
Definition: HxBase.h:189
Object visibility can be copied from one viewer to another.
Definition: HxBase.h:167
Flags
Flags.
Definition: HxBase.h:164
Base class of all data objects, modules, and editors.
Definition: HxBase.h:155