summaryrefslogtreecommitdiff
path: root/alf/alfcompat.h
blob: 0d5a7d41676c44eee6d2ea508d3d65832646debf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#pragma once

#include <windows.h>
#include <rpc.h>
#include <uxtheme.h>

#ifndef WM_DPICHANGED
#define WM_DPICHANGED       0x02E0
#endif

extern "C" IMAGE_DOS_HEADER __ImageBase;
#define ALF_HINSTANCE ((HINSTANCE)&__ImageBase)

typedef LRESULT (CALLBACK *ALF_COMPAT_SUBCLASSPROC)(HWND,UINT,WPARAM,LPARAM,UINT_PTR,DWORD_PTR);

typedef struct {
    UINT    cbSize;
    int     iBorderWidth;
    int     iScrollWidth;
    int     iScrollHeight;
    int     iCaptionWidth;
    int     iCaptionHeight;
    LOGFONT lfCaptionFont;
    int     iSmCaptionWidth;
    int     iSmCaptionHeight;
    LOGFONT lfSmCaptionFont;
    int     iMenuWidth;
    int     iMenuHeight;
    LOGFONT lfMenuFont;
    LOGFONT lfStatusFont;
    LOGFONT lfMessageFont;
    int     iPaddedBorderWidth; // new in Vista
} ALF_NONCLIENTMETRICS_VISTA;

static inline SIZE_T
ALF_SizeOf_NONCLIENTMETRICS(void)
{
    if (LOBYTE(LOWORD(GetVersion())) >= 6) {
        return sizeof(ALF_NONCLIENTMETRICS_VISTA);
    } else {
        return sizeof(ALF_NONCLIENTMETRICS_VISTA) - sizeof(int);
    }
}

long
ALF_GetAveCharWidth(HDC hdc);

void
ALF_UniqueCounterValue(LONG_PTR *pCounterId, LONG_PTR *pCounterValue);

typedef void *ALF_Compat_HANIMATIONBUFFER;

typedef enum {
  ALF_Compat_BPAS_NONE,
  ALF_Compat_BPAS_LINEAR,
  ALF_Compat_BPAS_CUBIC,
  ALF_Compat_BPAS_SINE
} ALF_Compat_BP_ANIMATIONSTYLE;

typedef struct {
  DWORD                         cbSize;
  DWORD                         dwFlags;
  ALF_Compat_BP_ANIMATIONSTYLE  style;
  DWORD                         dwDuration;
} ALF_Compat_BP_ANIMATIONPARAMS;

typedef struct {
  DWORD               cbSize;
  DWORD               dwFlags;
  const RECT          *prcExclude;
  const BLENDFUNCTION *pBlendFunction;
} ALF_Compat_BP_PAINTPARAMS;

#ifndef TMT_TRANSITIONDURATION
#define TMT_TRANSITIONDURATION 6000
#endif

extern BOOL (WINAPI *ALF_Compat_IsAppThemed)(void);
extern UINT (WINAPI *ALF_Compat_GetDpiForWindow)(HWND);
extern BOOL (WINAPI *ALF_Compat_AdjustWindowRectExForDpi)(LPRECT,DWORD,BOOL,DWORD,UINT);
extern int (WINAPI *ALF_Compat_GetSystemMetricsForDpi)(int,  UINT);
extern BOOL (WINAPI *ALF_Compat_SetWindowSubclass)(HWND, ALF_COMPAT_SUBCLASSPROC, UINT_PTR, DWORD_PTR);
extern LRESULT (WINAPI *ALF_Compat_DefSubclassProc)(HWND, UINT, WPARAM, LPARAM);
extern BOOL (WINAPI *ALF_Compat_RemoveWindowSubclass)(HWND, ALF_COMPAT_SUBCLASSPROC, UINT_PTR);
extern BOOL (WINAPI *ALF_Compat_SystemParametersInfoForDpi)(UINT,UINT,PVOID,UINT,UINT);
extern HTHEME (WINAPI *ALF_Compat_OpenThemeData)(HWND, LPCWSTR);
extern HRESULT (WINAPI *ALF_Compat_CloseThemeData)(HTHEME);
extern BOOL (WINAPI *ALF_Compat_IsThemeBackgroundPartiallyTransparent)(HTHEME,int,int);
extern HRESULT (WINAPI *ALF_Compat_DrawThemeParentBackground)(HWND,HDC,RECT *);
extern HRESULT (WINAPI *ALF_Compat_DrawThemeBackground)(HTHEME, HDC, int, int, const RECT *, const RECT *);
extern HRESULT (WINAPI *ALF_Compat_GetThemeBackgroundContentRect)(HTHEME,HDC,int,int,const RECT *,RECT *);
extern HRESULT (WINAPI *ALF_Compat_GetThemeTextExtent)(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,const RECT *, RECT *);
extern HRESULT (WINAPI *ALF_Compat_DrawThemeText)(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,DWORD,const RECT *);
extern BOOL (WINAPI *ALF_Compat_TrackMouseEvent)(LPTRACKMOUSEEVENT tme);
extern HRESULT (WINAPI *ALF_Compat_BufferedPaintInit)(void);
extern HRESULT (WINAPI *ALF_Compat_BufferedPaintUnInit)(void);
extern ALF_Compat_HANIMATIONBUFFER (WINAPI *ALF_Compat_BeginBufferedAnimation)(HWND,HDC,const RECT *,DWORD,ALF_Compat_BP_PAINTPARAMS *,ALF_Compat_BP_ANIMATIONPARAMS *,HDC *,HDC *);
extern HRESULT (WINAPI *ALF_Compat_EndBufferedAnimation)(ALF_Compat_HANIMATIONBUFFER,BOOL);
extern BOOL (WINAPI *ALF_Compat_BufferedPaintRenderAnimation)(HWND,HDC);
extern HRESULT (WINAPI *ALF_Compat_GetThemeTransitionDuration)(HTHEME,int,int,int,int,DWORD*);