widget/uikit/nsScreenManager.h
author Benjamin Bouvier <benj@benj.me>
Fri, 30 Nov 2018 16:39:55 +0100
changeset 449028 e4712449ba4303cef134ba0b3f1bea13fbd50c4a
parent 448947 6f3709b3878117466168c40affa7bca0b60cf75b
child 449035 66eb1f485c1a3ea81372758bc92292c9428b17cd
permissions -rw-r--r--
Bug 1511383: Update vim modelines after clang-format; r=sylvestre - modify line wrap up to 80 chars; (tw=80) - modify size of tab to 2 chars everywhere; (sts=2, sw=2)

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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/. */

#ifndef nsScreenManager_h_
#define nsScreenManager_h_

#include "nsBaseScreen.h"
#include "nsIScreenManager.h"
#include "nsCOMPtr.h"
#include "nsRect.h"

@class UIScreen;

class UIKitScreen : public nsBaseScreen {
 public:
  explicit UIKitScreen(UIScreen* screen);
  ~UIKitScreen() {}

  NS_IMETHOD GetId(uint32_t* outId) override {
    *outId = 0;
    return NS_OK;
  }

  NS_IMETHOD GetRect(int32_t* aLeft, int32_t* aTop, int32_t* aWidth, int32_t* aHeight) override;
  NS_IMETHOD GetAvailRect(int32_t* aLeft, int32_t* aTop, int32_t* aWidth,
                          int32_t* aHeight) override;
  NS_IMETHOD GetRectDisplayPix(int32_t* aLeft, int32_t* aTop, int32_t* aWidth,
                               int32_t* aHeight) override;
  NS_IMETHOD GetAvailRectDisplayPix(int32_t* aLeft, int32_t* aTop, int32_t* aWidth,
                                    int32_t* aHeight) override;
  NS_IMETHOD GetPixelDepth(int32_t* aPixelDepth) override;
  NS_IMETHOD GetColorDepth(int32_t* aColorDepth) override;
  NS_IMETHOD GetContentsScaleFactor(double* aContentsScaleFactor) override;
  NS_IMETHOD GetDefaultCSSScaleFactor(double* aScaleFactor) override {
    return GetContentsScaleFactor(aScaleFactor);
  }

 private:
  UIScreen* mScreen;
};

class UIKitScreenManager : public nsIScreenManager {
 public:
  UIKitScreenManager();

  NS_DECL_ISUPPORTS

  NS_DECL_NSISCREENMANAGER

  static LayoutDeviceIntRect GetBounds();

 private:
  virtual ~UIKitScreenManager() {}
  // TODO: support >1 screen, iPad supports external displays
  nsCOMPtr<nsIScreen> mScreen;
};

#endif  // nsScreenManager_h_