OsRay C++ Libraries

We programmers accumulate code libraries, and mine were so extensive that a friend once called them 'OsRay'. They are not an operating system, but the name stuck. When I switched to Windows development and C++, I rewrote them as OsRay++.

OsRay++ is a collection of libraries and tools that provide building blocks for 32-bit Windows programs. They can work with or replace the standard C, C++ and MFC libraries. The libraries consist of:

• OsRayCore including strings, containers, file access, timing, etc.
• Visual-CProgram startup code for use with Microsoft compilers
• Pixel2D graphics including bitmap blitters
• Scene3D rendering with a scene graph
• GlazeGUI windows and controls
• PaneGUI sub-components for animation
• CodecLossless & lossy image and data compression
• SlangScripting language compiler
• StorageSimplified persistent database

The goal for the tools is to reduce complexity in the libraries by preprocessing data. Therefore, while the libraries represent more than 350 source files, the object code is very small and efficient. The tool programs include:

• GlazierWindow and dialog editor
• SchemaDatabase layout editor
• Res-CompResource compiler to convert editor files to program data
• AnimaxImage editor for icons and sprites
• FormaxFile format converter

I've written a document describing these libraries in some detail: OsRay.PDF. If you're a programmer, please take a look and let me know if I should release this as open source.

Bare-Metal Programming

I started programming on machines with very little support software, and have worked on embedded systems with absolutely none. This means that I supplied everything, including the bios and operating system. I got used to doing it all, so my libraries are a little unique.

For the scripting language, I started by writing my own lexical analyzer, a replacment for the common tool 'lex'. I wrote a parser generator, replacing 'yacc'. Then I wrote a virtual machine and finally the scripting language.

I work this way out of a desire to understand what's really going on, in addition to a likely obsessive compulsive disorder. It results in code that's very different from what you'll find elsewhere. I particularly dislike code that's harder to read than to write.

Glaze & Glazier

A glazier is a person who cuts and fits glass to windows. My Glazier program is an editor for user interface windows and dialogs, and Glaze is its companion library for Microsoft Windows. Together, the two allow you to create windows, attach controls, menus and keystroke assignments, and connect C++ code.

Glazier - The Window Maker

Glazier does not require numeric identifiers. You can specify the names of classes and methods to execute when the user interacts with your window, making the code much simpler.

Res-Comp

Res-Comp.EXE is a resource compiler. Glazier saves each window as a single binary file which includes text, icons and bitmaps. Res-Comp goes into your program's make script and converts that file into a header and an object.

Res-Comp - The Resource Compiler

It handles several other binary files in addition to Glazier windows. For example, cels, folders and animations from Animax can become bitmap resources, both compressed and uncompressed.

Res-Comp also converts text scripts. OsRay includes a formatted text generator, similar to printf (), which uses messages preprocessed by Res-Comp. Likewise, OsRay's lexical analyzer, grammar parser and other components take resources defined in scripts.

Res-Comp generates structures that are linked into your program as standard external data instead of resources that need to be explicitly loaded. I reverse engineered Microsoft's name decoration so that everything smoothly meshes with the C++ code.

Under Construction

Schema & Storage

Schema - The Database Editor