Skip to content

chore(lib): Define Uniscribe itemization control - #3287

Open
OmarAglan wants to merge 1 commit into
TheSuperHackers:mainfrom
OmarAglan:fix/usp10-itemization-control
Open

OmarAglan wants to merge 1 commit into
TheSuperHackers:mainfrom
OmarAglan:fix/usp10-itemization-control

Conversation

@OmarAglan

@OmarAglan OmarAglan commented Sep 13, 2026

Copy link
Copy Markdown

Defines the existing Usp10Loader::ScriptControl type so callers can pass a zero-initialized control structure to ScriptItemize. Full bidirectional analysis needs both control and state parameters.

The definition preserves the Windows ABI and adds no DLL exports or loading paths. Its first consumer is the separate complex-text rasterization change.

Validation

  • Clean VC6 Release builds of Generals and Zero Hour.
  • Local x86 ABI checks against the Windows SDK declarations.
  • git diff --check.

Implementation developed with AI assistance.

@OmarAglan
OmarAglan marked this pull request as ready for review September 14, 2026 09:35
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can ask Qodo to dismiss a finding you disagree with, with your reason on record

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Define Uniscribe ScriptControl for bidirectional itemization

🐞 Bug fix 🕐 Less than 10 minutes

Grey Divider

AI Description

• Defines the Uniscribe ScriptControl bit-field layout within Usp10Loader.
• Enables non-null itemization control for bidirectional text analysis.
Diagram

classDiagram
class Usp10Loader {
  +ScriptItemize(control)
}
class ScriptControl {
  +DWORD default_language
  +DWORD reserved
}
class Uniscribe {
  <<external>>
  +ScriptItemize()
}
Usp10Loader *-- ScriptControl : defines
Usp10Loader --> Uniscribe : delegates
ScriptControl --> Uniscribe : control input
Loading
High-Level Assessment

The local structure definition is appropriate for the existing dynamically loaded Uniscribe wrapper and matches its minimal local declarations. Importing the SDK's complete SCRIPT_CONTROL type was considered, but would add unnecessary header coupling when only a zero-initialized, ABI-compatible control value is required.

Files changed (1) +8 / -1

Bug fix (1) +8 / -1
Usp10Loader.hDefine the Uniscribe itemization control layout +8/-1

Define the Uniscribe itemization control layout

• Replaces the forward declaration of 'ScriptControl' with a concrete 32-bit structure containing 16-bit default-language and reserved fields. Documentation explains that callers need a non-null, zero-flag control structure for bidirectional 'ScriptItemize' analysis.

Core/Libraries/Source/WWVegas/WWLib/Usp10Loader.h

@greptile-apps

greptile-apps Bot commented Sep 14, 2026

Copy link
Copy Markdown

Greptile Summary

Defines the previously forward-declared Uniscribe itemization control structure so callers can provide a non-null control object for bidirectional text analysis.

  • Adds the 16-bit default-language and reserved fields matching the Windows control layout.
  • Documents that callers should keep currently unused control flags zero.

Confidence Score: 5/5

The PR appears safe to merge with no actionable correctness, security, or repository-rule issues identified.

The new structure matches the Uniscribe control layout on the supported target and does not alter existing runtime call behavior.

Important Files Changed

Filename Overview
Core/Libraries/Source/WWVegas/WWLib/Usp10Loader.h Replaces the incomplete ScriptControl declaration with an ABI-compatible definition for Uniscribe itemization.

Reviews (1): Last reviewed commit: "chore(lib): Define Uniscribe itemization..." | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant