20 #include <sbml/packages/render/extension/RenderListOfLayoutsPlugin.h>
21 #include <sbml/packages/render/sbml/GlobalRenderInformation.h>
23 #include <sbml/ListOf.h>
24 #include <sbml/packages/layout/extension/LayoutExtension.h>
25 #include <sbml/packages/layout/sbml/Layout.h>
34 #ifndef EXTENSION_CREATE_NS
35 #define EXTENSION_CREATE_NS(type,variable,sbmlns)\
38 XMLNamespaces* xmlns = sbmlns->getNamespaces();\
39 variable = dynamic_cast<type*>(sbmlns);\
40 if (variable == NULL)\
42 variable = new type(sbmlns->getLevel(), sbmlns->getVersion());\
43 for (int i = 0; i < xmlns->getNumNamespaces(); i++)\
45 if (!variable->getNamespaces()->hasURI(xmlns->getURI(i)))\
46 variable->getNamespaces()->add(xmlns->getURI(i), xmlns->getPrefix(i));\
52 #ifndef LAYOUT_CREATE_NS
53 #define LAYOUT_CREATE_NS(variable,sbmlns)\
54 EXTENSION_CREATE_NS(LayoutPkgNamespaces,variable,sbmlns);
61 , mvGlobalRenderInformationObjects(
"ListOfGlobalRenderInformationObjects", this)
83 const std::map<std::string, const SBase*>& idMap,
unsigned int level,
unsigned int version)
const
90 ListOfLayouts* pLoL =
dynamic_cast<ListOfLayouts*
>(lol);
93 GlobalRenderInformation* pGRI = NULL;
94 std::map<std::string, std::string> keyToIdMap;
105 RenderListOfLayoutsPlugin* rlolPlugin = (RenderListOfLayoutsPlugin*) lol->getPlugin(
"render");
107 if (rlolPlugin == NULL)
110 const std::string uri = (lol->getLevel() < 3 ? RenderExtension::getXmlnsL2() : RenderExtension::getXmlnsL3V1V1());
111 lol->enablePackage(uri,
"render",
true);
112 rlolPlugin = (RenderListOfLayoutsPlugin*) lol->getPlugin(
"render");
114 if (lol->getLevel() > 2)
115 lol->getSBMLDocument()->setPackageRequired(
"render",
false);
118 assert(rlolPlugin != NULL);
120 for (i = 0; i < imax; ++i)
126 pGRI = rlolPlugin->createGlobalRenderInformation();
129 assert(pGRI != NULL);
138 SBMLDocumentLoader::convertRenderInformationReferencesKeys<GlobalRenderInformation>(*(rlolPlugin->getListOfGlobalRenderInformation()), keyToIdMap);
144 std::map<std::string, const SBase*> sbmlIDs = idMap;
147 std::set<SBase*> writtenToSBML;
155 for (i = 0; i < imax; ++i)
160 std::map<const CCopasiObject*, SBase*>::const_iterator it;
161 it = copasimodelmap.find(tmp);
165 if (it == copasimodelmap.end())
177 pLayout =
new Layout(layoutns);
179 lol->appendAndOwn(pLayout);
186 pLayout =
dynamic_cast<Layout*
>(it->second);
190 tmp->
exportToSBML(pLayout, copasimodelmap, sbmlIDs, keyToIdMap);
191 writtenToSBML.insert(pLayout);
195 for (i = lol->size(); i > 0; --i)
197 SBase*
object = lol->get((
unsigned int) i - 1);
199 if (writtenToSBML.find(
object) == writtenToSBML.end())
201 lol->remove((
unsigned int) i - 1);
bool remove(const std::string &key)
void exportToSBML(ListOf *lol, std::map< const CCopasiObject *, SBase * > &copasimodelmap, const std::map< std::string, const SBase * > &idMap, unsigned int level, unsigned int version) const
virtual size_t size() const
void addGlobalRenderInformation(CLGlobalRenderInformation *pRenderInfo)
virtual bool add(const CType &src)
CCopasiVector< CLGlobalRenderInformation > mvGlobalRenderInformationObjects
CListOfLayouts(const std::string &name="ListOfLayouts", const CCopasiContainer *pParent=NULL)
void addLayout(CLayout *layout, const std::map< std::string, std::string > &m)
#define LAYOUT_CREATE_NS(variable, sbmlns)
static CKeyFactory * getKeyFactory()
CLGlobalRenderInformation * getRenderInformation(size_t index)
const std::string & getKey()
void exportToSBML(Layout *layout, const std::map< const CCopasiObject *, SBase * > &copasimodelmap, std::map< std::string, const SBase * > &sbmlIDs, const std::map< std::string, std::string > &globalKeyToIdMap) const