File: delegated_ink_point.cc

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (48 lines) | stat: -rw-r--r-- 2,091 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright 2020 The Chromium Authors
// 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 "base/trace_event/trace_event.h"
#include "ui/gfx/delegated_ink_metadata.h"

namespace gfx {

bool DelegatedInkPoint::MatchesDelegatedInkMetadata(
    const DelegatedInkMetadata* metadata) const {
  if (!metadata) {
    return false;
  }
  // 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. The allowed difference is the square
  // root of 2 - which is derived from the maximum allowed difference of 1px in
  // each direction.
  // TODO(crbug.com/338250110) Consider removing this tolerance.
  constexpr float kEpsilon = 1.4143f;
  TRACE_EVENT_INSTANT2("delegated_ink_trails",
                       "DelegatedInkPoint::MatchesDelegatedInkMetadata",
                       TRACE_EVENT_SCOPE_THREAD, "metadata",
                       metadata->ToString(), "point", ToString());
  return 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