Updated documentation
This commit is contained in:
parent
8e47686015
commit
b3f906a393
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2013 Mikko Mononen memon@inside.org
|
Copyright (c) 2013-14 Mikko Mononen memon@inside.org
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
14
README.md
14
README.md
@ -1,7 +1,9 @@
|
|||||||
Nano SVG
|
Nano SVG
|
||||||
==========
|
==========
|
||||||
|
|
||||||
![screenshot of some splines rendered witht the sample program](/example/screenshot.png?raw=true)
|
## Parser
|
||||||
|
|
||||||
|
![screenshot of some splines rendered witht the sample program](/example/screenshot-1.png?raw=true)
|
||||||
|
|
||||||
NanoSVG is a simple stupid single-header-file SVG parse. The output of the parser is a list of cubic bezier shapes.
|
NanoSVG is a simple stupid single-header-file SVG parse. The output of the parser is a list of cubic bezier shapes.
|
||||||
|
|
||||||
@ -9,12 +11,20 @@ The library suits well for anything from rendering scalable icons in your editor
|
|||||||
|
|
||||||
NanoSVG supports a wide range of SVG features, if somehing is missing, feel free to create a pull request!
|
NanoSVG supports a wide range of SVG features, if somehing is missing, feel free to create a pull request!
|
||||||
|
|
||||||
|
## Rasterizer
|
||||||
|
|
||||||
|
![screenshot of tiger.svg rendered with NanoSVG rasterizer](/example/screenshot-2.png?raw=true)
|
||||||
|
|
||||||
|
The parser library is accompanied with really simpler SVG rasterizer. Currently it only renders flat filled shapes.
|
||||||
|
|
||||||
|
The intended usage for the rasterizer is to for example bake icons of different size into a texture. The rasterizer is not particular fast or accurate, but it's small and packed in one header file.
|
||||||
|
|
||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
``` C
|
``` C
|
||||||
// Load
|
// Load
|
||||||
struct SNVGImage* image;
|
struct NSVGimage* image;
|
||||||
image = nsvgParseFromFile("test.svg.");
|
image = nsvgParseFromFile("test.svg.");
|
||||||
printf("size: %f x %f\n", image->width, image->height);
|
printf("size: %f x %f\n", image->width, image->height);
|
||||||
// Use...
|
// Use...
|
||||||
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
BIN
example/screenshot-2.png
Normal file
BIN
example/screenshot-2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 154 KiB |
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013 Mikko Mononen memon@inside.org
|
* Copyright (c) 2013-14 Mikko Mononen memon@inside.org
|
||||||
*
|
*
|
||||||
* This software is provided 'as-is', without any express or implied
|
* This software is provided 'as-is', without any express or implied
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
* warranty. In no event will the authors be held liable for any damages
|
||||||
|
@ -1,3 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-14 Mikko Mononen memon@inside.org
|
||||||
|
*
|
||||||
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
* warranty. In no event will the authors be held liable for any damages
|
||||||
|
* arising from the use of this software.
|
||||||
|
*
|
||||||
|
* Permission is granted to anyone to use this software for any purpose,
|
||||||
|
* including commercial applications, and to alter it and redistribute it
|
||||||
|
* freely, subject to the following restrictions:
|
||||||
|
*
|
||||||
|
* 1. The origin of this software must not be misrepresented; you must not
|
||||||
|
* claim that you wrote the original software. If you use this software
|
||||||
|
* in a product, an acknowledgment in the product documentation would be
|
||||||
|
* appreciated but is not required.
|
||||||
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
* misrepresented as being the original software.
|
||||||
|
* 3. This notice may not be removed or altered from any source distribution.
|
||||||
|
*
|
||||||
|
* The polygon rasterization is heavily based on stb_truetype rasterizer
|
||||||
|
* by Sean Barrett - http://nothings.org/
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef NANOSVGRAST_H
|
#ifndef NANOSVGRAST_H
|
||||||
#define NANOSVGRAST_H
|
#define NANOSVGRAST_H
|
||||||
|
|
||||||
@ -5,13 +29,35 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Example Usage:
|
||||||
|
// Load SVG
|
||||||
|
struct SNVGImage* image = nsvgParseFromFile("test.svg.");
|
||||||
|
|
||||||
|
// Create rasterizer (can be used to render multiple images).
|
||||||
|
struct NSVGrasterizer* rast = nsvgCreateRasterizer();
|
||||||
|
// Allocate memory for image
|
||||||
|
unsigned char* img = malloc(w*h*4);
|
||||||
|
// Rasterize
|
||||||
|
nsvgRasterize(rast, image, 0,0,1, img, w, h, w*4);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Allocated rasterizer context.
|
||||||
struct NSVGrasterizer* nsvgCreateRasterizer();
|
struct NSVGrasterizer* nsvgCreateRasterizer();
|
||||||
|
|
||||||
|
// Rasterizes SVG image, returns RGBA image (non-premultiplied alpha)
|
||||||
|
// r - pointer to rasterizer context
|
||||||
|
// image - pointer to image to rasterize
|
||||||
|
// tx,ty - image offset (applied after scaling)
|
||||||
|
// scale - image scale
|
||||||
|
// dst - pointer to destination image data, 4 bytes per pixel (RGBA)
|
||||||
|
// w - width of the image to render
|
||||||
|
// h - height of the image to render
|
||||||
|
// stride - number of bytes per scaleline in the destination buffer
|
||||||
void nsvgRasterize(struct NSVGrasterizer* r,
|
void nsvgRasterize(struct NSVGrasterizer* r,
|
||||||
struct NSVGimage* image, float tx, float ty, float scale,
|
struct NSVGimage* image, float tx, float ty, float scale,
|
||||||
unsigned char* dst, int w, int h, int stride);
|
unsigned char* dst, int w, int h, int stride);
|
||||||
|
|
||||||
|
// Deletes rasterizer context.
|
||||||
void nsvgDeleteRasterizer(struct NSVGrasterizer*);
|
void nsvgDeleteRasterizer(struct NSVGrasterizer*);
|
||||||
|
|
||||||
|
|
||||||
@ -25,8 +71,6 @@ void nsvgDeleteRasterizer(struct NSVGrasterizer*);
|
|||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
// The polygon rasterization is heavily based on stb_truetype rasterizer by Sean Barrett - http://nothings.org/
|
|
||||||
|
|
||||||
#define NSVG__SUBSAMPLES 5
|
#define NSVG__SUBSAMPLES 5
|
||||||
#define NSVG__FIXSHIFT 10
|
#define NSVG__FIXSHIFT 10
|
||||||
#define NSVG__FIX (1 << NSVG__FIXSHIFT)
|
#define NSVG__FIX (1 << NSVG__FIXSHIFT)
|
||||||
|
Loading…
Reference in New Issue
Block a user