| Index: ash/common/system/chromeos/palette/tools/laser_pointer_points.h
|
| diff --git a/ash/common/system/chromeos/palette/tools/laser_pointer_points.h b/ash/common/system/chromeos/palette/tools/laser_pointer_points.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ed107d9798b14b4d0a4923d6a80d5c4be74dae61
|
| --- /dev/null
|
| +++ b/ash/common/system/chromeos/palette/tools/laser_pointer_points.h
|
| @@ -0,0 +1,64 @@
|
| +// Copyright 2016 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.
|
| +
|
| +#ifndef ASH_COMMON_SYSTEM_CHROMEOS_PALETTE_TOOLS_LASER_POINTER_POINTS_H_
|
| +#define ASH_COMMON_SYSTEM_CHROMEOS_PALETTE_TOOLS_LASER_POINTER_POINTS_H_
|
| +
|
| +#include <deque>
|
| +#include <memory>
|
| +
|
| +#include "ash/ash_export.h"
|
| +#include "base/time/time.h"
|
| +#include "ui/gfx/geometry/point.h"
|
| +#include "ui/gfx/geometry/rect.h"
|
| +
|
| +namespace ash {
|
| +
|
| +// LaserPointerPoints is a helper class used for displaying the palette tool
|
| +// laser pointer. It keeps track of the points needed to render the laser
|
| +// pointer and its tail.
|
| +class ASH_EXPORT LaserPointerPoints {
|
| + public:
|
| + // Struct to describe each point.
|
| + struct LaserPoint {
|
| + gfx::Point location;
|
| + base::Time creation_time;
|
| + };
|
| +
|
| + // Constructor with a parameter to choose the fade out time of the points in
|
| + // the collection.
|
| + explicit LaserPointerPoints(base::TimeDelta life_duration);
|
| + ~LaserPointerPoints();
|
| +
|
| + // Adds a point. Automatically clears points that are too old.
|
| + void AddPoint(const gfx::Point& point);
|
| + // Removes all points.
|
| + void Clear();
|
| + // Gets the bounding box of the points.
|
| + gfx::Rect GetBoundingBox();
|
| + // Returns the oldest point in the collection.
|
| + LaserPoint GetOldest() const;
|
| + // Returns the newest point in the collection.
|
| + LaserPoint GetNewest() const;
|
| + // Returns the number of points in the collection.
|
| + int GetNumberOfPoints() const;
|
| + // Whether there are any points or not.
|
| + bool IsEmpty() const;
|
| + // Expose the collection so callers can work with the points.
|
| + const std::deque<LaserPoint>& laser_points();
|
| +
|
| + private:
|
| + friend class LaserPointerPointsTestApi;
|
| +
|
| + void ClearOldPoints();
|
| +
|
| + base::TimeDelta life_duration_;
|
| + std::deque<LaserPoint> points_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(LaserPointerPoints);
|
| +};
|
| +
|
| +} // namespace ash
|
| +
|
| +#endif // ASH_COMMON_SYSTEM_CHROMEOS_PALETTE_TOOLS_LASER_POINTER_POINTS_H_
|
|
|