/* * Creates a new RenderCubicBezier object from the given XMLNode object. * The XMLNode object has to contain a valid XML representation of a * RenderCubicBezier object as defined in the render extension specification. * This method is normally called when render information is read from a file and * should normally not have to be called explicitely. * * @param node the XMLNode object reference that describes the RenderCubicBezier * object to be instantiated. */ RenderCubicBezier::RenderCubicBezier(const XMLNode& node, unsigned int l2version) :RenderPoint(node, l2version) { const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes, ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="annotation") { this->mAnnotation=new XMLNode(node); } else if(childName=="notes") { this->mNotes=new XMLNode(node); } else { //throw; } ++n; } setSBMLNamespacesAndOwn(new RenderPkgNamespaces(2,l2version)); connectToChild(); }
/** * Creates a new SpeciesGlyph from the given XMLNode */ SpeciesGlyph::SpeciesGlyph(const XMLNode& node, unsigned int l2version) : GraphicalObject(2, l2version) ,mSpecies("") { const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; //ExpectedAttributes ea(getElementName()); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="boundingBox") { this->mBoundingBox=BoundingBox(*child); } else if(childName=="annotation") { this->mAnnotation=new XMLNode(*child); } else if(childName=="notes") { this->mNotes=new XMLNode(*child); } else { //throw; } ++n; } }
/* * Creates a new RenderCurve object from the given XMLNode object. * The XMLNode object has to contain a valid XML representation of a * RenderCurve object as defined in the render extension specification. * This method is normally called when render information is read from a file and * should normally not have to be called explicitely. * * @param node the XMLNode object reference that describes the RenderCurve * object to be instantiated. */ RenderCurve::RenderCurve(const XMLNode& node, unsigned int l2version) : GraphicalPrimitive1D(node, l2version) , mListOfElements(node, l2version) { const XMLAttributes& attributes=node.getAttributes(); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes, ea); const XMLNode* child; unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="listOfElements") { this->mListOfElements=ListOfCurveElements(*child); } ++n; } setSBMLNamespacesAndOwn(new RenderPkgNamespaces(2,l2version)); connectToChild(); }
/* * Creates a new ListOfGlobalStyles object from the given XMLNode object. * The XMLNode object has to contain a valid XML representation of a * ListOfGlobalStyles object as defined in the render extension specification. * This method is normally called when render information is read from a file and * should normally not have to be called explicitely. * * @param node the XMLNode object reference that describes the ListOfGlobalStyles * object to be instantiated. */ ListOfGlobalStyles::ListOfGlobalStyles(const XMLNode& node) { const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; ExpectedAttributes ea; mURI = RenderExtension::getXmlnsL3V1V1(); addExpectedAttributes(ea); this->readAttributes(attributes, ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="style") { GlobalStyle* style=new GlobalStyle(*child); this->appendAndOwn(style); } else if(childName=="annotation") { this->mAnnotation=new XMLNode(*child); } else if(childName=="notes") { this->mNotes=new XMLNode(*child); } ++n; } }
/* * Creates a new SpeciesGlyph from the given XMLNode */ SpeciesGlyph::SpeciesGlyph(const XMLNode& node, unsigned int l2version) : GraphicalObject(node, l2version) ,mSpecies("") { const XMLAttributes& attributes=node.getAttributes(); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); }
/* * Creates a new CubicBezier from the given XMLNode */ CubicBezier::CubicBezier(const XMLNode& node, unsigned int l2version) : LineSegment(2, l2version) ,mBasePoint1(2, l2version) ,mBasePoint2(2, l2version) , mBasePt1ExplicitlySet (false) , mBasePt2ExplicitlySet (false) { const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; //ExpectedAttributes ea(getElementName()); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="start") { this->mStartPoint=Point(*child); this->mStartExplicitlySet = true; } else if(childName=="end") { this->mEndPoint=Point(*child); this->mEndExplicitlySet = true; } else if(childName=="basePoint1") { this->mBasePoint1=Point(*child); this->mBasePt1ExplicitlySet = true; } else if(childName=="basePoint2") { this->mBasePoint2=Point(*child); this->mBasePt2ExplicitlySet = true; } else if(childName=="annotation") { this->mAnnotation=new XMLNode(*child); } else if(childName=="notes") { this->mNotes=new XMLNode(*child); } else { //throw; } ++n; } connectToChild(); }
/* * Creates a new Transformation2D object from the given XMLNode object. * The XMLNode object has to contain a valid XML representation of a * Transformation2D object as defined in the render extension specification. * This method is normally called when render information is read from a file and * should normally not have to be called explicitely. * * @param node the XMLNode object reference that describes the Transformation2D * object to be instantiated. */ Transformation2D::Transformation2D(const XMLNode& node, unsigned int l2version) :Transformation(node, l2version) { ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(node.getAttributes(), ea); setSBMLNamespacesAndOwn(new RenderPkgNamespaces(2,l2version)); connectToChild(); }
/* * Creates a new BoundingBox from the given XMLNode */ BoundingBox::BoundingBox(const XMLNode& node, unsigned int l2version) : SBase(2,l2version) , mId("") , mPosition(2,l2version) , mDimensions(2,l2version) ,mPositionExplicitlySet (false) ,mDimensionsExplicitlySet (false) { mPosition.setElementName("position"); const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; //ExpectedAttributes ea(getElementName()); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="position") { this->mPosition=Point(*child); this->mPositionExplicitlySet = true; } else if(childName=="dimensions") { this->mDimensions=Dimensions(*child); this->mDimensionsExplicitlySet = true; } else if(childName=="annotation") { this->mAnnotation=new XMLNode(*child); } else if(childName=="notes") { this->mNotes=new XMLNode(*child); } else { //throw; } ++n; } setSBMLNamespacesAndOwn(new LayoutPkgNamespaces(2,l2version)); connectToChild(); }
/* * Creates a new ReferenceGlyph from the given XMLNode */ ReferenceGlyph::ReferenceGlyph(const XMLNode& node, unsigned int l2version) : GraphicalObject (node, l2version) ,mReference("") ,mGlyph ("") ,mRole ("") , mCurve (2, l2version) ,mCurveExplicitlySet (false) { const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="curve") { // since the copy constructor of ListOf does not make deep copies // of the objects, we have to add the individual curveSegments to the // curve instead of just copying the whole curve. Curve* pTmpCurve=new Curve(*child); unsigned int i,iMax=pTmpCurve->getNumCurveSegments(); for(i=0;i<iMax;++i) { this->mCurve.addCurveSegment(pTmpCurve->getCurveSegment(i)); } // we also have to copy mAnnotations, mNotes, mCVTerms and mHistory if(pTmpCurve->isSetNotes()) this->mCurve.setNotes(new XMLNode(*pTmpCurve->getNotes())); if(pTmpCurve->isSetAnnotation()) this->mCurve.setAnnotation(new XMLNode(*pTmpCurve->getAnnotation())); if(pTmpCurve->getCVTerms()!=NULL) { iMax=pTmpCurve->getCVTerms()->getSize(); for(i=0;i<iMax;++i) { this->mCurve.getCVTerms()->add(static_cast<CVTerm*>(pTmpCurve->getCVTerms()->get(i))->clone()); } } delete pTmpCurve; mCurveExplicitlySet = true; } ++n; } connectToChild(); }
/** * Creates a new LineSegment from the given XMLNode */ LineSegment::LineSegment(const XMLNode& node, unsigned int l2version) : SBase (2, l2version) , mStartPoint(2, l2version) , mEndPoint (2, l2version) { const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; //ExpectedAttributes ea(getElementName()); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="start") { this->mStartPoint=Point(*child); } else if(childName=="end") { this->mEndPoint=Point(*child); } else if(childName=="annotation") { this->mAnnotation=new XMLNode(*child); } else if(childName=="notes") { this->mNotes=new XMLNode(*child); } else { //throw; } ++n; } connectToChild(); setSBMLNamespacesAndOwn(new LayoutPkgNamespaces(2,l2version)); }
/* * Parses the xml information in the given node and sets the attributes. * This method should never be called by the user. It is only used to read render * information from annotations. * * @param node the XMLNode object reference that describes the ListOfGlobalRenderInformation * object to be instantiated. */ void ListOfGlobalRenderInformation::parseXML(const XMLNode& node) { const XMLNode* child; unsigned int n=0,nMax = node.getNumChildren(); const XMLAttributes& attributes=node.getAttributes(); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes, ea); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="renderInformation") { GlobalRenderInformation* pGRI=new GlobalRenderInformation(this->getLevel(),this->getVersion()); pGRI->parseXML(*child); this->appendAndOwn(pGRI); } ++n; } }
/* * Parses the xml information in the given node and sets the attributes. * This method should never be called by the user. It is only used to read render * information from annotations. * * @param node the XMLNode object reference that describes the GlobalRenderInformation * object to be instantiated. */ void GlobalRenderInformation::parseXML(const XMLNode& node) { this->RenderInformationBase::parseXML(node); const XMLNode* child; unsigned int n=0,nMax = node.getNumChildren(); const XMLAttributes& attributes=node.getAttributes(); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes, ea); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="listOfStyles") { this->mListOfStyles=ListOfGlobalStyles(*child); this->mListOfStyles.setSBMLDocument(this->mSBML); } ++n; } }
/* * Creates a new Text object from the given XMLNode object. * The XMLNode object has to contain a valid XML representation of a * Text object as defined in the render extension specification. * This method is normally called when render information is read from a file and * should normally not have to be called explicitely. * * @param node the XMLNode object reference that describes the Text * object to be instantiated. */ Text::Text(const XMLNode& node, unsigned int l2version):GraphicalPrimitive1D(node, l2version) { const XMLAttributes& attributes=node.getAttributes(); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); unsigned int i,iMax=node.getNumChildren(); for(i=0;i<iMax;++i) { if(node.getChild(i).isText()) { mText=node.getChild(i).getCharacters(); break; } } setSBMLNamespacesAndOwn(new RenderPkgNamespaces(2,l2version)); connectToChild(); }
/** * Creates a new ReactionGlyph from the given XMLNode */ ReactionGlyph::ReactionGlyph(const XMLNode& node, unsigned int l2version) : GraphicalObject(2,l2version) ,mReaction ("") ,mSpeciesReferenceGlyphs(2,l2version) ,mCurve(2,l2version) { const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; //ExpectedAttributes ea(getElementName()); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="boundingBox") { this->mBoundingBox=BoundingBox(*child); } else if(childName=="annotation") { this->mAnnotation=new XMLNode(*child); } else if(childName=="notes") { this->mNotes=new XMLNode(*child); } else if(childName=="curve") { // since the copy constructor of ListOf does not make deep copies // of the objects, we have to add the individual curveSegments to the // curve instead of just copying the whole curve. Curve* pTmpCurve=new Curve(*child); unsigned int i,iMax=pTmpCurve->getNumCurveSegments(); for(i=0;i<iMax;++i) { this->mCurve.addCurveSegment(pTmpCurve->getCurveSegment(i)); } // we also have to copy mAnnotations, mNotes, mCVTerms and mHistory if(pTmpCurve->isSetNotes()) this->mCurve.setNotes(new XMLNode(*pTmpCurve->getNotes())); if(pTmpCurve->isSetAnnotation()) this->mCurve.setAnnotation(new XMLNode(*pTmpCurve->getAnnotation())); if(pTmpCurve->getCVTerms()!=NULL) { iMax=pTmpCurve->getCVTerms()->getSize(); for(i=0;i<iMax;++i) { this->mCurve.getCVTerms()->add(static_cast<CVTerm*>(pTmpCurve->getCVTerms()->get(i))->clone()); } } delete pTmpCurve; } else if(childName=="listOfSpeciesReferenceGlyphs") { const XMLNode* innerChild; unsigned int i=0,iMax=child->getNumChildren(); while(i<iMax) { innerChild=&child->getChild(i); const std::string innerChildName=innerChild->getName(); if(innerChildName=="speciesReferenceGlyph") { this->mSpeciesReferenceGlyphs.appendAndOwn(new SpeciesReferenceGlyph(*innerChild)); } else if(innerChildName=="annotation") { this->mSpeciesReferenceGlyphs.setAnnotation(new XMLNode(*innerChild)); } else if(innerChildName=="notes") { this->mSpeciesReferenceGlyphs.setNotes(new XMLNode(*innerChild)); } else { // throw } ++i; } } else { //throw; } ++n; } connectToChild(); }
/* * Creates a new ReactionGlyph from the given XMLNode */ Curve::Curve(const XMLNode& node, unsigned int l2version) : SBase (2,l2version) ,mCurveSegments(2,l2version) { const XMLAttributes& attributes=node.getAttributes(); const XMLNode* child; //ExpectedAttributes ea(getElementName()); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes,ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="annotation") { this->mAnnotation=new XMLNode(*child); } else if(childName=="notes") { this->mNotes=new XMLNode(*child); } else if(childName=="listOfCurveSegments") { const XMLNode* innerChild; unsigned int i=0,iMax=child->getNumChildren(); while(i<iMax) { innerChild=&child->getChild(i); const std::string innerChildName=innerChild->getName(); if(innerChildName=="curveSegment") { // get the type const XMLAttributes& innerAttributes=innerChild->getAttributes(); int typeIndex=innerAttributes.getIndex("type"); if(typeIndex==-1 || innerAttributes.getURI(typeIndex)!="http://www.w3.org/2001/XMLSchema-instance") { // throw ++i; continue; } if(innerAttributes.getValue(typeIndex)=="LineSegment") { this->mCurveSegments.appendAndOwn(new LineSegment(*innerChild)); } else if(innerAttributes.getValue(typeIndex)=="CubicBezier") { this->mCurveSegments.appendAndOwn(new CubicBezier(*innerChild)); } else { // throw } } else if(innerChildName=="annotation") { this->mCurveSegments.setAnnotation(new XMLNode(*innerChild)); } else if(innerChildName=="notes") { this->mCurveSegments.setNotes(new XMLNode(*innerChild)); } else { // throw } ++i; } } else { //throw; } ++n; } setSBMLNamespacesAndOwn(new LayoutPkgNamespaces(2,l2version)); connectToChild(); }
/** @cond doxygenLibsbmlInternal */ void GlobalRenderInformation::readAttributes (const XMLAttributes& attributes, const ExpectedAttributes& expectedAttributes) { ExpectedAttributes ea; addExpectedAttributes(ea); this->RenderInformationBase::readAttributes(attributes, ea); }
/* * Creates a new Style object from the given XMLNode object. * The XMLNode object has to contain a valid XML representation of a * Style object as defined in the render extension specification. * This method is normally called when render information is read from a file and * should normally not have to be called explicitely. * * @param node the XMLNode object reference that describes the Style * object to be instantiated. */ Style::Style(const XMLNode& node, unsigned int l2version) : SBase(2,l2version), mGroup(2,l2version) { mURI = RenderExtension::getXmlnsL3V1V1(); const XMLNode* child; const XMLAttributes& attributes=node.getAttributes(); ExpectedAttributes ea; addExpectedAttributes(ea); this->readAttributes(attributes, ea); unsigned int n=0,nMax = node.getNumChildren(); while(n<nMax) { child=&node.getChild(n); const std::string& childName=child->getName(); if(childName=="g") { this->mGroup=RenderGroup(*child); // set the unset values to the defaults if(!this->mGroup.isSetStroke()) { this->mGroup.setStroke("none"); } if(!this->mGroup.isSetStrokeWidth()) { this->mGroup.setStrokeWidth(0.0); } if(!this->mGroup.isSetDashArray()) { this->mGroup.setDashArray(std::vector<unsigned int>()); } if(!this->mGroup.isSetFillColor()) { this->mGroup.setFillColor("none"); } if(!this->mGroup.isSetFillRule()) { this->mGroup.setFillRule(GraphicalPrimitive2D::NONZERO); } if(!this->mGroup.isSetFontFamily()) { this->mGroup.setFontFamily("sans-serif"); } if(!this->mGroup.isSetFontSize()) { this->mGroup.setFontSize(0); } if(!this->mGroup.isSetFontWeight()) { this->mGroup.setFontWeight(Text::WEIGHT_NORMAL); } if(!this->mGroup.isSetFontStyle()) { this->mGroup.setFontStyle(Text::STYLE_NORMAL); } if(!this->mGroup.isSetStartHead()) { this->mGroup.setStartHead("none"); } if(!this->mGroup.isSetEndHead()) { this->mGroup.setEndHead("none"); } } else if(childName=="annotation") { this->mAnnotation=new XMLNode(*child); } else if(childName=="notes") { this->mNotes=new XMLNode(*child); } ++n; } setSBMLNamespacesAndOwn(new RenderPkgNamespaces(2,l2version)); connectToChild(); }