Skip to content

DaCodeChick/Haxial

Repository files navigation

Haxial GUI Framework

A skinnable immediate-mode GUI framework for Rust, reverse-engineered from the abandoned mid-2000s Haxial appearance system by Haxial Pty. Ltd. (Australia, circa 2001).

Project Status

🚧 Under Active Development - This project is in early stages as we reverse engineer the original .hap file format from AppearanceEdit.exe.

Architecture

haxial/
├── haxial-gui/           # Core GUI framework (immediate-mode API + widgets)
├── haxial-appearance/    # .hap file format parser/writer
├── haxial-windows/       # Windows (Win32/GDI) backend
├── haxial-unix/          # Unix/Linux (Wayland) backend
├── haxial-mac/           # macOS (Cocoa) backend
└── haxial-appearanceedit/ # Skin editor application

Features

Completed

  • ✅ Pascal string (length-prefixed) support
  • ✅ FourCC (4-character code) identifier system
  • ✅ Basic geometry primitives (Point, Rect, Size)
  • ✅ Event system (mouse, keyboard)
  • ✅ Platform backend trait
  • ✅ Color and palette management
  • ✅ Image storage (RGBA32 and indexed color)
  • ✅ Pattern system with 9-slice caps

In Progress

  • 🔨 .hap file format parser (reverse engineering from binary)
  • 🔨 Widget implementations (Button, Slider, ScrollBar, etc.)
  • 🔨 Windows backend implementation
  • 🔨 GUI layout system

Planned

  • 📋 Unix/Wayland backend
  • 📋 macOS/Cocoa backend
  • 📋 AppearanceEdit application
  • 📋 Full .hap read/write compatibility
  • 📋 GUI builder application

Design Principles

Immediate Mode

The framework uses an immediate-mode API (inspired by egui) rather than the original retained-mode approach. This provides:

  • Simpler state management
  • Better fit for Rust's ownership model
  • More modern developer experience

Native Backends

Unlike modern GPU-based GUI frameworks, Haxial uses native platform SDKs:

  • Windows: Win32 API + GDI (matching the original mid-2000s implementation)
  • Unix: Wayland protocol
  • macOS: Cocoa + Core Graphics

This keeps the authentic mid-2000s desktop feel while being cross-platform.

Full .hap Compatibility

The goal is complete read/write compatibility with original .hap (Haxial Appearance Pack) files, preserving the ability to use vintage skins.

File Format Discoveries

From reverse engineering AppearanceEdit.exe, we've discovered:

Pascal Strings

  • Length-prefixed (1 byte) strings
  • Maximum 255 characters
  • Used throughout the format

FourCC Identifiers

  • 4-character ASCII codes for widget types and sections
  • Example: 'TIKB' for tick/checkbox buttons
  • Used for efficient lookup and identification

Widget Types Found

  • Button (normal, hilited, disabled, default, icon)
  • Tick/Mutex buttons (checkboxes)
  • Sliders with indicators and grips
  • ScrollBars (horizontal/vertical, double arrows)
  • Menus with patterns
  • Text fields

Pattern System

9-slice scalable patterns with:

  • Left/Right/Top/Bottom caps (corners/edges)
  • Middle section must be exactly 1 pixel wide/tall
  • Optional transparent color
  • Validation rules for cap sizes

Building

# Clone the repository
git clone https://github.com/yourusername/Haxial.git
cd Haxial

# Build all crates
cargo build

# Run tests
cargo test

# Run the appearance editor (once implemented)
cargo run --bin haxial-appearanceedit

Development Workflow

This project uses a hybrid approach:

  1. Reverse Engineering (Ghidra): Analyze AppearanceEdit.exe to understand the .hap format
  2. Function Renaming: Systematically rename functions/variables in Ghidra as we understand them
  3. Implementation (Rust): Implement parsers and widgets based on discoveries
  4. Testing: Validate against original .hap files created in AppearanceEdit

Contributing

We welcome contributions! Areas where help is needed:

  • Reverse engineering the .hap file format (Ghidra analysis)
  • Widget implementations
  • Platform backend development
  • Documentation
  • Testing with original .hap files

License

LGPL-3.0-or-later

This allows the framework to be used in both open and closed-source applications, while ensuring improvements to the framework itself remain open.

Credits

  • Original Haxial framework: Haxial Pty. Ltd. (Australia, ~2001)
  • Reverse engineering and Rust implementation: Haxial Contributors (2026+)

Legal Note

This project reverse engineers an abandoned software package whose copyright has lapsed. The implementation is entirely new code written in Rust, informed by analysis of the binary executable. No original source code or assets are used.

About

Reverse engineering of the Haxial software suite.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors