void LeafNamesTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event) { try { //Pointer-based event (efficient): const DrawINodeEvent& eventC = dynamic_cast<const DrawINodeEvent&>(event); if (eventC.getINode()->isLeaf()) { GraphicDevice* gd = event.getGraphicDevice(); Cursor cursor = event.getCursor(); Font fontBck = gd->getCurrentFont(); if (settings_) gd->setCurrentFont(settings_->fontLeafNames); string name = eventC.getINode()->getName(); gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle()); gd->setCurrentFont(fontBck); } } catch (bad_cast& e) { //Id-based event (less-efficient): const TreeDrawing* td = event.getTreeDrawing(); if (td->getTree()->isLeaf(event.getNodeId())) { GraphicDevice* gd = event.getGraphicDevice(); Cursor cursor = event.getCursor(); Font fontBck = gd->getCurrentFont(); if (settings_) gd->setCurrentFont(settings_->fontLeafNames); string name = td->getTree()->getNodeName(event.getNodeId()); gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle()); gd->setCurrentFont(fontBck); } } }
void LabelInnerNodesTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event) { try { //Pointer-based event (efficient): const DrawINodeEvent& eventC = dynamic_cast<const DrawINodeEvent&>(event); if (!eventC.getINode()->getInfos().isCollapsed()) { GraphicDevice* gd = event.getGraphicDevice(); Cursor cursor = event.getCursor(); if (eventC.getINode()->hasName()) { string name = eventC.getINode()->getName(); gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle()); } } } catch(std::bad_cast& e) { //Id-based event (less-efficient): const TreeDrawing* td = event.getTreeDrawing(); if (! td->isNodeCollapsed(event.getNodeId())) { GraphicDevice* gd = event.getGraphicDevice(); Cursor cursor = event.getCursor(); if (td->getTree()->hasNodeName(event.getNodeId())) { string name = td->getTree()->getNodeName(event.getNodeId()); gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle()); } } } }
void LabelCollapsedNodesTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event) { try { //Pointer-based event (efficient): const DrawINodeEvent& eventC = dynamic_cast<const DrawINodeEvent&>(event); if (eventC.getINode()->getInfos().isCollapsed()) { GraphicDevice* gd = event.getGraphicDevice(); Cursor cursor = event.getCursor(); size_t size = TreeTemplateTools::getNumberOfLeaves(*eventC.getINode()); string text = ""; if (eventC.getINode()->hasName()) text += eventC.getINode()->getName() + " "; text += "(" + TextTools::toString(size) + " leaves)"; gd->drawText(cursor.getX(), cursor.getY(), text, cursor.getHPos(), cursor.getVPos(), cursor.getAngle()); } } catch(std::bad_cast& e) { //Id-based event (less-efficient): const TreeDrawing* td = event.getTreeDrawing(); if (td->isNodeCollapsed(event.getNodeId())) { GraphicDevice* gd = event.getGraphicDevice(); Cursor cursor = event.getCursor(); size_t size = TreeTools::getNumberOfLeaves(*td->getTree(), event.getNodeId()); string text = ""; if (td->getTree()->hasNodeName(event.getNodeId())) text += td->getTree()->getNodeName(event.getNodeId()) + " "; text += "(" + TextTools::toString(size) + " leaves)"; gd->drawText(cursor.getX(), cursor.getY(), text, cursor.getHPos(), cursor.getVPos(), cursor.getAngle()); } } }
void NodeClickableAreasTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event) { const TreeDrawing* td = event.getTreeDrawing(); double r = td->getDisplaySettings().pointArea; GraphicDevice* gd = event.getGraphicDevice(); Cursor cursor = event.getCursor(); gd->drawRect(cursor.getX() - r, cursor.getY() - r, 2 * r, 2 * r); }