Home | History | Annotate | Download | only in vda
      1 // Copyright 2017 The Chromium 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 // Note: ported from Chromium commit head: a8e9f71
      5 // Note: only necessary functions are ported from gfx::Size
      6 
      7 #ifndef SIZE_H_
      8 #define SIZE_H_
      9 
     10 #include <string>
     11 
     12 #include "base/strings/stringprintf.h"
     13 
     14 namespace media {
     15 
     16 // Helper struct for size to replace gfx::size usage from original code.
     17 // Only partial functions of gfx::size is implemented here.
     18 struct Size {
     19  public:
     20   Size() : width_(0), height_(0) {}
     21   Size(int width, int height)
     22       : width_(width < 0 ? 0 : width), height_(height < 0 ? 0 : height) {}
     23 
     24   constexpr int width() const { return width_; }
     25   constexpr int height() const { return height_; }
     26 
     27   void set_width(int width) { width_ = width < 0 ? 0 : width; }
     28   void set_height(int height) { height_ = height < 0 ? 0 : height; }
     29 
     30   void SetSize(int width, int height) {
     31     set_width(width);
     32     set_height(height);
     33   }
     34 
     35   bool IsEmpty() const { return !width() || !height(); }
     36 
     37   std::string ToString() const {
     38     return base::StringPrintf("%dx%d", width(), height());
     39   }
     40 
     41   Size& operator=(const Size& ps) {
     42     set_width(ps.width());
     43     set_height(ps.height());
     44     return *this;
     45   }
     46 
     47  private:
     48   int width_;
     49   int height_;
     50 };
     51 
     52 inline bool operator==(const Size& lhs, const Size& rhs) {
     53   return lhs.width() == rhs.width() && lhs.height() == rhs.height();
     54 }
     55 
     56 inline bool operator!=(const Size& lhs, const Size& rhs) {
     57   return !(lhs == rhs);
     58 }
     59 
     60 }  // namespace media
     61 
     62 #endif  // SIZE_H_
     63