// Copyright 2014 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 APPS_SIZE_CONSTRAINTS_H_ #define APPS_SIZE_CONSTRAINTS_H_ #include "ui/gfx/geometry/size.h" namespace gfx { class Insets; } namespace apps { class SizeConstraints { public: // The value SizeConstraints uses to represent an unbounded width or height. // This is an enum so that it can be declared inline here. enum { kUnboundedSize = 0 }; SizeConstraints(); SizeConstraints(const gfx::Size& min_size, const gfx::Size& max_size); ~SizeConstraints(); // Adds frame insets to a size constraint. static gfx::Size AddFrameToConstraints(const gfx::Size& size_constraints, const gfx::Insets& frame_insets); // Returns the bounds with its size clamped to the min/max size. gfx::Size ClampSize(gfx::Size size) const; // When gfx::Size is used as a min/max size, a zero represents an unbounded // component. This method checks whether either component is specified. // Note we can't use gfx::Size::IsEmpty as it returns true if either width // or height is zero. bool HasMinimumSize() const; bool HasMaximumSize() const; // This returns true if all components are specified, and min and max are // equal. bool HasFixedSize() const; gfx::Size GetMaximumSize() const; gfx::Size GetMinimumSize() const; void set_minimum_size(const gfx::Size& min_size); void set_maximum_size(const gfx::Size& max_size); private: gfx::Size minimum_size_; gfx::Size maximum_size_; }; } // namespace apps #endif // APPS_SIZE_CONSTRAINTS_H_