// Copyright (c) 2013 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 ASH_DISPLAY_DISPLAY_LAYOUT_H_ #define ASH_DISPLAY_DISPLAY_LAYOUT_H_ #include <map> #include <string> #include "ash/ash_export.h" #include "base/basictypes.h" #include "base/compiler_specific.h" namespace base { class Value; template <typename T> class JSONValueConverter; } namespace ash { typedef std::pair<int64, int64> DisplayIdPair; struct ASH_EXPORT DisplayLayout { // Layout options where the secondary display should be positioned. enum Position { TOP, RIGHT, BOTTOM, LEFT }; // Factory method to create DisplayLayout from ints. The |mirrored| is // set to false and |primary_id| is set to gfx::Display::kInvalidDisplayId. // Used for persistence and webui. static DisplayLayout FromInts(int position, int offsets); DisplayLayout(); DisplayLayout(Position position, int offset); // Returns an inverted display layout. DisplayLayout Invert() const WARN_UNUSED_RESULT; // Converter functions to/from base::Value. static bool ConvertFromValue(const base::Value& value, DisplayLayout* layout); static bool ConvertToValue(const DisplayLayout& layout, base::Value* value); // This method is used by base::JSONValueConverter, you don't need to call // this directly. Instead consider using converter functions above. static void RegisterJSONConverter( base::JSONValueConverter<DisplayLayout>* converter); Position position; // The offset of the position of the secondary display. The offset is // based on the top/left edge of the primary display. int offset; // True if displays are mirrored. bool mirrored; // The id of the display used as a primary display. int64 primary_id; // Returns string representation of the layout for debugging/testing. std::string ToString() const; }; } // namespace ash #endif