bool Marker::shapeEquals(const Marker& other) const { return ((mark == other.getMark()) && (range == other.getRange())); }
void SVGImage::defineMarker (const Marker& marker, int dfltname) { if( lastMarker == marker ) return; using namespace std; string name = marker.uniqueName(); //cout << name << endl;; string savedtab=tab; string marktab=string(" "); string intab=string(" "); ostr << tab << "<defs>\n"; double r = marker.getRange(); double r2 = 2*r; ostr << marktab << "<marker id=\"" << name << "\" markerUnits=\"strokeWidth\" " << "markerWidth=\"" << r2 << "\" markerHeight=\"" << r2 << "\" " << "viewBox=\"0 0 " << r2 << " " << r2 << "\" \n" << marktab << " " << "refX=\"" << r << "\" refY=\"" << r << "\" "; string col; { stringstream ss; ss.fill('0'); ss << '#' << hex << setw(6) << marker.getColor().getRGB(); col = ss.str(); } // These are here just in case. ostr.fill('0'); ostr << "stroke-width=\".2pt\" " << "fill=\"none\">\n"; // Initial marker tab is set up...now to put the shape in... if (marker.hasDefaultMark()) { Marker::Mark mark = marker.getMark(); switch(mark) { case Marker::DOT: ostr << intab << "<circle cx=\"" << r << "\" cy=\"" << r << "\" " <<"r=\"" << r << "\" style=\"fill:" << col << ";stroke:" << col << "\"/>\n"; break; case Marker::PLUS: ostr << intab << "<line x1=\"0\" y1=\"" << r << "\" " << "x2=\"" << r2 << "\" y2=\"" << r << "\"/>\n"; ostr << intab << "<line x1=\"" << r << "\" y1=\"0\" " << "x2=\"" << r << "\" y2=\"" << r2 << "\"/>\n"; break; case Marker::X: ostr << intab << "<line x1=\"0\" y1=\"0\" " << "x2=\"" << r2 << "\" y2=\"" << r2 << "\"/>\n"; ostr << intab << "<line x1=\"" << r2 << "\" y1=\"0\" " << "x2=\"0\" y2=\"" << r2 << "\"/>\n"; break; } } else { //This should not be called as BasicShapes were removed...but left // here as a placeholder if it ever comes back. //Todo: // * Make sure marker color works as necessary (useMarkerColor) // * Add some to the tab variable? // * Need to fix shape coordinates? //ostr << intab << markerShape << endl; } ostr << marktab << "</marker>\n"; ostr << tab << "</defs>\n"; markerDefined = true; lastMarker = marker; }