Skip to content
Snippets Groups Projects

Resolve "Poor handling of modification states when exporting to SBGN-ML"

8 files
+ 1066
39
Compare changes
  • Side-by-side
  • Inline
Files
8
@@ -15,6 +15,7 @@ import org.sbgn.bindings.Map;
import lcsb.mapviewer.common.comparator.DoubleComparator;
import lcsb.mapviewer.common.exception.InvalidArgumentException;
import lcsb.mapviewer.converter.graphics.bioEntity.element.species.SpeciesConverter;
import lcsb.mapviewer.converter.graphics.bioEntity.reaction.ReactionConverter;
import lcsb.mapviewer.model.graphics.ArrowType;
import lcsb.mapviewer.model.graphics.PolylineData;
@@ -205,7 +206,7 @@ public class SbgnmlXmlExporter {
glyph.setState(state);
Bbox bbox = new Bbox();
float width = structuralState.getWidth().floatValue();
float height = structuralState.getHeight().floatValue();
bbox.setH(height);
@@ -400,32 +401,28 @@ public class SbgnmlXmlExporter {
glyph.setId(mr.getIdModificationResidue());
glyph.setClazz(GlyphClazz.STATE_VARIABLE.getClazz());
double width = SpeciesConverter.DEFAULT_MODIFICATION_DIAMETER;
double height = SpeciesConverter.DEFAULT_MODIFICATION_DIAMETER;
if (mr instanceof AbstractSiteModification) {
AbstractSiteModification modification = (AbstractSiteModification) mr;
Glyph.State state = new Glyph.State();
state.setVariable(mr.getName());
glyph.setState(state);
if (modification.getState() != null) {
Glyph.State state = new Glyph.State();
state.setValue(modification.getState().getAbbreviation());
state.setVariable(mr.getName());
glyph.setState(state);
}
} else if (mr instanceof AbstractRegionModification) {
width = ((AbstractRegionModification) mr).getWidth();
height = ((AbstractRegionModification) mr).getHeight();
}
Bbox bbox = new Bbox();
final float filledWidth = 70.0f;
final float filledHeight = 28.0f;
final float emptyWidth = 20.0f;
final float emptyHeight = 22.0f;
if (glyph.getState() != null) {
bbox.setH(filledHeight);
bbox.setW(filledWidth);
} else {
bbox.setH(emptyHeight);
bbox.setW(emptyWidth);
}
bbox.setH((float) width);
bbox.setW((float) height);
bbox.setX((float) mr.getPosition().getX());
bbox.setY((float) mr.getPosition().getY());
bbox.setX((float) (mr.getPosition().getX() - width / 2));
bbox.setY((float) (mr.getPosition().getY() - height / 2));
glyph.setBbox(bbox);
Loading