// Copyright 2017 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. // Note: ported from Chromium commit head: a8e9f71 // Note: only necessary functions are ported from gfx::Size #ifndef SIZE_H_ #define SIZE_H_ #include <string> #include "base/strings/stringprintf.h" namespace media { // Helper struct for size to replace gfx::size usage from original code. // Only partial functions of gfx::size is implemented here. struct Size { public: Size() : width_(0), height_(0) {} Size(int width, int height) : width_(width < 0 ? 0 : width), height_(height < 0 ? 0 : height) {} constexpr int width() const { return width_; } constexpr int height() const { return height_; } void set_width(int width) { width_ = width < 0 ? 0 : width; } void set_height(int height) { height_ = height < 0 ? 0 : height; } void SetSize(int width, int height) { set_width(width); set_height(height); } bool IsEmpty() const { return !width() || !height(); } std::string ToString() const { return base::StringPrintf("%dx%d", width(), height()); } Size& operator=(const Size& ps) { set_width(ps.width()); set_height(ps.height()); return *this; } private: int width_; int height_; }; inline bool operator==(const Size& lhs, const Size& rhs) { return lhs.width() == rhs.width() && lhs.height() == rhs.height(); } inline bool operator!=(const Size& lhs, const Size& rhs) { return !(lhs == rhs); } } // namespace media #endif // SIZE_H_