Pixie is a minimal, cross-platform pixel framebuffer library for Windows and macOS.
Copy the following files into your project:
pixie.cpp
pixie.h
core.h
Windows: pixie_win.cpp
macOS: pixie_osx.cpp
To use Pixie:
#include "pixie.h"
int main(int argc, char** argv)
{
Pixie::Window window;
if (!window.open("Hello, World!", 640, 480))
return 0;
while (!window.HasKeyGoneUp(Pixie::Key_Escape))
{
uint32_t* pixels = window.GetPixels();
// ..draw pixels!
if (!window.Update())
break;
}
window.Close();
}
The pixel byte order is BGRx (from LSB to MSB). On macOS, the pixel buffer is transformed from BGR to RGB.
Pixie has an example program in main.cpp
. It can be compiled for Windows with the
Visual Studio 2017 project, or for macOS with makefile_osx
as follows:
make -f makefile_osx
This will generate an executable pixie_demo
.
On macOS Pixie requires the CoreGraphics
and AppKit
frameworks.
Pixie has some basic keyboard and mouse handling. You can check for:
- Mouse or key down in the current frame:
HasMouseGoneDown
,HasKeyGoneDown
,HasAnyKeyGoneDown
- Mouse or key up in the current frame:
HasMouseGoneUp
,HasKeyGoneUp
- Mouse or key currently down:
IsMouseDown
,IsKeyDown
,IsAnyKeyDown
The mouse position (in window coordinates) can be obtained with GetMouseX
and GetMouseY
.
Additionally the current time delta in seconds can be obtained with GetDelta
.
Pixie has a basic ImGui with support for:
- Labels
- Buttons
- Input fields
- Check boxes
- Radio boxes
- Drawing rectangles and filled rectangles
To use the ImGui, add the following files to your project:
imgui.cpp
imgui.h
font.h
and ensure that font.bmp
is in your working directory.
To load the font:
Pixie::Font font;
const int FontWidth = 9;
const int FontHeight = 16;
if (!font.Load("font.bmp", FontWidth, FontHeight))
return 0;
In your main loop:
while (!window.HasKeyGoneUp(Pixie::Key_Escape))
{
Pixie::ImGui::Begin(&window, &font);
if (Pixie::ImGui::Button("Hello", 100, 100, 100, 30))
printf("Hello button was pressed\n");
Pixie::ImGui::End();
if (!window.Update())
break;
}
Pixie is licensed under the MIT License. See LICENSE for more information.