Menu

Home

wowzaman12

Phoenix

Here you will find documentation on the phoenix API. Please note that the API is not 100% finalized, so minor changes may occur between releases. Once a stable version is released, future versions will attempt to maintain backward-compatibility.
License


phoenix is released under the ISC license.

Tutorial

Pros and Cons
Compilation
References
Callbacks
Example Application

API reference

POD
• Color
• Position
• Size
• Geometry
• Orientation
• Font
Static
• Desktop
• Keyboard
• Mouse
• DialogWindow
• MessageWindow
Object
OS
Timer
Window
Action
• Menu
• Separator
• Item
• CheckItem
• RadioItem
Sizable
Layout
• FixedLayout
• HorizontalLayout
• VerticalLayout
Widget
• Button
• Canvas
• CheckBox
• ComboBox
• HexEdit
• HorizontalScrollBar
• HorizontalSlider
• Label
• LineEdit
• ListView
• ProgressBar
• RadioBox
• TextEdit
• VerticalScrollBar
• VerticalSlider
• Viewport

About

phoenix is a C++11-based GUI meta-toolkit. It is designed as a simple, light-weight API that can be used to create up to moderately complex GUIs; which can then be used to target other popular toolkits, such as the Windows API, GTK+ and Qt.

The idea behind phoenix is to limit one's self to the bare minimum functionality necessary to create standard user interfaces. By using such a small subset, the overall portability of your application is improved. For instance, porting phoenix to another toolkit is at best a weekend project.

While other toolkits such as GTK+ and Qt are cross-platform, they require massive (5MB+) run-times to be distributed with your application. They also tend to be slightly buggy, and their look-and-feel usually ends up somewhere in the uncanny valley. Close, but not perfect.

phoenix allows you to target 100% native APIs for your chosen platform. And by being so light-weight and simplistic, it does not require any run-time DLLs, nor does it add much of anything onto your executable size. phoenix is compiled as a single object file, and adds roughly 50KB onto your executable size.
Caveats

Of course, nothing is without its trade-offs. By being so light-weight, you lose the ability to make truly sophisticated and compelling user interfaces. You will not be able to write the next Open Office or Firefox with phoenix. Instead, it is best utilized for simple to moderately complex user interfaces. Think hex editors, emulators, front-ends for GUI tools, archivers, video games that need configuration panels, etc.

phoenix also targets C++11. At this time, that means GCC 4.6 or later is required. As soon as clang and Visual C++ catch up, this problem should go away. It was a difficult decision to target C++11, but it was that or cause the API to become dated as soon as the official C++11 specification was released. By using C++11, powerful concepts such as lambdas can be used, which greatly speed up application development time, especially in the field of GUI programming.