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>
23 lines
1.1 KiB
C++
23 lines
1.1 KiB
C++
#include "ScriptLib/StdAfx.h"
|
|
#include "ScriptLib/Resource.h"
|
|
#include "EterLib/GrpImage.h"
|
|
#include "EterLib/GrpSubImage.h"
|
|
#include "EterLib/GrpText.h"
|
|
|
|
namespace {
|
|
CResource* NewUIImage(const char* name) { return new CGraphicImage(name); }
|
|
CResource* NewUISubImage(const char* name) { return new CGraphicSubImage(name); }
|
|
// 40250 UserInterface/PythonApplication.cpp NewText: a "<face>:<size>[i].fnt" name is a CGraphicText.
|
|
CResource* NewText(const char* name) { return new CGraphicText(name); }
|
|
}
|
|
|
|
CPythonResource::CPythonResource() {
|
|
for (const char* ext : {"tga", "dds", "png", "jpg", "bmp"})
|
|
m_resManager.RegisterResourceNewFunctionPointer(ext, NewUIImage);
|
|
m_resManager.RegisterResourceNewFunctionPointer("sub", NewUISubImage);
|
|
m_resManager.RegisterResourceNewFunctionPointer("fnt", NewText);
|
|
}
|
|
CPythonResource::~CPythonResource() { m_resManager.DestroyDeletingList(); }
|
|
void CPythonResource::Destroy() { m_resManager.DestroyDeletingList(); m_resManager.Destroy(); }
|
|
void CPythonResource::DumpFileList(const char* name) { m_resManager.DumpFileListToTextFile(name); }
|