mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
In a46f817 these files were moved from shell/platform/common/cpp to shell/platform/common.
84 lines
2.2 KiB
C++
84 lines
2.2 KiB
C++
// Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_COMMON_GEOMETRY_H_
|
|
#define FLUTTER_SHELL_PLATFORM_COMMON_GEOMETRY_H_
|
|
|
|
#include <cmath>
|
|
|
|
namespace flutter {
|
|
|
|
// A point in Cartesian space relative to a separately-maintained origin.
|
|
class Point {
|
|
public:
|
|
Point() = default;
|
|
Point(double x, double y) : x_(x), y_(y) {}
|
|
Point(const Point& point) = default;
|
|
Point& operator=(const Point& other) = default;
|
|
|
|
double x() const { return x_; }
|
|
double y() const { return y_; }
|
|
|
|
bool operator==(const Point& other) const {
|
|
return x_ == other.x_ && y_ == other.y_;
|
|
}
|
|
|
|
private:
|
|
double x_ = 0.0;
|
|
double y_ = 0.0;
|
|
};
|
|
|
|
// A 2D floating-point size with non-negative dimensions.
|
|
class Size {
|
|
public:
|
|
Size() = default;
|
|
Size(double width, double height)
|
|
: width_(std::fmax(0.0, width)), height_(std::fmax(0.0, height)) {}
|
|
|
|
Size(const Size& size) = default;
|
|
Size& operator=(const Size& other) = default;
|
|
|
|
double width() const { return width_; }
|
|
double height() const { return height_; }
|
|
|
|
bool operator==(const Size& other) const {
|
|
return width_ == other.width_ && height_ == other.height_;
|
|
}
|
|
|
|
private:
|
|
double width_ = 0.0;
|
|
double height_ = 0.0;
|
|
};
|
|
|
|
// A rectangle with position in Cartesian space specified relative to a
|
|
// separately-maintained origin.
|
|
class Rect {
|
|
public:
|
|
Rect() = default;
|
|
Rect(const Point& origin, const Size& size) : origin_(origin), size_(size) {}
|
|
Rect(const Rect& rect) = default;
|
|
Rect& operator=(const Rect& other) = default;
|
|
|
|
double left() const { return origin_.x(); }
|
|
double top() const { return origin_.y(); }
|
|
double right() const { return origin_.x() + size_.width(); }
|
|
double bottom() const { return origin_.y() + size_.height(); }
|
|
double width() const { return size_.width(); }
|
|
double height() const { return size_.height(); }
|
|
Point origin() const { return origin_; }
|
|
Size size() const { return size_; }
|
|
|
|
bool operator==(const Rect& other) const {
|
|
return origin_ == other.origin_ && size_ == other.size_;
|
|
}
|
|
|
|
private:
|
|
Point origin_;
|
|
Size size_;
|
|
};
|
|
|
|
} // namespace flutter
|
|
|
|
#endif // FLUTTER_SHELL_PLATFORM_COMMON_GEOMETRY_H_
|