port 2A step 4: platform skeleton + rest of the 2V3 header closure

- Mirror the remaining non-Python 2V3 closure headers (98 more, 173 total): EffectLib,
  EterGrnLib, SpeedTreeLib, SphereLib, PRTerrainLib, EterImageLib, EterBase/Poly, cipher/tea,
  EterLib Grp*/IME/Input/MSWindow/StateManager, GameLib actor/map/race headers, EterPack.
- SDK shims: granny.h, SpeedTreeRT.h, imm.h, Dimm.h (the SDK MIDL header, not mirrored),
  dinput/d3dx8 additions; D3D8 render-state enums, FVF macros and the COM resource hierarchy;
  more Win32 GDI/handle types with layout static_asserts.
- PORT edits for MSVC-permissive code (typename, friend visibility, <algorithm>, pointer→uintptr_t)
  and PRTerrainLib/StdAfx.h dropping the ScriptLib/Python include.
- port_logic links the vendored cryptopp/minilzo.
- extension/src/platform: port_platform target with 103 generated stub files (1917 function
  stubs, 146 static members) from the new platform_stub.py (clang -ast-dump-filter);
  MT_PLATFORM_STUB() marks every unimplemented body. libmtgodot links port_platform and
  port_gate.sh builds it.

Gate: macOS, Android, iOS, Windows (mingw) PASS; Linux BLOCKED (no toolchain).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-22 21:46:24 +09:00
co-authored by Claude Opus 5
parent fc47582017
commit 9a8e11f3dd
220 changed files with 24287 additions and 25 deletions
+71
View File
@@ -0,0 +1,71 @@
#ifndef __INC_ETERIMAGELIB_IMAGE_H__
#define __INC_ETERIMAGELIB_IMAGE_H__
#include <windows.h>
#include <string>
#pragma pack(push)
#pragma pack(1)
struct TGA_HEADER
{
char idLen; // 0
char palType; // 파레트있으면 1, 없음 0
char imgType; // 파레트있으면 1, 없음 2
WORD colorBegin; // 0
WORD colorCount; // 파레트 있으면 256, 없음 0
char palEntrySize; // 파레트 있으면 24, 없음 0
WORD left;
WORD top;
WORD width;
WORD height;
char colorBits;
char desc;
};
#define IMAGEDESC_ORIGIN_MASK 0x30
#define IMAGEDESC_TOPLEFT 0x20
#define IMAGEDESC_BOTLEFT 0x00
#define IMAGEDESC_BOTRIGHT 0x10
#define IMAGEDESC_TOPRIGHT 0x30
#pragma pack(pop)
class CImage
{
public:
CImage();
CImage(CImage & image);
virtual ~CImage();
void Destroy();
void Create(int width, int height);
void Clear(DWORD color = 0);
int GetWidth() const;
int GetHeight() const;
DWORD * GetBasePointer();
DWORD * GetLinePointer(int line);
void PutImage(int x, int y, CImage* pImage);
void FlipTopToBottom();
void SetFileName(const char* c_szFileName);
const std::string & GetFileNameString();
bool IsEmpty() const;
protected:
void Initialize();
protected:
DWORD * m_pdwColors;
int m_width;
int m_height;
std::string m_stFileName;
};
#endif
@@ -0,0 +1,37 @@
#ifndef __INC_ETERIMAGELIB_TGAIMAGE_H__
#define __INC_ETERIMAGELIB_TGAIMAGE_H__
#include "Image.h"
class CTGAImage : public CImage
{
public:
enum ETGAImageFlags
{
FLAG_RLE_COMPRESS = (1 << 0)
};
CTGAImage();
CTGAImage(CImage &image);
virtual ~CTGAImage();
virtual void Create(int width, int height);
virtual bool LoadFromMemory(int iSize, const BYTE * c_pbMem);
virtual bool LoadFromDiskFile(const char * c_szFileName);
virtual bool SaveToDiskFile(const char* c_szFileName);
void SetCompressed(bool isCompress = true);
void SetAlphaChannel(bool isExist = true);
TGA_HEADER & GetHeader();
protected:
int GetRawPixelCount(const DWORD * data);
int GetRLEPixelCount(const DWORD * data);
protected:
TGA_HEADER m_Header;
DWORD m_dwFlag;
DWORD * m_pdwEndPtr;
};
#endif