mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-06 03:07:04 +02:00
[0.16]: Merge Preview Handlers in Master (#1516)
* Added project template for common library * Added reference to stylecop.json * Fixed xml documetation file path for common project * Added reference to stylecop.json * Added COM interface interpolations to C# * Changed namespace to Common * Added xml doc to com interfaces * Removed AnyCPU configuration from solution file * Added Preview Hander and form User Control Implementation * Fix stylecop warnings * Added test control and handler * Added Xaml description for preview handler * Added Xml documenatation * Updated the control to form * Added registration and unregistration logic for the handler * Moved the files in separate folder and fix PR comments * updated the name of previewhandler class to base class * Added the DoPreview to PreviewHandlerControl Interface * Modified the Dopreview and Unload as virtual method * Uncommented the DocumentText to help bug repro * HTML Parsing Extension for preview pane markdown renderer (#1108) * Added Extension for html post processing * Added unit test poroject for preview pane * Added pipline test and base test function * Added Tests for extension * Added tests for url slashes * Added tests for url and figure caption * Markdown preview pane (#1128) * Added Extension for html post processing * Added unit test poroject for preview pane * Added pipline test and base test function * Added Tests for extension * Added handler and control for markdown * Tests added * Locally working version for markdown * Working image relative url's in markdown * Added CSS to preview display * Updates CSS for code block * Removed html file write comment in markdown control * Updated assembly version and web browser control test * Add Svg preview handler (#1129) * Added a new project for Svg preview handler * Added initial implementation of Svg Preview Handler * Fixed output path * Added Unit Test Project * Added StreamWrapper and Update Svg Control * Updated Svg Handler Guid * Removed migration backup folder * Removed Fluent Assertions NuGet * Added Comments for StreamWrapper * Removed the manual GC collect * Added unit tests for Svg preview Handler * Updated the xml doc for stream wrapper * User/lamotile/add_powerpreviewsettings (#1075) * Added powersettings to PowerToys Settings UI * added settings library * updated settings-web * updated project oncfiguration * updated project onfiguration * updated project .sln file * removed .etl file and added it to git-ignore * separated the PowerPreviewModule into split classes .cpp and .h * moved PowerPreviewModule implemnetations to .cpp file * fixed StringTable formatter * fixed spacing in resource.h * added m_ to member varibales * initiliaze m_isPreviewEnabled in the base class * removed duplication of objects by using pass by refference and std::move * made the getters const * updated naming convention * Split test calsses * Add const string * Replaced move with const string * Made attributes private * Made attributes private * removed unused constructor * Update resource.h formatted resource.h * Adding unit tests for preview handler common (#1156) * Changed the name of the Common library to PreviewHandlerCommon * Added unit tests project for PreviewHandlerCommon * Updated ComInterop accessor type * Added unit tests for PreviewHandlerbase * Added tests for file and stream based handler * Added unit tests for StreamWrapper * Added form handler unit tests * Added Unit tests for FormHandlerControl * Added file header * Add Powerpreview project * Add spacing in sln file * swapped string refferences (#1199) * added registry methods and enable/disable preview handlers (#1230) * added registry methods and enable/disable preview handlers * formatted .rc file. * formatted resource file * formatted .rc file. * formatted settings.cpp * formatted settings.h * formatted SVGPreviewSettingsClassTest.cpp * Formatted MarkDownPreviewSettingsClassTest.cpp * using wide strings * formatted settings.h * FileExplorerPreviewSettingsTest.cpp formatting * fixed typo and formatting * closing Registry and fixing typos * formmarted code using ctrl+k+d * fixed naming * fixed typo * changed if/else reverse order * Markdown preview pane (#1220) * Added rich text bar for information display * Added infobar * Added tests for extension and markdown control * Added xml docstring for markdown preview handler control * Updated assembly file for markdown preview pane * Updated removal of script tag without modifying CSS * Added info bar text string to resource file. * Removed error with infobar display on first rendering * Updated assembly version * Remove script and image element from Svg (#1231) * Added implementation to remove script and image tag * Added Unit tests for SvgPreviewHandlerHelper * Updated Unit tests for SvgPreviewControl * Moved the hardcoded string to resource file * Changed the LocalMachine to CurrentUser for preview handler registration * Added unit tests for multiple blocked elements tags * User/lamotile/update settings objects (#1263) * added registry methods and enable/disable preview handlers * formatted .rc file. * formatted resource file * formatted .rc file. * formatted settings.cpp * formatted settings.h * formatted SVGPreviewSettingsClassTest.cpp * Formatted MarkDownPreviewSettingsClassTest.cpp * using wide strings * formatted settings.h * FileExplorerPreviewSettingsTest.cpp formatting * fixed typo and formatting * closing Registry and fixing typos * formmarted code using ctrl+k+d * fixed naming * fixed typo * changed if/else reverse order * updated setiings_objects.cpp * removed changes on files that are not part of this PR * removed const ref on primative types * updated pass by ref semantic and removed pas by reff on primative types * fixed spaces in the commas * fixed spaces in brackets * Preview pane telemetry (#1299) * Added telemetry base class and markdown telemetry class * Updated docstring for telemetry event. * Added telemetry to markdown for error * Added try catch for markdown preview handler and display error bar * Updated markdown telemetry to make event names global variable * Updated parameter name to camel casing and telemetry event name naming. * Corrected assembbly version for svg renderer * Markdown Image files display (#1303) * Added telemetry base class and markdown telemetry class * Updated docstring for telemetry event. * Added telemetry to markdown for error * Added try catch for markdown preview handler and display error bar * Updated markdown telemetry to make event names global variable * Updated Markdown preview to display without vertical scrollbar and removed xml doc to html agility pack. * Updated parameter name to camel casing and telemetry event name naming. * Corrected assembbly version for svg renderer * Removed duplicate function * Add telemetry for Svg preview handler (#1314) * Added telemetry events for Svg Preview Handler * Added unit test in case preview handler throws * Updated the Error event name * Remove the not required return statement * User/lamotile/add read me (#1332) * add readme * moved images * re-added images' * Fixed gramma * Update figure number refference * improve preview handler intergration (#1319) * improve preview handler intergration * Fixed typo * updated typo * updated enable() function * updated is enabled() * re-updated is enabled() * added this-> key word * (0.16) - Install preview handler with msix (#1339) * Removed the registration logic from preview handlers * Updated the output path * Added logic to shim the activation of .net assembly * Updated manifest file * Fix the allowedsilenttakeover filed in manifest * Updated the appxmanifest file * Added AllowSilentDefaultTakeOver in manifest * Fix returned error code by DllGetClassObject * Moved the CLSID to a common header file * Added info about where CLSID needs to be updated * Added a .reg file for the Keys added in registry.dat * Added comments for DllGetClassObject * Svg Preview Handler block external component (#1368) * Removed the registration logic from preview handlers * Updated the output path * Added logic to shim the activation of .net assembly * Updated manifest file * Fix the allowedsilenttakeover filed in manifest * Updated the appxmanifest file * Added AllowSilentDefaultTakeOver in manifest * Fix returned error code by DllGetClassObject * Moved the CLSID to a common header file * Added info about where CLSID needs to be updated * Added a .reg file for the Keys added in registry.dat * Added comments for DllGetClassObject * Extended WebBrowserSite for setting flags in DISPID_AMBIENT_DLCONTROL * Added XML Documenatation * Removed the logic for deleting image and script element from Svg * Updated Unit Tests * Updated typecast of uint * Forwarded calls to Type.InvokeMember * Resolve PR Comments * Adding MSI Installation for Preview Handler (#1436) * Updated wxs for including dll and registry keys for preview handlers * Changed the casing for registry key * Resolve PR Comments * Added comments for File element * Call GC on preview unloading (#1456) * Call GC collect on preview unloading * Added github issue link * Update Web browser control for Markdown Previewer (#1464) * Updated Webbrowser control * Updated Unit tests * Disabled Navigation for Svg Previewer * Fix power preview unit tests (#1508) * Decoupled registry interaction logic * Updated File explorer settings * Updated unit tests for PowerPreview Settings * Added Asserrtion for Scope of registry key * Updated the registry value to match with installation registry value * Sync master settings.cpp * Merge settings changes from PreviewHandlers * Remove newline changes added into in example_powertoy\trace.cpp * Chaned .net framework to 4.7.2 * Updated Csproj files to auto generate Assembly.info files * Updated msi installer to use version variable for preview handlers assembly * Removed the signing of Assembly and updated wxs to not include PublicKeyToken * Updated the Path in Packaginglayout.xml to modules from Gac and the registry hive binary * Regenerated updated JS and html file * Resolve PR Comments * Readded the wprp file Co-authored-by: Divyansh <divyan@microsoft.com> Co-authored-by: Divyansh <somm14divi@gmail.com> Co-authored-by: Lavius Motileng <58791731+laviusmotileng-ms@users.noreply.github.com>
This commit is contained in:
35
src/modules/previewpane/common/cominterop/COLORREF.cs
Normal file
35
src/modules/previewpane/common/cominterop/COLORREF.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// The COLORREF value is used to specify an RGB color.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct COLORREF
|
||||
{
|
||||
/// <summary>
|
||||
/// Stores an RGB color value in a 32 bit integer.
|
||||
/// </summary>
|
||||
public uint Dword;
|
||||
|
||||
/// <summary>
|
||||
/// Gets RGB value stored in <see cref="Dword"/> in <see cref="Color"/> structure.
|
||||
/// </summary>
|
||||
public Color Color
|
||||
{
|
||||
get
|
||||
{
|
||||
return Color.FromArgb(
|
||||
(int)(0x000000FFU & this.Dword),
|
||||
(int)(0x0000FF00U & this.Dword) >> 8,
|
||||
(int)(0x00FF0000U & this.Dword) >> 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.Cominterop
|
||||
{
|
||||
/// <summary>
|
||||
/// Exposes a method to initialize a handler, such as a property handler, thumbnail handler, or preview handler, with a file path.
|
||||
/// </summary>
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("b7d14566-0509-4cce-a71f-0a554233bd9b")]
|
||||
public interface IInitializeWithFile
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a handler with a file path.
|
||||
/// </summary>
|
||||
/// <param name="pszFilePath">File Path.</param>
|
||||
/// <param name="grfMode">Indicate the Access Mode either STGM_READ (Read Only Access) or STGM_READWRITE (Read and Write Access).</param>
|
||||
void Initialize([MarshalAs(UnmanagedType.LPWStr)] string pszFilePath, uint grfMode);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.InteropServices.ComTypes;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// Exposes a method that initializes a handler, such as a property handler, thumbnail handler, or preview handler, with a stream.
|
||||
/// </summary>
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("b824b49d-22ac-4161-ac8a-9916e8fa3f7f")]
|
||||
public interface IInitializeWithStream
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a handler with a stream.
|
||||
/// </summary>
|
||||
/// <param name="pstream">A pointer to an <see cref="IStream" /> interface that represents the stream source.</param>
|
||||
/// <param name="grfMode">One of the <see href="https://docs.microsoft.com/en-us/windows/win32/stg/stgm-constants" >STGM</see> values that indicates the access mode for <paramref name="pstream"/>.</param>
|
||||
void Initialize(IStream pstream, uint grfMode);
|
||||
}
|
||||
}
|
||||
31
src/modules/previewpane/common/cominterop/IObjectWithSite.cs
Normal file
31
src/modules/previewpane/common/cominterop/IObjectWithSite.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides a simplified way to support communication between an object and its site in the container.
|
||||
/// </summary>
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("fc4801a3-2ba9-11cf-a229-00aa003d7352")]
|
||||
public interface IObjectWithSite
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides the site's pointer to the site object.
|
||||
/// </summary>
|
||||
/// <param name="pUnkSite">Address of an interface pointer to the site managing this object.</param>
|
||||
void SetSite([In, MarshalAs(UnmanagedType.IUnknown)] object pUnkSite);
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the last site set using the <see cref="SetSite(object)" /> method. In cases where there is no known site, the object returns an exception.
|
||||
/// </summary>
|
||||
/// <param name="riid">Provides the IID of the interface pointer returned in the <paramref name="ppvSite"/> parameter.</param>
|
||||
/// <param name="ppvSite">The address of the caller's void variable in which the object stores the interface pointer of the site last seen in the <see cref="SetSite(object)" />.</param>
|
||||
void GetSite(ref Guid riid, [MarshalAs(UnmanagedType.IUnknown)] out object ppvSite);
|
||||
}
|
||||
}
|
||||
31
src/modules/previewpane/common/cominterop/IOleWindow.cs
Normal file
31
src/modules/previewpane/common/cominterop/IOleWindow.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// The IOleWindow interface provides methods that allow an application to obtain the handle to the various windows that participate
|
||||
/// in in-place activation, and also to enter and exit context-sensitive help mode.
|
||||
/// </summary>
|
||||
[ComImport]
|
||||
[Guid("00000114-0000-0000-C000-000000000046")]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
public interface IOleWindow
|
||||
{
|
||||
/// <summary>
|
||||
/// Retrieves a handle to one of the windows participating in in-place activation (frame, document, parent, or in-place object window).
|
||||
/// </summary>
|
||||
/// <param name="phwnd">A pointer to a variable that receives the window handle.</param>
|
||||
void GetWindow(out IntPtr phwnd);
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether context-sensitive help mode should be entered during an in-place activation session.
|
||||
/// </summary>
|
||||
/// <param name="fEnterMode">TRUE if help mode should be entered; FALSE if it should be exited.</param>
|
||||
void ContextSensitiveHelp([MarshalAs(UnmanagedType.Bool)] bool fEnterMode);
|
||||
}
|
||||
}
|
||||
62
src/modules/previewpane/common/cominterop/IPreviewHandler.cs
Normal file
62
src/modules/previewpane/common/cominterop/IPreviewHandler.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// Exposes methods for the display of rich previews.
|
||||
/// </summary>
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("8895b1c6-b41f-4c1c-a562-0d564250836f")]
|
||||
public interface IPreviewHandler
|
||||
{
|
||||
/// <summary>
|
||||
/// Sets the parent window of the previewer window, as well as the area within the parent to be used for the previewer window.
|
||||
/// </summary>
|
||||
/// <param name="hwnd">A handle to the parent window.</param>
|
||||
/// <param name="rect">A pointer to a <see cref="RECT"/> defining the area for the previewer.</param>
|
||||
void SetWindow(IntPtr hwnd, ref RECT rect);
|
||||
|
||||
/// <summary>
|
||||
/// Directs the preview handler to change the area within the parent hwnd that it draws into.
|
||||
/// </summary>
|
||||
/// <param name="rect">A pointer to a <see cref="RECT"/> to be used for the preview.</param>
|
||||
void SetRect(ref RECT rect);
|
||||
|
||||
/// <summary>
|
||||
/// Directs the preview handler to load data from the source specified in an earlier Initialize method call, and to begin rendering to the previewer window.
|
||||
/// </summary>
|
||||
void DoPreview();
|
||||
|
||||
/// <summary>
|
||||
/// Directs the preview handler to cease rendering a preview and to release all resources that have been allocated based on the item passed in during the initialization.
|
||||
/// </summary>
|
||||
void Unload();
|
||||
|
||||
/// <summary>
|
||||
/// Directs the preview handler to set focus to itself.
|
||||
/// </summary>
|
||||
void SetFocus();
|
||||
|
||||
/// <summary>
|
||||
/// Directs the preview handler to return the HWND from calling the GetFocus Function.
|
||||
/// </summary>
|
||||
/// <param name="phwnd">When this method returns, contains a pointer to the HWND returned from calling the GetFocus Function from the preview handler's foreground thread.</param>
|
||||
void QueryFocus(out IntPtr phwnd);
|
||||
|
||||
/// <summary>
|
||||
/// Directs the preview handler to handle a keystroke passed up from the message pump of the process in which the preview handler is running.
|
||||
/// </summary>
|
||||
/// <param name="pmsg">A pointer to a window message.</param>
|
||||
/// <returns>If the keystroke message can be processed by the preview handler, the handler will process it and return S_OK(0). If the preview handler cannot process the keystroke message, it
|
||||
/// will offer it to the host using <see cref="IPreviewHandlerFrame.TranslateAccelerator(ref MSG)"/>. If the host processes the message, this method will return S_OK(0). If the host does not process the message, this method will return S_FALSE(1).
|
||||
/// </returns>
|
||||
[PreserveSig]
|
||||
uint TranslateAccelerator(ref MSG pmsg);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// Enables preview handlers to pass keyboard shortcuts to the host. This interface retrieves a list of keyboard shortcuts and directs the host to handle a keyboard shortcut.
|
||||
/// </summary>
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("fec87aaf-35f9-447a-adb7-20234491401a")]
|
||||
public interface IPreviewHandlerFrame
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets a list of the keyboard shortcuts for the preview host.
|
||||
/// </summary>
|
||||
/// <param name="pinfo">A pointer to a <see href="https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/ns-shobjidl_core-previewhandlerframeinfo">PREVIEWHANDLERFRAMEINFO</see> structure
|
||||
/// that receives accelerator table information.</param>
|
||||
void GetWindowContext(IntPtr pinfo);
|
||||
|
||||
/// <summary>
|
||||
/// Directs the host to handle an keyboard shortcut passed from the preview handler.
|
||||
/// </summary>
|
||||
/// <param name="pmsg">A reference to <see cref="MSG"/> that corresponds to a keyboard shortcut.</param>
|
||||
/// <returns>If the keyboard shortcut is one that the host intends to handle, the host will process it and return S_OK(0); otherwise, it returns S_FALSE(1).</returns>
|
||||
[PreserveSig]
|
||||
uint TranslateAccelerator(ref MSG pmsg);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// Exposes methods for applying color and font information to preview handlers.
|
||||
/// </summary>
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("8327b13c-b63f-4b24-9b8a-d010dcc3f599")]
|
||||
public interface IPreviewHandlerVisuals
|
||||
{
|
||||
/// <summary>
|
||||
/// Sets the background color of the preview handler.
|
||||
/// </summary>
|
||||
/// <param name="color">A value of type <see cref="COLORREF"/> to use for the preview handler background.</param>
|
||||
void SetBackgroundColor(COLORREF color);
|
||||
|
||||
/// <summary>
|
||||
/// Sets the font attributes to be used for text within the preview handler.
|
||||
/// </summary>
|
||||
/// <param name="plf">A pointer to a <see cref="LOGFONT"/> Structure containing the necessary attributes for the font to use.</param>
|
||||
void SetFont(ref LOGFONT plf);
|
||||
|
||||
/// <summary>
|
||||
/// Sets the color of the text within the preview handler.
|
||||
/// </summary>
|
||||
/// <param name="color">A value of type <see cref="COLORREF"/> to use for the preview handler text color.</param>
|
||||
void SetTextColor(COLORREF color);
|
||||
}
|
||||
}
|
||||
88
src/modules/previewpane/common/cominterop/LOGFONT.cs
Normal file
88
src/modules/previewpane/common/cominterop/LOGFONT.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines the attributes of a font.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
|
||||
public struct LOGFONT
|
||||
{
|
||||
/// <summary>
|
||||
/// Value of type INT that specifies the height, in logical units, of the font's character cell or character.
|
||||
/// </summary>
|
||||
public int LfHeight;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type INT that specifies the width, in logical units, of characters in the font.
|
||||
/// </summary>
|
||||
public int LfWidth;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type INT that contains the angle, in tenths of degrees, between the escapement vector and the x-axis of the device. The escapement
|
||||
/// vector is parallel to the base line of a row of text.
|
||||
/// </summary>
|
||||
public int LfEscapement;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type INT that specifies the angle, in tenths of degrees, between each character's base line and the x-axis of the device.
|
||||
/// </summary>
|
||||
public int LfOrientation;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type INT that specifies the weight of the font in the range from 0 through 1000.
|
||||
/// </summary>
|
||||
public int LfWeight;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type BYTE that specifies an italic font if set to TRUE.
|
||||
/// </summary>
|
||||
public byte LfItalic;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type BYTE that specifies an underlined font if set to TRUE.
|
||||
/// </summary>
|
||||
public byte LfUnderline;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type BYTE that specifies a strikeout font if set to TRUE.
|
||||
/// </summary>
|
||||
public byte LfStrikeOut;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type BYTE that specifies the character set.
|
||||
/// </summary>
|
||||
public byte LfCharSet;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type BYTE that specifies the output precision. The output precision defines how closely the output must match the requested
|
||||
/// font's height, width, character orientation, escapement, pitch, and font type.
|
||||
/// </summary>
|
||||
public byte LfOutPrecision;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type BYTE that specifies the clipping precision. The clipping precision defines how to clip characters that are partially outside the clipping region.
|
||||
/// </summary>
|
||||
public byte LfClipPrecision;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type BYTE that specifies the output quality. The output quality defines how carefully the GDI must attempt to match the logical-font attributes to those of an actual physical font.
|
||||
/// </summary>
|
||||
public byte LfQuality;
|
||||
|
||||
/// <summary>
|
||||
/// Value of type BYTE that specifies the pitch and family of the font.
|
||||
/// </summary>
|
||||
public byte LfPitchAndFamily;
|
||||
|
||||
/// <summary>
|
||||
/// Array of wide characters that contains a null-terminated string that specifies the typeface name of the font. The length of the string must not exceed 32 characters, including the NULL terminator.
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
|
||||
public string LfFaceName;
|
||||
}
|
||||
}
|
||||
51
src/modules/previewpane/common/cominterop/MSG.cs
Normal file
51
src/modules/previewpane/common/cominterop/MSG.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains message information from a thread's message queue.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct MSG
|
||||
{
|
||||
/// <summary>
|
||||
/// A handle to the window whose window procedure receives the message. This member is NULL when the message is a thread message.
|
||||
/// </summary>
|
||||
public IntPtr Hwnd;
|
||||
|
||||
/// <summary>
|
||||
/// The message identifier. Applications can only use the low word; the high word is reserved by the system.
|
||||
/// </summary>
|
||||
public int Message;
|
||||
|
||||
/// <summary>
|
||||
/// Additional information about the message. The exact meaning depends on the value of the message member.
|
||||
/// </summary>
|
||||
public IntPtr WParam;
|
||||
|
||||
/// <summary>
|
||||
/// Additional information about the message. The exact meaning depends on the value of the message member.
|
||||
/// </summary>
|
||||
public IntPtr LParam;
|
||||
|
||||
/// <summary>
|
||||
/// The time at which the message was posted.
|
||||
/// </summary>
|
||||
public int Time;
|
||||
|
||||
/// <summary>
|
||||
/// The x coordinate of cursor position, in screen coordinates, when the message was posted.
|
||||
/// </summary>
|
||||
public int PtX;
|
||||
|
||||
/// <summary>
|
||||
/// The y coordinate of cursor position, in screen coordinates, when the message was posted.
|
||||
/// </summary>
|
||||
public int PtY;
|
||||
}
|
||||
}
|
||||
45
src/modules/previewpane/common/cominterop/RECT.cs
Normal file
45
src/modules/previewpane/common/cominterop/RECT.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.ComInterlop
|
||||
{
|
||||
/// <summary>
|
||||
/// The RECT structure defines a rectangle by the coordinates of its upper-left and lower-right corners.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct RECT
|
||||
{
|
||||
/// <summary>
|
||||
/// Specifies the x-coordinate of the upper-left corner of the rectangle.
|
||||
/// </summary>
|
||||
public int Left;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the y-coordinate of the upper-left corner of the rectangle.
|
||||
/// </summary>
|
||||
public int Top;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the x-coordinate of the lower-right corner of the rectangle.
|
||||
/// </summary>
|
||||
public int Right;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the y-coordinate of the lower-right corner of the rectangle.
|
||||
/// </summary>
|
||||
public int Bottom;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="Rectangle" /> structure with the edge locations specified in the struct.
|
||||
/// </summary>
|
||||
/// <returns>Return a <see cref="Rectangle"/>.</returns>
|
||||
public Rectangle ToRectangle()
|
||||
{
|
||||
return Rectangle.FromLTRB(this.Left, this.Top, this.Right, this.Bottom);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user