File: scoped_animation_duration_scale_mode.h

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-- 1,793 bytes parent folder | download | duplicates (10)
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 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H_
#define UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H_

#include "ui/compositor/compositor_export.h"

namespace ui {

// Speed up or slow down animations for testing or debugging.
class COMPOSITOR_EXPORT ScopedAnimationDurationScaleMode {
 public:
  // Anumation duration multipliers.
  static constexpr float NORMAL_DURATION = 1.0;
  static constexpr float FAST_DURATION = 1.0 / 4;    // 4 times faster
  static constexpr float SLOW_DURATION = 1.0 * 4.0;  // 4 times slower
  // A very short but guaranteed non-zero duration for individual tests that
  // need to assert things about animations after creating them.
  static constexpr float NON_ZERO_DURATION = 1.0 / 20;  // 20 times faster
  // Animations complete immediately after being created. Used by most tests.
  static constexpr float ZERO_DURATION = 0;

  explicit ScopedAnimationDurationScaleMode(float scoped_multiplier);
  ScopedAnimationDurationScaleMode(const ScopedAnimationDurationScaleMode&) =
      delete;
  ScopedAnimationDurationScaleMode& operator=(
      const ScopedAnimationDurationScaleMode&) = delete;

  ~ScopedAnimationDurationScaleMode();

  static float duration_multiplier() { return duration_multiplier_; }

  static bool is_zero() { return duration_multiplier_ == ZERO_DURATION; }

 private:
  // This is stored previous multiplier version to restore after scoped scale
  // destruction.
  const float old_duration_multiplier_;

  // This is active global multiplier.
  static float duration_multiplier_;
};

}  // namespace ui

#endif  // UI_COMPOSITOR_SCOPED_ANIMATION_DURATION_SCALE_MODE_H_