All Projects → MasterQ32 → TinyVG

MasterQ32 / TinyVG

Licence: MIT license
A new format for vector graphics: Tiny vector graphics

Programming Languages

Zig
133 projects
C#
18002 projects
HTML
75241 projects
shell
77523 projects
javascript
184084 projects - #8 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to TinyVG

sdk
TinyVG software development kit
Stars: ✭ 135 (+285.71%)
Mutual labels:  vector-graphics, tinyvg
blend2d-python
Cython wrapper for Blend2D
Stars: ✭ 13 (-62.86%)
Mutual labels:  vector-graphics
Text Attention Heatmap Visualization
Plot the vector graph of attention based text visualisation
Stars: ✭ 181 (+417.14%)
Mutual labels:  vector-graphics
powerpaint
Kreative PowerPaint - Library and Application for Bitmap and Vector Image Editing
Stars: ✭ 27 (-22.86%)
Mutual labels:  vector-graphics
Vectorsynthesis
This library allows the creation and manipulation of vector shapes using audio signals sent directly to oscilloscopes, modified Vectrex consoles, ILDA laser displays, and oscilloscope emulation software using the Pure Data programming environment. Please scroll down for more info in the README below.
Stars: ✭ 199 (+468.57%)
Mutual labels:  vector-graphics
CQULogo
重庆大学视觉标识素材包 --- Visual Identification Bundle of Chongqing University
Stars: ✭ 55 (+57.14%)
Mutual labels:  vector-graphics
Gerbolyze
Render high-resolution bitmap images to PCB gerber files
Stars: ✭ 169 (+382.86%)
Mutual labels:  vector-graphics
Vectorlogozone
3,000+ gorgeous SVG logos, perfect for your README or credits page
Stars: ✭ 239 (+582.86%)
Mutual labels:  vector-graphics
fonterator
Load fonts as vector graphics in pure Rust with advanced text layout.
Stars: ✭ 34 (-2.86%)
Mutual labels:  vector-graphics
VectorIntegerView
Animated integer on Android. https://habr.com/post/420919/
Stars: ✭ 17 (-51.43%)
Mutual labels:  vector-graphics
Picasso
Picasso is a high quality 2D vector graphic rendering library. It support path , matrix , gradient , pattern , image and truetype font.
Stars: ✭ 205 (+485.71%)
Mutual labels:  vector-graphics
Lazpaint
🎨 Cross-platform image editor with raster and vector layers similar to Paint.Net written in Lazarus (Free Pascal)
Stars: ✭ 236 (+574.29%)
Mutual labels:  vector-graphics
vectorexpress-api
Vector Express is a free service and API for converting, analyzing and processing vector files.
Stars: ✭ 66 (+88.57%)
Mutual labels:  vector-graphics
Compose.jl
Declarative vector graphics
Stars: ✭ 196 (+460%)
Mutual labels:  vector-graphics
vec
Vector graphics software to generate HPGL output to drive a plotter
Stars: ✭ 19 (-45.71%)
Mutual labels:  vector-graphics
Psvg
Programmable Scalable Vector Graphics -- drawings that draw themselves
Stars: ✭ 177 (+405.71%)
Mutual labels:  vector-graphics
Generative-Art
A selection of generative art scripts written in Python
Stars: ✭ 284 (+711.43%)
Mutual labels:  vector-graphics
Im2Vec
[CVPR 2021 Oral] Im2Vec Synthesizing Vector Graphics without Vector Supervision
Stars: ✭ 229 (+554.29%)
Mutual labels:  vector-graphics
iconvg
IconVG is a compact, binary format for simple vector graphics: icons, logos, glyphs and emoji.
Stars: ✭ 626 (+1688.57%)
Mutual labels:  vector-graphics
raster-retrace
Image tracing command line utility.
Stars: ✭ 40 (+14.29%)
Mutual labels:  vector-graphics

THIS REPO IS ARCHIVED.

DEVELOPMENT CONTINUES AT

https://github.com/TinyVG/

.tvg: Tiny Vector Graphics

Project Logo A new format for simple vector graphics.

Why?

Quoting the german Wikipedia on SVG:

Praktisch alle relevanten Webbrowser können einen Großteil des Sprachumfangs darstellen.

Translated:

Virtually all relevant web browsers can display most of the language specification.

SVG is a horribly complex format, allowing the embedding of JavaScript and other features no sane person ever wants to have in their images. Other relevant vector graphics formats do not exist or don't have a documentation or specification (looking at you, HVIF!).

This project tries to create and specify a new vector format suitable for:

  • Small and medium icons (think toolbar, buttons, …)
  • Low complexity graphics (think graphs, diagrams, …)
  • Embedded platforms (low resource requirements)

Project Goals

Create a vector graphics format that fulfils the following requirements:

  • Binary encoded
  • Small file size (must be smaller than equivalent bitmaps or SVG graphics)
  • Can be rendered without floating point support (suitable for embedded)
  • Can be rendered efficiently with modern GPUs (suitable for PC, games)
  • Supports the following drawing primitives:
    • points / circles
    • lines
    • triangles / polygons
  • Support drawing styles
    • filled
    • outline
    • filled with outline
  • Support
    • flat colors
    • bitmap textures (won't be included)
    • linear gradients
    • line widths
  • Can use hinting to allow really small rendering (16²) (won't be included due to increased complexity)

Use Cases

The use cases here are listed to be considered while working on the specification and give the project a shape and boundary:

  • Application Icons (large, fine details)
  • Toolbar Icons (small, simple)
  • Graphs (large structure, no details, text, think graphviz)
  • Diagrams (colored surfaces, text, lines)
  • Mangas/Comics (complex shapes, different line thickness)

Project Status

This project is coming close to finishing Version 1 of the format, and the written spec is the last thing missing.

See the following documents:

See also this image to have a preview of what is already implemented:

Preview

Milestones

  • Create prototype implementation
  • Finalize prototype
    • Add smaller/bigger colors (16 bit, 30 bit)
    • Add color space information (the color space is defined as sRGB)
    • Add extended coordinate space (32 bit coordinates)
    • Encode primary style in command, reduces command to 63 variants, allows bigger encoding
  • Improve rendering
    • Add anti-aliasing
    • Add missing line width modifier for path rendering
    • Improve rendering performance
    • Move anti-aliased rendering into core library
  • Implement textual representation
    • Convert to .tvg
    • Convert to text
    • Format text
    • Convert to SVG
  • Add auxiliary tools
    • C Library frontend
    • Build SDK
      • Zig package
      • Native packages
        • dynamic macOS x86_64, aarch64
        • static macOS x86_64, aarch64
        • dynamic Windows x86_64
        • static Windows x86_64 (TODO: Linker error with COMDAT when using VS)
        • dynamic Linux x86_64, aarch64, arm
        • static Linux x86_64, aarch64, arm
    • Wasm Polyfill
  • Improve website
    • Add manual to tools
    • Add tiger.tvg example file
    • Add comic.tvg example file
    • Add charts.tvg example file (pie, line and bar chart)
    • Add app-icon.tvg example file
    • Add graph.tvg example file
    • Add text file spec/examples
    • Fix polyfill (change CI)
  • Benchmark Suite
    • File Size (SVG vs. TinyVG)
    • Update final benchmark
  • Sort github issues
  • Write specification
  • Review specification
  • Release!
  • Lock the specification into Version 1.

Future Tasks

  • Convert from SVG (via external tool)
    • SVG <ellipse>
  • (Fill|Draw|Fill Outlined) Ellipse/Circle opcode
  • Smooth Bezier (via mirror behaviour)
  • Inkscape Plugin
  • library/sdk feature: convert TinyVG to draw lists/commands

Resources

  • CSS Gradients
    • Radial and conic gradients can be used for nice 3D shading
  • Previous Work: TurtleFont is a pure line-drawing vector format
  • SVG Path Editor, a tool to easily design or inspect SVG paths
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].