Exemple #1
0
 bool Marker::shapeEquals(const Marker& other) const
 {
   return ((mark == other.getMark()) && (range == other.getRange()));
 }
Exemple #2
0
  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;
  }