UltraCanvas libraries

Overview

This document tracks all third-party libraries, dependencies, and external components used by the UltraCanvas cross-platform UI framework. This list must be updated whenever any new dependencies are added to maintain accurate build requirements.

Required Build Tools

Required Build Tools
Tool
Version
Purpose
Installation
CMake
≥3.16
Build system generator
apt install cmake / brew install cmake
C++ Compiler
C++20
Framework compilation
GCC ≥10, Clang ≥12, MSVC ≥2019
Git
Latest
Version control & submodules
Platform package manager

Graphics & Rendering Libraries

Core Graphics Dependencies

Library
Version
Used In
Purpose
Installation
License
OpenGL
≥3.3
Core rendering
Hardware-accelerated graphics
System provided
Khronos
Vulkan
≥1.2
Advanced rendering
Modern graphics API
vulkan-sdk
Khronos
GLFW
≥3.3
Window management
Cross-platform windowing
apt install libglfw3- dev
zlib/ libpng

Image Processing Libraries

Library
Version
Used In
Purpose
Installation
License
STB Image
Latest
UltraCanvasSTBImagePlugin
Bitmap image loading (PNG, JPEG, BMP, etc.)
Header-only / Manual
MIT/Public Domain
libpng
≥1.6
Core/fallback
PNG image support
apt install libpng-dev
PNG License
libjpeg
Latest
Core/fallback
JPEG image support
apt install libjpeg-dev
IJG License
NanoSVG
Latest
Vector graphics
SVG parsing and rendering
Header-only
zlib
Cairo
≥1.16
Vector rendering
2D graphics library
apt install libcairo2-dev
LGPL/MPL

Multimedia Libraries

Video Processing

Library
Version
Used In
Purpose
Installation
License
libvpx
≥1.8
UltraCanvasWebMVideo
VP8/VP9 video decoding
apt install libvpx-dev
BSD
libwebm
Latest
UltraCanvasWebMVideo
WebM container format
Manual build
BSD
FFmpeg
≥4.0
Video plugins
General video/audio codec support
apt install ffmpeg libavcodec-dev
LGPL/ GPL

Audio Processing

Library
Version
Used In
Purpose
Installation
License
libvorbis
≥1.3
UltraCanvasWebMVideo
Vorbis audio decoding
apt install libvorbis-dev
BSD
Opus
≥1.3
UltraCanvasWebMVideo
Opus audio codec
apt install libopus-dev
BSD
PortAudio
≥19
Audio elements
Cross-platform audio I/O
apt install portaudio19- dev
MIT
FLAC
≥1.3
Audio plugins
Lossless audio codec
apt install libflac-dev
BSD

Font & Text Processing

Typography Libraries

Library
Version
Used In
Purpose
Installation
License
FreeType
≥2.10
UltraCanvasTextShaper
Font rendering and glyph loading
apt install libfreetype6-dev
FreeType License
HarfBuzz
≥2.6
UltraCanvasTextShaper
Advanced text shaping
apt install libharfbuzz-dev
MIT
ICU
≥60
Text processing
Unicode support and localization
apt install libicu-dev
Unicode License

File Format Support

Document & Data Libraries

Library
Version
Used In
Purpose
Installation
License
zlib
≥1.2
Compression
Data compression support
apt install zlib1g-dev
zlib
libarchive
≥3.0
Archive support
Archive file handling
apt install libarchive-dev
BSD
pugixml
≥1.10
XML parsing
Lightweight XML parser
apt install libpugixml-dev
MIT
nlohmann/json
≥3.7
JSON handling
Modern C++ JSON library
Header-only
MIT

Platform-Specific Dependencies

Linux (X11/Wayland)

Library
Version
Purpose
Installation
X11
System
X Window System support
apt install libx11-dev libxext-dev
Wayland
≥1.18
Wayland compositor support
apt install libwayland-dev
XCB
Latest
Low-level X11 interface
apt install libxcb1-dev

Windows

Library
Version
Purpose
Installation
Win32 API
System
Windows platform integration
Visual Studio SDK
DirectX
≥11
Windows graphics acceleration
Windows SDK

macOS

Library
Version
Purpose
Installation
Cocoa
System
macOS platform integration
Xcode Command Line Tools
Metal
System
macOS graphics acceleration
Xcode

Package Manager Configurations

APT (Ubuntu/Debian)

				
					bash
# Essential development packages
sudo apt update
sudo apt install build-essential cmake git pkg-config
# Graphics and windowing
sudo apt install libglfw3-dev libgl1-mesa-dev libvulkan-dev vulkan-tools
# Image processing
sudo apt install libpng-dev libjpeg-dev libstb-dev
# Video and audio
sudo apt install libvpx-dev libvorbis-dev libopus-dev portaudio19-dev libflac-dev
sudo apt install ffmpeg libavcodec-dev libavformat-dev libavutil-dev
# Font and text
sudo apt install libfreetype6-dev libharfbuzz-dev libicu-dev
# Platform specific (Linux)
sudo apt install libx11-dev libxext-dev libwayland-dev libxcb1-dev
# Utilities
sudo apt install zlib1g-dev libarchive-dev libpugixml-dev
				
			

DNF (Fedora/RHEL)

				
					bash
# Core development tools
sudo dnf install gcc-c++ cmake git pkgconfig
# Graphics libraries
sudo dnf install glfw-devel mesa-libGL-devel vulkan-devel vulkan-tools
# Multimedia libraries
sudo dnf install libvpx-devel libvorbis-devel opus-devel portaudio-devel flac-devel
sudo dnf install ffmpeg-devel
# Font libraries
sudo dnf install freetype-devel harfbuzz-devel libicu-devel
				
			

Homebrew (macOS)

				
					bash
# Core tools
brew install cmake git pkg-config
# Graphics and multimedia
brew install glfw vulkan-sdk stb libvpx opus portaudio flac ffmpeg
# Font processing
brew install freetype harfbuzz icu4c
# Utilities
brew install zlib libarchive pugixml nlohmann-json
				
			

vcpkg (Windows)

				
					cmd
# Graphics libraries
vcpkg install glfw3 vulkan opengl
# Image processing
vcpkg install stb libpng libjpeg-turbo
# Multimedia
vcpkg install libvpx opus portaudio flac ffmpeg
# Text processing
vcpkg install freetype harfbuzz icu
# Utilities
vcpkg install zlib libarchive pugixml nlohmann-json
				
			

CMake Integration Template

CMakeLists.txt Template

				
					cmake
cmake_minimum_required(VERSION 3.16)
project(UltraCanvas VERSION 1.2.0)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Find required packages
find_package(PkgConfig REQUIRED)
# Graphics libraries
find_package(OpenGL REQUIRED)
find_package(Vulkan REQUIRED)
find_package(glfw3 REQUIRED)
# Image processing
find_package(PNG REQUIRED)
find_package(JPEG REQUIRED)
pkg_check_modules(STB REQUIRED stb)
# Multimedia libraries
pkg_check_modules(VPX REQUIRED vpx)
pkg_check_modules(VORBIS REQUIRED vorbis)
pkg_check_modules(OPUS REQUIRED opus)
find_package(FLAC REQUIRED)
# Font libraries
find_package(Freetype REQUIRED)
pkg_check_modules(HARFBUZZ REQUIRED harfbuzz)
find_package(ICU REQUIRED COMPONENTS uc i18n)
# Platform-specific libraries
if(UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
pkg_check_modules(WAYLAND wayland-client)
endif()
# Header-only libraries via FetchContent
include(FetchContent)
FetchContent_Declare(
 stb
 GIT_REPOSITORY https://github.com/nothings/stb.git
 GIT_TAG master
)
 Dependency Maintenance Checklist
When Adding New Dependencies:
Research License Compatibility: Ensure license is compatible with UltraCanvas
Update This Document: Add entry to appropriate section with all details
Update CMakeLists.txt: Add find_package or FetchContent declarations
Update Installation Scripts: Add to package manager installation commands
Document Version Requirements: Specify minimum supported versions
Test Cross-Platform: Verify dependency works on Windows, Linux, macOS
Update CI/CD: Modify build scripts to include new dependency
Update README: Add installation instructions for end users
Regular Maintenance Tasks:
Monthly: Check for security updates in dependencies
Quarterly: Review and update minimum version requirements
Before Releases: Verify all dependencies are available and up-to-date
Documentation: Keep installation commands current with latest package names
 Known Issues & Workarounds
Common Installation Problems
STB Libraries on Ubuntu < 20.04:
• Issue: Package libstb-dev not available
• Workaround: Manual header installation or use FetchContent
HarfBuzz Version Conflicts:
• Issue: System HarfBuzz too old for advanced features
• Workaround: Use vcpkg or build from source
Vulkan SDK on Older Systems:
FetchContent_Declare(
 nlohmann_json
 GIT_REPOSITORY https://github.com/nlohmann/json.git
 GIT_TAG v3.11.2
)
FetchContent_MakeAvailable(stb nlohmann_json)
				
			

Dependency Maintenance Checklist

When Adding New Dependencies:

 Research License Compatibility: Ensure license is compatible with UltraCanvas

 Update This Document: Add entry to appropriate section with all details

 Update CMakeLists.txt: Add find_package or FetchContent declarations

 Update Installation Scripts: Add to package manager installation commands

 Document Version Requirements: Specify minimum supported versions

 Test Cross-Platform: Verify dependency works on Windows, Linux, macOS

 Update CI/CD: Modify build scripts to include new dependency

 Update README: Add installation instructions for end users

Regular Maintenance Tasks:

 Monthly: Check for security updates in dependencies

 Quarterly: Review and update minimum version requirements

 Before Releases: Verify all dependencies are available and up-to-date

 Documentation: Keep installation commands current with latest package names

Known Issues & Workarounds

Common Installation Problems

STB Libraries on Ubuntu < 20.04:

  • Issue: Package libstb-dev not available
  • Workaround: Manual header installation or use FetchContent

HarfBuzz Version Conflicts:

  • Issue: System HarfBuzz too old for advanced features
  • Workaround: Use vcpkg or build from source

Vulkan SDK on Older Systems:

  • Issue: Vulkan not available on older distributions
  • Workaround: Use OpenGL fallback rendering

Dependency Impact Analysis

Plugin Dependencies by Category:

Plugin Category
Critical Dependencies
Optional Dependencies
Image Plugins
STB, libpng, libjpeg
Cairo, NanoSVG
Video Plugins
FFmpeg, libvpx
Platform codecs
Audio Plugins
PortAudio, FLAC
Platform audio APIs
Text Rendering
FreeType
HarfBuzz, ICU
3D Graphics
OpenGL/Vulkan
Platform 3D APIs

Build Size Impact

  • Minimal Build: ~15MB (core only)
  • Standard Build: ~45MB (common plugins)
  • Full Build: ~85MB (all features)

Dependency Impact Analysis

License Categories

  • MIT/BSD/Public Domain: STB, GLFW, Opus, nlohmann/json ✅
  • LGPL: Cairo, ICU (dynamic linking allowed) ✅
  • GPL: FFmpeg (optional, plugin-based) ⚠️
  • Proprietary: Platform APIs (system provided) ✅

Note: All dependencies are compatible with commercial use through appropriate linking strategies.

Version History

Version
Date
Changes
1.0.0
2025-07-17
Initial dependency documentation

This document is part of the UltraCanvas Framework project knowledge and should be updated whenever dependencies are added, removed, or significantly modified.