仍然闪烁
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
#include "Hover_Tooltip.h"
|
||||
#include "../Axis/Abs_Axis_p.h"
|
||||
namespace renderive {
|
||||
void Hover_Tooltip_State::draw_hover_tooltip(Canvas* canvas, Abs_Axis* domain_axis, Abs_Axis* value_axis, Hover_Tooltip_Provider* renderable) {
|
||||
void Hover_Tooltip_State::draw_hover_tooltip(Canvas* canvas, Abs_Axis* domain_axis, Abs_Axis* value_axis, Hover_Tooltip_Provider* renderable, const Render_Frame_Snapshot* snapshot) {
|
||||
Point pos = hover_position;
|
||||
std::vector<std::string> lines = renderable->build_hover_lines(domain_axis, value_axis, pos);
|
||||
std::vector<std::string> lines = renderable->build_hover_lines(domain_axis, value_axis, pos, snapshot);
|
||||
double max_width = 0;
|
||||
double line_height = 0;
|
||||
for (const std::string& s : lines) {
|
||||
@@ -28,13 +28,15 @@ bool Hover_Tooltip_State::can_show_hover(Renderable* able) const {
|
||||
auto tmp = dynamic_cast<Hover_Tooltip_Provider*>(able);
|
||||
return use_hover_tooltip && hover_info_active && tmp->hit_test_hover(hover_position);
|
||||
}
|
||||
std::vector<std::string> Hover_Tooltip_Provider::build_hover_lines(Abs_Axis* h, Abs_Axis* v, Point pos) {
|
||||
Axis_Mapping_2D mapping = Axis_Render_Access::mapping(h, v);
|
||||
std::vector<std::string> Hover_Tooltip_Provider::build_hover_lines(Abs_Axis* h, Abs_Axis* v, Point pos, const Render_Frame_Snapshot* snapshot) {
|
||||
Axis_Mapping_2D mapping = snapshot ? Axis_Render_Access::mapping(h, v, *snapshot) : Axis_Render_Access::mapping(h, v);
|
||||
PointF screen_point{static_cast<double>(pos.x), static_cast<double>(pos.y)};
|
||||
double tick1 = mapping.domain.pixel_to_coord(mapping.domain_pixel(screen_point));
|
||||
double tick2 = mapping.value.pixel_to_coord(mapping.value_pixel(screen_point));
|
||||
std::string line1 = Axis_Render_Access::tick_label(h, tick1) + h->unit_text();
|
||||
std::string line2 = Axis_Render_Access::tick_label(v, tick2) + v->unit_text();
|
||||
std::string line1 = (snapshot ? Axis_Render_Access::tick_label(h, tick1, *snapshot) : Axis_Render_Access::tick_label(h, tick1))
|
||||
+ (snapshot ? Axis_Render_Access::unit_text(h, *snapshot) : h->unit_text());
|
||||
std::string line2 = (snapshot ? Axis_Render_Access::tick_label(v, tick2, *snapshot) : Axis_Render_Access::tick_label(v, tick2))
|
||||
+ (snapshot ? Axis_Render_Access::unit_text(v, *snapshot) : v->unit_text());
|
||||
return {line1, line2};
|
||||
}
|
||||
} // namespace renderive
|
||||
|
||||
Reference in New Issue
Block a user