forked from mirrors/gecko-dev
		
	 943e049dcc
			
		
	
	
		943e049dcc
		
	
	
	
	
		
			
			Converts layout.css.devPixelsPerPx to a static pref. This one was one of the slightly odd ones; some values were expecting an atomic float, so instead of defining a regular type float it is defined in StaticPrefList.yaml as an AtomicFloat. I am assuming this was the intent of the pref value all along. Differential Revision: https://phabricator.services.mozilla.com/D42396 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			123 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 2; -*- */
 | |
| /* vim: set sw=2 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"
 | |
| #include "mozilla/StaticPrefs_layout.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 = StaticPrefs::layout_css_devPixelsPerPx();
 | |
|   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
 |