https://github.com/sammycage/plutovg
download: libplutovg.zip from Nov 09, 2022
Included are 32/64-bit static and dýnamic libs for Windows and Linux.
I prefer static linking for FreeBASIC
but you can linking dynamic also
#define PLUTOVG_DYNAMIC
#include "plutovg.bi"
' ...
For other devices then x86,x86_64 eg. ARM / ARM64
I created in the libplutovg-src folder a codeblocks folder
you can open the libplutovg.workspace with the codeblocks IDE
and rebuild static/dynamic 32/64-bit libs for Windows or any Linux device.
Joshy
file: test01.bas create vector graphic in memory and save it as png file.
Code: Select all
#define PLUTOVG_STATIC
#include "plutovg.bi"
' draw vector graphic im memory and save it as PNG image
const as double pi = 3.14159265358979323846
const as long iWidth = 150
const as long iHeight = 150
ChDir(ExePath()) ' save *.png in exepath
dim as double center_x = iWidth * 0.5
dim as double center_y = iHeight * 0.5
dim as double face_radius = 70
dim as double eye_radius = 10
dim as double mouth_radius = 50
dim as double eye_offset_x = 25
dim as double eye_offset_y = 20
dim as double eye_x = center_x - eye_offset_x
dim as double eye_y = center_y - eye_offset_y
dim as plutovg_surface_t ptr surface = plutovg_surface_create(iWidth, iHeight)
dim as plutovg_t ptr pluto = plutovg_create(surface)
plutovg_save(pluto)
plutovg_arc(pluto, center_x, center_y, face_radius, 0, 2 * pi, 0)
plutovg_set_source_rgb(pluto, 1, 1, 0)
plutovg_fill_preserve(pluto)
plutovg_set_source_rgb(pluto, 0, 0, 0)
plutovg_set_line_width(pluto, 5)
plutovg_stroke(pluto)
plutovg_restore(pluto)
plutovg_save(pluto)
plutovg_arc(pluto, eye_x, eye_y, eye_radius, 0, 2 * pi, 0)
plutovg_arc(pluto, center_x + eye_offset_x, eye_y, eye_radius, 0, 2 * pi, 0)
plutovg_fill(pluto)
plutovg_restore(pluto)
plutovg_save(pluto)
plutovg_arc(pluto, center_x, center_y, mouth_radius, 0, pi, 0)
plutovg_set_line_width(pluto, 5)
plutovg_stroke(pluto)
plutovg_restore(pluto)
plutovg_surface_write_to_png(surface, "smiley.png")
print "'smiley.png' saved press any key ..."
sleep
plutovg_surface_destroy(surface)
plutovg_destroy(pluto)
Code: Select all
#define PLUTOVG_STATIC
#include "plutovg.bi"
' draw vector graphic on FBGFX Image
const as double pi = 3.14159265358979323846
const as long iWidth = 150
const as long iHeight = 150
dim as double center_x = iWidth * 0.5
dim as double center_y = iHeight * 0.5
dim as double face_radius = 70
dim as double eye_radius = 10
dim as double mouth_radius = 50
dim as double eye_offset_x = 25
dim as double eye_offset_y = 20
dim as double eye_x = center_x - eye_offset_x
dim as double eye_y = center_y - eye_offset_y
screenres iWidth,iHeight,32
line (0,0)-(iWidth,iHeight),RGBA(255,255,255,255),BF
dim as any ptr img = ImageCreate(iWidth,iHeight,RGBA(0,0,0,0))
dim as ubyte ptr imgPixels
dim as long imgWidth,imgHeight,imgBytes,imgPitch
ImageInfo(img,imgWidth,imgHeight,imgBytes,imgPitch,imgPixels)
var surface = plutovg_surface_create_for_data(imgPixels,imgWidth,imgHeight,imgPitch)
var pluto = plutovg_create(surface)
plutovg_save(pluto)
plutovg_arc(pluto, center_x, center_y, face_radius, 0, 2 * pi, 0)
plutovg_set_source_rgb(pluto, 1, 1, 0)
plutovg_fill_preserve(pluto)
plutovg_set_source_rgb(pluto, 0, 0, 0)
plutovg_set_line_width(pluto, 5)
plutovg_stroke(pluto)
plutovg_restore(pluto)
plutovg_save(pluto)
plutovg_arc(pluto, eye_x, eye_y, eye_radius, 0, 2 * pi, 0)
plutovg_arc(pluto, center_x + eye_offset_x, eye_y, eye_radius, 0, 2 * pi, 0)
plutovg_fill(pluto)
plutovg_restore(pluto)
plutovg_save(pluto)
plutovg_arc(pluto, center_x, center_y, mouth_radius, 0, pi, 0)
plutovg_set_line_width(pluto, 5)
plutovg_stroke(pluto)
plutovg_restore(pluto)
put (0,0),img,ALPHA
sleep
plutovg_surface_destroy(surface)
plutovg_destroy(pluto)