-
Notifications
You must be signed in to change notification settings - Fork 172
/
Copy pathutil.h
121 lines (108 loc) · 3.23 KB
/
util.h
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
noMeiryoUI (C) 2005,2012-2022 Tatsuhiko Shoji
The sources for noMeiryoUI are distributed under the MIT open source license
*/
#ifndef UTIL_H
#define UTIL_H
#include <tchar.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <windows.h>
#include <windowsx.h>
#include <vector>
#include "TWR/tstring.h"
#define PRESET_SECTION "PRESET"
#define APP_FONTSIZE 11
/**
* @brief WindowMetric定数
*/
enum WindowMetricItem {
BorderWidth,
TitleWidth,
TitleHeight,
ScrollWidth,
ScrollHeight,
PaletteWidth,
PaletteHeight,
MenuWidth,
MenuHeight,
Padding,
};
enum Country {
NoCountry,
Japan,
Korea
};
/** 必要なクライアント領域幅(96DPI) */
const int REQUIRED_CLIENT_WIDTH = 615;
/** 必要なクライアント領域高さ(96DPI) */
const int REQUIRED_CLIENT_HEIGHT = 400;
extern bool WIN8_SIZE;
extern std::vector<tstring> langResource;
/**
* @brief 動作中の国
*/
extern Country runningCountry;
/** フォント名(Windows 8.x) */
extern std::vector<tstring> fontFaces8;
/** フォントサイズ(Windows 8.x) */
extern std::vector<int> fontSizes8;
/** フォント文字セット(Windows 8.x) */
extern std::vector<int> fontCharset8;
/** Windows 8のWindow Metricのプリセット */
extern double Win8PresetWindowsMetric[];
/** フォント名(Windows 10) */
extern std::vector<tstring> fontFaces10;
/** フォントサイズ(Windows 10) */
extern std::vector<int> fontSizes10;
/** フォント文字セット(Windows 10) */
extern std::vector<int> fontCharset10;
/** Windows 10のWindow Metricのプリセット */
extern double Win10PresetWindowsMetric[];
/** フォント名(Windows 11) */
extern std::vector<tstring> fontFaces11;
/** フォントサイズ(Windows 11) */
extern std::vector<int> fontSizes11;
/** フォント文字セット(Windows 11) */
extern std::vector<int> fontCharset11;
/** Windows 11のWindow Metricのプリセット */
extern double Win11PresetWindowsMetric[];
/** コードページ */
extern int codePage;
int getFontPointInt(LOGFONT *font, HWND hWnd);
double getFontPoint(LOGFONT *font, HWND hWnd);
void readResourceItem(TCHAR *file, TCHAR *key, TCHAR *fallback);
int readFontResource8(TCHAR *file);
int readFontResource10(TCHAR *file);
int readFontResource11(TCHAR* file);
void setLocationInternalCode(TCHAR langWork[85]);
void adjustCenter(RECT parentRect, HWND parentHWnd, HWND myHWnd);
void strreplace(TCHAR* buf, const TCHAR* source, const TCHAR* oldWord, const TCHAR* newWord, int bufLen);
BOOL isWin11OrLater(DWORD& buildNumber);
DWORD GetVersionForApp(DWORD &majorVersion, DWORD &minorVersion, DWORD& buildNumber);
size_t utf8toUtf16(tstring& dst, const char* src);
int getSystemDPI(void);
double getFontPointDouble(LOGFONT* font, HWND hWnd);
/**
* プリセット設定
*
* @brief プリセットを設定する
* @param metrics 設定対象NONCLIENTMETRICS
* @param iconFont 設定対象アイコンフォント
* @param fontFaces フォント名
* @param fontSizes フォントサイズ設定
* @param fontCharset フォント文字セット設定
* @param windowMetric フォント以外のWindowMetricの設定
* @param dpiY 現在のDPI
*/
void setPreset(
NONCLIENTMETRICS *metrics,
LOGFONTW *iconFont,
std::vector<tstring> &fontFaces,
std::vector<int> &fontSizes,
std::vector<int> &fontCharset,
double *windowMetric,
int dpiY);
#endif