AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Headless C++17 charting for PNG/JPEG/SVG/PDF reports — MIT licensed.
Translation pending
Developer toolsC++ · CMakeGitHub @aavazirOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
MIT-licensed C++17 charting library: PNG/JPEG, native vector SVG and PDF, no GUI toolkit, OpenWrt-friendly
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Native C++17 charts for reports and embedded devices.
PNG, JPEG, and native vector SVG and PDF from one call. MIT-licensed, no GUI toolkit, no Python.Read the full README ↗InsightDock Charts is static output only. For interactive zoom and pan use QCustomPlot, ImPlot or Qt Charts. See the honest comparison.
#include "insightdock/charts.h"
using namespace insightdock::charts;
BarChart bar;
bar.options().title = "Quarterly Revenue";
bar.set_categories({"Q1", "Q2", "Q3", "Q4"});
bar.add_series("Revenue", {100, 120, 90, 140});
bar.add_series("Cost", {60, 70, 65, 80});
ChartExporter::save(bar, "revenue.png"); // format inferred from the extension
Native vector output:
ExportOptions opts;
opts.svg_backend = SvgBackend::Vector; // SVG: no dependencies
opts.pdf_backend = PdfBackend::Vector; // PDF: needs INSIGHTDOCK_WITH_PODOFO
ChartExporter::save(bar, "revenue.svg", opts);
ChartExporter::save(bar, "revenue.pdf", opts);
Link it from CMake:
find_package(InsightDock CONFIG REQUIRED)
target_link_libraries(myapp PRIVATE InsightDock::Charts)
See examples/ for pie, bar, line, combo, scatter, log-scale, time-series and PDF report samples.
ChartOptions::fontImageBuffer; multi-page PDF report builder (PoDoFo)render()/save() on a const chart is supported| Pie | Bar (stacked) | Area (stacked) |
|---|---|---|
| Combo (bar + line, dual axis) | Vector PDF vs Matplotlib |
|---|---|
More in docs/gallery/.
├── include/insightdock/ Public headers (charts.h umbrella)
│ └── pdf/ PoDoFo PDF helpers (podofo.h)
├── src/ Library implementation
├── examples/ Generic sample programs
├── tests/ CTest smoke tests
├── third_party/ stb headers (header-only)
├── docs/ API, release, gallery, benchmarks
└── cmake/ Package config for install
Best for OpenWrt and minimal embedded builds:
make
./bar_line_example
./example_main
Three variables let you trim the library for size-constrained targets:
| Variable | Default | Options | Effect |
|---|---|---|---|
CHART_TYPES | pie bar line area scatter | any subset (bar+line also builds combo) | Omitted types are not compiled |
EXPORT_FORMATS | png jpeg | png or png jpeg | Omitting jpeg drops ~15 KB |
FONT_MODE | embedded | embedded | embedded-latin | system | embedded-latin adds Latin-1/Latin-Ext glyphs (~22 KB); system drops the baked-in font |
Minimal OpenWrt build (pie only, PNG only, system font from /www/assets/):
make CXX=mips-openwrt-linux-musl-g++ AR=mips-openwrt-linux-musl-gcc-ar \
CHART_TYPES="pie" EXPORT_FORMATS="png" FONT_MODE=system \
CXXFLAGS="-std=c++17 -Os -ffunction-sections -fdata-sections -Wall"
When FONT_MODE=system, no font is baked in, so supply one on every chart:
static auto font = insightdock::charts::load_font_data("/www/assets/fonts/OpenSans-Regular.ttf");
chart.options().font = font; // shared_ptr — reuse it across charts
| Configuration | Code section (unstripped) |
|---|---|
| Full default (all types, embedded font, JPEG) | ~287 KB |
| Minimal (pie + PNG + system font) | ~90 KB |
Minimal with -Os -s strip (estimated) | ~45–55 KB |
Cross-compile (full build):
make CXX=mips-openwrt-linux-musl-g++ AR=mips-openwrt-linux-musl-gcc-ar
Packaging this into an OpenWrt feed: packaging/openwrt/ has a standard
package.mk-based feed Makefile sample wired to these same CHART_TYPES/EXPORT_FORMATS/
FONT_MODE knobs.
cmake -B build \
-DINSIGHTDOCK_BUILD_EXAMPLES=ON \
-DINSIGHTDOCK_BUILD_TESTS=ON
cmake --build build
ctest --test-dir build
| Option | Default | Description |
|---|---|---|
INSIGHTDOCK_BUILD_EXAMPLES | ON | Build generic examples |
INSIGHTDOCK_WITH_PODOFO | OFF | PDF adapter + PDF examples |
INSIGHTDOCK_BUILD_TESTS | ON | CTest smoke tests |
INSIGHTDOCK_WERROR | OFF | -Werror (keep OFF for cross-toolchains) |
INSIGHTDOCK_PODOFO_DIR | ../podofo | PoDoFo source tree (subproject) or install |
PoDoFo requires CMake 3.23+. On older systems:
pip install --user 'cmake>=3.23'
export PATH="$HOME/.local/bin:$PATH"
cmake -B build-podofo \
-DINSIGHTDOCK_WITH_PODOFO=ON \
-DINSIGHTDOCK_BUILD_EXAMPLES=ON \
-DINSIGHTDOCK_PODOFO_DIR=/path/to/podofo
cmake --build build-podofo
export LD_LIBRARY_PATH="$(pwd)/build-podofo/podofo/target:${LD_LIBRARY_PATH}"
./build-podofo/podofo_report_example
cmake --install build --prefix /opt/insightdock
find_package(InsightDock CONFIG REQUIRED)
target_link_libraries(myapp PRIVATE InsightDock::Charts)
#include "insightdock/charts.h"
A pkg-config file (insightdock.pc) is also installed to lib/pkgconfig/, for Meson or
plain-Makefile consumers:
export PKG_CONFIG_PATH="/opt/insightdock/lib/pkgconfig:${PKG_CONFIG_PATH}"
g++ -std=c++17 $(pkg-config --cflags insightdock) myapp.cc -o myapp $(pkg-config --libs insightdock)
The .pc file resolves paths relative to its installed location, including installations made
with cmake --install --prefix. For PDF-enabled builds, pkg-config also requires libpodofo.pc.
For static linking, use pkg-config --static --cflags --libs insightdock and put source/object
files before library flags on the linker command line.
| Platform | Core (PNG/JPEG) | PDF (PoDoFo) |
|---|---|---|
| Linux distros | Yes (CMake + Make) | Yes (optional) |
| OpenWrt / cross | Yes (Make, no GUI deps) | Yes — verified on OpenWrt x86_64/musl, BUILD_SHARED_LIBS=ON with PoDoFo packaged separately |
| macOS | CMake (CI) | Optional |
| Windows | CMake + MSVC (CI; static and DLL) | Optional |
The full documentation is at https://aavazir.github.io/insightdock-charts/: getting started, concepts, guides (usage, vector export, PDF reports, fonts, thread safety and ABI, troubleshooting), one page per chart type, examples, the generated API reference, a comparison and the changelog.
In the repository: docs/API.md (usage guide), docs/BENCHMARKS.md, docs/RELEASE.md, ROADMAP.md.
Bug reports, feature requests and new chart types are welcome. Read CONTRIBUTING.md and GOVERNANCE.md; this project follows a Code of Conduct. Report security issues privately as described in SECURITY.md.