Flutter Impeller
rational.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_IMPELLER_GEOMETRY_RATIONAL_H_
6 #define FLUTTER_IMPELLER_GEOMETRY_RATIONAL_H_
7 
8 #include <cstdint>
10 
11 namespace impeller {
12 
13 class Rational {
14  public:
15  constexpr explicit Rational(int32_t num) : num_(num), den_(1) {}
16 
17  constexpr Rational(int32_t num, uint32_t den) : num_(num), den_(den) {}
18 
19  int32_t GetNumerator() const { return num_; }
20 
21  uint32_t GetDenominator() const { return den_; }
22 
23  bool operator==(const Rational& that) const;
24 
25  bool operator!=(const Rational& that) const;
26 
27  bool operator<(const Rational& that) const;
28 
29  uint64_t GetHash() const;
30 
31  explicit operator Scalar() const { return static_cast<float>(num_) / den_; }
32 
33  Rational Invert() const;
34 
35  private:
36  int32_t num_;
37  uint32_t den_;
38 };
39 
40 } // namespace impeller
41 
42 #endif // FLUTTER_IMPELLER_GEOMETRY_RATIONAL_H_
bool operator!=(const Rational &that) const
Definition: rational.cc:28
constexpr Rational(int32_t num, uint32_t den)
Definition: rational.h:17
Rational Invert() const
Definition: rational.cc:50
constexpr Rational(int32_t num)
Definition: rational.h:15
bool operator<(const Rational &that) const
Definition: rational.cc:32
int32_t GetNumerator() const
Definition: rational.h:19
uint64_t GetHash() const
Definition: rational.cc:42
uint32_t GetDenominator() const
Definition: rational.h:21
bool operator==(const Rational &that) const
Definition: rational.cc:18
float Scalar
Definition: scalar.h:19