#ifndef UI_GFX_DELEGATED_INK_METADATA_H_
#define UI_GFX_DELEGATED_INK_METADATA_H_
#include <string>
#include "base/component_export.h"
#include "base/time/time.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/gfx/geometry/rect_f.h"
namespace gfx {
inline constexpr int kMaximumNumberOfDelegatedInkPoints = 128;
class COMPONENT_EXPORT(GFX) DelegatedInkMetadata {
public:
DelegatedInkMetadata() = default;
bool operator==(const DelegatedInkMetadata& o) const = default;
DelegatedInkMetadata(const PointF& pt,
double diameter,
SkColor color,
base::TimeTicks timestamp,
const RectF& area,
bool hovering)
: point_(pt),
diameter_(diameter),
color_(color),
timestamp_(timestamp),
presentation_area_(area),
is_hovering_(hovering) {}
DelegatedInkMetadata(const PointF& pt,
double diameter,
SkColor color,
base::TimeTicks timestamp,
const RectF& area,
base::TimeTicks frame_time,
bool hovering,
std::uint64_t render_pass_id)
: point_(pt),
diameter_(diameter),
color_(color),
timestamp_(timestamp),
presentation_area_(area),
frame_time_(frame_time),
is_hovering_(hovering),
render_pass_id_(render_pass_id) {}
DelegatedInkMetadata(const DelegatedInkMetadata& other) = default;
DelegatedInkMetadata& operator=(const DelegatedInkMetadata& other) = default;
const PointF& point() const { return point_; }
double diameter() const { return diameter_; }
SkColor color() const { return color_; }
base::TimeTicks timestamp() const { return timestamp_; }
const RectF& presentation_area() const { return presentation_area_; }
base::TimeTicks frame_time() const { return frame_time_; }
std::uint64_t render_pass_id() const { return render_pass_id_; }
bool is_hovering() const { return is_hovering_; }
void set_render_pass_id(std::uint64_t render_pass_id) {
render_pass_id_ = render_pass_id;
}
void set_frame_time(base::TimeTicks frame_time) { frame_time_ = frame_time; }
uint64_t trace_id() const {
return static_cast<uint64_t>(timestamp_.since_origin().InMicroseconds()) |
(uint64_t{1} << 63);
}
std::string ToString() const;
private:
PointF point_;
double diameter_ = 0;
SkColor color_ = 0;
base::TimeTicks timestamp_;
RectF presentation_area_;
base::TimeTicks frame_time_;
bool is_hovering_ = false;
std::uint64_t render_pass_id_ = 0;
};
}
#endif