ReactOS 0.4.16-dev-2279-gc890759
utils.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS win32 kernel mode subsystem
3 * LICENSE: GPL-2.1-or-later (https://spdx.org/licenses/GPL-2.1-or-later)
4 * PURPOSE: Utility functions
5 * COPYRIGHT: Copyright 2026 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6 */
7
8#pragma once
9
10extern POINTL g_PointZero;
12
14LONG IntNormalizeAngle(_In_ LONG nTenthsOfDegrees);
20
21VOID
23 _Inout_ PLIST_ENTRY pNewHead,
24 _Inout_ PLIST_ENTRY pOldHead);
25
26VOID
28 _Out_ LPWSTR pszBuffer,
29 _In_ SIZE_T cbBuffer,
31
36
37/* The ranges of the surrogate pairs */
38#define HIGH_SURROGATE_MIN 0xD800U
39#define HIGH_SURROGATE_MAX 0xDBFFU
40#define LOW_SURROGATE_MIN 0xDC00U
41#define LOW_SURROGATE_MAX 0xDFFFU
42
43#define IS_HIGH_SURROGATE(ch0) (HIGH_SURROGATE_MIN <= (ch0) && (ch0) <= HIGH_SURROGATE_MAX)
44#define IS_LOW_SURROGATE(ch1) (LOW_SURROGATE_MIN <= (ch1) && (ch1) <= LOW_SURROGATE_MAX)
45
46static inline DWORD
48{
49 return ((ch0 - HIGH_SURROGATE_MIN) << 10) + (ch1 - LOW_SURROGATE_MIN) + 0x10000;
50}
51
52VOID
55 IN OUT PDC dc,
56 IN INT X,
57 IN INT Y,
58 IN INT Width,
60 IN BRUSHOBJ *BrushObj);
61
64 IN OUT PDC dc,
65 IN POINTL *pPoints,
66 IN UINT cPoints,
67 IN BRUSHOBJ *BrushObj);
68
69static inline
70LONG
72{
73 FLOATOBJ efTemp;
74
75 /* Check if we have scaling different from 1 */
76 if (!FLOATOBJ_Equal(pef, (PFLOATOBJ)&gef1))
77 {
78 /* Need to multiply */
79 FLOATOBJ_SetLong(&efTemp, lValue);
80 FLOATOBJ_Mul(&efTemp, pef);
81 lValue = FLOATOBJ_GetLong(&efTemp);
82 }
83
84 return lValue;
85}
LONG NTSTATUS
Definition: precomp.h:26
HDC dc
Definition: cylfrac.c:34
#define APIENTRY
Definition: api.h:79
#define Y(I)
static void CharSet(RTF_Info *info)
Definition: reader.c:2400
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
static const FLOATOBJ gef1
Definition: floatobj.h:114
FxString * pString
USHORT LANGID
Definition: mui.h:9
unsigned int UINT
Definition: ndis.h:50
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3169
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
Definition: rtlfuncs.h:3051
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
Definition: netsh.h:116
#define _Inout_
Definition: no_sal2.h:162
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define FASTCALL
Definition: nt_native.h:50
_NullNull_terminated_ CONST WCHAR * PCZZWSTR
Definition: ntbasedef.h:433
long LONG
Definition: pedump.c:60
Definition: polytest.cpp:41
Definition: typedefs.h:120
uint16_t * PWSTR
Definition: typedefs.h:56
const uint16_t * PCWSTR
Definition: typedefs.h:57
ULONG_PTR SIZE_T
Definition: typedefs.h:80
int32_t INT
Definition: typedefs.h:58
#define IN
Definition: typedefs.h:39
#define OUT
Definition: typedefs.h:40
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
Definition: font.h:89
_In_ HFONT _Out_ PUINT Height
Definition: font.h:88
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4539
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR _In_opt_ USHORT LangID
Definition: wdfusb.h:1083
VOID APIENTRY IntEngFillPolygon(IN OUT PDC dc, IN POINTL *pPoints, IN UINT cPoints, IN BRUSHOBJ *BrushObj)
Definition: utils.c:254
BOOL PathIsRelativeW(_In_ LPCWSTR lpszPath)
Definition: utils.c:155
VOID IntSwapEndian(_Inout_ LPVOID pvData, _In_ DWORD Size)
Definition: utils.c:125
UNICODE_STRING g_FontRegPath
Definition: freetype.c:325
VOID IntRebaseList(_Inout_ PLIST_ENTRY pNewHead, _Inout_ PLIST_ENTRY pOldHead)
Definition: utils.c:30
NTSTATUS IntDuplicateUnicodeString(_In_ PCUNICODE_STRING Source, _Out_ PUNICODE_STRING Destination)
Definition: utils.c:183
#define LOW_SURROGATE_MIN
Definition: utils.h:40
VOID IntUnicodeStringToBuffer(_Out_ LPWSTR pszBuffer, _In_ SIZE_T cbBuffer, _In_ const UNICODE_STRING *pString)
Definition: utils.c:165
static DWORD Utf32FromSurrogatePair(_In_ DWORD ch0, _In_ DWORD ch1)
Definition: utils.h:47
SIZE_T SZZ_GetSize(_In_ PCZZWSTR pszz)
Definition: utils.c:15
PWSTR PathFindFileNameW(_In_ PCWSTR pszPath)
Definition: utils.c:139
static LONG ScaleLong(LONG lValue, PFLOATOBJ pef)
Definition: utils.h:71
LPCWSTR FASTCALL IntNameFromCharSet(_In_ BYTE CharSet)
Definition: utils.c:54
BYTE IntCharSetFromLangID(_In_ LANGID LangID)
Definition: utils.c:82
#define HIGH_SURROGATE_MIN
Definition: utils.h:38
LONG IntNormalizeAngle(_In_ LONG nTenthsOfDegrees)
Definition: utils.c:46
VOID FASTCALL IntEngFillBox(IN OUT PDC dc, IN INT X, IN INT Y, IN INT Width, IN INT Height, IN BRUSHOBJ *BrushObj)
Definition: utils.c:209
POINTL g_PointZero
Definition: utils.c:12
#define FLOATOBJ_Equal(pf, pf1)
Definition: winddi.h:2831
FLOAT * PFLOATOBJ
Definition: winddi.h:677
FLOAT FLOATOBJ
Definition: winddi.h:677
#define FLOATOBJ_Mul(pf, pf1)
Definition: winddi.h:2824
#define FLOATOBJ_GetLong(pf)
Definition: winddi.h:2817
#define FLOATOBJ_SetLong(pf, l)
Definition: winddi.h:2815
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
WCHAR * LPWSTR
Definition: xmlstorage.h:184
unsigned char BYTE
Definition: xxhash.c:193