1 #include "visual_flags.hh" 2 3 namespace cpprofiler 4 { 5 namespace tree 6 { 7 ensure_id_exists(NodeID nid)8void VisualFlags::ensure_id_exists(NodeID nid) 9 { 10 const auto id = static_cast<int>(nid); 11 if (label_shown_.size() < id + 1) 12 { 13 label_shown_.resize(id + 1); 14 node_hidden_.resize(id + 1); 15 shape_highlighted_.resize(id + 1); 16 } 17 } 18 setLabelShown(NodeID nid,bool val)19void VisualFlags::setLabelShown(NodeID nid, bool val) 20 { 21 ensure_id_exists(nid); 22 label_shown_[nid] = val; 23 } 24 isLabelShown(NodeID nid) const25bool VisualFlags::isLabelShown(NodeID nid) const 26 { 27 28 if (label_shown_.size() <= nid) 29 return false; 30 return label_shown_.at(nid); 31 } 32 setHidden(NodeID nid,bool val)33void VisualFlags::setHidden(NodeID nid, bool val) 34 { 35 ensure_id_exists(nid); 36 node_hidden_[nid] = val; 37 38 if (val) 39 { 40 hidden_nodes_.insert(nid); 41 } 42 else 43 { 44 hidden_nodes_.erase(nid); 45 } 46 } 47 isHidden(NodeID nid) const48bool VisualFlags::isHidden(NodeID nid) const 49 { 50 if (node_hidden_.size() <= nid) 51 return false; 52 return node_hidden_.at(nid); 53 } 54 unhideAll()55void VisualFlags::unhideAll() 56 { 57 58 for (auto &&n : node_hidden_) 59 { 60 n = false; 61 } 62 63 hidden_nodes_.clear(); 64 } 65 hiddenCount()66int VisualFlags::hiddenCount() 67 { 68 return hidden_nodes_.size(); 69 } 70 setHighlighted(NodeID nid,bool val)71void VisualFlags::setHighlighted(NodeID nid, bool val) 72 { 73 ensure_id_exists(nid); 74 75 if (val) 76 { 77 highlighted_shapes_.insert(nid); 78 } 79 else 80 { 81 highlighted_shapes_.erase(nid); 82 } 83 shape_highlighted_[nid] = val; 84 } 85 isHighlighted(NodeID nid) const86bool VisualFlags::isHighlighted(NodeID nid) const 87 { 88 89 if (shape_highlighted_.size() <= nid) 90 { 91 return false; 92 } 93 return shape_highlighted_[nid]; 94 } 95 unhighlightAll()96void VisualFlags::unhighlightAll() 97 { 98 for (auto nid : highlighted_shapes_) 99 { 100 shape_highlighted_[nid] = false; 101 } 102 103 highlighted_shapes_.clear(); 104 } 105 resetLanternSizes()106void VisualFlags::resetLanternSizes() 107 { 108 lantern_sizes_.clear(); 109 } 110 setLanternSize(NodeID nid,int val)111void VisualFlags::setLanternSize(NodeID nid, int val) 112 { 113 lantern_sizes_.insert({nid, val}); 114 } 115 lanternSize(NodeID nid) const116int VisualFlags::lanternSize(NodeID nid) const 117 { 118 const auto it = lantern_sizes_.find(nid); 119 if (it != lantern_sizes_.end()) 120 { 121 return it->second; 122 } 123 else 124 { 125 return -1; /// for non-lantern nodes 126 } 127 } 128 129 } // namespace tree 130 } // namespace cpprofiler