Ejemplo n.º 1
0
void CLGraphicalObject::exportToSBML(GraphicalObject * sbmlobject,
                                     const std::map<const CCopasiObject*, SBase*> & /* copasimodelmap */,
                                     std::map<std::string, const SBase*>& sbmlIDs) const
{
  if (!sbmlobject) return;

  //Name and ID
  std::string id = CSBMLExporter::createUniqueId(sbmlIDs, "layout_glyph_");
  sbmlobject->setId(id);
  sbmlIDs.insert(std::pair<const std::string, const SBase*>(id, sbmlobject));

  //Bounding box
  BoundingBox tmpbox = mBBox.getSBMLBoundingBox();
  sbmlobject->setBoundingBox(&tmpbox);
#ifdef USE_CRENDER_EXTENSION

  if (this->mObjectRole.find_first_not_of(" \t\r\n") != std::string::npos)
    {
      RenderGraphicalObjectPlugin* rgoPlugin = (RenderGraphicalObjectPlugin*) sbmlobject->getPlugin("render");

      if (rgoPlugin != NULL)
        rgoPlugin->setObjectRole(this->mObjectRole);
    }

#endif // USE_CRENDER_EXTENSION
}
Ejemplo n.º 2
0
CLGraphicalObject::CLGraphicalObject(const GraphicalObject & sbml,
                                     std::map<std::string, std::string> & layoutmap,
                                     const CCopasiContainer * pParent)
  : CLBase(sbml),
    CCopasiContainer(sbml.getId(), pParent, "LayoutElement"),
    mKey(CCopasiRootContainer::getKeyFactory()->add("Layout", this)),
    mModelObjectKey(""),
    mBBox(*sbml.getBoundingBox())
{
  RenderGraphicalObjectPlugin* rgoPlugin = (RenderGraphicalObjectPlugin*) sbml.getPlugin("render");

  if (rgoPlugin != NULL)
    mObjectRole = rgoPlugin->getObjectRole();

  //add the copasi key to the map
  layoutmap[sbml.getId()] = mKey;
};
Ejemplo n.º 3
0
END_TEST


START_TEST ( test_RenderExtension_graphicalObject )
{
    RenderPkgNamespaces renderns;
    LayoutPkgNamespaces layoutns;

    SBMLDocument doc(3,1);

    doc.enablePackage(layoutns.getURI(), "layout", true);
    doc.enablePackage(renderns.getURI(), "render", true);

    Model* model = doc.createModel();

    LayoutModelPlugin *lPlugin = (LayoutModelPlugin*)model->getPlugin("layout");
    fail_unless(lPlugin != NULL);

    Layout* layout = lPlugin->createLayout();
    Dimensions dim(&layoutns, 100,100 );
    layout->setDimensions(&dim);

    GraphicalObject* additional = layout->createAdditionalGraphicalObject();
    additional->setId("go1");
    BoundingBox bb(&layoutns, "bb1", 10, 10, 90, 90);
    additional->setBoundingBox(&bb);
    RenderGraphicalObjectPlugin* goPlugin = (RenderGraphicalObjectPlugin*)additional->getPlugin("render");
    fail_unless(goPlugin != NULL);
    goPlugin->setObjectRole("myRole");


    RenderLayoutPlugin *rPlugin = (RenderLayoutPlugin*)layout->getPlugin("render");
    fail_unless(rPlugin != NULL);

    LocalRenderInformation* local = rPlugin->createLocalRenderInformation();

    ColorDefinition *black = local->createColorDefinition();
    black->setId("black");
    black->setColorValue("#000000");

    LocalStyle *lStyle = local->createStyle("style_go1");
    lStyle->addId("go1");
    RenderGroup* group = lStyle->getGroup();
    group->setStroke("black");


    std::string sbml = writeSBMLToStdString(&doc);

    fail_unless (sbml.length() != 0);

    // read back

    SBMLDocument *doc2 = readSBMLFromString(sbml.c_str());
    LayoutModelPlugin *lPlugin2 = (LayoutModelPlugin*)doc2->getModel()->getPlugin("layout");
    fail_unless(lPlugin2 != NULL);
    GraphicalObject *go2 = lPlugin2->getLayout(0)->getAdditionalGraphicalObject(0);
    fail_unless(go2 != NULL);
    RenderGraphicalObjectPlugin* goPlugin2 = (RenderGraphicalObjectPlugin*)go2->getPlugin("render");
    fail_unless(goPlugin2 != NULL);
    fail_unless(goPlugin2->getObjectRole() == "myRole");

    delete doc2;
}
Ejemplo n.º 4
0
END_TEST


START_TEST ( test_RenderExtension_gradient )
{
    RenderPkgNamespaces renderns;
    LayoutPkgNamespaces layoutns;

    SBMLDocument doc(3,1);

    doc.enablePackage(layoutns.getURI(), "layout", true);
    doc.enablePackage(renderns.getURI(), "render", true);

    Model* model = doc.createModel();

    LayoutModelPlugin *lPlugin = (LayoutModelPlugin*)model->getPlugin("layout");
    fail_unless(lPlugin != NULL);

    Layout* layout = lPlugin->createLayout();
    Dimensions dim(&layoutns, 100,100 );
    layout->setDimensions(&dim);

    GraphicalObject* additional = layout->createAdditionalGraphicalObject();
    additional->setId("go1");
    BoundingBox bb(&layoutns, "bb1", 10, 10, 90, 90);
    additional->setBoundingBox(&bb);
    RenderGraphicalObjectPlugin* goPlugin = (RenderGraphicalObjectPlugin*)additional->getPlugin("render");
    fail_unless(goPlugin != NULL);
    goPlugin->setObjectRole("myRole");


    RenderLayoutPlugin *rPlugin = (RenderLayoutPlugin*)layout->getPlugin("render");
    fail_unless(rPlugin != NULL);

    LocalRenderInformation* local = rPlugin->createLocalRenderInformation();

    ColorDefinition *black = local->createColorDefinition();
    black->setId("black");
    black->setColorValue("#000000");

    ColorDefinition *grey = local->createColorDefinition();
    grey->setId("grey");
    grey->setColorValue("#F0F0F0");

    LinearGradient* gradient = local->createLinearGradientDefinition();
    gradient->setId("test");
    gradient->setPoint1(RelAbsVector(), RelAbsVector());
    gradient->setPoint2(RelAbsVector(0,100), RelAbsVector(0,100));

    GradientStop *stop = gradient->createGradientStop();
    stop->setOffset(RelAbsVector());
    stop->setStopColor("white");

    stop = gradient->createGradientStop();
    stop->setOffset(RelAbsVector(0, 100));
    stop->setStopColor("silver");

    std::string smodel = writeSBMLToStdString(&doc);

    fail_unless( stop->getStopColor() == "silver" );
}