audit: GrpTextInstance port-map (verbatim, Render draws via UI commands)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-30 14:21:57 +09:00
co-authored by Claude Opus 5.5
parent 6f32387567
commit cfae658b6a
2 changed files with 420 additions and 0 deletions
+1
View File
@@ -634,3 +634,4 @@
{"date": "2026-09-30", "unit": "EterLib/GrpImageInstance.cpp", "action": "port", "evidence": "verbatim; draw via UIRenderAddImage; port.grp_resource quad/uv/colour"} {"date": "2026-09-30", "unit": "EterLib/GrpImageInstance.cpp", "action": "port", "evidence": "verbatim; draw via UIRenderAddImage; port.grp_resource quad/uv/colour"}
{"date": "2026-09-30", "unit": "EterLib/GrpExpandedImageInstance.cpp", "action": "port", "evidence": "verbatim; draw + blend mode via UIRenderAddImage, SCREEN/COLOR_DODGE blend fixed to INVDESTCOLOR (0x2A); OnIsType recursion avoided; port.grp_resource"} {"date": "2026-09-30", "unit": "EterLib/GrpExpandedImageInstance.cpp", "action": "port", "evidence": "verbatim; draw + blend mode via UIRenderAddImage, SCREEN/COLOR_DODGE blend fixed to INVDESTCOLOR (0x2A); OnIsType recursion avoided; port.grp_resource"}
{"date": "2026-09-30", "unit": "EterLib/GrpFontTexture.cpp", "action": "port", "evidence": "40250 bodies over Win32Gdi; HiDPI oversample adaptations noted; port.text"} {"date": "2026-09-30", "unit": "EterLib/GrpFontTexture.cpp", "action": "port", "evidence": "40250 bodies over Win32Gdi; HiDPI oversample adaptations noted; port.text"}
{"date": "2026-09-30", "unit": "EterLib/GrpTextInstance.cpp", "action": "port", "evidence": "verbatim except Render draw calls -> UIRender commands; port.text, port.app_loop"}
@@ -0,0 +1,419 @@
{
"reference": "EterLib/GrpTextInstance.cpp",
"reference_sha256": "e6b66bc43e678e02dae1625facec67a67d6e245f4aa0d5adf9f9d570272e98d8",
"priority": "P4",
"contracts": [],
"functions": {
"CGraphicTextInstance::Hyperlink_UpdateMousePos": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::Hyperlink_UpdateMousePos"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::Hyperlink_GetText": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::Hyperlink_GetText"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::__DrawCharacter": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::__DrawCharacter"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::__GetTextPos": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::__GetTextPos"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"isNumberic": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:isNumberic"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"IsValidToken": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:IsValidToken"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"FindToken": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:FindToken"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"ReadToken": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:ReadToken"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::Update": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::Update"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::Render": {
"status": "ADAPTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::Render"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
],
"note": "40250: saves SRCALPHA/INVSRCALPHA blend, disables fog/lighting, texture*diffuse modulate, draws each glyph as a PDT triangle strip and the cursor/IME underline as FILL_RECT quads. Port: the verbatim layout loop emits one UIRenderAddImage per glyph (page texture, same corners/UVs/colour) and a Bar per fill quad; the UI pipeline is alpha-blended with texture*vertex colour. Invariant: same glyph quads, order and colours."
},
"CGraphicTextInstance::CreateSystem": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::CreateSystem"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::DestroySystem": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::DestroySystem"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::New": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::New"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::Delete": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::Delete"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::ShowCursor": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::ShowCursor"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::HideCursor": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::HideCursor"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::ShowOutLine": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::ShowOutLine"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::HideOutLine": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::HideOutLine"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetColor": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetColor"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetOutLineColor": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetOutLineColor"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetSecret": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetSecret"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetOutline": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetOutline"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetFeather": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetFeather"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetMultiLine": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetMultiLine"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetHorizonalAlign": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetHorizonalAlign"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetVerticalAlign": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetVerticalAlign"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetMax": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetMax"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetLimitWidth": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetLimitWidth"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetValueString": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetValueString"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetValue": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetValue"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetPosition": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetPosition"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::SetTextPointer": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::SetTextPointer"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::GetValueStringReference": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::GetValueStringReference"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::GetTextLineCount": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::GetTextLineCount"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::GetTextSize": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::GetTextSize"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::PixelPositionToCharacterPosition": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::PixelPositionToCharacterPosition"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::GetHorizontalAlign": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::GetHorizontalAlign"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::__Initialize": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::__Initialize"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::Destroy": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::Destroy"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::CGraphicTextInstance": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::CGraphicTextInstance"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
},
"CGraphicTextInstance::~CGraphicTextInstance": {
"status": "PORTED",
"impl": [
"src/platform/EterLib/GrpTextInstance.cpp:CGraphicTextInstance::~CGraphicTextInstance"
],
"test": [
"tests/port/port_text_test.cpp",
"tests/port/port_app_loop_test.cpp"
]
}
}
}