blob: 9ee35387bb94f543ae953209dfe12df0413ec81c [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_PLATFORM_WEB_SCREEN_INFO_H_
#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_SCREEN_INFO_H_
#include "third_party/blink/public/common/screen_orientation/web_screen_orientation_type.h"
#include "third_party/blink/public/platform/shape_properties.h"
#include "third_party/blink/public/platform/web_rect.h"
#include "ui/gfx/color_space.h"
namespace blink {
struct WebScreenInfo {
// Device scale factor. Specifies the ratio between physical and logical
// pixels.
float device_scale_factor = 1.f;
// The color space of the output display.
gfx::ColorSpace color_space;
// 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;
// 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."
WebRect 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".
WebRect available_rect;
// This is the orientation 'type' or 'name', as in landscape-primary or
// portrait-secondary for examples.
// See WebScreenOrientationType.h for the full list.
WebScreenOrientationType orientation_type = kWebScreenOrientationUndefined;
// 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;
// This is the shape of display.
DisplayShape display_shape = kDisplayShapeRect;
WebScreenInfo() = default;
bool operator==(const WebScreenInfo& other) const {
return this->device_scale_factor == other.device_scale_factor &&
this->color_space == other.color_space &&
this->depth == other.depth &&
this->depth_per_component == other.depth_per_component &&
this->is_monochrome == other.is_monochrome &&
this->rect == other.rect &&
this->available_rect == other.available_rect &&
this->orientation_type == other.orientation_type &&
this->orientation_angle == other.orientation_angle &&
this->display_shape == other.display_shape;
}
bool operator!=(const WebScreenInfo& other) const {
return !this->operator==(other);
}
};
} // namespace blink
#endif