mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-15 03:07:56 +01:00
* [Screen Ruler] simplify lines calculation * [Screen Ruler] Add inches and centimeters support * [Chore] prefer x64 toolset to avoid hitting C1076 * [Screen Ruler] Allow making screenshots in non-continuous mode * [Screen Ruler] Use single d3d device for all ops * [Screen Ruler] remove gpu mutex and clean up screen capturing * [Screen Ruler] handle and log DXGI initialization failure * [Screen Ruler] Add unhandled exception handler * [Screen Ruler] comment out Units of Measure setting * [Screen Ruler] introduce a separate device dedicated for capturing
56 lines
2.7 KiB
C
56 lines
2.7 KiB
C
#pragma once
|
|
|
|
#include <winrt/base.h>
|
|
#include <wil/resource.h>
|
|
#include <Windows.h>
|
|
#include <dwrite.h>
|
|
|
|
struct __declspec(uuid("{01557C9F-E3DD-4C28-AE64-E731EAB479CC}")) IDrawingEffect : IUnknown
|
|
{
|
|
};
|
|
|
|
struct OpacityEffect : winrt::implements<OpacityEffect, IDrawingEffect>
|
|
{
|
|
float alpha = 1.f;
|
|
};
|
|
|
|
struct PerGlyphOpacityTextRender : winrt::implements<PerGlyphOpacityTextRender, IDWriteTextRenderer>
|
|
{
|
|
ID2D1Factory* _pD2DFactory = nullptr;
|
|
ID2D1RenderTarget* _rt = nullptr;
|
|
ID2D1SolidColorBrush* _baseBrush = nullptr;
|
|
|
|
PerGlyphOpacityTextRender(
|
|
winrt::com_ptr<ID2D1Factory> pD2DFactory,
|
|
winrt::com_ptr<ID2D1RenderTarget> rt,
|
|
winrt::com_ptr<ID2D1SolidColorBrush> baseBrush);
|
|
|
|
HRESULT __stdcall DrawGlyphRun(void* clientDrawingContext,
|
|
FLOAT baselineOriginX,
|
|
FLOAT baselineOriginY,
|
|
DWRITE_MEASURING_MODE measuringMode,
|
|
_In_ const DWRITE_GLYPH_RUN* glyphRun,
|
|
_In_ const DWRITE_GLYPH_RUN_DESCRIPTION* glyphRunDescription,
|
|
IUnknown* clientDrawingEffect) noexcept override;
|
|
HRESULT __stdcall DrawUnderline(void* clientDrawingContext,
|
|
FLOAT baselineOriginX,
|
|
FLOAT baselineOriginY,
|
|
_In_ const DWRITE_UNDERLINE* underline,
|
|
IUnknown* clientDrawingEffect) noexcept override;
|
|
HRESULT __stdcall DrawStrikethrough(void* clientDrawingContext,
|
|
FLOAT baselineOriginX,
|
|
FLOAT baselineOriginY,
|
|
_In_ const DWRITE_STRIKETHROUGH* strikethrough,
|
|
IUnknown* clientDrawingEffect) noexcept override;
|
|
HRESULT __stdcall DrawInlineObject(void* clientDrawingContext,
|
|
FLOAT originX,
|
|
FLOAT originY,
|
|
IDWriteInlineObject* inlineObject,
|
|
BOOL isSideways,
|
|
BOOL isRightToLeft,
|
|
IUnknown* clientDrawingEffect) noexcept override;
|
|
HRESULT __stdcall IsPixelSnappingDisabled(void* clientDrawingContext, BOOL* isDisabled) noexcept override;
|
|
HRESULT __stdcall GetCurrentTransform(void* clientDrawingContext, DWRITE_MATRIX* transform) noexcept override;
|
|
HRESULT __stdcall GetPixelsPerDip(void* clientDrawingContext, FLOAT* pixelsPerDip) noexcept override;
|
|
};
|