/*! \return a marker's line style \param key Marker key */ QwtMarker::LineStyle QwtPlot::markerLineStyle(long key) const { QwtPlotMarker *m = d_markers->find(key); if (m) return m->lineStyle(); else return QwtMarker::NoLine; }
/*! \brief Find the marker which is closest to a given point. \param xpos \param ypos coordinates of a point in the plotting region \retval dist Distance in points between the marker and the specified point. \return Key of the closest marker or 0 if no marker was found */ long QwtPlot::closestMarker(int xpos, int ypos, int &dist) const { QwtDiMap map[axisCnt]; for ( int axis = 0; axis < axisCnt; axis++ ) map[axis] = canvasMap(axis); long rv = 0; double dmin = 1.0e10; QwtPlotMarkerIterator itm = markerIterator(); for (QwtPlotMarker *m = itm.toFirst(); m != 0; m = ++itm ) { double cx = map[m->xAxis()].xTransform(m->xValue()); double cy = map[m->yAxis()].xTransform(m->yValue()); if (m->lineStyle() == QwtMarker::HLine) { if (m->symbol().style() == QwtSymbol::None) cx = double(xpos); } else if (m->lineStyle() == QwtMarker::VLine) { if (m->symbol().style() == QwtSymbol::None) cy = double(ypos); } double f = qwtSqr(cx - double(xpos)) + qwtSqr(cy - double(ypos)); if (f < dmin) { dmin = f; rv = itm.currentKey(); } } dist = int(sqrt(dmin)); return rv; }