void Graph::drawMarkers(Drawable drawable, int under) { for (ChainLink* link = Chain_LastLink(markers_.displayList); link; link = Chain_PrevLink(link)) { Marker* markerPtr = (Marker*)Chain_GetValue(link); MarkerOptions* mops = (MarkerOptions*)markerPtr->ops(); if ((mops->drawUnder != under) || markerPtr->clipped_ || mops->hide) continue; if (isElementHidden(markerPtr)) continue; markerPtr->draw(drawable); } }
void Graph::mapMarkers() { for (ChainLink* link = Chain_FirstLink(markers_.displayList); link; link = Chain_NextLink(link)) { Marker* markerPtr = (Marker*)Chain_GetValue(link); MarkerOptions* mops = (MarkerOptions*)markerPtr->ops(); if (mops->hide) continue; if ((flags & MAP_MARKERS) || (markerPtr->flags & MAP_ITEM)) { markerPtr->map(); markerPtr->flags &= ~MAP_ITEM; } } flags &= ~MAP_MARKERS; }
void Graph::printMarkers(PSOutput* psPtr, int under) { for (ChainLink* link = Chain_LastLink(markers_.displayList); link; link = Chain_PrevLink(link)) { Marker* markerPtr = (Marker*)Chain_GetValue(link); MarkerOptions* mops = (MarkerOptions*)markerPtr->ops(); if (mops->drawUnder != under) continue; if (mops->hide) continue; if (isElementHidden(markerPtr)) continue; psPtr->format("%% Marker \"%s\" is a %s.\n", markerPtr->name_, markerPtr->className()); markerPtr->print(psPtr); } }
Marker* Graph::nearestMarker(int x, int y, int under) { Point2d point; point.x = (double)x; point.y = (double)y; for (ChainLink* link = Chain_FirstLink(markers_.displayList); link; link = Chain_NextLink(link)) { Marker* markerPtr = (Marker*)Chain_GetValue(link); MarkerOptions* mops = (MarkerOptions*)markerPtr->ops(); if ((markerPtr->flags & MAP_ITEM) || mops->hide) continue; if (isElementHidden(markerPtr)) continue; if (mops->drawUnder == under) if (markerPtr->pointIn(&point)) return markerPtr; } return NULL; }