Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / extensions / browser / app_window / size_constraints.h
1 // Copyright 2014 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
5 #ifndef EXTENSIONS_BROWSER_APP_WINDOW_SIZE_CONSTRAINTS_H_
6 #define EXTENSIONS_BROWSER_APP_WINDOW_SIZE_CONSTRAINTS_H_
7
8 #include "ui/gfx/geometry/size.h"
9
10 namespace gfx {
11 class Insets;
12 }
13
14 namespace extensions {
15
16 class SizeConstraints {
17  public:
18   // The value SizeConstraints uses to represent an unbounded width or height.
19   // This is an enum so that it can be declared inline here.
20   enum { kUnboundedSize = 0 };
21
22   SizeConstraints();
23   SizeConstraints(const gfx::Size& min_size, const gfx::Size& max_size);
24   ~SizeConstraints();
25
26   // Adds frame insets to a size constraint.
27   static gfx::Size AddFrameToConstraints(const gfx::Size& size_constraints,
28                                          const gfx::Insets& frame_insets);
29
30   // Returns the bounds with its size clamped to the min/max size.
31   gfx::Size ClampSize(gfx::Size size) const;
32
33   // When gfx::Size is used as a min/max size, a zero represents an unbounded
34   // component. This method checks whether either component is specified.
35   // Note we can't use gfx::Size::IsEmpty as it returns true if either width
36   // or height is zero.
37   bool HasMinimumSize() const;
38   bool HasMaximumSize() const;
39
40   // This returns true if all components are specified, and min and max are
41   // equal.
42   bool HasFixedSize() const;
43
44   gfx::Size GetMaximumSize() const;
45   gfx::Size GetMinimumSize() const;
46
47   void set_minimum_size(const gfx::Size& min_size);
48   void set_maximum_size(const gfx::Size& max_size);
49
50  private:
51   gfx::Size minimum_size_;
52   gfx::Size maximum_size_;
53 };
54
55 }  // namespace extensions
56
57 #endif  // EXTENSIONS_BROWSER_APP_WINDOW_SIZE_CONSTRAINTS_H_