thehardwarestore.ai

where AI agents shop for the right tools

── 98971 repos indexed ── | filtered by tag: #vector-graphics
GraphiteEditor/Graphite β˜… 27423 1273 APPLICATION

Graphite is a free, open-source vector and raster graphics editor with a fully nondestructive editing workflow. It combines layer-based compositing with node-based generative design, enabling procedural content creation. The system is architected as a multi-crate Rust workspace with a desktop application (using Chromium Embedded Framework for UI and wgpu for GPU rendering) and a web frontend (Svelte + Vite compiled to WebAssembly). The core document model is a node graph executed by an interpreted runtime with GPU shader support via rust-gpu. Storage uses a CRDT-based format (`.gdd`) with content-addressed deltas, history, and session state, supporting collaborative editing and undo/redo. The editor features a comprehensive tool system (select, pen, brush, shape, text, etc.), a node graph editor, color management, raw image decoding, and vector path operations. The frontend communicates with the Rust backend through a message-passing architecture with hierarchical message types and a dispatcher pattern. The project also includes a CLI tool for export, a build system (cargo-run), and extensive developer tooling (bisect tool, crate hierarchy visualizer, node documentation generator).

RATING: 9.5/10 MAINT: active DRIFT: low
β–Έ 5 reusable components found
airbnb/lottie-ios β˜… 26898 3836 APPLICATION

Lottie-ios is a high-performance Swift library for rendering Lottie animations (After Effects exports) natively on Apple platforms (iOS, macOS, tvOS, visionOS). It provides two rendering engines: a full-featured Main Thread engine and a GPU-accelerated Core Animation engine, with automatic fallback based on feature compatibility. The library offers UIKit (LottieAnimationView) and SwiftUI (LottieView) wrappers, interactive controls (AnimatedButton, AnimatedSwitch), dynamic property overrides via a value provider system, and support for the .lottie compressed archive format. It includes embedded, reusable libraries for ZIP archive handling (ZipFoundation), declarative UI model configuration (EpoxyCore), and LRU caching. The codebase is well-structured with extensive test coverage including snapshot tests, keypath logging, and performance benchmarks, and is actively maintained by Airbnb.

RATING: 9.5/10 MAINT: active DRIFT: low
β–Έ 5 reusable components found
Chlumsky/msdfgen β˜… 4919 517 APPLICATION

This repository is a high-quality C++ library and command-line tool for generating signed distance fields (SDFs) from vector shapes, including font glyphs and SVG paths. It supports conventional single-channel SDFs, perpendicular distance fields, multi-channel SDFs (MSDF) for sharp corner preservation, and combined MTSDF with an additional true distance channel. The architecture is modular: a dependency-free core library implements all key data structures (Shape, Contour, edges, bitmap, distance transformation) and algorithms (distance computation, edge coloring, error correction). An extensions layer provides font loading via FreeType, SVG parsing via TinyXML2 or dropXML, PNG output via libpng or LodePNG, and optional geometry preprocessing via Skia. The standalone executable wraps all functionality into a comprehensive CLI with many configuration options. The code is well-structured, performant (supports OpenMP parallelization), and actively maintained with regular releases and a detailed changelog. While the core is purely numerical, the extensions introduce external dependencies, but the project provides build presets and vcpkg integration for easy compilation.

RATING: 9.5/10 MAINT: active DRIFT: low
β–Έ 2 reusable components found
linebender/kurbo β˜… 1000 103 APPLICATION

Kurbo is a Rust library for 2D vector geometry, primarily used in the Linebender ecosystem (e.g., the Vello rendering engine). It provides core geometric types such as BezPath, PathSeg, curves (cubic, quadratic, arc), affine transforms, and advanced algorithms for offset, stroke expansion, curve fitting, flattening, and polynomial root-finding. The architecture is a Cargo workspace with two crates: `kurbo` (main geometry library) and `polycool` (polynomial utilities). Key entry points include the `BezPath` builder, `ParamCurve` traits for generic curve operations, and high-level functions like `expand_path`, `stroke`, and `fit_to_bezpath`. External dependencies are optional (serde, euclid, mint, schemars) and the library supports no_std via the `libm` feature. Data flows involve constructing paths from elements, applying transformations, and then processing them for rendering or analysis. The codebase demonstrates strong numerical methods, trait-based abstractions, and careful handling of edge cases, making it a high-quality foundation for vector graphics applications.

RATING: 9.4/10 MAINT: active DRIFT: low
β–Έ 3 reusable components found
airbnb/lottie-android β˜… 35734 5423 APPLICATION

This repository is the core Android implementation of the Lottie animation library, designed to render vector-based animations (exported from Adobe After Effects as JSON) natively on Android devices. The codebase functions as a rendering engine that parses Lottie JSON schemas, constructs a hierarchical scene graph of layers and shapes, and drives a frame-based animation loop using Android's Canvas API. It supports two primary integration points: a traditional View-based API (LottieAnimationView) for XML layouts and a Jetpack Compose API (LottieAnimation) for modern declarative UIs. The system handles complex rendering features including masks, mattes, gradients, text, and dynamic property overrides at runtime. Architecturally, the project is a multi-module Gradle build consisting of a core library (lottie), a Compose integration module (lottie-compose), and extensive testing/sampling infrastructure. The core logic relies on a custom JSON parser (JsonReader) to deserialize animation data into model objects (LottieComposition), which are then rendered by LottieDrawable or LottiePainter. The architecture emphasizes performance through offscreen rendering strategies (OffscreenLayer) and memory management via bitmap pooling. It also implements a robust caching system (LottieCompositionCache) and async loading mechanisms (LottieCompositionFactory) to handle network and asset sources efficiently. The codebase demonstrates high craftsmanship in its rendering engine, particularly in handling edge cases like 3D rotations, blend modes, and text rendering across different Android API levels. It maintains parity between View and Compose implementations, ensuring consistent behavior across UI paradigms. The testing strategy is rigorous, utilizing snapshot testing (snapshot-tests) to verify visual fidelity across various hardware configurations and API levels, preventing visual regressions in the complex rendering logic.

RATING: 9.3/10 MAINT: active DRIFT: low
β–Έ 3 reusable components found
jonobr1/two.js β˜… 8670 465 APPLICATION

Two.js is a renderer-agnostic 2D drawing library for the web, providing a unified scene graph API that renders to SVG, Canvas2D, or WebGL. The library supports creation and manipulation of shapes (paths, circles, rectangles, polygons, etc.), text, gradients, textures, sprites, and image sequences, all with transformations, animation, and hit testing. It includes utilities for SVG import and export, curve math (Bezier/Catmull-Rom), and serialization via `toObject`/`fromObject`. The architecture is modular: a core `Two` class manages the scene and animation loop, with a hierarchy of elements (Element β†’ Shape β†’ Path/Text/Points), a Group container for scene graph nesting, and separate renderer implementations for each target. Key entry points are the `Two` constructor, factory methods (`makeCircle`, `makePath`, etc.), `update()`, `play()`, and `pause()`. The library has no external runtime dependencies beyond standard browser APIs, though optional `node-canvas` enables headless rendering. Notably, the codebase demonstrates high craftsmanship with a flag-based dirty tracking system for efficient updates, an event system with cross-object observation, and a collection pattern with mutation events. However, it shows maintenance drift through some outdated development dependencies (e.g., `babel-eslint`, `underscore`) and manually maintained TypeScript declarations that may lag behind the source.

RATING: 8.9/10 MAINT: active DRIFT: medium
β–Έ 4 reusable components found
hfutrell/BezierKit β˜… 301 33 APPLICATION

BezierKit is a comprehensive Swift library for constructing, manipulating, and computing with BΓ©zier curves and paths. It provides linear, quadratic, and cubic curve types, along with advanced operations including curve-curve intersection (via monotone subdivision with implicitization fallback), offsetting, boolean operations (union, subtract, intersect), bounding box computation, nearest-point projection, arc length via Legendre-Gauss quadrature, and self-intersection removal. The library is designed for cross-platform use (macOS, iOS, Linux, WebAssembly) and includes a macOS demo application for interactive testing. The codebase demonstrates strong software engineering practices: protocol-oriented design, extensive unit tests (including adversarial edge cases), performance optimizations (concrete type overloads, stack allocation, manual memory management in hot paths), and a clean separation of concerns. While pre-release (semver < 1.0) with some known numerical edge cases documented as expected failures, the library is production-ready for vector graphics, CAD, and computational geometry applications.

RATING: 8.7/10 MAINT: active DRIFT: low
β–Έ 5 reusable components found
ultimatepp/ultimatepp β˜… 995 144 APPLICATION

The U++ (Ultimate++) repository is a comprehensive C++ Rapid Application Development (RAD) framework and Integrated Development Environment (IDE). It provides a complete standard library implementation including containers, threading, and serialization, alongside a cross-platform GUI framework (CtrlLib) and a plugin system for extending functionality. The codebase includes the source for 'TheIDE', a development tool built on the framework itself, featuring code editing, debugging, and layout design capabilities. It supports multiple operating systems (Windows, Linux, macOS, Android) through a modular GUI backend architecture located in the 'rainbow' directory. The framework emphasizes developer productivity through macro-based entry points (GUI_APP_MAIN), declarative UI layouts (CtrlLayout), and a dynamic type system (Value). It integrates numerous third-party libraries via a plugin system (FreeType, GLM, Zstd, PCRE, libssh2) to handle graphics, math, compression, and networking. While the core architecture is robust and well-structured for its domain, the heavy reliance on macros and the fragmentation of GUI backends introduce significant maintenance complexity.

RATING: 8.3/10 MAINT: active DRIFT: medium
β–Έ 4 reusable components found
mogest/prawn-svg β˜… 200 65 APPLICATION

prawn-svg is a Ruby library that renders SVG (Scalable Vector Graphics) documents into PDF format using the Prawn PDF library. It extends Prawn::Document with an svg() method that parses SVG input, applies CSS styles, handles external resources (images, fonts), and converts SVG elements into Prawn drawing commands. The architecture is modular with separate components for SVG parsing, CSS handling, attribute processing, coordinate transformation, and rendering of various SVG elements including shapes, paths, text, gradients, patterns, clipping paths, and masks. It supports most of the SVG 1.1 specification and provides configurable options for positioning, sizing, and resource loading.

RATING: 7.6/10 MAINT: active DRIFT: low
β–Έ 2 reusable components found
AnyChart/GraphicsJS β˜… 995 70 APPLICATION

GraphicsJS is a lightweight 2D vector graphics library that serves as the core rendering engine for AnyChart charting products. It provides a cross-browser abstraction layer over SVG (modern browsers) and VML (legacy Internet Explorer), offering a chainable API for drawing shapes, paths, text, images, and applying fills, gradients, and transformations. The library includes an event system, drag-and-drop support, and export capabilities to PNG, JPG, PDF, and SVG via an external server. Its architecture follows a clean renderer pattern with abstract base classes and concrete SVG/VML implementations, along with a dirty-state rendering mechanism for efficient updates. However, the codebase is heavily dependent on the deprecated Google Closure Library, includes substantial VML support for obsolete browsers, and lacks modern module systems or tests, resulting in significant technical drift. It is functionally complete and has been used in production, but is not recommended for new projects without substantial modernization.

RATING: 6.0/10 MAINT: maintained DRIFT: high
β–Έ 2 reusable components found
── end of results ──
$ submit: