egui_charts/ui/drawing_toolbar/
icons.rs1use crate::drawings::DrawingToolType;
7use crate::icons::{Icon, icons};
8
9pub fn category_icon(category: &str) -> &'static Icon {
11 match category {
12 "Cursors" => &icons::CROSSHAIR,
13 "Lines" => &icons::TREND_LINE,
14 "Fibonacci" => &icons::FIB_RETRACEMENT,
15 "Patterns" => &icons::XABCD_PATTERN,
16 "Projection" => &icons::LONG_POSITION,
17 "Brushes/Shapes" => &icons::BRUSH,
18 "Text/Annotations" => &icons::TEXT,
19 "Icons/Emojis" => &icons::EMOJI_ICON,
20 "Channels" => &icons::PARALLEL_CHANNEL,
22 "Gann" => &icons::GANN_FAN,
23 "Shapes" => &icons::RECT,
24 "Brushes" => &icons::BRUSH,
25 "Arrows" => &icons::ARROW_MARKER,
26 "Pitchforks" => &icons::PITCHFORK,
27 "Elliott" => &icons::ELLIOTT_IMPULSE,
28 "Elliott Wave" => &icons::ELLIOTT_IMPULSE,
29 "Cycles" => &icons::TIME_CYCLES,
30 "Volume" => &icons::ANCHORED_VOLUME_PROFILE,
31 "Measurers" => &icons::MEASURE,
32 "Annotations" => &icons::TEXT,
33 "Content" => &icons::TEXT,
34 _ => &icons::TREND_LINE,
35 }
36}
37
38pub fn get_icon(tool: DrawingToolType) -> &'static Icon {
42 match tool {
43 DrawingToolType::CrossCursor => &icons::CROSSHAIR,
45 DrawingToolType::DotCursor => &icons::DOT,
46 DrawingToolType::ArrowCursor => &icons::ARROW,
47 DrawingToolType::Eraser => &icons::ERASER,
48
49 DrawingToolType::TrendLine => &icons::TREND_LINE,
51 DrawingToolType::Ray => &icons::RAY,
52 DrawingToolType::InfoLine => &icons::INFO_LINE,
53 DrawingToolType::ExtendedLine => &icons::EXTENDED,
54 DrawingToolType::TrendAngle => &icons::TREND_ANGLE,
55 DrawingToolType::HorizontalLine => &icons::HORIZONTAL_LINE,
56 DrawingToolType::HorizontalRay => &icons::HORIZONTAL_RAY,
57 DrawingToolType::VerticalLine => &icons::VERTICAL_LINE,
58 DrawingToolType::CrossLine => &icons::CROSS_LINE,
59
60 DrawingToolType::ParallelChannel => &icons::PARALLEL_CHANNEL,
62 DrawingToolType::RegressionTrend => &icons::REGRESSION_TREND,
63 DrawingToolType::FlatTopBottom => &icons::FLAT_BOTTOM,
64 DrawingToolType::DisjointChannel => &icons::DISJOINT_ANGLE,
65
66 DrawingToolType::Pitchfork => &icons::PITCHFORK,
68 DrawingToolType::SchiffPitchfork => &icons::SCHIFF_PITCHFORK,
69 DrawingToolType::ModifiedSchiffPitchfork => &icons::SCHIFF_PITCHFORK2,
70 DrawingToolType::InsidePitchfork => &icons::INSIDE_PITCHFORK,
71
72 DrawingToolType::FibonacciRetracement => &icons::FIB_RETRACEMENT,
74 DrawingToolType::FibonacciExtension => &icons::FIB_EXTENSION,
75 DrawingToolType::FibonacciChannel => &icons::FIB_CHANNEL,
76 DrawingToolType::FibonacciTimeZones => &icons::FIB_TIME_ZONE,
77 DrawingToolType::FibonacciSpeedFan => &icons::FIB_SPEED_RESISTANCE_FAN,
78 DrawingToolType::TrendBasedFibTime => &icons::TREND_BASED_FIB_TIME,
79 DrawingToolType::FibonacciCircles => &icons::FIB_CIRCLES,
80 DrawingToolType::FibonacciSpiral => &icons::FIB_SPIRAL,
81 DrawingToolType::FibonacciSpeedResistanceArcs => &icons::FIB_SPEED_RESISTANCE_ARCS,
82 DrawingToolType::FibonacciWedge => &icons::FIB_WEDGE,
83 DrawingToolType::Pitchfan => &icons::PITCHFAN,
84
85 DrawingToolType::GannBox => &icons::GANN_SQUARE,
87 DrawingToolType::GannSquare => &icons::GANN_COMPLEX,
88 DrawingToolType::GannFixed => &icons::GANN_FIXED,
89 DrawingToolType::GannFan => &icons::GANN_FAN,
90
91 DrawingToolType::XABCDPattern => &icons::XABCD_PATTERN,
93 DrawingToolType::CypherPattern => &icons::CYPHER_PATTERN,
94 DrawingToolType::HeadAndShoulders => &icons::HEAD_AND_SHOULDERS,
95 DrawingToolType::ABCDPattern => &icons::ABCD,
96 DrawingToolType::TrianglePattern => &icons::TRIANGLE_PATTERN,
97 DrawingToolType::ThreeDrivesPattern => &icons::THREE_DRIVERS,
98
99 DrawingToolType::ElliottImpulse => &icons::ELLIOTT_IMPULSE,
101 DrawingToolType::ElliottCorrection => &icons::ELLIOTT_CORRECTION,
102 DrawingToolType::ElliottTriangle => &icons::ELLIOTT_TRIANGLE,
103 DrawingToolType::ElliottDoubleCombo => &icons::ELLIOTT_DOUBLE_COMBO,
104 DrawingToolType::ElliottTripleCombo => &icons::ELLIOTT_TRIPLE_COMBO,
105
106 DrawingToolType::CyclicLines => &icons::CIRCLE_LINES,
108 DrawingToolType::TimeCycles => &icons::TIME_CYCLES,
109 DrawingToolType::SineLine => &icons::SINE_LINE,
110
111 DrawingToolType::LongPos => &icons::LONG_POSITION,
113 DrawingToolType::ShortPos => &icons::SHORT_POSITION,
114 DrawingToolType::Forecast => &icons::PREDICTION,
115 DrawingToolType::BarsPattern => &icons::BARS_PATTERN,
116 DrawingToolType::GhostFeed => &icons::GHOST_FEED,
117 DrawingToolType::ProjectionTool => &icons::PROJECTION,
118
119 DrawingToolType::AnchoredVWAP => &icons::ANCHORED_VWAP,
121 DrawingToolType::FixedRangeVolumeProfile => &icons::FIXED_RANGE_VOLUME_PROFILE,
122 DrawingToolType::AnchoredVolumeProfile => &icons::ANCHORED_VOLUME_PROFILE,
123
124 DrawingToolType::Measure => &icons::MEASURE,
126 DrawingToolType::PriceRange => &icons::PRICE_RANGE,
127 DrawingToolType::DateRange => &icons::DATE_RANGE,
128 DrawingToolType::DateAndPriceRange => &icons::DATE_AND_PRICE_RANGE,
129
130 DrawingToolType::Brush => &icons::BRUSH,
132 DrawingToolType::Highlighter => &icons::HIGHLIGHTER,
133
134 DrawingToolType::ArrowMarker => &icons::ARROW_MARKER,
136 DrawingToolType::Arrow => &icons::ARROW_LINE,
137 DrawingToolType::ArrowMarkUp => &icons::ARROW_MARK_UP,
138 DrawingToolType::ArrowMarkLeft => &icons::ARROW_MARK_LEFT,
139 DrawingToolType::ArrowMarkRight => &icons::ARROW_MARK_RIGHT,
140 DrawingToolType::ArrowMarkDown => &icons::ARROW_MARK_DOWN,
141
142 DrawingToolType::Rect => &icons::RECT,
144 DrawingToolType::RotatedRect => &icons::ROTATED_RECT,
145 DrawingToolType::Path => &icons::PATH,
146 DrawingToolType::Circle => &icons::CIRCLE,
147 DrawingToolType::Ellipse => &icons::ELLIPSE,
148 DrawingToolType::Polyline => &icons::POLYLINE,
149 DrawingToolType::Triangle => &icons::TRIANGLE,
150 DrawingToolType::Sector => &icons::SECTOR,
151 DrawingToolType::Arc => &icons::ARC,
152 DrawingToolType::Curve => &icons::BEZIER_QUADRO,
153 DrawingToolType::DoubleCurve => &icons::BEZIER_CUBIC,
154
155 DrawingToolType::TextLabel => &icons::TEXT,
157 DrawingToolType::AnchoredText => &icons::ANCHORED_TEXT,
158 DrawingToolType::Note => &icons::NOTE,
159 DrawingToolType::PriceNote => &icons::PRICE_NOTE,
160 DrawingToolType::AnchoredNote => &icons::ANCHORED_NOTE,
161 DrawingToolType::Table => &icons::TABLE,
162 DrawingToolType::Callout => &icons::CALLOUT,
163 DrawingToolType::Comment => &icons::COMMENT,
164 DrawingToolType::PriceLabel => &icons::PRICE_LABEL,
165 DrawingToolType::Signpost => &icons::SIGNPOST,
166 DrawingToolType::FlagNote => &icons::FLAG_MARK,
167
168 DrawingToolType::Image => &icons::IMAGE,
170 DrawingToolType::Tweet => &icons::POST,
171 DrawingToolType::Idea => &icons::IDEAS,
172
173 DrawingToolType::Sticker => &icons::STICKER,
175 DrawingToolType::FontIcon => &icons::EMOJI_ICON,
176 }
177}
178
179pub fn get_sel_tool_icon_for_category(
183 category: &str,
184 sel_tool: Option<DrawingToolType>,
185) -> &'static Icon {
186 if let Some(tool) = sel_tool {
187 if tool_belongs_to_category(tool, category) {
189 return get_icon(tool);
190 }
191 }
192 category_icon(category)
194}
195
196fn tool_belongs_to_category(tool: DrawingToolType, category: &str) -> bool {
198 use crate::ui::drawing_toolbar::data::get_category_sections;
199
200 let sections = get_category_sections(category);
201 for (_, tools) in sections {
202 if tools.contains(&tool) {
203 return true;
204 }
205 }
206 false
207}