Document:minnie
Author:bsp
Date:08-Jan-2026

1 About

alt
minnie is a 2D / 2.5D vector graphics API with a simplified OpenVG / SVG like feature subset, distributed under terms of the MIT license.
The renderer processes a size optimized byte stream (.mib) which is either generated on-the-fly in RAM, read from flash / mass storage, or converted from a human-readable ASCII file format (.min), which in turn can be converted from SVG files.
The core target runtime consists of a single C++ header file (minnie.h) which can optionally be linked with the SGI tesselator to support complex concave paths with holes (even-odd fill rule).
Triangle rendering is performed with an antialiased software rasterizer which can be replaced by GPU acceleration as required.

2 Table of Contents

3 Formats

3.1 ASCII file format (.min)

3.2 Size-optimized binary stream format (.mib)

3.3 SVG file size comparison

sizeSVG namesizeminnie namesize factor
4189cake.svg622test018_cake_aa.mib1:7
31681wild-boar.svg5284test039_wildboar.mib1:6
6828valentines.svg1514test033_valentines.mib1:5
1478bicycle.svg358test035_bicycle.mib1:4
42352crab.svg6425test036_crab.mib1:7
96719tiger.svg17135test040_tiger.mib1:6
20743elefant.svg1811test043_elefant.mib1:11
SVG file size comparison

4 Features

4.1 Fill / clear

4.2 Paths

4.2.1 Path elements

4.2.2 SVG paths

4.3 Path instancing

Once declared, paths may be rendered an arbitrary number of times.
Paths are always translated to the current cursor position, and may optionally be transformed by the current 2D or 3D matrix beforehand.
Each path instance can be assigned an individual stroke width and line join / cap style and stroke or fill color.

4.3.1 No matrix transformation

4.3.2 2D matrix transformation

4.3.3 3D matrix transformation

4.4 Clipping

4.4.1 Clip to framebuffer

4.4.2 Clip to path

4.5 Filled and stroked rendering

4.6 Color palettes

4.7 Stencil masking

4.8 Framebuffers

4.9 Blits

5 Opcode reference

Binary stream format for .mib files and procedural buffers.

5.1 Stream header byte

The first byte in a .mib stream is the header byte (def=0x01)

5.2 0x01

5.3 0x02

5.4 0x03

5.5 0x04

5.6 0x05

5.7 0x0E

5.8 0x0F

5.9 0x10 .. 0x1F

5.10 0x20

5.11 0x21

5.12 0x22

5.13 0x23

5.14 0x24

5.15 0x25

5.16 0x26

5.17 0x27

5.18 0x28

5.19 0x29

5.20 0x2A

5.21 0x2B

5.22 0x2C

5.23 0x2D

5.24 0x2E

5.25 0x2F

5.26 0x30 .. 0x36

5.27 0x37

5.28 0x38 .. 0x3E

5.29 0x3F

5.30 0x40 .. 0x4D

5.31 0x4E

5.32 0x4F

5.33 0x50

5.34 0x51

5.35 0x52

5.36 0x53

5.37 0x54

5.38 0x55

5.39 0x56

5.40 0x57 .. 0x5D

5.41 0x5E

5.42 0x5F

5.43 0x60

5.44 0x61

5.45 0x62

5.46 0x63

5.47 0x64

5.48 0x65 .. 0x6F

5.49 0x70 .. 0x7F

5.50 0x80

5.51 0x81

5.52 0x82

5.53 0x83

5.54 0x84

5.55 0x85

5.56 0x86

5.57 0x87

5.58 0x88

5.59 0x89

5.60 0x8A

5.61 0x8B

5.62 0x8C

5.63 0x8D

5.64 0x8E

5.65 0x8F

5.66 0x90

5.67 0x91

5.68 0x92

5.69 0x93

5.70 0x94

5.71 0x95

5.72 0x96

5.73 0x97

5.74 0x98

5.75 0x99

5.76 0x9A

5.77 0x9B

5.78 0x9C .. 0x9D

5.79 0x9E

5.80 0x9F

5.81 0xA0

5.82 0xA1

5.83 0xA2

5.84 0xA3

5.85 0xA4

5.86 0xA5

5.87 0xA6

5.88 0xA7

5.89 0xA8

5.90 0xA9 .. 0xAF

5.91 0xB0

5.92 0xB1

5.93 0xB2

5.94 0xB3

5.95 0xB4

5.96 0xB5 .. 0xBF

5.97 0xC0 .. 0xCF

5.98 0xD0

5.99 0xD1

5.100 0xD2

5.101 0xD3

5.102 0xD4

5.103 0xD5

5.104 0xD6 .. 0xDF

5.105 0xE0

5.106 0xE1

5.107 0xE2

5.108 0xE3

5.109 0xE4

5.110 0xE5

5.111 0xE7

5.112 0xE8

5.113 0xE9

5.114 0xEA

5.115 0xEB

5.116 0xEC

5.117 0xED

5.118 0xEE

5.119 0xEF

5.120 0xF0 .. 0xFD

5.121 0xFE

5.122 0xFF

6 Render backends

6.1 Analytical Anti-Aliasing codepaths (GL backend)

The following code paths / feature combinations support high-quality analytical antialiasing (no MSAA required):
  1. flat shaded lines
  2. lines with pattern paint
  3. gouraud shaded lines (per control-point color)
  4. flat shaded polylines
  5. flat shaded polylines with bevel line joints
  6. flat shaded polylines with miter line joints
  7. polylines with conic paint
  8. polylines with radial paint
  9. polylines with linear paint
  10. polylines with pattern paint
  11. polylines with alpha pattern paint
  12. polylines with decal pattern paint
  13. polylines with bevel joints and pattern paint
  14. polylines with bevel joints and decal pattern paint
  15. dashed polylines
  16. dashed polylines with bevel line joints
  17. decal dashed polylines
  18. decal dashed polylines with bevel line joints
  19. polygons (via polyline stroke. all paint types)
  20. square and round points
  21. square and rounds points with per-point color
  22. flat shaded, stroked rectangles
  23. stroked rectangles with conic paint
  24. stroked rectangles with radial paint
  25. stroked rectangles with linear paint
  26. stroked rectangles with pattern paint
  27. stroked rectangles with alpha pattern paint
  28. stroked rectangles with decal pattern paint
  29. flat shaded, filled rectangles
  30. filled rectangles with conic paint
  31. filled rectangles with radial paint
  32. filled rectangles with linear paint
  33. filled rectangles with pattern paint
  34. filled rectangles with alpha pattern paint
  35. filled rectangles with decal pattern paint
  36. flat shaded, filled + stroked rectangles
  37. flat shaded, stroked rounded rectangles
  38. stroked rounded rectangles with conic paint
  39. stroked rounded rectangles with radial paint
  40. stroked rounded rectangles with linear paint
  41. stroked rounded rectangles with pattern paint
  42. stroked rounded rectangles with alpha pattern paint
  43. stroked rounded rectangles with decal pattern paint
  44. flat shaded, filled rounded rectangles
  45. filled rounded rectangles with conic paint
  46. filled rounded rectangles with radial paint
  47. filled rounded rectangles with linear paint
  48. filled rounded rectangles with pattern paint
  49. filled rounded rectangles with alpha pattern paint
  50. filled rounded rectangles with decal pattern paint
  51. flat shaded filled + stroked rounded rectangles
  52. flat shaded, stroked ellipses
  53. stroked ellipses with conic paint
  54. stroked ellipses with radial paint
  55. stroked ellipses with linear paint
  56. stroked ellipses with pattern paint
  57. stroked ellipses with alpha pattern paint
  58. stroked ellipses with decal pattern paint
  59. flat shaded, filled ellipses
  60. filled ellipses with conic paint
  61. filled ellipses with radial paint
  62. filled ellipses with linear paint
  63. filled ellipses with pattern paint
  64. filled ellipses with alpha pattern paint
  65. filled ellipses with decal pattern paint
  66. flat shaded, filled + stroked ellipses
In addition, almost all of these render paths have dedicated FixPoint14:2 and FloatingPoint32 versions.

7 API reference manuals

8 GitHub

9 License

Distributed under terms of the MIT license (https://opensource.org/licenses/MIT)
Copyright 2018-2026 by bsp

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
MIT license

Valid HTML 4.01 Transitional

Document created in 40ms on 08-Jan-2026 09:46:44