* get image returns optional<Mat> instead of unique_ptr<Mat> * introduce complexity * rename image load function * add example for a basic reader for binary image files * fix windows build? * add a status bar underneath the menu bar * use status bar in custom_0 example app * clang formats * packing w/ pragma push * add "Save As" functions to image views * resize over reserve * rm local override uri * add simple thread pool * rename to simple_thread_pool * get rid of useless renderlib * document version inc * extract hardcoded values to in-header * clang format patch * clone registered image in custom_0 * document binary-file header * minor fixes * clang format * rm unused render cmake
Pixelarium
Synopsis
Pixelarium strives to be a batteries-included visualizer application used in conjunction with an externally implemented and linked arbitrary functionality. It can be linked e.g. against a library containing arbitrary functionality. Pixelarium can support viewing the results and result files of such a library. It tries to be as flexible as possible.
This is still work in progress and will change significantly.
Supported Types
Currently, Pixelarium supports the following image file formats:
- jpeg
- png
- tiff
- czi
where possible, the OpenCV codecs are used to interpret the respective file type. The czi-format is supported via libCZI.
Prerequisites
Dependencies are either submodules in the modules subdirectory or artifacts of the cmake build process from the cmake directory. This repository should therefore be cloned recursively:
git clone --recurse-submodules https://github.com/m-aXimilian/pixelarium.git
Apart from that, this project needs OpenCV installed on the host system and available for cmake's find_package.
Building
Given that the prerequisites are fulfilled, building can be achieved via one of the presets or by calling cmake directly.
Presets
Pixelarium has a few presets setting specific compilers and configurations defined in CMakePresets.json.
They can be listed by calling
cmake --list-presets
which will give something like
Available configure presets:
"clang-release"
"clang-debug"
"gcc-release"
"gcc-debug"
Building with the clang-debug preset would look like
cmake --preset clang-debug
cmake --build --preset clang-debug
Direct
If you want to specify compiler settings and options which are not defined in a preset, use cmake "directly" like
cmake -B build -S .
cmake --build build
Usage
All there is to do in order to get an initial window on screen is to create an instance of AppGLFW (or one of its child classes) and start it.
unique_ptr<ILog> logger = make_unique<SpdLogger>("logfile.log", "loggername");
ImageResourcePool image_pool;
auto app {DefaultApp(*logger, image_pool)};
app.Start();
This will get the default application on screen which looks like
![]()
The examples directory aims to showcase a few usage examples of this project.
simple
This is the most straight-forward usage of Pixelarium. It simply instantiates a DefaultApp and runs it.
custom_0
This is meant to showcase that DefaultApp (AppGLFW as well) is meant to be customized via inheritance.
custom_1
Is a slightly more involved example showcasing how to inject a user defined control into the existing scaffolding of DefaultApp using a multiplication filter.