1234567891011121314151617181920212223242526272829303132333435363738 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "ui/gfx/delegated_ink_point.h"
- #include <inttypes.h>
- #include "base/strings/stringprintf.h"
- #include "ui/gfx/delegated_ink_metadata.h"
- namespace gfx {
- bool DelegatedInkPoint::MatchesDelegatedInkMetadata(
- const DelegatedInkMetadata* metadata) const {
- // The maximum difference allowed when comparing a DelegatedInkPoint |point_|
- // to the |point_| on a DelegatedInkMetadata. Some precision loss can occur
- // when moving between coordinate spaces in the browser and renderer,
- // particularly when the device scale factor is not a whole number. This can
- // result in a DelegatedInkMetadata and DelegatedInkPoint having been created
- // from the same point, but having a very small difference. When this occurs,
- // we can safely ignore that they are slightly different and use the point for
- // a delegated ink trail anyway, since it is a very small difference and will
- // only be visible for a single frame.
- constexpr float kEpsilon = 0.05f;
- return metadata && timestamp_ == metadata->timestamp() &&
- point_.IsWithinDistance(metadata->point(), kEpsilon);
- }
- std::string DelegatedInkPoint::ToString() const {
- return base::StringPrintf("point: %s, timestamp: %" PRId64 ", pointer_id: %d",
- point_.ToString().c_str(),
- timestamp_.since_origin().InMicroseconds(),
- pointer_id_);
- }
- } // namespace gfx
|