// 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 CHROMEOS_DISPLAY_OUTPUT_UTIL_H_ #define CHROMEOS_DISPLAY_OUTPUT_UTIL_H_ #include <string> #include "base/basictypes.h" #include "chromeos/chromeos_export.h" // Forward declarations for Xlib and Xrandr. // This is so unused X definitions don't pollute the namespace. typedef unsigned long XID; typedef XID RRMode; struct _XRRModeInfo; typedef _XRRModeInfo XRRModeInfo; struct _XRRScreenResources; typedef _XRRScreenResources XRRScreenResources; struct _XRROutputInfo; typedef _XRROutputInfo XRROutputInfo; namespace chromeos { // Generates the human readable string from EDID obtained for |output|. CHROMEOS_EXPORT std::string GetDisplayName(XID output); // Gets the overscan flag from |output| and stores to |flag|. Returns true if // the flag is found. Otherwise returns false and doesn't touch |flag|. The // output will produce overscan if |flag| is set to true, but the output may // still produce overscan even though it returns true and |flag| is set to // false. CHROMEOS_EXPORT bool GetOutputOverscanFlag(XID output, bool* flag); // Parses |prop| as EDID data and stores the overscan flag to |flag|. Returns // true if the flag is found. This is exported for x11_util_unittest.cc. CHROMEOS_EXPORT bool ParseOutputOverscanFlag(const unsigned char* prop, unsigned long nitems, bool* flag); // Returns true if an output named |name| is an internal display. CHROMEOS_EXPORT bool IsInternalOutputName(const std::string& name); // Find a XRRModeInfo that matches |mode|. CHROMEOS_EXPORT const XRRModeInfo* FindXRRModeInfo( const XRRScreenResources* screen_resources, XID mode); // Find a mode that matches the given size with highest refresh // rate. Non-interlaced mode takes precedence, so non-interlaced mode // with a lower refresh rate will be used even if there is an interlaced // mode with a higher refresh rate. CHROMEOS_EXPORT RRMode FindOutputModeMatchingSize( const XRRScreenResources* screen_resources, const XRROutputInfo* output_info, size_t width, size_t height); namespace test { // Creates XRRModeInfo for unit tests. CHROMEOS_EXPORT XRRModeInfo CreateModeInfo(int id, int width, int height, bool interlaced, float refresh_rate); } // namespace test } // namespace chromeos #endif // CHROMEOS_DISPLAY_OUTPUT_UTIL_H_