widget/Screen.cpp
author Valentin Gosu <valentin.gosu@gmail.com>
Mon, 26 Feb 2018 20:43:45 +0100
changeset 460449 26dc46bd3cccc934f5d8070cd8ba9a33d7a60cdf
parent 452908 ef2f9e08e01238ae5893951fa13aafdaa3146f45
child 508163 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1433958 - Change code that sets nsIURI.pathQueryRef to use nsIURIMutator r=mayhemer MozReview-Commit-ID: HVyZ3E1XuLN

/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 2; -*- */
/* vim: set sw=4 ts=8 et tw=80 : */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "Screen.h"

#include "mozilla/dom/DOMTypes.h"

namespace mozilla {
namespace widget {

NS_IMPL_ISUPPORTS(Screen, nsIScreen)

Screen::Screen(LayoutDeviceIntRect aRect, LayoutDeviceIntRect aAvailRect,
               uint32_t aPixelDepth, uint32_t aColorDepth,
               DesktopToLayoutDeviceScale aContentsScale,
               CSSToLayoutDeviceScale aDefaultCssScale,
               float aDPI)
  : mRect(aRect)
  , mAvailRect(aAvailRect)
  , mRectDisplayPix(RoundedToInt(aRect / aContentsScale))
  , mAvailRectDisplayPix(RoundedToInt(aAvailRect / aContentsScale))
  , mPixelDepth(aPixelDepth)
  , mColorDepth(aColorDepth)
  , mContentsScale(aContentsScale)
  , mDefaultCssScale(aDefaultCssScale)
  , mDPI(aDPI)
{
}

Screen::Screen(const mozilla::dom::ScreenDetails& aScreen)
  : mRect(aScreen.rect())
  , mAvailRect(aScreen.availRect())
  , mRectDisplayPix(aScreen.rectDisplayPix())
  , mAvailRectDisplayPix(aScreen.availRectDisplayPix())
  , mPixelDepth(aScreen.pixelDepth())
  , mColorDepth(aScreen.colorDepth())
  , mContentsScale(aScreen.contentsScaleFactor())
  , mDefaultCssScale(aScreen.defaultCSSScaleFactor())
  , mDPI(aScreen.dpi())
{
}

Screen::Screen(const Screen& aOther)
  : mRect(aOther.mRect)
  , mAvailRect(aOther.mAvailRect)
  , mRectDisplayPix(aOther.mRectDisplayPix)
  , mAvailRectDisplayPix(aOther.mAvailRectDisplayPix)
  , mPixelDepth(aOther.mPixelDepth)
  , mColorDepth(aOther.mColorDepth)
  , mContentsScale(aOther.mContentsScale)
  , mDefaultCssScale(aOther.mDefaultCssScale)
  , mDPI(aOther.mDPI)
{
}

mozilla::dom::ScreenDetails
Screen::ToScreenDetails()
{
  return mozilla::dom::ScreenDetails(
    mRect, mRectDisplayPix, mAvailRect, mAvailRectDisplayPix,
    mPixelDepth, mColorDepth, mContentsScale, mDefaultCssScale, mDPI);
}

NS_IMETHODIMP
Screen::GetRect(int32_t* aOutLeft,
                int32_t* aOutTop,
                int32_t* aOutWidth,
                int32_t* aOutHeight)
{
  mRect.GetRect(aOutLeft, aOutTop, aOutWidth, aOutHeight);
  return NS_OK;
}

NS_IMETHODIMP
Screen::GetRectDisplayPix(int32_t* aOutLeft,
                          int32_t* aOutTop,
                          int32_t* aOutWidth,
                          int32_t* aOutHeight)
{
  mRectDisplayPix.GetRect(aOutLeft, aOutTop, aOutWidth, aOutHeight);
  return NS_OK;
}

NS_IMETHODIMP
Screen::GetAvailRect(int32_t* aOutLeft,
                     int32_t* aOutTop,
                     int32_t* aOutWidth,
                     int32_t* aOutHeight)
{
  mAvailRect.GetRect(aOutLeft, aOutTop, aOutWidth, aOutHeight);
  return NS_OK;
}

NS_IMETHODIMP
Screen::GetAvailRectDisplayPix(int32_t* aOutLeft,
                               int32_t* aOutTop,
                               int32_t* aOutWidth,
                               int32_t* aOutHeight)
{
  mAvailRectDisplayPix.GetRect(aOutLeft, aOutTop, aOutWidth, aOutHeight);
  return NS_OK;
}

NS_IMETHODIMP
Screen::GetPixelDepth(int32_t* aPixelDepth)
{
  *aPixelDepth = mPixelDepth;
  return NS_OK;
}

NS_IMETHODIMP
Screen::GetColorDepth(int32_t* aColorDepth)
{
  *aColorDepth = mColorDepth;
  return NS_OK;
}

NS_IMETHODIMP
Screen::GetContentsScaleFactor(double *aOutScale)
{
  *aOutScale = mContentsScale.scale;
  return NS_OK;
}

NS_IMETHODIMP
Screen::GetDefaultCSSScaleFactor(double *aOutScale)
{
  double scale = nsIWidget::DefaultScaleOverride();
  if (scale > 0.0) {
    *aOutScale = scale;
  } else {
    *aOutScale = mDefaultCssScale.scale;
  }
  return NS_OK;
}

NS_IMETHODIMP
Screen::GetDpi(float* aDPI)
{
  *aDPI = mDPI;
  return NS_OK;
}

} // namespace widget
} // namespace mozilla