gecko/widget/windows/winrt/MetroUtils.h
Ehsan Akhgari ebd358dfd7 Bug 927728 - Part 1: Replace PRUnichar with char16_t; r=roc
This patch was automatically generated by the following script:

#!/bin/bash
# Command to convert PRUnichar to char16_t

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*modules/libmar*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name prtypes.h \
       ! -name Char16.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert PRUnichar char16_t
2014-01-04 10:02:17 -05:00

97 lines
3.2 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/. */
#pragma once
#include "nsDebug.h"
#include "nsThreadUtils.h"
#include "nsString.h"
#include "nsPoint.h"
#include "WinUtils.h"
#include "mozwrlbase.h"
#include <stdio.h>
#include <windows.foundation.h>
#include <windows.ui.viewmanagement.h>
// HRESULT checkers, these warn on failure in debug builds
#ifdef DEBUG
#define DebugLogHR(hr) LogHRESULT(hr)
#else
#define DebugLogHR(hr)
#endif
#define AssertHRESULT(hr) \
if (FAILED(hr)) { \
DebugLogHR(hr); \
return; \
}
#define AssertRetHRESULT(hr, res) \
if (FAILED(hr)) { \
DebugLogHR(hr); \
return res; \
}
// MS Point helpers
#define POINT_CEIL_X(position) (uint32_t)ceil(position.X)
#define POINT_CEIL_Y(position) (uint32_t)ceil(position.Y)
class nsIBrowserDOMWindow;
class nsIDOMWindow;
struct nsIntRect;
namespace mozilla {
namespace widget {
namespace winrt {
template<unsigned int size, typename T>
HRESULT ActivateGenericInstance(wchar_t const (&RuntimeClassName)[size], Microsoft::WRL::ComPtr<T>& aOutObject) {
Microsoft::WRL::ComPtr<IActivationFactory> factory;
HRESULT hr = ABI::Windows::Foundation::GetActivationFactory(Microsoft::WRL::Wrappers::HStringReference(RuntimeClassName).Get(),
factory.GetAddressOf());
if (FAILED(hr))
return hr;
Microsoft::WRL::ComPtr<IInspectable> inspect;
hr = factory->ActivateInstance(inspect.GetAddressOf());
if (FAILED(hr))
return hr;
return inspect.As(&aOutObject);
}
} } }
class MetroUtils
{
typedef ABI::Windows::Foundation::IUriRuntimeClass IUriRuntimeClass;
typedef Microsoft::WRL::Wrappers::HString HString;
typedef ABI::Windows::UI::ViewManagement::ApplicationViewState ApplicationViewState;
typedef ABI::Windows::Foundation::Point Point;
typedef ABI::Windows::Foundation::Rect Rect;
public:
// Functions to convert between logical pixels as used by most Windows APIs
// and physical (device) pixels.
static double LogToPhysFactor();
static double PhysToLogFactor();
static nsIntPoint LogToPhys(const Point& aPt);
static nsIntRect LogToPhys(const Rect& aRect);
static Point PhysToLog(const nsIntPoint& aPt);
// Resolution scale factor
static double ScaleFactor();
static nsresult FireObserver(const char* aMessage, const char16_t* aData = nullptr);
static HRESULT CreateUri(HSTRING aUriStr, Microsoft::WRL::ComPtr<IUriRuntimeClass>& aUriOut);
static HRESULT CreateUri(HString& aHString, Microsoft::WRL::ComPtr<IUriRuntimeClass>& aUriOut);
static HRESULT GetViewState(ApplicationViewState& aState);
static HRESULT TryUnsnap(bool* aResult = nullptr);
static HRESULT ShowSettingsFlyout();
private:
static nsresult GetBrowserDOMWindow(nsCOMPtr<nsIBrowserDOMWindow> &aBWin);
static nsresult GetMostRecentWindow(const char16_t* aType, nsIDOMWindow** aWindow);
};