#include <primitive.h>
Definition at line 520 of file primitive.h.
Public Member Functions | |
| void | convert (const CPrimRegion ®ion) |
| CPrimitives (const CPrimitives &other) | |
| CPrimitives () | |
| CPrimitives & | operator= (const CPrimitives &other) |
| bool | read (xmlNodePtr xmlNode, const char *filename, CLigoConfig &config) |
| void | write (xmlNodePtr root, const char *filename) const |
| void | write (xmlDocPtr xmlNode, const char *filename) const |
| ~CPrimitives () | |
Data Fields | |
| CPrimNode * | RootNode |
Private Member Functions | |
| void | convertAddPrimitive (IPrimitive *child, const IPrimitive *prim, bool hidden) |
| void | convertPrimitive (const IPrimitive *prim, bool hidden) |
|
|
Definition at line 1730 of file primitive.cpp.
01731 {
01732 RootNode = static_cast<CPrimNode *> (CClassRegistry::create ("CPrimNode"));
01733 }
|
|
|
Definition at line 1737 of file primitive.cpp. References RootNode.
01738 {
01739 RootNode = static_cast<CPrimNode *> (((IPrimitive*)other.RootNode)->copy ());
01740 }
|
|
|
Definition at line 1744 of file primitive.cpp.
01745 {
01746 delete RootNode;
01747 }
|
|
|
Definition at line 1959 of file primitive.cpp. References convertPrimitive(), NLLIGO::IPrimitive::removeChildren(), NLLIGO::IPrimitive::removeProperties(), uint, NLLIGO::CPrimRegion::VHidePaths, NLLIGO::CPrimRegion::VHidePoints, NLLIGO::CPrimRegion::VHideZones, NLLIGO::CPrimRegion::VPaths, NLLIGO::CPrimRegion::VPoints, and NLLIGO::CPrimRegion::VZones.
01960 {
01961 // Delete
01962 RootNode->removeChildren ();
01963 RootNode->removeProperties ();
01964
01965 // For each primitives
01966 uint i;
01967 for (i=0; i<region.VPoints.size (); i++)
01968 {
01969 convertPrimitive (&(region.VPoints[i]), region.VHidePoints[i]);
01970 }
01971 for (i=0; i<region.VPaths.size (); i++)
01972 {
01973 convertPrimitive (&(region.VPaths[i]), region.VHidePaths[i]);
01974 }
01975 for (i=0; i<region.VZones.size (); i++)
01976 {
01977 convertPrimitive (&(region.VZones[i]), region.VHideZones[i]);
01978 }
01979 }
|
|
||||||||||||||||
|
Definition at line 1839 of file primitive.cpp. References NLLIGO::IPrimitive::addPropertyByName(), NLLIGO::IPrimitive::insertChild(), NLLIGO::IPrimitive::Name, and NLLIGO::CPropertyString::String. Referenced by convertPrimitive().
01840 {
01841 // The primitve
01842 IPrimitive *primitive = NULL;
01843
01844 // What kind of primitive ?
01845 const CPrimPoint *oldPoint = dynamic_cast<const CPrimPoint *>(prim);
01846 if (oldPoint)
01847 {
01848 // Create a primitive
01849 CPrimPoint *point = static_cast<CPrimPoint *> (CClassRegistry::create ("CPrimPoint"));
01850 primitive = point;
01851
01852 // Copy it
01853 *point = *oldPoint;
01854 }
01855 else
01856 {
01857 // Path ?
01858 const CPrimPath *oldPath = dynamic_cast<const CPrimPath *>(prim);
01859 if (oldPath)
01860 {
01861 // Create a primitive
01862 CPrimPath *path = static_cast<CPrimPath *> (CClassRegistry::create ("CPrimPath"));
01863 primitive = path;
01864
01865 // Copy it
01866 *path = *oldPath;
01867 }
01868 else
01869 {
01870 const CPrimZone *oldZone = safe_cast<const CPrimZone *>(prim);
01871 if (oldZone)
01872 {
01873 // Create a primitive
01874 CPrimZone *zone = static_cast<CPrimZone *> (CClassRegistry::create ("CPrimZone"));
01875 primitive = zone;
01876
01877 // Copy it
01878 *zone = *oldZone;
01879 }
01880 }
01881 }
01882
01883 // Primitive has been created ?
01884 if (primitive)
01885 {
01886 // Create a property for the name
01887 CPropertyString *nameProp = new CPropertyString;
01888 nameProp->String = prim->Name;
01889
01890 // Add the property
01891 primitive->addPropertyByName ("name", nameProp);
01892
01893 // The primitive is hidden ?
01894 if (hidden)
01895 {
01896 // Create a property for hidden
01897 nameProp = new CPropertyString;
01898
01899 // Add the property
01900 primitive->addPropertyByName ("hidden", nameProp);
01901 }
01902
01903 // Add the child
01904 child->insertChild (primitive);
01905 }
01906 }
|
|
||||||||||||
|
Definition at line 1910 of file primitive.cpp. References NLLIGO::IPrimitive::addPropertyByName(), convertAddPrimitive(), NLLIGO::IPrimitive::getChild(), NLLIGO::IPrimitive::getNumChildren(), NLLIGO::IPrimitive::getPropertyByName(), NLLIGO::IPrimitive::insertChild(), NLLIGO::IPrimitive::Layer, nlverify, NLLIGO::CPropertyString::String, and uint. Referenced by convert().
01911 {
01912 // Look for the group
01913 uint numChildren = RootNode->getNumChildren ();
01914 uint j;
01915 for (j=0; j<numChildren; j++)
01916 {
01917 IPrimitive *child;
01918 nlverify (RootNode->getChild (child, j));
01919 const IProperty *prop;
01920 if (child->getPropertyByName ("name", prop))
01921 {
01922 // Prop string
01923 const CPropertyString *name = dynamic_cast<const CPropertyString *>(prop);
01924 if (name)
01925 {
01926 // This one ?
01927 if (name->String == prim->Layer)
01928 {
01929 convertAddPrimitive (child, prim, hidden);
01930 break;
01931 }
01932 }
01933 }
01934 }
01935
01936 // Not found ?
01937 if (j==numChildren)
01938 {
01939 // Create a node
01940 CPrimNode *primNode = static_cast<CPrimNode *> (CClassRegistry::create ("CPrimNode"));
01941
01942 // Create a property for the layer
01943 CPropertyString *nameProp = new CPropertyString;
01944 nameProp->String = prim->Layer;
01945
01946 // Add the property
01947 primNode->addPropertyByName ("name", nameProp);
01948
01949 // Add the child
01950 RootNode->insertChild (primNode);
01951
01952 // Add the primitive
01953 convertAddPrimitive (primNode, prim, hidden);
01954 }
01955 }
|
|
|
Definition at line 1751 of file primitive.cpp. References RootNode.
01752 {
01753 RootNode = static_cast<CPrimNode *> (((IPrimitive*)other.RootNode)->copy ());
01754 return *this;
01755 }
|
|
||||||||||||||||
|
Definition at line 1759 of file primitive.cpp. References NLLIGO::Error(), NLLIGO::GetFirstChildNode(), NLLIGO::GetPropertyString(), nlassert, NLLIGO_PRIMITVE_VERSION, NLLIGO::IPrimitive::removeChildren(), NLLIGO::IPrimitive::removeProperties(), uint, and NLLIGO::XMLError(). Referenced by NLSOUND::CBackgroundSoundManager::load().
01760 {
01761 nlassert (xmlNode);
01762
01763 // Clear the primitives
01764 RootNode->removeChildren ();
01765 RootNode->removeProperties ();
01766
01767 // Get the name
01768 if (strcmp ((const char*)xmlNode->name, "PRIMITIVES") == 0)
01769 {
01770 // Get the version
01771 string versionName = "0";
01772 if (GetPropertyString (versionName, filename, xmlNode, "VERSION"))
01773 {
01774 // Get the version
01775 uint version = atoi (versionName.c_str ());
01776
01777 // Check the version
01778 if (version <= NLLIGO_PRIMITVE_VERSION)
01779 {
01780 // Read the primitives
01781 xmlNode = GetFirstChildNode (xmlNode, filename, "ROOT_PRIMITIVE");
01782 if (xmlNode)
01783 {
01784 // Read the primitive tree
01785 ((IPrimitive*)RootNode)->read (xmlNode, filename, version, config);
01786 }
01787 }
01788 else
01789 {
01790 Error (filename, "CPrimitives::read : Unknown file version (%d)", version);
01791 return false;
01792 }
01793 }
01794 else
01795 {
01796 return false;
01797 }
01798 }
01799 else
01800 {
01801 XMLError (xmlNode, filename, "This XML document is not a NeL primitive file");
01802 return false;
01803 }
01804
01805 return true;
01806 }
|
|
||||||||||||
|
Definition at line 1823 of file primitive.cpp. References nlassert, NLLIGO_PRIMITVE_VERSION, and NLMISC::toString().
01824 {
01825 nlassert (root);
01826
01827 // Version node
01828 xmlSetProp (root, (const xmlChar*)"VERSION", (const xmlChar*)toString (NLLIGO_PRIMITVE_VERSION).c_str ());
01829
01830 // The primitive root node
01831 xmlNodePtr nameNode = xmlNewChild ( root, NULL, (const xmlChar*)"ROOT_PRIMITIVE", NULL);
01832
01833 // Write the primitive tree
01834 ((IPrimitive*)RootNode)->write (nameNode, filename);
01835 }
|
|
||||||||||||
|
Definition at line 1810 of file primitive.cpp. References nlassert.
|
|
|
Definition at line 535 of file primitive.h. Referenced by CPrimitives(), NLSOUND::CBackgroundSoundManager::load(), and operator=(). |
1.3.6