blob: c6574c83716f73c439831f898f0a4de1bccc9bb5 [file] [log] [blame]
/*
* Copyright (C) 2009 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_SCREEN_INFO_H_
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_SCREEN_INFO_H_
#include "third_party/blink/public/mojom/widget/screen_orientation.mojom-shared.h"
#include "ui/gfx/display_color_spaces.h"
#include "ui/gfx/geometry/rect.h"
namespace blink {
struct ScreenInfo {
// Device scale factor. Specifies the ratio between physical and logical
// pixels.
float device_scale_factor = 1.f;
// The color spaces used by output display for various content types.
gfx::DisplayColorSpaces display_color_spaces;
// The screen depth in bits per pixel.
int depth = 0;
// The bits per colour component. This assumes that the colours are balanced
// equally.
int depth_per_component = 0;
// This can be true for black and white printers
bool is_monochrome = false;
// The display frequency in Hz of the monitor. Set to 0 if it fails in the
// monitor frequency query.
int display_frequency = 0;
// This is set from the rcMonitor member of MONITORINFOEX, to whit:
// "A RECT structure that specifies the display monitor rectangle,
// expressed in virtual-screen coordinates. Note that if the monitor
// is not the primary display monitor, some of the rectangle's
// coordinates may be negative values."
gfx::Rect rect;
// This is set from the rcWork member of MONITORINFOEX, to whit:
// "A RECT structure that specifies the work area rectangle of the
// display monitor that can be used by applications, expressed in
// virtual-screen coordinates. Windows uses this rectangle to
// maximize an application on the monitor. The rest of the area in
// rcMonitor contains system windows such as the task bar and side
// bars. Note that if the monitor is not the primary display monitor,
// some of the rectangle's coordinates may be negative values".
gfx::Rect available_rect;
// This is the orientation 'type' or 'name', as in landscape-primary or
// portrait-secondary for examples.
// See public/mojom/screen_orientation.mojom for the full list.
mojom::ScreenOrientation orientation_type =
mojom::ScreenOrientation::kUndefined;
// This is the orientation angle of the displayed content in degrees.
// It is the opposite of the physical rotation.
// TODO(crbug.com/840189): we should use an enum rather than a number here.
uint16_t orientation_angle = 0;
// Proposed: https://github.com/webscreens/window-placement
// Whether this Screen is part of a multi-screen extended visual workspace.
bool is_extended = false;
ScreenInfo() = default;
bool operator==(const ScreenInfo& other) const {
return this->device_scale_factor == other.device_scale_factor &&
this->display_color_spaces == other.display_color_spaces &&
this->depth == other.depth &&
this->depth_per_component == other.depth_per_component &&
this->is_monochrome == other.is_monochrome &&
this->display_frequency == other.display_frequency &&
this->rect == other.rect &&
this->available_rect == other.available_rect &&
this->orientation_type == other.orientation_type &&
this->orientation_angle == other.orientation_angle &&
this->is_extended == other.is_extended;
}
bool operator!=(const ScreenInfo& other) const {
return !this->operator==(other);
}
};
} // namespace blink
#endif