Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

lib16/graphics-php

Intended for use with lib16 SVG Builder.

Build Status

Installation with Composer

This package is available on packagist, so you can use Composer to install it. Run the following command in your shell:

composer require lib16/graphics

Basic Usage

<?phprequire_once'vendor/autoload.php';
useLib16\Utils\NumberFormatter;
useLib16\Graphics\Geometry\VectorGraphicsasG;
$center1 = G::point(100, 150);
$center2 = G::point(80, 290);
$center3 = G::point(210, 290);
$star = G::star($center3, -7, 40, 40 * G::STAR_RADIUS_7_3);
$rect = G::rectangle($center3->copy()->translate(-50, -52), 100, 100);
G::skewX($center3, G::deg(-30), $star, $rect);
$path = G::path()
->star(G::point(50, 50), 5, 40, 40 * G::STAR_RADIUS_5_2)
->star(G::point(150, 50), 8, 40 * G::STAR_RADIUS_8_3, 40)
->star(G::point(250, 50), 6, 30, 40, 40)
->star($center1, 6, 70)
->ellipse($center1, 60, 20, G::deg(30), true)
->ellipse($center1, 60, 20, G::deg(90), true)
->ellipse($center1, 60, 20, G::deg(150), true)
->rectangle(G::point(170, 95), 110, 110)
->roundedRectangle(G::point(175, 100), 100, 100, 20, true)
->circle(G::point(225, 150), 45)
->sector($center2, G::deg(30), G::deg(175), 50)
->sector($center2, G::deg(290), G::deg(325), 50)
->ringSector($center2, G::deg(175), G::deg(275), 60, 50)
->polygon($rect)
->polygon($star)
->toSvg(newNumberFormatter(4), newNumberFormatter(2));
header('Content-type: image/svg+xml');
print'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 360">';
print'<rect x="0" y="0" width="300" height="360" fill="#2266aa" fill-opacity="0.5" />';
print'<path d="' . $path . '" fill="#2266aa" fill-opacity="0.5" stroke="#ffffff"/>';
print'</svg>';

the generated SVG:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 360"><rect x="0" y="0" width="300" height="360" fill="#2266aa" fill-opacity="0.5" /><path d="M 50,10 L 58.9806,37.6393 L 88.0423,37.6393 L 64.5309,54.7214 L 73.5114,82.3607 L 50,65.2786 L 26.4886,82.3607 L 35.4691,54.7214 L 11.9577,37.6393 L 41.0194,37.6393 Z M 150,28.3522 L 165.3073,13.0448 L 165.3073,34.6927 L 186.9552,34.6927 L 171.6478,50 L 186.9552,65.3073 L 165.3073,65.3073 L 165.3073,86.9552 L 150,71.6478 L 134.6927,86.9552 L 134.6927,65.3073 L 113.0448,65.3073 L 128.3522,50 L 113.0448,34.6927 L 134.6927,34.6927 L 134.6927,13.0448 Z M 250,20 L 263.6808,12.4123 L 275.7115,19.3582 L 275.9808,35 L 289.3923,43.0541 L 289.3923,56.9459 L 275.9808,65 L 275.7115,80.6418 L 263.6808,87.5877 L 250,80 L 236.3192,87.5877 L 224.2885,80.6418 L 224.0192,65 L 210.6077,56.9459 L 210.6077,43.0541 L 224.0192,35 L 224.2885,19.3582 L 236.3192,12.4123 Z M 100,80 L 160.6218,115 L 160.6218,185 L 100,220 L 39.3782,185 L 39.3782,115 Z M 151.9615,180 A 60 20 30 0 0 48.0385,120 A 60 20 30 0 0 151.9615,180 M 100,210 A 60 20 90 0 0 100,90 A 60 20 90 0 0 100,210 M 48.0385,180 A 60 20 150 0 0 151.9615,120 A 60 20 150 0 0 48.0385,180 M 170,95 H 280 V 205 H 170 Z M 195,100 A 20 20 0 0 0 175,120 V 180 A 20 20 0 0 0 195,200 H 255 A 20 20 0 0 0 275,180 V 120 A 20 20 0 0 0 255,100 Z M 270,150 A 45 45 0 0 1 180,150 A 45 45 0 0 1 270,150 M 80,290 L 123.3013,315 A 50 50 0 0 1 30.1903,294.3578 Z M 80,290 L 97.101,243.0154 A 50 50 0 0 1 120.9576,261.3212 Z M 20.2283,295.2293 A 60 60 0 0 1 85.2293,230.2283 L 84.3578,240.1903 A 50 50 0 0 0 30.1903,294.3578 Z M 190.0222,238 L 290.0222,238 L 232.2872,338 L 132.2872,338 Z M 211.2319,277.1379 L 193.1256,265.0604 L 197.9161,286.8233 L 165.864,298.9008 L 193.6998,298.9008 L 171.8377,326.0388 L 201.7578,304.2758 L 206.5484,326.0388 L 216.0224,298.9008 L 243.8582,298.9008 L 225.752,286.8233 L 255.6721,265.0604 L 223.62,277.1379 L 233.094,250 Z" fill="#2266aa" fill-opacity="0.5" stroke="#ffffff"/></svg>

About

Intended for use with lib16 SVG Builder.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages