CGraphicText, CGraphicFontTexture and CGraphicDib are the 40250 bodies verbatim; CGraphicTextInstance is verbatim except that its D3D draws become UI render commands (one image quad per glyph, Bar for cursor/underline). - platform/Win32Gdi.cpp: the GDI subset those files call, over vendored FreeType 2.13.3, following GDI's LOGFONT cell height, win metrics and gasp rules; system font lookup with substitute and CJK fallback faces - Win32Crt: MultiByteToWideChar / WideCharToMultiByte (UTF-8 and 1252 by hand, other code pages through iconv) - CGraphicImageTexture memory textures: glyph pages reach Godot as "mem:<id>@<revision>"; Metin2PythonHost.memory_texture + Canvas cache - Util.cpp code page / font face table, SetDefaultCodePage at boot, DefaultFont_* block, fnt resource type, GetMaxTextureWidth/Height - TextTag, StringCodec, Arabic, Vietnamese copied from 40250 - tests: port.text (Tahoma 12 metrics, alignment, CP949), port.app_loop and python_host_test.gd now check glyph quads instead of text commands Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
65 lines
2.2 KiB
C
65 lines
2.2 KiB
C
#pragma once
|
|
// Shim for the <wingdi.h> subset the 40250 font path uses (EterLib/GrpDIB, GrpFontTexture, Util).
|
|
// The calls are implemented by the platform layer over FreeType (platform/Win32Gdi.cpp): one DIB
|
|
// per memory DC, glyphs rendered the way GDI lays out a TrueType face for a LOGFONT cell height.
|
|
#include "../../Win32Types.h"
|
|
|
|
typedef DWORD COLORREF;
|
|
typedef void* HGDIOBJ;
|
|
#define RGB(r, g, b) ((COLORREF)(((BYTE)(r) | ((WORD)((BYTE)(g)) << 8)) | (((DWORD)(BYTE)(b)) << 16)))
|
|
|
|
typedef struct _ABCFLOAT
|
|
{
|
|
FLOAT abcfA;
|
|
FLOAT abcfB;
|
|
FLOAT abcfC;
|
|
} ABCFLOAT, *LPABCFLOAT;
|
|
|
|
#define TRANSPARENT 1
|
|
#define OPAQUE 2
|
|
|
|
#define FW_NORMAL 400
|
|
#define FW_BOLD 700
|
|
#define OUT_DEFAULT_PRECIS 0
|
|
#define CLIP_DEFAULT_PRECIS 0
|
|
#define DEFAULT_QUALITY 0
|
|
#define NONANTIALIASED_QUALITY 3
|
|
#define ANTIALIASED_QUALITY 4
|
|
#define DEFAULT_PITCH 0
|
|
|
|
#define ANSI_CHARSET 0
|
|
#define DEFAULT_CHARSET 1
|
|
#define SHIFTJIS_CHARSET 128
|
|
#define HANGUL_CHARSET 129
|
|
#define GB2312_CHARSET 134
|
|
#define CHINESEBIG5_CHARSET 136
|
|
#define GREEK_CHARSET 161
|
|
#define TURKISH_CHARSET 162
|
|
#define VIETNAMESE_CHARSET 163
|
|
#define HEBREW_CHARSET 177
|
|
#define ARABIC_CHARSET 178
|
|
#define BALTIC_CHARSET 186
|
|
#define RUSSIAN_CHARSET 204
|
|
#define THAI_CHARSET 222
|
|
#define EASTEUROPE_CHARSET 238
|
|
|
|
#define BI_RGB 0L
|
|
#define DIB_RGB_COLORS 0
|
|
|
|
HDC CreateCompatibleDC(HDC hdc);
|
|
BOOL DeleteDC(HDC hdc);
|
|
HBITMAP CreateDIBSection(HDC hdc, const BITMAPINFO* pbmi, UINT usage, void** ppvBits, HANDLE hSection, DWORD offset);
|
|
int SetDIBitsToDevice(HDC hdc, int xDest, int yDest, DWORD w, DWORD h, int xSrc, int ySrc, UINT StartScan,
|
|
UINT cLines, const void* lpvBits, const BITMAPINFO* lpbmi, UINT ColorUse);
|
|
HFONT CreateFontIndirect(const LOGFONT* lplf);
|
|
BOOL DeleteObject(HGDIOBJ ho);
|
|
HGDIOBJ SelectObject(HDC hdc, HGDIOBJ h);
|
|
COLORREF SetTextColor(HDC hdc, COLORREF color);
|
|
COLORREF SetBkColor(HDC hdc, COLORREF color);
|
|
int SetBkMode(HDC hdc, int mode);
|
|
BOOL GetTextExtentPoint32W(HDC hdc, LPCWSTR lpString, int c, LPSIZE psizl);
|
|
BOOL GetCharABCWidthsFloatW(HDC hdc, UINT iFirst, UINT iLast, LPABCFLOAT lpABC);
|
|
BOOL TextOutW(HDC hdc, int x, int y, LPCWSTR lpString, int c);
|
|
BOOL TextOutA(HDC hdc, int x, int y, LPCSTR lpString, int c);
|
|
#define TextOut TextOutA
|