├── tux.png ├── nginx.png ├── author.png ├── sample 1.png ├── sample2.png ├── sample3.png ├── sample4.png ├── custom_marker.png ├── multigraph1.jpg ├── multigraph2.jpg ├── multigraph3.jpg ├── samplebarline.png ├── samplelegend.png ├── samplemarker.png ├── samplemarkers.png ├── samplescatter.png ├── samplesimple.png ├── sampletitle.png ├── samplexlabel.png ├── sampleylabel.png ├── samplecustompng.png ├── samplehistogram.png ├── samplehistseven.png ├── samplelimitsxy.png ├── samplemultiline.png ├── sampleplotline.png ├── samplexyvalues.png ├── background_example.jpg ├── samplebackground.png ├── sampleguidelines.png ├── samplelegendnames.png ├── samplemarkerplot.png ├── samplegraybackground.png ├── samplerotationticks.png ├── fonts └── dejavu-fonts-ttf-2.37 │ ├── BUGS │ ├── ttf │ ├── DejaVuSans.ttf │ ├── DejaVuSerif.ttf │ ├── DejaVuSans-Bold.ttf │ ├── DejaVuSansMono.ttf │ ├── DejaVuSerif-Bold.ttf │ ├── DejaVuMathTeXGyre.ttf │ ├── DejaVuSans-Oblique.ttf │ ├── DejaVuSerif-Italic.ttf │ ├── DejaVuSans-ExtraLight.ttf │ ├── DejaVuSansCondensed.ttf │ ├── DejaVuSansMono-Bold.ttf │ ├── DejaVuSerifCondensed.ttf │ ├── DejaVuSans-BoldOblique.ttf │ ├── DejaVuSansMono-Oblique.ttf │ ├── DejaVuSerif-BoldItalic.ttf │ ├── DejaVuSansCondensed-Bold.ttf │ ├── DejaVuSansMono-BoldOblique.ttf │ ├── DejaVuSerifCondensed-Bold.ttf │ ├── DejaVuSansCondensed-Oblique.ttf │ ├── DejaVuSerifCondensed-Italic.ttf │ ├── DejaVuSansCondensed-BoldOblique.ttf │ └── DejaVuSerifCondensed-BoldItalic.ttf │ ├── fontconfig │ ├── 20-unhint-small-dejavu-sans.conf │ ├── 20-unhint-small-dejavu-serif.conf │ ├── 20-unhint-small-dejavu-sans-mono.conf │ ├── 57-dejavu-sans-mono.conf │ ├── 57-dejavu-serif.conf │ └── 57-dejavu-sans.conf │ ├── AUTHORS │ ├── README.md │ ├── LICENSE │ ├── langcover.txt │ └── unicover.txt ├── img2img ├── source_example.jpg ├── img2img_result_0.jpg ├── img2img_result_1.jpg ├── img2img_result_10.jpg ├── img2img_result_11.jpg ├── img2img_result_2.jpg ├── img2img_result_3.jpg ├── img2img_result_4.jpg ├── img2img_result_5.png ├── img2img_result_6.png ├── img2img_result_7.jpg ├── img2img_result_8.jpg ├── img2img_result_9.jpg ├── source_example_pdf.pdf ├── source_example_psd.psd ├── PHP-Instagram-effects-master │ ├── assets │ │ ├── bg1.jpg │ │ ├── pattern1.jpg │ │ ├── pattern3.jpg │ │ ├── pattern4.jpg │ │ └── pattern5.jpg │ ├── examples │ │ ├── example.jpg │ │ ├── aqua.php │ │ ├── cool.php │ │ ├── gray.php │ │ ├── old.php │ │ ├── old2.php │ │ ├── old3.php │ │ ├── boost.php │ │ ├── fuzzy.php │ │ ├── light.php │ │ ├── sepia.php │ │ ├── bubbles.php │ │ └── colorise.php │ ├── composer.json │ ├── README.md │ ├── LICENCE │ └── src │ │ └── Image │ │ └── Filter.php └── example.php ├── releases ├── ext-op-ml-php ├── example.php └── ext-op-ml-php.class.php ├── example.php └── README.md /tux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/tux.png -------------------------------------------------------------------------------- /nginx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/nginx.png -------------------------------------------------------------------------------- /author.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/author.png -------------------------------------------------------------------------------- /sample 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/sample 1.png -------------------------------------------------------------------------------- /sample2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/sample2.png -------------------------------------------------------------------------------- /sample3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/sample3.png -------------------------------------------------------------------------------- /sample4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/sample4.png -------------------------------------------------------------------------------- /custom_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/custom_marker.png -------------------------------------------------------------------------------- /multigraph1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/multigraph1.jpg -------------------------------------------------------------------------------- /multigraph2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/multigraph2.jpg -------------------------------------------------------------------------------- /multigraph3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/multigraph3.jpg -------------------------------------------------------------------------------- /samplebarline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplebarline.png -------------------------------------------------------------------------------- /samplelegend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplelegend.png -------------------------------------------------------------------------------- /samplemarker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplemarker.png -------------------------------------------------------------------------------- /samplemarkers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplemarkers.png -------------------------------------------------------------------------------- /samplescatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplescatter.png -------------------------------------------------------------------------------- /samplesimple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplesimple.png -------------------------------------------------------------------------------- /sampletitle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/sampletitle.png -------------------------------------------------------------------------------- /samplexlabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplexlabel.png -------------------------------------------------------------------------------- /sampleylabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/sampleylabel.png -------------------------------------------------------------------------------- /samplecustompng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplecustompng.png -------------------------------------------------------------------------------- /samplehistogram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplehistogram.png -------------------------------------------------------------------------------- /samplehistseven.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplehistseven.png -------------------------------------------------------------------------------- /samplelimitsxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplelimitsxy.png -------------------------------------------------------------------------------- /samplemultiline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplemultiline.png -------------------------------------------------------------------------------- /sampleplotline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/sampleplotline.png -------------------------------------------------------------------------------- /samplexyvalues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplexyvalues.png -------------------------------------------------------------------------------- /background_example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/background_example.jpg -------------------------------------------------------------------------------- /samplebackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplebackground.png -------------------------------------------------------------------------------- /sampleguidelines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/sampleguidelines.png -------------------------------------------------------------------------------- /samplelegendnames.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplelegendnames.png -------------------------------------------------------------------------------- /samplemarkerplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplemarkerplot.png -------------------------------------------------------------------------------- /samplegraybackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplegraybackground.png -------------------------------------------------------------------------------- /samplerotationticks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/samplerotationticks.png -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/BUGS: -------------------------------------------------------------------------------- 1 | See http://dejavu.sourceforge.net/wiki/index.php/Bugs 2 | 3 | $Id$ 4 | -------------------------------------------------------------------------------- /img2img/source_example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/source_example.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_0.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_1.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_10.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_11.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_2.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_3.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_4.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_5.png -------------------------------------------------------------------------------- /img2img/img2img_result_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_6.png -------------------------------------------------------------------------------- /img2img/img2img_result_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_7.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_8.jpg -------------------------------------------------------------------------------- /img2img/img2img_result_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/img2img_result_9.jpg -------------------------------------------------------------------------------- /img2img/source_example_pdf.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/source_example_pdf.pdf -------------------------------------------------------------------------------- /img2img/source_example_psd.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/source_example_psd.psd -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans-Bold.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif-Bold.ttf -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/assets/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/PHP-Instagram-effects-master/assets/bg1.jpg -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuMathTeXGyre.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuMathTeXGyre.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans-Oblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans-Oblique.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif-Italic.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans-ExtraLight.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansCondensed.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansCondensed.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono-Bold.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerifCondensed.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerifCondensed.ttf -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/assets/pattern1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/PHP-Instagram-effects-master/assets/pattern1.jpg -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/assets/pattern3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/PHP-Instagram-effects-master/assets/pattern3.jpg -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/assets/pattern4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/PHP-Instagram-effects-master/assets/pattern4.jpg -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/assets/pattern5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/PHP-Instagram-effects-master/assets/pattern5.jpg -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/img2img/PHP-Instagram-effects-master/examples/example.jpg -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans-BoldOblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans-BoldOblique.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono-Oblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono-Oblique.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif-BoldItalic.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansCondensed-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansCondensed-Bold.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono-BoldOblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansMono-BoldOblique.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerifCondensed-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerifCondensed-Bold.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansCondensed-Oblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansCondensed-Oblique.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerifCondensed-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerifCondensed-Italic.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansCondensed-BoldOblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSansCondensed-BoldOblique.ttf -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerifCondensed-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vivesweb/graph-php/HEAD/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSerifCondensed-BoldItalic.ttf -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/aqua.php: -------------------------------------------------------------------------------- 1 | aqua(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/cool.php: -------------------------------------------------------------------------------- 1 | cool(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/gray.php: -------------------------------------------------------------------------------- 1 | gray(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/old.php: -------------------------------------------------------------------------------- 1 | old(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/old2.php: -------------------------------------------------------------------------------- 1 | old2(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/old3.php: -------------------------------------------------------------------------------- 1 | old3(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/boost.php: -------------------------------------------------------------------------------- 1 | boost(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/fuzzy.php: -------------------------------------------------------------------------------- 1 | fuzzy(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/light.php: -------------------------------------------------------------------------------- 1 | light(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/sepia.php: -------------------------------------------------------------------------------- 1 | sepia(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/bubbles.php: -------------------------------------------------------------------------------- 1 | bubbles(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/examples/colorise.php: -------------------------------------------------------------------------------- 1 | colorise(); 8 | 9 | header("Content-type: image/png"); 10 | imagepng($image); 11 | imagedestroy($image); 12 | -------------------------------------------------------------------------------- /releases: -------------------------------------------------------------------------------- 1 | 2021-10-30 v.1.0.1 2 | - Change cfg & gd vars from private to protected for external use in new php-plotlib class 3 | - Change padding automatically when change width or height 4 | - Add new param to cfg to control font size for xticks & yticks 5 | - Add new param to cfg to control margin between X & Y ticklabels & ticks 6 | - Add Boolean draw X & Y label ticks 7 | - Add cfg bordertype [‘square’, ‘halfsquare’] for plot in pairplot 8 | - Add cfg ymarginleftlabel 9 | 10 | 2021-10-28 v.1.0.0 11 | - First release 12 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zaachi/php-instagram-effects", 3 | "description": "PHP class for photo effects like Instagram", 4 | "license": "MIT", 5 | "authors": [ 6 | { 7 | "name": "Jiri Zachar", 8 | "email": "zaachi@gmail.com" 9 | }, 10 | { 11 | "name": "Dan Fuhry", 12 | "email": "dan@fuhry.com" 13 | } 14 | ], 15 | "require": { 16 | "ext-gd": "*" 17 | }, 18 | "autoload": { 19 | "psr-4": { 20 | "Zaachi\\": "src/" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/README.md: -------------------------------------------------------------------------------- 1 | PHP-Instagram-effects 2 | ===================== 3 | 4 | PHP class for photo effects similar to Instagram 5 | 6 | ## Usage 7 | 8 | ```php 9 | use Zaachi\Image\Filter; 10 | require 'vendor/autoload.php'; 11 | 12 | $image = imagecreatefromjpeg("/path/to/image.jpg"); 13 | 14 | $filter = (new Filter($image))->aqua(); 15 | 16 | header('Content-type: image/jpeg'); 17 | imagejpeg($filter->getImage()); 18 | ``` 19 | 20 | Examples of usage are in the `examples` directory. To generate example images, this bash snippet may be helpful: 21 | 22 | ```shell 23 | for f in *.php; do php $f > ${f%.php}.png; done 24 | ``` 25 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/fontconfig/20-unhint-small-dejavu-sans.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | 17 | DejaVu Sans 18 | 19 | 20 | 7.5 21 | 22 | 23 | false 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/fontconfig/20-unhint-small-dejavu-serif.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | 17 | DejaVu Serif 18 | 19 | 20 | 7.5 21 | 22 | 23 | false 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/fontconfig/20-unhint-small-dejavu-sans-mono.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | 17 | DejaVu Sans Mono 18 | 19 | 20 | 7.5 21 | 22 | 23 | false 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/AUTHORS: -------------------------------------------------------------------------------- 1 | abysta at yandex.ru 2 | Adrian Schroeter 3 | Aleksey Chalabyan 4 | Andrey Valentinovich Panov 5 | Ben Laenen 6 | Besarion Gugushvili 7 | Bhikkhu Pesala 8 | Clayborne Arevalo 9 | Dafydd Harries 10 | Danilo Segan 11 | Davide Viti 12 | David Jez 13 | David Lawrence Ramsey 14 | Denis Jacquerye 15 | Dwayne Bailey 16 | Eugeniy Meshcheryakov 17 | Frédéric Wang 18 | Gee Fung Sit 19 | Heikki Lindroos 20 | James Cloos 21 | James Crippen 22 | John Karp 23 | Keenan Pepper 24 | Lars Næsbye Christensen 25 | Lior Halphon 26 | MaEr 27 | Mashrab Kuvatov 28 | Max Berger 29 | Mederic Boquien 30 | Michael Everson 31 | MihailJP 32 | Misu Moldovan 33 | Nguyen Thai Ngoc Duy 34 | Nicolas Mailhot 35 | Norayr Chilingarian 36 | Olleg Samoylov 37 | Ognyan Kulev 38 | Ondrej Koala Vacha 39 | Peter Cernak 40 | Remy Oudompheng 41 | Roozbeh Pournader 42 | Rouben Hakobian 43 | Sahak Petrosyan 44 | Sami Tarazi 45 | Sander Vesik 46 | Stepan Roh 47 | Stephen Hartke 48 | Steve Tinney 49 | Tavmjong Bah 50 | Thomas Henlich 51 | Tim May 52 | Valentin Stoykov 53 | Vasek Stodulka 54 | Wesley Transue 55 | Yoshiki Ohshima 56 | 57 | $Id$ 58 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/LICENCE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2013 Google, Inc. http://zaachi.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/fontconfig/57-dejavu-sans-mono.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | Bepa Mono 14 | 15 | DejaVu Sans Mono 16 | 17 | 18 | 19 | Bitstream Prima Sans Mono 20 | 21 | DejaVu Sans Mono 22 | 23 | 24 | 25 | Bitstream Vera Sans Mono 26 | 27 | DejaVu Sans Mono 28 | 29 | 30 | 31 | DejaVu LGC Sans Mono 32 | 33 | DejaVu Sans Mono 34 | 35 | 36 | 37 | Olwen Sans Mono 38 | 39 | DejaVu Sans Mono 40 | 41 | 42 | 43 | SUSE Sans Mono 44 | 45 | DejaVu Sans Mono 46 | 47 | 48 | 49 | 50 | DejaVu Sans Mono 51 | 52 | monospace 53 | 54 | 55 | 56 | 57 | monospace 58 | 59 | DejaVu Sans Mono 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/fontconfig/57-dejavu-serif.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | Bitstream Prima Serif 14 | 15 | DejaVu Serif 16 | 17 | 18 | 19 | Bitstream Vera Serif 20 | 21 | DejaVu Serif 22 | 23 | 24 | 25 | DejaVu LGC Serif 26 | 27 | DejaVu Serif 28 | 29 | 30 | 31 | Hunky Serif 32 | 33 | DejaVu Serif 34 | 35 | 36 | 37 | Olwen Serif 38 | 39 | DejaVu Serif 40 | 41 | 42 | 43 | SUSE Serif 44 | 45 | DejaVu Serif 46 | 47 | 48 | 49 | 50 | Verajja Serif 51 | 52 | DejaVu Serif 53 | 54 | 55 | 56 | 57 | DejaVu Serif 58 | 59 | serif 60 | 61 | 62 | 63 | 64 | serif 65 | 66 | DejaVu Serif 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/fontconfig/57-dejavu-sans.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | Arev Sans 14 | 15 | DejaVu Sans 16 | 17 | 18 | 19 | Bepa 20 | 21 | DejaVu Sans 22 | 23 | 24 | 25 | Bitstream Prima Sans 26 | 27 | DejaVu Sans 28 | 29 | 30 | 31 | Bitstream Vera Sans 32 | 33 | DejaVu Sans 34 | 35 | 36 | 37 | DejaVu LGC Sans 38 | 39 | DejaVu Sans 40 | 41 | 42 | 43 | Hunky Sans 44 | 45 | DejaVu Sans 46 | 47 | 48 | 49 | Olwen Sans 50 | 51 | DejaVu Sans 52 | 53 | 54 | 55 | SUSE Sans 56 | 57 | DejaVu Sans 58 | 59 | 60 | 61 | Verajja 62 | 63 | DejaVu Sans 64 | 65 | 66 | 67 | 68 | VerajjaPDA 69 | 70 | DejaVu Sans 71 | 72 | 73 | 74 | 75 | DejaVu Sans 76 | 77 | sans-serif 78 | 79 | 80 | 81 | 82 | sans-serif 83 | 84 | DejaVu Sans 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/dejavu-fonts/dejavu-fonts.svg)](https://travis-ci.org/dejavu-fonts/dejavu-fonts) 2 | 3 | DejaVu fonts 2.37 (c)2004-2016 DejaVu fonts team 4 | ------------------------------------------------ 5 | 6 | The DejaVu fonts are a font family based on the Bitstream Vera Fonts 7 | (http://gnome.org/fonts/). Its purpose is to provide a wider range of 8 | characters (see status.txt for more information) while maintaining the 9 | original look and feel. 10 | 11 | DejaVu fonts are based on Bitstream Vera fonts version 1.10. 12 | 13 | Available fonts (Sans = sans serif, Mono = monospaced): 14 | 15 | DejaVu Sans Mono 16 | DejaVu Sans Mono Bold 17 | DejaVu Sans Mono Bold Oblique 18 | DejaVu Sans Mono Oblique 19 | DejaVu Sans 20 | DejaVu Sans Bold 21 | DejaVu Sans Bold Oblique 22 | DejaVu Sans Oblique 23 | DejaVu Sans ExtraLight (experimental) 24 | DejaVu Serif 25 | DejaVu Serif Bold 26 | DejaVu Serif Bold Italic (experimental) 27 | DejaVu Serif Italic (experimental) 28 | DejaVu Sans Condensed (experimental) 29 | DejaVu Sans Condensed Bold (experimental) 30 | DejaVu Sans Condensed Bold Oblique (experimental) 31 | DejaVu Sans Condensed Oblique (experimental) 32 | DejaVu Serif Condensed (experimental) 33 | DejaVu Serif Condensed Bold (experimental) 34 | DejaVu Serif Condensed Bold Italic (experimental) 35 | DejaVu Serif Condensed Italic (experimental) 36 | DejaVu Math TeX Gyre 37 | 38 | All fonts are also available as derivative called DejaVu LGC with support 39 | only for Latin, Greek and Cyrillic scripts. 40 | 41 | For license information see LICENSE. What's new is described in NEWS. Known 42 | bugs are in BUGS. All authors are mentioned in AUTHORS. 43 | 44 | Fonts are published in source form as SFD files (Spline Font Database from 45 | FontForge - http://fontforge.sf.net/) and in compiled form as TTF files 46 | (TrueType fonts). 47 | 48 | For more information go to http://dejavu.sourceforge.net/. 49 | 50 | Characters from Arev fonts, Copyright (c) 2006 by Tavmjong Bah: 51 | --------------------------- 52 | U+01BA, U+01BF, U+01F7, U+021C-U+021D, U+0220, U+0222-U+0223, 53 | U+02B9, U+02BA, U+02BD, U+02C2-U+02C5, U+02d4-U+02D5, 54 | U+02D7, U+02EC-U+02EE, U+0346-U+034E, U+0360, U+0362, 55 | U+03E2-03EF, U+0460-0463, U+0466-U+0486, U+0488-U+0489, U+04A8-U+04A9, 56 | U+0500-U+050F, U+2055-205E, U+20B0, U+20B2-U+20B3, U+2102, U+210D, U+210F, 57 | U+2111, U+2113, U+2115, U+2118-U+211A, U+211C-U+211D, U+2124, U+2135, 58 | U+213C-U+2140, U+2295-U+2298, U+2308-U+230B, U+26A2-U+26B1, U+2701-U+2704, 59 | U+2706-U+2709, U+270C-U+274B, U+2758-U+275A, U+2761-U+2775, U+2780-U+2794, 60 | U+2798-U+27AF, U+27B1-U+27BE, U+FB05-U+FB06 61 | 62 | DejaVu Math TeX Gyre 63 | -------------------- 64 | TeX Gyre DJV Math by B. Jackowski, P. Strzelczyk and P. Pianowski 65 | (on behalf of TeX users groups). 66 | 67 | $Id$ 68 | -------------------------------------------------------------------------------- /img2img/example.php: -------------------------------------------------------------------------------- 1 | 17 | * just before in /etc/ImageMagick-7/policy.xml 18 | * * Change ImageMagick-7 with your Imagick version 19 | * 20 | * @author Rafael Martin Soto 21 | * @author {@link https://www.inatica.com/ Inatica} 22 | * @link https://rafamartin10.blogspot.com/ 23 | * @since October 2021 24 | * @version 1.0.1 25 | * @license GNU General Public License v3.0 26 | */ 27 | 28 | 29 | include __DIR__ . '/img2img.class.php'; 30 | 31 | 32 | // filter instragram old 33 | $img2img = new img2img( __DIR__.'/source_example.jpg' ); 34 | $img2img->filter( IMG_FILTER_INSTGR_OLD ); 35 | $img2img->save( '/tmp/img2img_result_0.jpg' ); 36 | unset( $img2img ); 37 | 38 | // Example of use directly from php GD 39 | $test = imagecreatefromjpeg( __DIR__.'/source_example.jpg'); 40 | $img2img = new img2img( $test ); 41 | $img2img->thumb( '120x90' ); 42 | $img2img->save( '/tmp/img2img_result_1.jpg' ); 43 | unset( $img2img ); 44 | 45 | 46 | // Flip Horizontal 47 | $img2img = new img2img( __DIR__.'/source_example.jpg' ); 48 | $img2img->flip( ); 49 | $img2img->save( '/tmp/img2img_result_2.jpg' ); 50 | unset( $img2img ); 51 | 52 | 53 | // filter sepia 54 | $img2img = new img2img( __DIR__.'/source_example.jpg' ); 55 | $img2img->filter( IMG_FILTER_SEPIA, 4, 80 ); 56 | $img2img->save( '/tmp/img2img_result_3.jpg' ); 57 | unset( $img2img ); 58 | 59 | 60 | // filter Black & White 61 | $img2img = new img2img( __DIR__.'/source_example.jpg' ); 62 | $img2img->filter( IMG_FILTER_BLACK_WHITE ); 63 | $img2img->save( '/tmp/img2img_result_4.jpg' ); 64 | unset( $img2img ); 65 | 66 | 67 | // Example of use from file & use of array default sizes defined by id & Change format to png 68 | // It can use to make different sizes of thumbnails at once 69 | $img2img = new img2img( __DIR__.'/source_example.jpg' ); 70 | for($i=5;$i<7;$i++){ 71 | $img2img->thumb( $i ); 72 | $img2img->save( '/tmp/img2img_result_'.$i.'.png' ); 73 | } 74 | unset( $img2img ); 75 | 76 | 77 | // filter VIGNETTE 78 | $img2img = new img2img( __DIR__.'/source_example.jpg' ); 79 | $img2img->filter( IMG_FILTER_VIGNETTE, 100, 100, 100, 100, ); // arg1: blackPoint, arg2: $whitePoint, arg3: $x, arg4: $y 80 | $img2img->save( '/tmp/img2img_result_7.jpg' ); 81 | unset( $img2img ); 82 | 83 | 84 | // create preview from PHOTOSHOP PSD 85 | $img2img = new img2img( __DIR__.'/source_example_psd.psd' ); 86 | $img2img->resample( 120, 90 ); 87 | $img2img->save( '/tmp/img2img_result_8.jpg' ); 88 | unset( $img2img ); 89 | 90 | 91 | // create preview form PDF 92 | $img2img = new img2img( __DIR__.'/source_example_pdf.pdf' ); 93 | $img2img->resample( 90, 120 ); 94 | $img2img->save( '/tmp/img2img_result_9.jpg' ); 95 | unset( $img2img ); 96 | 97 | 98 | // Change size maintaining original aspect ratio 99 | $img2img = new img2img( __DIR__.'/source_example.jpg' ); 100 | $img2img->resample( 300, 90 ); 101 | $img2img->save( '/tmp/img2img_result_10.jpg' ); 102 | unset( $img2img ); 103 | 104 | 105 | // Change size WHITHOUT maintaining original aspect ratio 106 | $img2img = new img2img( __DIR__.'/source_example.jpg' ); 107 | $img2img->resample( 300, 90, false ); 108 | $img2img->save( '/tmp/img2img_result_11.jpg' ); 109 | unset( $img2img ); 110 | ?> -------------------------------------------------------------------------------- /ext-op-ml-php/example.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Example of ext-op.class.php 9 | 10 | 11 | 12 | 13 | linspace( -5, 5 ): -5 to 5 array in 100 steps:
'; 35 | var_dump( $ext_op->linspace( -5, 5 ) ); 36 | 37 | echo '

'; 38 | 39 | 40 | echo 'linspace( -5, 5, 7 ): -5 to 5 array in 7 steps:
'; 41 | var_dump( $ext_op->linspace( -5, 5, 7 ) ); 42 | 43 | echo '

'; 44 | 45 | 46 | 47 | echo 'pow( [2, 4, 6] ): Pow 2 array [2, 4, 6]:
'; 48 | var_dump( $ext_op->pow( [2, 4, 6] ) ); 49 | 50 | echo '

'; 51 | 52 | 53 | echo 'pow( [2, 4, 6], 3 ): Pow 3 array [2, 4, 6]:
'; 54 | var_dump( $ext_op->pow( [2, 4, 6], 3 ) ); 55 | 56 | echo '

'; 57 | 58 | 59 | echo 'str_len_ttf( "Hellow Wold", __DIR__ . "/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf", 12 ): Length in pixels of "Hellow Wold" string, with DejaVuSans & size 12:
'; 60 | $font_path = __DIR__ . '/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf'; 61 | if( !file_exists( $font_path) ){ 62 | echo 'For do this test you need to specify a valid file name. '.$font_path.' not found. You can download a test fonts from here https://dejavu-fonts.github.io/'; 63 | } else { 64 | var_dump( $ext_op->str_len_ttf( 'Hellow Wold', $font_path, 12 ) ); 65 | } 66 | 67 | echo '

'; 68 | 69 | 70 | echo 'inch_2_pixels( 6.4, 100): 6.4 inches at 100 dpis in Pixels:
'; 71 | var_dump( $ext_op->inch_2_pixels( 6.4, 100) ); 72 | 73 | echo '

'; 74 | 75 | 76 | echo 'hex2rgb( "#1f77b4" ): Color "#1f77b4" in vector of integers RGB:
'; 77 | var_dump( $ext_op->hex2rgb( '#1f77b4' ) ); 78 | 79 | echo '

'; 80 | 81 | echo '
'; 82 | 83 | 84 | echo 'From V.1.0.1:
'; 85 | echo '-------------------
'; 86 | 87 | echo '
'; 88 | 89 | 90 | echo 'copysign(1, 50):
'; 91 | var_dump( $ext_op->copysign(1, 50) ); 92 | 93 | echo '

'; 94 | 95 | 96 | echo 'copysign(1, -50):
'; 97 | var_dump( $ext_op->copysign(1, -50) ); 98 | 99 | echo '

'; 100 | 101 | echo '
'; 102 | 103 | 104 | echo 'From V.1.0.2:
'; 105 | echo '-------------------
'; 106 | 107 | echo '
'; 108 | 109 | 110 | echo 'avg([1, 2, 3, 4, 5]):
'; 111 | var_dump( $ext_op->avg( [1, 2, 3, 4, 5]) ); 112 | 113 | echo '

'; 114 | 115 | 116 | echo 'freq([1, 2, 2, 3, 3, 4, 5], 2, 3):
'; 117 | var_dump( $ext_op->freq( [1, 2, 2, 3, 3, 4, 5], 2, 3) ); 118 | 119 | echo '

'; 120 | 121 | 122 | echo 'freq([1, 2, 2, 3, 3, 4, 5], 2, 3, true):
'; 123 | var_dump( $ext_op->freq( [1, 2, 2, 3, 3, 4, 5], 2, 3, true) ); 124 | 125 | echo '

'; 126 | 127 | 128 | 129 | 130 | echo 'binarySearch([1, 2, 3, 4, 5], 4):
'; 131 | var_dump( $ext_op->binarySearch([1, 2, 3, 4, 5], 4) ); 132 | 133 | echo '

'; 134 | ?> 135 | 136 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/LICENSE: -------------------------------------------------------------------------------- 1 | Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. 2 | Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below) 3 | 4 | 5 | Bitstream Vera Fonts Copyright 6 | ------------------------------ 7 | 8 | Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is 9 | a trademark of Bitstream, Inc. 10 | 11 | Permission is hereby granted, free of charge, to any person obtaining a copy 12 | of the fonts accompanying this license ("Fonts") and associated 13 | documentation files (the "Font Software"), to reproduce and distribute the 14 | Font Software, including without limitation the rights to use, copy, merge, 15 | publish, distribute, and/or sell copies of the Font Software, and to permit 16 | persons to whom the Font Software is furnished to do so, subject to the 17 | following conditions: 18 | 19 | The above copyright and trademark notices and this permission notice shall 20 | be included in all copies of one or more of the Font Software typefaces. 21 | 22 | The Font Software may be modified, altered, or added to, and in particular 23 | the designs of glyphs or characters in the Fonts may be modified and 24 | additional glyphs or characters may be added to the Fonts, only if the fonts 25 | are renamed to names not containing either the words "Bitstream" or the word 26 | "Vera". 27 | 28 | This License becomes null and void to the extent applicable to Fonts or Font 29 | Software that has been modified and is distributed under the "Bitstream 30 | Vera" names. 31 | 32 | The Font Software may be sold as part of a larger software package but no 33 | copy of one or more of the Font Software typefaces may be sold by itself. 34 | 35 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 36 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, 37 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, 38 | TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME 39 | FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING 40 | ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, 41 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 42 | THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE 43 | FONT SOFTWARE. 44 | 45 | Except as contained in this notice, the names of Gnome, the Gnome 46 | Foundation, and Bitstream Inc., shall not be used in advertising or 47 | otherwise to promote the sale, use or other dealings in this Font Software 48 | without prior written authorization from the Gnome Foundation or Bitstream 49 | Inc., respectively. For further information, contact: fonts at gnome dot 50 | org. 51 | 52 | Arev Fonts Copyright 53 | ------------------------------ 54 | 55 | Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. 56 | 57 | Permission is hereby granted, free of charge, to any person obtaining 58 | a copy of the fonts accompanying this license ("Fonts") and 59 | associated documentation files (the "Font Software"), to reproduce 60 | and distribute the modifications to the Bitstream Vera Font Software, 61 | including without limitation the rights to use, copy, merge, publish, 62 | distribute, and/or sell copies of the Font Software, and to permit 63 | persons to whom the Font Software is furnished to do so, subject to 64 | the following conditions: 65 | 66 | The above copyright and trademark notices and this permission notice 67 | shall be included in all copies of one or more of the Font Software 68 | typefaces. 69 | 70 | The Font Software may be modified, altered, or added to, and in 71 | particular the designs of glyphs or characters in the Fonts may be 72 | modified and additional glyphs or characters may be added to the 73 | Fonts, only if the fonts are renamed to names not containing either 74 | the words "Tavmjong Bah" or the word "Arev". 75 | 76 | This License becomes null and void to the extent applicable to Fonts 77 | or Font Software that has been modified and is distributed under the 78 | "Tavmjong Bah Arev" names. 79 | 80 | The Font Software may be sold as part of a larger software package but 81 | no copy of one or more of the Font Software typefaces may be sold by 82 | itself. 83 | 84 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 85 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 86 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 87 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL 88 | TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 89 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 90 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 91 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 92 | OTHER DEALINGS IN THE FONT SOFTWARE. 93 | 94 | Except as contained in this notice, the name of Tavmjong Bah shall not 95 | be used in advertising or otherwise to promote the sale, use or other 96 | dealings in this Font Software without prior written authorization 97 | from Tavmjong Bah. For further information, contact: tavmjong @ free 98 | . fr. 99 | 100 | TeX Gyre DJV Math 101 | ----------------- 102 | Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. 103 | 104 | Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski 105 | (on behalf of TeX users groups) are in public domain. 106 | 107 | Letters imported from Euler Fraktur from AMSfonts are (c) American 108 | Mathematical Society (see below). 109 | Bitstream Vera Fonts Copyright 110 | Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera 111 | is a trademark of Bitstream, Inc. 112 | 113 | Permission is hereby granted, free of charge, to any person obtaining a copy 114 | of the fonts accompanying this license (“Fonts”) and associated 115 | documentation 116 | files (the “Font Software”), to reproduce and distribute the Font Software, 117 | including without limitation the rights to use, copy, merge, publish, 118 | distribute, 119 | and/or sell copies of the Font Software, and to permit persons to whom 120 | the Font Software is furnished to do so, subject to the following 121 | conditions: 122 | 123 | The above copyright and trademark notices and this permission notice 124 | shall be 125 | included in all copies of one or more of the Font Software typefaces. 126 | 127 | The Font Software may be modified, altered, or added to, and in particular 128 | the designs of glyphs or characters in the Fonts may be modified and 129 | additional 130 | glyphs or characters may be added to the Fonts, only if the fonts are 131 | renamed 132 | to names not containing either the words “Bitstream” or the word “Vera”. 133 | 134 | This License becomes null and void to the extent applicable to Fonts or 135 | Font Software 136 | that has been modified and is distributed under the “Bitstream Vera” 137 | names. 138 | 139 | The Font Software may be sold as part of a larger software package but 140 | no copy 141 | of one or more of the Font Software typefaces may be sold by itself. 142 | 143 | THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS 144 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, 145 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, 146 | TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME 147 | FOUNDATION 148 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, 149 | SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN 150 | ACTION 151 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR 152 | INABILITY TO USE 153 | THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. 154 | Except as contained in this notice, the names of GNOME, the GNOME 155 | Foundation, 156 | and Bitstream Inc., shall not be used in advertising or otherwise to promote 157 | the sale, use or other dealings in this Font Software without prior written 158 | authorization from the GNOME Foundation or Bitstream Inc., respectively. 159 | For further information, contact: fonts at gnome dot org. 160 | 161 | AMSFonts (v. 2.2) copyright 162 | 163 | The PostScript Type 1 implementation of the AMSFonts produced by and 164 | previously distributed by Blue Sky Research and Y&Y, Inc. are now freely 165 | available for general use. This has been accomplished through the 166 | cooperation 167 | of a consortium of scientific publishers with Blue Sky Research and Y&Y. 168 | Members of this consortium include: 169 | 170 | Elsevier Science IBM Corporation Society for Industrial and Applied 171 | Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS) 172 | 173 | In order to assure the authenticity of these fonts, copyright will be 174 | held by 175 | the American Mathematical Society. This is not meant to restrict in any way 176 | the legitimate use of the fonts, such as (but not limited to) electronic 177 | distribution of documents containing these fonts, inclusion of these fonts 178 | into other public domain or commercial font collections or computer 179 | applications, use of the outline data to create derivative fonts and/or 180 | faces, etc. However, the AMS does require that the AMS copyright notice be 181 | removed from any derivative versions of the fonts which have been altered in 182 | any way. In addition, to ensure the fidelity of TeX documents using Computer 183 | Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces, 184 | has requested that any alterations which yield different font metrics be 185 | given a different name. 186 | 187 | $Id$ 188 | -------------------------------------------------------------------------------- /img2img/PHP-Instagram-effects-master/src/Image/Filter.php: -------------------------------------------------------------------------------- 1 | image = $image; 27 | 28 | $this->assetDirectory = dirname(dirname(dirname(__FILE__))) . '/assets/'; 29 | } 30 | 31 | /** 32 | * Get the current image resource 33 | * 34 | * @return resource 35 | */ 36 | 37 | public function getImage() { 38 | 39 | return $this->image; 40 | } 41 | 42 | public function bubbles() { 43 | 44 | $dest = imagecreatefromjpeg($this->assetDirectory . "pattern4.jpg"); 45 | 46 | $x = imagesx($this->image); 47 | $y = imagesy($this->image); 48 | 49 | $x2 = imagesx($dest); 50 | $y2 = imagesy($dest); 51 | 52 | $thumb = imagecreatetruecolor($x, $y); 53 | imagecopyresized($thumb, $dest, 0, 0, 0, 0, $x, $y, $x2, $y2); 54 | 55 | imagecopymerge($this->image, $thumb, 0, 0, 0, 0, $x, $y, 20); 56 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, 40); 57 | imagefilter($this->image, IMG_FILTER_CONTRAST, -10); 58 | 59 | return $this; 60 | } 61 | 62 | public function colorise() { 63 | 64 | $dest = imagecreatefromjpeg($this->assetDirectory . "pattern5.jpg"); 65 | 66 | $x = imagesx($this->image); 67 | $y = imagesy($this->image); 68 | 69 | $x2 = imagesx($dest); 70 | $y2 = imagesy($dest); 71 | 72 | $thumb = imagecreatetruecolor($x, $y); 73 | imagecopyresized($thumb, $dest, 0, 0, 0, 0, $x, $y, $x2, $y2); 74 | 75 | imagecopymerge($this->image, $thumb, 0, 0, 0, 0, $x, $y, 40); 76 | imagefilter($this->image, IMG_FILTER_CONTRAST, -25); 77 | 78 | return $this; 79 | } 80 | 81 | public function sepia() { 82 | 83 | imagefilter($this->image, IMG_FILTER_GRAYSCALE); 84 | imagefilter($this->image, IMG_FILTER_COLORIZE, 100, 50, 0); 85 | 86 | return $this; 87 | } 88 | 89 | public function sepia2() { 90 | imagefilter($this->image, IMG_FILTER_GRAYSCALE); 91 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, -10); 92 | imagefilter($this->image, IMG_FILTER_CONTRAST, -20); 93 | imagefilter($this->image, IMG_FILTER_COLORIZE, 60, 30, -15); 94 | 95 | return $this; 96 | } 97 | 98 | public function sharpen() { 99 | 100 | $gaussian = array( 101 | array(1.0, 1.0, 1.0), 102 | array(1.0, -7.0, 1.0), 103 | array(1.0, 1.0, 1.0) 104 | ); 105 | imageconvolution($this->image, $gaussian, 1, 4); 106 | 107 | return $this; 108 | } 109 | 110 | public function emboss() { 111 | 112 | $gaussian = array( 113 | array(-2.0, -1.0, 0.0), 114 | array(-1.0, 1.0, 1.0), 115 | array(0.0, 1.0, 2.0) 116 | ); 117 | 118 | imageconvolution($this->image, $gaussian, 1, 5); 119 | 120 | return $this; 121 | } 122 | 123 | public function cool() { 124 | 125 | imagefilter($this->image, IMG_FILTER_MEAN_REMOVAL); 126 | imagefilter($this->image, IMG_FILTER_CONTRAST, -50); 127 | 128 | return $this; 129 | } 130 | 131 | public function old() { 132 | 133 | $dest = imagecreatefromjpeg($this->assetDirectory . "bg1.jpg"); 134 | 135 | $x = imagesx($this->image); 136 | $y = imagesy($this->image); 137 | 138 | $x2 = imagesx($dest); 139 | $y2 = imagesy($dest); 140 | 141 | $thumb = imagecreatetruecolor($x, $y); 142 | imagecopyresized($thumb, $dest, 0, 0, 0, 0, $x, $y, $x2, $y2); 143 | 144 | imagecopymerge($this->image, $thumb, 0, 0, 0, 0, $x, $y, 30); 145 | 146 | return $this; 147 | } 148 | 149 | public function old2() { 150 | 151 | $dest = imagecreatefromjpeg($this->assetDirectory . "pattern1.jpg"); 152 | 153 | $x = imagesx($this->image); 154 | $y = imagesy($this->image); 155 | 156 | $x2 = imagesx($dest); 157 | $y2 = imagesy($dest); 158 | 159 | $thumb = imagecreatetruecolor($x, $y); 160 | imagecopyresized($thumb, $dest, 0, 0, 0, 0, $x, $y, $x2, $y2); 161 | 162 | imagecopymerge($this->image, $thumb, 0, 0, 0, 0, $x, $y, 40); 163 | 164 | return $this; 165 | } 166 | 167 | public function old3() { 168 | 169 | imagefilter($this->image, IMG_FILTER_CONTRAST, -30); 170 | 171 | $dest = imagecreatefromjpeg($this->assetDirectory . "pattern3.jpg"); 172 | 173 | $x = imagesx($this->image); 174 | $y = imagesy($this->image); 175 | 176 | $x2 = imagesx($dest); 177 | $y2 = imagesy($dest); 178 | 179 | $thumb = imagecreatetruecolor($x, $y); 180 | imagecopyresized($thumb, $dest, 0, 0, 0, 0, $x, $y, $x2, $y2); 181 | 182 | imagecopymerge($this->image, $thumb, 0, 0, 0, 0, $x, $y, 50); 183 | 184 | return $this; 185 | } 186 | 187 | public function light() { 188 | 189 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, 10); 190 | imagefilter($this->image, IMG_FILTER_COLORIZE, 100, 50, 0, 10); 191 | 192 | return $this; 193 | } 194 | 195 | public function aqua() { 196 | 197 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 70, 0, 30); 198 | 199 | return $this; 200 | } 201 | 202 | public function fuzzy() { 203 | 204 | $gaussian = array( 205 | array(1.0, 1.0, 1.0), 206 | array(1.0, 1.0, 1.0), 207 | array(1.0, 1.0, 1.0) 208 | ); 209 | 210 | imageconvolution($this->image, $gaussian, 9, 20); 211 | 212 | return $this; 213 | } 214 | 215 | public function boost() { 216 | 217 | imagefilter($this->image, IMG_FILTER_CONTRAST, -35); 218 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, 10); 219 | 220 | return $this; 221 | } 222 | 223 | public function boost2() { 224 | imagefilter( $this->image, IMG_FILTER_CONTRAST, -35); 225 | imagefilter( $this->image, IMG_FILTER_COLORIZE, 25, 25, 25); 226 | 227 | return $this; 228 | } 229 | 230 | public function gray() { 231 | 232 | imagefilter($this->image, IMG_FILTER_CONTRAST, -60); 233 | imagefilter($this->image, IMG_FILTER_GRAYSCALE); 234 | 235 | return $this; 236 | } 237 | 238 | public function antique() { 239 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, 0); 240 | imagefilter($this->image, IMG_FILTER_CONTRAST, -30); 241 | imagefilter($this->image, IMG_FILTER_COLORIZE, 75, 50, 25); 242 | 243 | return $this; 244 | } 245 | 246 | public function blackwhite() { 247 | imagefilter($this->image, IMG_FILTER_GRAYSCALE); 248 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, 10); 249 | imagefilter($this->image, IMG_FILTER_CONTRAST, -20); 250 | 251 | return $this; 252 | } 253 | 254 | public function blur() { 255 | imagefilter($this->image, IMG_FILTER_SELECTIVE_BLUR); 256 | imagefilter($this->image, IMG_FILTER_GAUSSIAN_BLUR); 257 | imagefilter($this->image, IMG_FILTER_CONTRAST, -15); 258 | imagefilter($this->image, IMG_FILTER_SMOOTH, -2); 259 | 260 | return $this; 261 | } 262 | 263 | public function vintage() { 264 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, 10); 265 | imagefilter($this->image, IMG_FILTER_GRAYSCALE); 266 | imagefilter($this->image, IMG_FILTER_COLORIZE, 40, 10, -15); 267 | 268 | return $this; 269 | } 270 | 271 | public function concentrate() { 272 | imagefilter($this->image, IMG_FILTER_GAUSSIAN_BLUR); 273 | imagefilter($this->image, IMG_FILTER_SMOOTH, -10); 274 | 275 | return $this; 276 | } 277 | 278 | public function hermajesty() { 279 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, -10); 280 | imagefilter($this->image, IMG_FILTER_CONTRAST, -5); 281 | imagefilter($this->image, IMG_FILTER_COLORIZE, 80, 0, 60); 282 | 283 | return $this; 284 | } 285 | 286 | public function everglow() { 287 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, -30); 288 | imagefilter($this->image, IMG_FILTER_CONTRAST, -5); 289 | imagefilter($this->image, IMG_FILTER_COLORIZE, 30, 30, 0); 290 | 291 | return $this; 292 | } 293 | 294 | public function freshblue() { 295 | imagefilter($this->image, IMG_FILTER_CONTRAST, -5); 296 | imagefilter($this->image, IMG_FILTER_COLORIZE, 20, 0, 80, 60); 297 | 298 | return $this; 299 | } 300 | 301 | public function tender() { 302 | imagefilter($this->image, IMG_FILTER_CONTRAST, 5); 303 | imagefilter($this->image, IMG_FILTER_COLORIZE, 80, 20, 40, 50); 304 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 40, 40, 100); 305 | imagefilter($this->image, IMG_FILTER_SELECTIVE_BLUR); 306 | 307 | return $this; 308 | } 309 | 310 | public function dream() { 311 | imagefilter($this->image, IMG_FILTER_COLORIZE, 150, 0, 0, 50); 312 | imagefilter($this->image, IMG_FILTER_NEGATE); 313 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 50, 0, 50); 314 | imagefilter($this->image, IMG_FILTER_NEGATE); 315 | imagefilter($this->image, IMG_FILTER_GAUSSIAN_BLUR); 316 | 317 | return $this; 318 | } 319 | 320 | public function frozen() { 321 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, -15); 322 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 0, 100, 50); 323 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 0, 100, 50); 324 | imagefilter($this->image, IMG_FILTER_GAUSSIAN_BLUR); 325 | 326 | return $this; 327 | } 328 | 329 | public function forest() { 330 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 0, 150, 50); 331 | imagefilter($this->image, IMG_FILTER_NEGATE); 332 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 0, 150, 50); 333 | imagefilter($this->image, IMG_FILTER_NEGATE); 334 | imagefilter($this->image, IMG_FILTER_SMOOTH, 10); 335 | 336 | return $this; 337 | } 338 | 339 | public function rain() { 340 | imagefilter($this->image, IMG_FILTER_GAUSSIAN_BLUR); 341 | imagefilter($this->image, IMG_FILTER_MEAN_REMOVAL); 342 | imagefilter($this->image, IMG_FILTER_NEGATE); 343 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 80, 50, 50); 344 | imagefilter($this->image, IMG_FILTER_NEGATE); 345 | imagefilter($this->image, IMG_FILTER_SMOOTH, 10); 346 | 347 | return $this; 348 | } 349 | 350 | public function orangepeel() { 351 | imagefilter($this->image, IMG_FILTER_COLORIZE, 100, 20, -50, 20); 352 | imagefilter($this->image, IMG_FILTER_SMOOTH, 10); 353 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, -10); 354 | imagefilter($this->image, IMG_FILTER_CONTRAST, 10); 355 | imagegammacorrect($this->image, 1, 1.2 ); 356 | 357 | return $this; 358 | } 359 | 360 | public function darken() { 361 | imagefilter($this->image, IMG_FILTER_GRAYSCALE); 362 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, -50); 363 | 364 | return $this; 365 | } 366 | 367 | public function summer() { 368 | imagefilter($this->image, IMG_FILTER_COLORIZE, 0, 150, 0, 50); 369 | imagefilter($this->image, IMG_FILTER_NEGATE); 370 | imagefilter($this->image, IMG_FILTER_COLORIZE, 25, 50, 0, 50); 371 | imagefilter($this->image, IMG_FILTER_NEGATE); 372 | 373 | return $this; 374 | } 375 | 376 | public function retro() { 377 | imagefilter($this->image, IMG_FILTER_GRAYSCALE); 378 | imagefilter($this->image, IMG_FILTER_COLORIZE, 100, 25, 25, 50); 379 | 380 | return $this; 381 | } 382 | 383 | public function country() { 384 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, -30); 385 | imagefilter($this->image, IMG_FILTER_COLORIZE, 50, 50, 50, 50); 386 | imagegammacorrect($this->image, 1, 0.3); 387 | 388 | return $this; 389 | } 390 | 391 | public function washed() { 392 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, 30); 393 | imagefilter($this->image, IMG_FILTER_NEGATE); 394 | imagefilter($this->image, IMG_FILTER_COLORIZE, -50, 0, 20, 50); 395 | imagefilter($this->image, IMG_FILTER_NEGATE ); 396 | imagefilter($this->image, IMG_FILTER_BRIGHTNESS, 10); 397 | imagegammacorrect($this->image, 1, 1.2); 398 | 399 | return $this; 400 | } 401 | 402 | } 403 | -------------------------------------------------------------------------------- /ext-op-ml-php/ext-op-ml-php.class.php: -------------------------------------------------------------------------------- 1 | int(8) [1]=> int(64) [2]=> int(216) } 86 | * 87 | * @param array $arrvalues 88 | * @param integer $exp 89 | * @return array $arrvaluespowered 90 | */ 91 | public function pow( $values, $exp = 2 ){ 92 | if( is_array( $values ) ){ 93 | foreach( $values as &$value ){ 94 | $value = $this->pow( $value, $exp ); 95 | } 96 | return $values; 97 | } else { 98 | return pow( $values, $exp ); 99 | } 100 | } // /pow() 101 | 102 | 103 | 104 | /** 105 | * Calculate max .ttf length in pixels of arry of strings 106 | * 107 | * @param string $text 108 | * @param string $font_path 109 | * @param float $text 110 | * @param string $font_size 111 | * @param float $angle // Default 0 degrees 112 | * @return int $max_length 113 | */ 114 | public function arr_max_len_ttf( $arr, $font_path, $font_size, $angle = 0 ){ 115 | $max_length = 0; 116 | foreach( $arr as $key => $value){ 117 | $length_value = $this->str_len_ttf( $value, $font_path, $font_size ); 118 | if( $length_value > $max_length ){ 119 | $max_length = $length_value; 120 | } 121 | } 122 | 123 | unset( $length_value ); 124 | unset( $value ); 125 | 126 | return $max_length; 127 | }// /arr_max_len_ttf() 128 | 129 | 130 | 131 | /** 132 | * Return Length in pixels of $text with a True Type Font & Size given 133 | * 134 | * ex: 135 | * str_len_ttf( "Hellow Wold", __DIR__ . "/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf", 12 ): Length in pixels of "Hellow Wold" string, with DejaVuSans & size 12: 136 | * int(100) 137 | * 138 | * Note: Better to get here to remember returned values of imagettfbbox(): 139 | * 0 lower left corner, X position 140 | * 1 lower left corner, Y position 141 | * 2 lower right corner, X position 142 | * 3 lower right corner, Y position 143 | * 4 upper right corner, X position 144 | * 5 upper right corner, Y position 145 | * 6 upper left corner, X position 146 | * 7 upper left corner, Y position 147 | * 148 | * @param string $text 149 | * @param string $font_path 150 | * @param float $text 151 | * @param string $font_size 152 | * @param float $angle // Default 0 degrees 153 | * @return int $str_len_ttf 154 | */ 155 | public function str_len_ttf( $text, $font_path, $font_size, $angle = 0 ){ 156 | $font_measures = imagettfbbox( $font_size, $angle, $font_path, $text ); 157 | return abs( $font_measures[2] - $font_measures[0] ); 158 | } // /str_len_ttf() 159 | 160 | 161 | 162 | /** 163 | * Return Height in pixels of $text with a True Type Font & Size given 164 | * 165 | * ex: 166 | * str_len_ttf( "Hellow Wold", __DIR__ . "/fonts/dejavu-fonts-ttf-2.37/ttf/DejaVuSans.ttf", 12 ): Height in pixels of "Hellow Wold" string, with DejaVuSans & size 12: 167 | * int(100) 168 | * 169 | * Note: Better to get here to remember returned values of imagettfbbox(): 170 | * 0 lower left corner, X position 171 | * 1 lower left corner, Y position 172 | * 2 lower right corner, X position 173 | * 3 lower right corner, Y position 174 | * 4 upper right corner, X position 175 | * 5 upper right corner, Y position 176 | * 6 upper left corner, X position 177 | * 7 upper left corner, Y position 178 | * 179 | * @param string $text 180 | * @param string $font_path 181 | * @param float $text 182 | * @param string $font_size 183 | * @param float $angle // Default 0 degrees 184 | * @return int $str_len_ttf 185 | */ 186 | public function str_height_ttf( $text, $font_path, $font_size, $angle = 0 ){ 187 | $font_measures = imagettfbbox( $font_size, $angle, $font_path, $text ); 188 | return abs( $font_measures[3] - $font_measures[1] ); 189 | } // /str_height_ttf() 190 | 191 | 192 | 193 | /** 194 | * Transform inches in pixels with a dpis given 195 | * 196 | * ex: 197 | * inch_2_pixels( 6.4, 100): 6.4 inches at 100 dpis in Pixels: 198 | * float(640) 199 | * 200 | * @param array $size_inch 201 | * @param array $dpis // Default 72 dpis 202 | * @return int $size_inch * $dpis 203 | */ 204 | public function inch_2_pixels( $size_inch, $dpis = 72 ){ 205 | return (int)( $size_inch * $dpis ); 206 | } // /inch_2_pixels() 207 | 208 | 209 | 210 | /** 211 | * Transform Hex to rgb array ['red', 'green, 'blue'] 212 | * Thanks to https://stackoverflow.com/questions/15202079/convert-hex-color-to-rgb-values-in-php 213 | * 214 | * ex: 215 | * hex2rgb( "#1f77b4" ): Color "#1f77b4" in vector of integers RGB: 216 | * array(3) { [0]=> int(31) [1]=> int(119) [2]=> int(180) } 217 | * 218 | * @param array $hex_color 219 | * @return array [$r, $g, $b] 220 | */ 221 | public function hex2rgb( $hex_color ){ 222 | list( $r, $g, $b ) = array_map( 223 | function ( $c ) { 224 | return hexdec( str_pad( $c, 2, $c ) ); 225 | }, 226 | str_split( ltrim( $hex_color, '#' ), strlen( $hex_color ) > 4 ? 2 : 1 ) 227 | ); 228 | 229 | return [$r, $g, $b]; 230 | } // /hex2rgb() 231 | 232 | /** 233 | * Returns the magnitude value with the sign of the sign number 234 | * 235 | * Thanks to https://github.com/markrogoyski/math-php/blob/master/src/Arithmetic.php 236 | * 237 | * @param float $magnitude 238 | * @param float $sign 239 | * 240 | * @return float $magnitude with the sign of $sign 241 | */ 242 | public function copySign(float $magnitude, float $sign){ 243 | return ( ( $sign >= 0 )?abs( $magnitude ):-abs( $magnitude ) ); 244 | } 245 | 246 | /** 247 | * search a number in SORTED array 248 | * Return id in array 249 | * if not found, return false 250 | * NOTE: Be carefull with comparations on id = 0 and id = false. 251 | * Use: if( binarySearch() === false ) 252 | * 253 | * Thanks to https://www.geeksforgeeks.org/binary-search-php/ 254 | * 255 | * @param array $arr 256 | * @param number $x 257 | * @param integer $start 258 | * @param integer $end 259 | */ 260 | 261 | public function binarySearch($arr, $x, $start = 0, $end = null){ 262 | if( is_null( $end) ){ 263 | $end = count( $arr ); 264 | } 265 | 266 | if ($end < $start){ 267 | return false; 268 | } 269 | 270 | $mid = floor(($end + $start)/2); 271 | 272 | if ($arr[$mid] == $x) 273 | return (int)$mid; 274 | else if ($arr[$mid] > $x) { 275 | // call binarySearch on [start, mid - 1] 276 | return $this->binarySearch($arr, $x, $start, $mid - 1); 277 | } else { 278 | // call binarySearch on [mid + 1, end] 279 | return $this->binarySearch($arr, $x, $mid + 1, $end); 280 | } 281 | } // /binarySearch() 282 | 283 | 284 | 285 | /** 286 | * method to get frequency values in array between $min & $max. $min <= $values < $max 287 | * $max is not included in comparation by default. Only lower values that $max will be inside sum of $freq. 288 | * Set $includemax to true to include the values equal to $max too. $min <= $values <= $max 289 | * 290 | * @param array $arrval 291 | * @param array $min 292 | * @param array $max 293 | * @param boolean $includemax // if false, values < $max ar included. if true, values <= $max are included 294 | * @param boolean $arrvalsorted // if the array is sorted you can to pass true for more speed 295 | * @return integer $freq 296 | */ 297 | public function freq( $arrval, $min, $max, $includemax = false, $arrvalsorted = false ){ 298 | return ( ( $arrvalsorted ) ? $this->freqsorted( $arrval, $min, $max, $includemax ) : $this->frequnsorted( $arrval, $min, $max, $includemax ) ); 299 | } // /freq() 300 | 301 | 302 | 303 | /** 304 | * method to get frequency values in SORTED array between $min & $max. $min <= $values < $max 305 | * $max is not included in comparation by default. Only lower values that $max will be inside sum of $freq. 306 | * Set $includemax to true to include the values equal to $max too. $min <= $values <= $max 307 | * 308 | * @param array $arrval 309 | * @param number $min 310 | * @param number $max 311 | * @param boolean $includemax // if false, values < $max ar included. if true, values <= $max are included 312 | * @return integer $freq 313 | */ 314 | private function freqsorted( $arrval, $min, $max, $includemax = false ){ 315 | $freq = 0; 316 | 317 | // Binary search 318 | // Thanks to https://stackoverflow.com/questions/6553970/find-the-first-element-in-a-sorted-array-that-is-greater-than-the-target 319 | $count = count( $arrval ); 320 | $low = 0; 321 | $high = $count; 322 | 323 | while( $low != $high ) { 324 | $mid = ($low + $high) / 2; 325 | if ($arrval[$mid] < $min) { 326 | $low = $mid + 1; 327 | } 328 | else { 329 | $high = $mid; 330 | } 331 | } 332 | /* Now, low and high both point to the element in question. */ 333 | 334 | // Find $min in array. It may be that there are minors equal before 335 | $i = $low; 336 | while( $arrval[$i]>=$min && ($arrval[$i]<$max || ($arrval[$i]==$max && $includemax)) && $i < $count ){ 337 | ++$freq; 338 | ++$i; 339 | } 340 | 341 | unset( $count ); 342 | unset( $low ); 343 | unset( $high ); 344 | unset( $mid ); 345 | unset( $i ); 346 | 347 | return $freq; 348 | } // /freqsorted() 349 | 350 | 351 | 352 | /** 353 | * method to get frequency values in UNSORTED array between $min & $max. $min <= $values < $max 354 | * $max is not included in comparation by default. Only lower values that $max will be inside sum of $freq. 355 | * Set $includemax to true to include the values equal to $max too. $min <= $values <= $max 356 | * 357 | * @param array $arrval 358 | * @param number $min 359 | * @param number $max 360 | * @param boolean $includemax // if false, values < $max ar included. if true, values <= $max are included 361 | * @return integer $freq 362 | */ 363 | private function frequnsorted( $arrval, $min, $max, $includemax = false ){ 364 | $freq = 0; 365 | 366 | foreach($arrval as $val){ 367 | if( $val>=$min && ($val<$max || ($val==$max && $includemax)) ){ 368 | ++$freq; 369 | } 370 | } 371 | 372 | unset( $val ); 373 | 374 | return $freq; 375 | } // /frequnsorted() 376 | 377 | 378 | 379 | /** 380 | * Metohd to get a Average of array 381 | * @param array $arrval 382 | * @return float $avg 383 | */ 384 | public function avg( $arrval ){ 385 | return array_sum($arrval)/count($arrval); 386 | } // /avg() 387 | 388 | 389 | 390 | /** 391 | * Metohd to check if array is associative array 392 | * @param array $var 393 | * @return boolean $is_assoc 394 | */ 395 | function is_assoc($var){ 396 | return is_array($var) && array_diff_key($var,array_keys(array_keys($var))); 397 | } // /is_assoc() 398 | 399 | }// /ext_op 400 | ?> -------------------------------------------------------------------------------- /example.php: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Example Graph-PHP 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | compute_offset($max_min[0])."/".$graph->compute_offset($max_min[1]); 39 | //var_dump($graph->compute_offset($max_min) ); 40 | 41 | //unset($graph); 42 | 43 | 44 | 45 | $graph = new graph(); 46 | $graph->bar( [1, 2, 3, 4] ); 47 | ?> 48 | 49 | 50 | title("Here your graph TITLE"); 58 | $graph->bar( [1, 2, 3, 4] ); 59 | ?> 60 | 61 | 62 | ylabel( 'Here your graph Y LABEL' ); 69 | $graph->bar( [1, 2, 3, 4] ); 70 | ?> 71 | 72 | 73 | xlabel( 'Here your graph X LABEL' ); 80 | $graph->bar( [1, 2, 3, 4] ); 81 | ?> 82 | 83 | 84 | bar( [10, 20, 30, 40], [1, 4, 9, 16] ); 94 | $graph->title("With X & Y Values"); 95 | ?> 96 | 97 | 98 | bar( [1, 2, 3, 4], [1, 4, 9, 16] ); 106 | $graph->axes([0, 6, 0, 20]); 107 | $graph->title("Limits Axis X & Y"); 108 | ?> 109 | 110 | 111 | plot( [1, 1.5, 2, 1.8, 3] ); 118 | $graph->title("Simple Plot graph with line"); 119 | ?> 120 | 121 | 122 | plot( [1, 1.5, 2, 1.8, 3] ); 129 | $graph->plot( [2, 2.8, 1.7, 2, 2.3] ); 130 | $graph->title("Multi Line"); 131 | ?> 132 | 133 | 134 | math->linspace( 0, 2, 50 ); 141 | $graph->plot( $x, $x, ['label'=>'linear'] ); 142 | $graph->plot( $x, $graph->math->pow($x, 2), ['label'=>'quadratic'] ); 143 | $graph->plot( $x, $graph->math->pow($x, 3), ['label'=>'cubic'] ); 144 | $graph->xlabel('x label'); 145 | $graph->ylabel('y label'); 146 | $graph->title("Simple Plot. With Legend & Labels X, Y"); 147 | $graph->legend( ); 148 | ?> 149 | 150 | 151 | bar( [1, 2, 3, 4], [10, 9, 10, 8] ); 160 | $graph->bar( [1, 2, 3, 4], [8, 6, 9, 7] ); 161 | $graph->bar( [1, 2, 3, 4], [6, 5, 7, 5] ); 162 | $graph->bar( [1, 2, 3, 4], [3, 3, 4, 2] ); 163 | $graph->axes([0, 6, 0, 20]); 164 | $graph->title( 'Multi Bar & fixed Axis Values' ); 165 | ?> 166 | 167 | 168 | bar( [1, 2, 3, 4, 5, 6, 7], [1, 4, 9, 16, 17, 18, 17] ); 177 | $graph->plot( [1, 2, 3, 4, 5, 6, 7], [10,8, 5, 10,15, 16, 15] ); 178 | $graph->title( 'Bar & Line' ); 179 | ?> 180 | 181 | 182 | bar( [1, 2, 3, 4, 5, 6, 7], [1, 4, 9, 16, 17, 18, 17] ); 191 | $graph->plot( [1, 2, 3, 4, 5, 6, 7], [10,8, 5, 10,15, 16, 15] ); 192 | $graph->title( 'Legend' ); 193 | $graph->legend( ); 194 | ?> 195 | 196 | 197 | bar( [1, 2, 3, 4, 5, 6, 7], [1, 4, 9, 16, 17, 18, 17], ['label'=>'Name Legend 1'] ); 206 | $graph->plot( [1, 2, 3, 4, 5, 6, 7], [10,8, 5, 10,15, 16, 15], ['label'=>'Name Legend 2'] ); 207 | $graph->title( 'Legend with label names' ); 208 | $graph->legend( ); 209 | ?> 210 | 211 | 212 | plot( [4, 5, 6, 7], [1, 4, 9, 16], ['marker' => 'x'] ); 220 | $graph->plot( [4, 5, 6, 7], [5, 8, 7, 10], ['marker' => 'o'] ); 221 | $graph->axes([2, 9, 0, 20]); 222 | $graph->title( 'Lines & Legend with "x" & "o" markers' ); 223 | $graph->legend( ); 224 | ?> 225 | 226 | 227 | plot( [4, 5, 6, 7], [1, 4, 9, 16], ['marker' => 'd'] ); 234 | $graph->plot( [4, 5, 6, 7], [5, 8, 7, 10], ['marker' => 'd'] ); 235 | $graph->axes([2, 9, 0, 20]); 236 | $graph->title( '"d" - Diamond Marker' ); 237 | ?> 238 | 239 | 240 | plot( [4, 5, 6, 7], [1, 4, 9, 16], 'o' ); 249 | $graph->plot( [4, 5, 6, 7], [5, 8, 7, 10], 'x-' ); 250 | $graph->axes([2, 9, 0, 20]); 251 | $graph->title( 'Line with marker & only markers' ); 252 | ?> 253 | 254 | 255 | math->linspace( 0, 5, 20 ); 265 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 266 | $graph->title( 'Colors, disctont. line & markers "--", "square", "^"' ); 267 | ?> 268 | 269 | 270 | bar( [4.2, 4.4, 4.6, 4.8, 5, 5.2, 5.4, 5.6, 5.8, 6], [1, 4, 9, 16, 1, 4, 9, 16, 5, 4] ); 279 | $graph->xlabel( 'entry a' ); 280 | $graph->title( 'Histogram of IQ' ); 281 | ?> 282 | 283 | 284 | plot( [1, 2, 3, 4], [1, 4, 9, 16] ); 293 | $graph->plot( [1, 2, 3, 4], [10, 3, 5, 10] ); 294 | $graph->plot( [1, 2, 3, 4], [5, 4, 3, 4] ); 295 | $graph->plot( [1, 2, 3, 4], [7, 4, 10, 15] ); 296 | $graph->plot( [1, 2, 3, 4], [7, 8, 4, 2] ); 297 | $graph->plot( [1, 2, 3, 4], [2, 1, 2, 20] ); 298 | $graph->plot( [1, 2, 3, 4], [20, 10, 20, 20] ); 299 | $graph->plot( [1, 2, 3, 4], [3, 4, 5, 4] ); 300 | $graph->plot( [1, 2, 3, 4], [7, 8, 9, 10] ); 301 | $graph->plot( [1, 2, 3, 4], [10, 11, 12, 13] ); 302 | $graph->plot( [1, 2, 3, 4], [14, 15, 16, 17] ); 303 | $graph->plot( [1, 2, 3, 4], [16, 17, 18, 19] ); 304 | $graph->axes([null, null, 0, 20]); 305 | $graph->title( 'A lot of lines' ); 306 | ?> 307 | 308 | 309 | set_drawguidelines( ); 317 | 318 | $graph->plot( [1, 2, 3, 4], [1, 4, 9, 16] ); 319 | $graph->plot( [1, 2, 3, 4], [10, 3, 5, 10] ); 320 | $graph->plot( [1, 2, 3, 4], [5, 4, 3, 4] ); 321 | $graph->plot( [1, 2, 3, 4], [7, 4, 10, 15] ); 322 | $graph->plot( [1, 2, 3, 4], [7, 8, 4, 2] ); 323 | $graph->plot( [1, 2, 3, 4], [2, 1, 2, 20] ); 324 | $graph->plot( [1, 2, 3, 4], [20, 10, 20, 20] ); 325 | $graph->plot( [1, 2, 3, 4], [3, 4, 5, 4] ); 326 | $graph->plot( [1, 2, 3, 4], [7, 8, 9, 10] ); 327 | $graph->plot( [1, 2, 3, 4], [10, 11, 12, 13] ); 328 | $graph->plot( [1, 2, 3, 4], [14, 15, 16, 17] ); 329 | $graph->plot( [1, 2, 3, 4], [16, 17, 18, 19] ); 330 | $graph->axes([null, null, 0, 20]); 331 | $graph->title( 'Better with Guidelines' ); 332 | ?> 333 | 334 | 335 | plot( [4, 5, 6, 7], [1, 4, 9, 16], ['marker' => __DIR__ . '/author.png',] ); 344 | $graph->title( 'Custom image ^_^\'' ); 345 | ?> 346 | 347 | 348 | plot( [4, 5, 6, 7], [1, 4, 9, 16], ['marker' => __DIR__ . '/custom_marker.png', 'label'=>'PHP'] ); 357 | $graph->plot( [4, 5, 6, 7], [3, 7, 13, 8], ['marker' => __DIR__ . '/tux.png', 'label'=>'GNU/Linux'] ); 358 | $graph->plot( [4, 5, 6, 7], [5, 2, 7, 5], ['marker' => __DIR__ . '/nginx.png', 'label'=>'NGINX'] ); 359 | $graph->legendwidthlines( 65 ); 360 | $graph->legendlabelheight( 33 ); 361 | $graph->title( 'Custom Images with Legend' ); 362 | $graph->legend( ); 363 | ?> 364 | 365 | 366 | plot( [4, 5, 6, 7], [1, 4, 9, 16], ['marker' => __DIR__ . '/custom_marker.png', 'label'=>'PHP'] ); 375 | $graph->plot( [4, 5, 6, 7], [3, 7, 13, 8], ['marker' => __DIR__ . '/tux.png', 'label'=>'GNU/Linux'] ); 376 | $graph->plot( [4, 5, 6, 7], [5, 2, 7, 5], ['marker' => __DIR__ . '/nginx.png', 'label'=>'NGINX'] ); 377 | $graph->set_drawguidelines( ); 378 | $graph->legendwidthlines( 65 ); 379 | $graph->legendlabelheight( 33 ); 380 | $graph->title( 'Better with Guidelines' ); 381 | $graph->legend( ); 382 | ?> 383 | 384 | 385 | imread( __DIR__ .'/background_example.jpg'); 395 | $x = $graph->math->linspace( 0, 5, 20 ); 396 | $graph->title( 'Original Background' ); 397 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 398 | ?> 399 | 400 | 401 | imread( __DIR__ .'/background_example.jpg'); 411 | $graph->title( 'Scaled Bicubic Background' ); 412 | $graph->bckgr_img_gd->imagescale( 64, -1, IMG_BICUBIC ); 413 | $x = $graph->math->linspace( 0, 5, 20 ); 414 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 415 | ?> 416 | 417 | 418 | imread( __DIR__ .'/background_example.jpg'); 426 | $graph->title( 'Smooth Background' ); 427 | $graph->bckgr_img_gd->filter( IMG_FILTER_SMOOTH, -7 ); 428 | $x = $graph->math->linspace( 0, 5, 20 ); 429 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 430 | ?> 431 | 432 | 433 | imread( __DIR__ .'/background_example.jpg'); 440 | $graph->title( 'Gaussian Blur Filter Background' ); 441 | for($i = 0; $i< 10; $i++ ){ 442 | $graph->bckgr_img_gd->filter( IMG_FILTER_GAUSSIAN_BLUR ); 443 | } 444 | $x = $graph->math->linspace( 0, 5, 20 ); 445 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 446 | ?> 447 | 448 | 449 | imread( __DIR__ .'/background_example.jpg'); 461 | $graph->title( 'Sepia, Brightness & contrast Background' ); 462 | $graph->bckgr_img_gd->filter( IMG_FILTER_SEPIA, 4, 80 ); 463 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, -50 ); 464 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 100 ); 465 | $graph->bckgr_img_gd->filter( IMG_FILTER_CONTRAST, 50 ); 466 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 100 ); 467 | $x = $graph->math->linspace( 0, 5, 20 ); 468 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 469 | ?> 470 | 471 | 472 | imread( __DIR__ .'/background_example.jpg'); 481 | $graph->title( 'Gray, Brightness & contrast Background' ); 482 | $graph->bckgr_img_gd->filter( IMG_FILTER_GRAYSCALE ); 483 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, -50 ); 484 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 100 ); 485 | $graph->bckgr_img_gd->filter( IMG_FILTER_CONTRAST, 50 ); 486 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 115 ); 487 | $x = $graph->math->linspace( 0, 5, 20 ); 488 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 489 | ?> 490 | 491 | 492 | imread( __DIR__ .'/background_example.jpg'); 501 | $graph->title( 'B/W, Brightness & contrast Background' ); 502 | $graph->bckgr_img_gd->filter( IMG_FILTER_BLACK_WHITE ); 503 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, -50 ); 504 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 100 ); 505 | $graph->bckgr_img_gd->filter( IMG_FILTER_CONTRAST, 50 ); 506 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 100 ); 507 | $x = $graph->math->linspace( 0, 5, 20 ); 508 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 509 | ?> 510 | 511 | 512 | imread( __DIR__ .'/background_example.jpg'); 522 | $graph->title( 'Scaled & unscaled with Bilinear/G. Blur Background' ); 523 | 524 | $graph->bckgr_img_gd->imagescale( 64, -1, IMG_BILINEAR_FIXED ); 525 | $graph->bckgr_img_gd->filter( IMG_FILTER_GAUSSIAN_BLUR ); 526 | $graph->bckgr_img_gd->imagescale( 400, -1, IMG_BILINEAR_FIXED ); 527 | 528 | $x = $graph->math->linspace( 0, 5, 20 ); 529 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 530 | ?> 531 | 532 | 533 | imread( __DIR__ .'/background_example.jpg'); 542 | $graph->title( 'Scaled & unscaled with Bicubic/G. Blur Background x1' ); 543 | 544 | $graph->bckgr_img_gd->imagescale( 64, -1, IMG_BICUBIC ); 545 | $graph->bckgr_img_gd->filter( IMG_FILTER_GAUSSIAN_BLUR ); 546 | $graph->bckgr_img_gd->imagescale( 400, -1, IMG_BICUBIC ); 547 | 548 | $x = $graph->math->linspace( 0, 5, 20 ); 549 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 550 | ?> 551 | 552 | 553 | imread( __DIR__ .'/background_example.jpg'); 562 | $graph->title( 'Scaled & unscaled with Bicubic/G. Blur Background x3' ); 563 | 564 | $graph->bckgr_img_gd->imagescale( 64, -1, IMG_BICUBIC ); 565 | for($i = 0; $i< 3; $i++ ){ 566 | $graph->bckgr_img_gd->filter( IMG_FILTER_GAUSSIAN_BLUR ); 567 | } 568 | $graph->bckgr_img_gd->imagescale( 400, -1, IMG_BICUBIC ); 569 | 570 | $x = $graph->math->linspace( 0, 5, 20 ); 571 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 572 | ?> 573 | 574 | 575 | imread( __DIR__ .'/background_example.jpg'); 584 | $graph->title( 'Scaled & unscaled with Bicubic/G. Blur Background x5' ); 585 | 586 | $graph->bckgr_img_gd->imagescale( 64, -1, IMG_BICUBIC ); 587 | for($i = 0; $i< 5; $i++ ){ 588 | $graph->bckgr_img_gd->filter( IMG_FILTER_GAUSSIAN_BLUR ); 589 | } 590 | $graph->bckgr_img_gd->imagescale( 400, -1, IMG_BICUBIC ); 591 | 592 | $x = $graph->math->linspace( 0, 5, 20 ); 593 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 594 | ?> 595 | 596 | 597 | imread( __DIR__ .'/background_example.jpg'); 605 | $x = $graph->math->linspace( 0, 2, 50 ); 606 | $graph->plot( $x, $x, ['label'=>'linear'] ); 607 | $graph->plot( $x, $graph->math->pow($x, 2), ['label'=>'quadratic'] ); 608 | $graph->plot( $x, $graph->math->pow($x, 3), ['label'=>'cubic'] ); 609 | $graph->xlabel('Don\'t use darkness images O_o. Is an example'); 610 | $graph->ylabel('y label'); 611 | $graph->title("Simple Plot with background & Legend"); 612 | $graph->legend( ); 613 | ?> 614 | 615 | 616 | imread( __DIR__ .'/background_example.jpg'); 624 | $graph->set_drawguidelines( ); 625 | $x = $graph->math->linspace( 0, 2, 50 ); 626 | $graph->plot( $x, $x, ['label'=>'linear'] ); 627 | $graph->plot( $x, $graph->math->pow($x, 2), ['label'=>'quadratic'] ); 628 | $graph->plot( $x, $graph->math->pow($x, 3), ['label'=>'cubic'] ); 629 | $graph->xlabel('Horrible, but is an example of what you can do ;D'); 630 | $graph->ylabel('y label'); 631 | $graph->title("Simple Plot with background, Legend & Guidelines"); 632 | $graph->legend( ); 633 | ?> 634 | 635 | 636 | plot( [4, 5, 6, 7], [1, 4, 9, 13], ['marker' => __DIR__ . '/custom_marker.png', 'label'=>'PHP'] ); 648 | $graph->plot( [4, 5, 6, 7], [3, 6, 12, 8], ['marker' => __DIR__ . '/tux.png', 'label'=>'GNU/Linux'] ); 649 | $graph->plot( [4, 5, 6, 7], [5, 2, 7, 5], ['marker' => __DIR__ . '/nginx.png', 'label'=>'NGINX'] ); 650 | $graph->legendwidthlines( 65 ); 651 | $graph->legendlabelheight( 33 ); 652 | $graph->imread( __DIR__ .'/background_example.jpg'); 653 | $graph->title( 'Better use of background' ); 654 | $graph->set_drawguidelines( ); 655 | $graph->bckgr_img_gd->filter( IMG_FILTER_GRAYSCALE ); 656 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, -50 ); 657 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 100 ); 658 | $graph->bckgr_img_gd->filter( IMG_FILTER_CONTRAST, 50 ); 659 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 115 ); 660 | $graph->bckgr_img_gd->flip( ); 661 | $graph->legend(); 662 | ?> 663 | 664 | 665 | plot( [40000, 50000, 60000, 70000], [1, 4, 9, 13] ); 677 | $graph->title( 'Rotation Xticks' ); 678 | $graph->set_drawguidelines( ); 679 | $graph->xticks( ['rotation' => 45]); 680 | ?> 681 | 682 | 683 | title( 'Scatter' ); 697 | $graph->scatter( $arr_values ); 698 | ?> 699 | 700 | 701 | 'Male'] ], 711 | [ [4, 5, 5.7, 6, 7, 8], [8, 6, 7.3, 8, 7, 8], ['label'=>'Female'] ], 712 | ]; 713 | 714 | $graph->title( 'Scatter & legend' ); 715 | $graph->scatter( $arr_values ); 716 | $graph->legend( ); 717 | ?> 718 | 719 | 720 | title( 'VALUES FOR HISTOGRAM' ); 727 | $graph->bar( [10, 11, 40, 45, 50, 55, 60, 60, 70, 80, 85, 90, 95, 100, 105, 106, 107, 108, 109, 110, 111, 112, 123, 140, 150] ); 728 | ?> 729 | 730 | 731 | title( 'DEFAULT HISTOGRAM' ); 738 | $graph->hist( [10, 11, 40, 45, 50, 55, 60, 60, 70, 80, 85, 90, 95, 100, 105, 106, 107, 108, 109, 110, 111, 112, 123, 140, 150] ); 739 | ?> 740 | 741 | 742 | title( '30 xval HISTOGRAM' ); 749 | $graph->hist( [10, 11, 40, 45, 50, 55, 60, 60, 70, 80, 85, 90, 95, 100, 105, 106, 107, 108, 109, 110, 111, 112, 123, 140, 150], ['num_blocks' => 30] ); 750 | ?> 751 | 752 | 753 | title( '7 xval HISTOGRAM' ); 760 | $graph->hist( [10, 11, 40, 45, 50, 55, 60, 60, 70, 80, 85, 90, 95, 100, 105, 106, 107, 108, 109, 110, 111, 112, 123, 140, 150], ['num_blocks' => 7] ); 761 | ?> 762 | 763 | 764 | 770 | 771 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/langcover.txt: -------------------------------------------------------------------------------- 1 | This is the language coverage file for DejaVu fonts 2 | ($Id$) 3 | 4 | Sans Serif Sans Mono 5 | aa Afar 100% (62/62) 100% (62/62) 100% (62/62) 6 | ab Abkhazia 100% (90/90) 93% (84/90) 84% (76/90) 7 | af Afrikaans 100% (69/69) 100% (69/69) 100% (69/69) 8 | ak Akan 100% (73/73) 100% (73/73) 100% (73/73) 9 | am Amharic (0/264) (0/264) (0/264) 10 | an Aragonese 100% (66/66) 100% (66/66) 100% (66/66) 11 | ar Arabic 100% (36/36) (0/36) 100% (36/36) 12 | as Assamese (0/64) (0/64) (0/64) 13 | ast Asturian/Bable/Leonese/Asturleonese 100% (70/70) 100% (70/70) 100% (70/70) 14 | av Avaric 100% (67/67) 100% (67/67) 100% (67/67) 15 | ay Aymara 100% (60/60) 100% (60/60) 100% (60/60) 16 | az-az Azerbaijani in Azerbaijan 100% (66/66) 100% (66/66) 100% (66/66) 17 | az-ir Azerbaijani in Iran 100% (40/40) (0/40) 100% (40/40) 18 | ba Bashkir 100% (82/82) 100% (82/82) 97% (80/82) 19 | be Byelorussian 100% (68/68) 100% (68/68) 100% (68/68) 20 | ber-dz Berber in Algeria 100% (70/70) 100% (70/70) 100% (70/70) 21 | ber-ma Berber in Morocco 100% (32/32) (0/32) (0/32) 22 | bg Bulgarian 100% (60/60) 100% (60/60) 100% (60/60) 23 | bh Bihari (Devanagari script) (0/68) (0/68) (0/68) 24 | bho Bhojpuri (Devanagari script) (0/68) (0/68) (0/68) 25 | bi Bislama 100% (58/58) 100% (58/58) 100% (58/58) 26 | bin Edo or Bini 100% (78/78) 100% (78/78) 100% (78/78) 27 | bm Bambara 100% (60/60) 100% (60/60) 100% (60/60) 28 | bn Bengali (0/63) (0/63) (0/63) 29 | bo Tibetan (0/95) (0/95) (0/95) 30 | br Breton 100% (64/64) 100% (64/64) 100% (64/64) 31 | brx Bodo (Devanagari script) (0/82) (0/82) (0/82) 32 | bs Bosnian 100% (62/62) 100% (62/62) 100% (62/62) 33 | bua Buriat (Buryat) 100% (70/70) 100% (70/70) 100% (70/70) 34 | byn Blin/Bilin (0/255) (0/255) (0/255) 35 | ca Catalan 100% (74/74) 100% (74/74) 100% (74/74) 36 | ce Chechen 100% (67/67) 100% (67/67) 100% (67/67) 37 | ch Chamorro 100% (58/58) 100% (58/58) 100% (58/58) 38 | chm Mari (Lower Cheremis / Upper Cheremis) 100% (76/76) 100% (76/76) 100% (76/76) 39 | chr Cherokee (0/85) (0/85) (0/85) 40 | co Corsican 100% (84/84) 100% (84/84) 100% (84/84) 41 | crh Crimean Tatar/Crimean Turkish 100% (68/68) 100% (68/68) 100% (68/68) 42 | cs Czech 100% (82/82) 100% (82/82) 100% (82/82) 43 | csb Kashubian 100% (74/74) 100% (74/74) 100% (74/74) 44 | cu Old Church Slavonic 100% (103/103) 90% (93/103) 78% (81/103) 45 | cv Chuvash 100% (74/74) 100% (74/74) 100% (74/74) 46 | cy Welsh 100% (78/78) 100% (78/78) 100% (78/78) 47 | da Danish 100% (70/70) 100% (70/70) 100% (70/70) 48 | de German 100% (59/59) 100% (59/59) 100% (59/59) 49 | doi Dogri (0/85) (0/85) (0/85) 50 | dv Divehi/Dhivehi/Maldivian (0/49) (0/49) (0/49) 51 | dz Dzongkha (0/95) (0/95) (0/95) 52 | ee Ewe 100% (99/99) 100% (99/99) 100% (99/99) 53 | el Greek 100% (69/69) 100% (69/69) 100% (69/69) 54 | en English 100% (72/72) 100% (72/72) 100% (72/72) 55 | eo Esperanto 100% (64/64) 100% (64/64) 100% (64/64) 56 | es Spanish 100% (66/66) 100% (66/66) 100% (66/66) 57 | et Estonian 100% (64/64) 100% (64/64) 100% (64/64) 58 | eu Basque 100% (56/56) 100% (56/56) 100% (56/56) 59 | fa Persian 100% (40/40) (0/40) 100% (40/40) 60 | fat Fanti 100% (73/73) 100% (73/73) 100% (73/73) 61 | ff Fulah (Fula) 100% (62/62) 100% (62/62) 100% (62/62) 62 | fi Finnish 100% (62/62) 100% (62/62) 100% (62/62) 63 | fil Filipino 100% (84/84) 100% (84/84) 100% (84/84) 64 | fj Fijian 100% (52/52) 100% (52/52) 100% (52/52) 65 | fo Faroese 100% (68/68) 100% (68/68) 100% (68/68) 66 | fr French 100% (84/84) 100% (84/84) 100% (84/84) 67 | fur Friulian 100% (66/66) 100% (66/66) 100% (66/66) 68 | fy Frisian 100% (75/75) 100% (75/75) 100% (75/75) 69 | ga Irish 100% (80/80) 100% (80/80) 100% (80/80) 70 | gd Scots Gaelic 100% (70/70) 100% (70/70) 100% (70/70) 71 | gez Ethiopic (Geez) (0/218) (0/218) (0/218) 72 | gl Galician 100% (66/66) 100% (66/66) 100% (66/66) 73 | gn Guarani 100% (70/70) 100% (70/70) 100% (70/70) 74 | gu Gujarati (0/68) (0/68) (0/68) 75 | gv Manx Gaelic 100% (54/54) 100% (54/54) 100% (54/54) 76 | ha Hausa 100% (60/60) 100% (60/60) 100% (60/60) 77 | haw Hawaiian 100% (63/63) 100% (63/63) 100% (63/63) 78 | he Hebrew 100% (27/27) (0/27) (0/27) 79 | hi Hindi (Devanagari script) (0/68) (0/68) (0/68) 80 | hne Chhattisgarhi (0/68) (0/68) (0/68) 81 | ho Hiri Motu 100% (52/52) 100% (52/52) 100% (52/52) 82 | hr Croatian 100% (62/62) 100% (62/62) 100% (62/62) 83 | hsb Upper Sorbian 100% (72/72) 100% (72/72) 100% (72/72) 84 | ht Haitian/Haitian Creole 100% (56/56) 100% (56/56) 100% (56/56) 85 | hu Hungarian 100% (70/70) 100% (70/70) 100% (70/70) 86 | hy Armenian 100% (77/77) 100% (77/77) 100% (77/77) 87 | hz Herero 100% (57/57) 100% (57/57) 100% (57/57) 88 | ia Interlingua 100% (52/52) 100% (52/52) 100% (52/52) 89 | id Indonesian 100% (54/54) 100% (54/54) 100% (54/54) 90 | ie Interlingue 100% (52/52) 100% (52/52) 100% (52/52) 91 | ig Igbo 100% (58/58) 100% (58/58) 100% (58/58) 92 | ii Sichuan Yi/Nuosu (0/1165) (0/1165) (0/1165) 93 | ik Inupiaq (Inupiak, Eskimo) 100% (68/68) 100% (68/68) 100% (68/68) 94 | io Ido 100% (52/52) 100% (52/52) 100% (52/52) 95 | is Icelandic 100% (70/70) 100% (70/70) 100% (70/70) 96 | it Italian 100% (72/72) 100% (72/72) 100% (72/72) 97 | iu Inuktitut 100% (161/161) (0/161) (0/161) 98 | ja Japanese (0/2314) (0/2314) (0/2314) 99 | jv Javanese 100% (56/56) 100% (56/56) 100% (56/56) 100 | ka Georgian 100% (33/33) 100% (33/33) 100% (33/33) 101 | kaa Kara-Kalpak (Karakalpak) 100% (78/78) 100% (78/78) 100% (78/78) 102 | kab Kabyle 100% (70/70) 100% (70/70) 100% (70/70) 103 | ki Kikuyu 100% (56/56) 100% (56/56) 100% (56/56) 104 | kj Kuanyama/Kwanyama 100% (52/52) 100% (52/52) 100% (52/52) 105 | kk Kazakh 100% (77/77) 100% (77/77) 100% (77/77) 106 | kl Greenlandic 100% (81/81) 100% (81/81) 100% (81/81) 107 | km Central Khmer (0/63) (0/63) (0/63) 108 | kn Kannada (0/70) (0/70) (0/70) 109 | ko Korean (0/2442) (0/2442) (0/2442) 110 | kok Kokani (Devanagari script) (0/68) (0/68) (0/68) 111 | kr Kanuri 100% (56/56) 100% (56/56) 100% (56/56) 112 | ks Kashmiri 78% (26/33) (0/33) 69% (23/33) 113 | ku-am Kurdish in Armenia 100% (64/64) 100% (64/64) 100% (64/64) 114 | ku-iq Kurdish in Iraq 100% (32/32) (0/32) 87% (28/32) 115 | ku-ir Kurdish in Iran 100% (32/32) (0/32) 87% (28/32) 116 | ku-tr Kurdish in Turkey 100% (62/62) 100% (62/62) 100% (62/62) 117 | kum Kumyk 100% (66/66) 100% (66/66) 100% (66/66) 118 | kv Komi (Komi-Permyak/Komi-Siryan) 100% (70/70) 100% (70/70) 100% (70/70) 119 | kw Cornish 100% (64/64) 100% (64/64) 100% (64/64) 120 | kwm Kwambi 100% (52/52) 100% (52/52) 100% (52/52) 121 | ky Kirgiz 100% (70/70) 100% (70/70) 100% (70/70) 122 | la Latin 100% (68/68) 100% (68/68) 100% (68/68) 123 | lah Lahnda 92% (25/27) (0/27) 85% (23/27) 124 | lb Luxembourgish (Letzeburgesch) 100% (75/75) 100% (75/75) 100% (75/75) 125 | lez Lezghian (Lezgian) 100% (67/67) 100% (67/67) 100% (67/67) 126 | lg Ganda 100% (54/54) 100% (54/54) 100% (54/54) 127 | li Limburgan/Limburger/Limburgish 100% (62/62) 100% (62/62) 100% (62/62) 128 | ln Lingala 100% (81/81) 100% (81/81) 100% (81/81) 129 | lo Lao 100% (55/55) (0/55) 83% (46/55) 130 | lt Lithuanian 100% (70/70) 100% (70/70) 100% (70/70) 131 | lv Latvian 100% (78/78) 100% (78/78) 100% (78/78) 132 | mai Maithili (Devanagari script) (0/68) (0/68) (0/68) 133 | mg Malagasy 100% (56/56) 100% (56/56) 100% (56/56) 134 | mh Marshallese 100% (62/62) 100% (62/62) 100% (62/62) 135 | mi Maori 100% (64/64) 100% (64/64) 100% (64/64) 136 | mk Macedonian 100% (42/42) 100% (42/42) 100% (42/42) 137 | ml Malayalam (0/68) (0/68) (0/68) 138 | mn-cn Mongolian in China (0/130) (0/130) (0/130) 139 | mn-mn Mongolian in Mongolia 100% (70/70) 100% (70/70) 100% (70/70) 140 | mni Maniputi (0/78) (0/78) (0/78) 141 | mo Moldavian 100% (128/128) 100% (128/128) 100% (128/128) 142 | mr Marathi (Devanagari script) (0/68) (0/68) (0/68) 143 | ms Malay 100% (52/52) 100% (52/52) 100% (52/52) 144 | mt Maltese 100% (72/72) 100% (72/72) 100% (72/72) 145 | my Burmese (Myanmar) (0/48) (0/48) (0/48) 146 | na Nauru 100% (60/60) 100% (60/60) 100% (60/60) 147 | nb Norwegian Bokmal 100% (70/70) 100% (70/70) 100% (70/70) 148 | nds Low Saxon 100% (59/59) 100% (59/59) 100% (59/59) 149 | ne Nepali (0/72) (0/72) (0/72) 150 | ng Ndonga 100% (52/52) 100% (52/52) 100% (52/52) 151 | nl Dutch 100% (82/82) 100% (82/82) 100% (82/82) 152 | nn Norwegian Nynorsk 100% (76/76) 100% (76/76) 100% (76/76) 153 | no Norwegian (Bokmal) 100% (70/70) 100% (70/70) 100% (70/70) 154 | nqo N'Ko 91% (54/59) (0/59) (0/59) 155 | nr Ndebele, South 100% (52/52) 100% (52/52) 100% (52/52) 156 | nso Northern Sotho 100% (58/58) 100% (58/58) 100% (58/58) 157 | nv Navajo/Navaho 100% (72/72) 100% (72/72) 100% (72/72) 158 | ny Chichewa 100% (54/54) 100% (54/54) 100% (54/54) 159 | oc Occitan 100% (70/70) 100% (70/70) 100% (70/70) 160 | om Oromo or Galla 100% (52/52) 100% (52/52) 100% (52/52) 161 | or Oriya (0/68) (0/68) (0/68) 162 | os Ossetic 100% (66/66) 100% (66/66) 100% (66/66) 163 | ota Ottoman Turkish 100% (37/37) (0/37) 97% (36/37) 164 | pa Panjabi/Punjabi (0/63) (0/63) (0/63) 165 | pa-pk Panjabi/Punjabi in Pakistan 92% (25/27) (0/27) 85% (23/27) 166 | pap-an Papiamento in Netherlands Antilles 100% (72/72) 100% (72/72) 100% (72/72) 167 | pap-aw Papiamento in Aruba 100% (54/54) 100% (54/54) 100% (54/54) 168 | pes Western Farsi 100% (40/40) (0/40) 100% (40/40) 169 | pl Polish 100% (70/70) 100% (70/70) 100% (70/70) 170 | prs Dari/Eastern Farsi 100% (40/40) (0/40) 100% (40/40) 171 | ps-af Pashto in Afghanistan 97% (48/49) (0/49) 77% (38/49) 172 | ps-pk Pashto in Pakistan 95% (47/49) (0/49) 75% (37/49) 173 | pt Portuguese 100% (82/82) 100% (82/82) 100% (82/82) 174 | qu Quechua 100% (55/55) 100% (55/55) 100% (55/55) 175 | quz Cusco Quechua 100% (55/55) 100% (55/55) 100% (55/55) 176 | rm Rhaeto-Romance (Romansch) 100% (66/66) 100% (66/66) 100% (66/66) 177 | rn Rundi 100% (52/52) 100% (52/52) 100% (52/52) 178 | ro Romanian 100% (62/62) 100% (62/62) 100% (62/62) 179 | ru Russian 100% (66/66) 100% (66/66) 100% (66/66) 180 | rw Kinyarwanda 100% (52/52) 100% (52/52) 100% (52/52) 181 | sa Sanskrit (Devanagari script) (0/68) (0/68) (0/68) 182 | sah Yakut 100% (76/76) 100% (76/76) 100% (76/76) 183 | sat Santali (Devanagari script) (0/70) (0/70) (0/70) 184 | sc Sardinian 100% (62/62) 100% (62/62) 100% (62/62) 185 | sco Scots 100% (56/56) 100% (56/56) 100% (56/56) 186 | sd Sindhi 100% (54/54) (0/54) 79% (43/54) 187 | se North Sami 100% (66/66) 100% (66/66) 100% (66/66) 188 | sel Selkup (Ostyak-Samoyed) 100% (66/66) 100% (66/66) 100% (66/66) 189 | sg Sango 100% (72/72) 100% (72/72) 100% (72/72) 190 | sh Serbo-Croatian 100% (156/156) 100% (156/156) 98% (154/156) 191 | shs Secwepemctsin 100% (48/48) 100% (48/48) 100% (48/48) 192 | si Sinhala/Sinhalese (0/73) (0/73) (0/73) 193 | sid Sidamo (0/281) (0/281) (0/281) 194 | sk Slovak 100% (86/86) 100% (86/86) 100% (86/86) 195 | sl Slovenian 100% (62/62) 100% (62/62) 100% (62/62) 196 | sm Samoan 100% (53/53) 100% (53/53) 100% (53/53) 197 | sma South Sami 100% (60/60) 100% (60/60) 100% (60/60) 198 | smj Lule Sami 100% (60/60) 100% (60/60) 100% (60/60) 199 | smn Inari Sami 100% (68/68) 100% (68/68) 100% (68/68) 200 | sms Skolt Sami 100% (80/80) 100% (80/80) 97% (78/80) 201 | sn Shona 100% (52/52) 100% (52/52) 100% (52/52) 202 | so Somali 100% (52/52) 100% (52/52) 100% (52/52) 203 | sq Albanian 100% (56/56) 100% (56/56) 100% (56/56) 204 | sr Serbian 100% (60/60) 100% (60/60) 100% (60/60) 205 | ss Swati 100% (52/52) 100% (52/52) 100% (52/52) 206 | st Sotho, Southern 100% (52/52) 100% (52/52) 100% (52/52) 207 | su Sundanese 100% (54/54) 100% (54/54) 100% (54/54) 208 | sv Swedish 100% (68/68) 100% (68/68) 100% (68/68) 209 | sw Swahili 100% (52/52) 100% (52/52) 100% (52/52) 210 | syr Syriac (0/45) (0/45) (0/45) 211 | ta Tamil (0/48) (0/48) (0/48) 212 | te Telugu (0/70) (0/70) (0/70) 213 | tg Tajik 100% (78/78) 100% (78/78) 97% (76/78) 214 | th Thai 1% (1/74) 1% (1/74) 1% (1/74) 215 | ti-er Eritrean Tigrinya (0/255) (0/255) (0/255) 216 | ti-et Ethiopian Tigrinya (0/281) (0/281) (0/281) 217 | tig Tigre (0/221) (0/221) (0/221) 218 | tk Turkmen 100% (68/68) 100% (68/68) 100% (68/68) 219 | tl Tagalog 100% (84/84) 100% (84/84) 100% (84/84) 220 | tn Tswana 100% (58/58) 100% (58/58) 100% (58/58) 221 | to Tonga 100% (53/53) 100% (53/53) 100% (53/53) 222 | tr Turkish 100% (70/70) 100% (70/70) 100% (70/70) 223 | ts Tsonga 100% (52/52) 100% (52/52) 100% (52/52) 224 | tt Tatar 100% (76/76) 100% (76/76) 100% (76/76) 225 | tw Twi 100% (73/73) 100% (73/73) 100% (73/73) 226 | ty Tahitian 100% (65/65) 100% (65/65) 100% (65/65) 227 | tyv Tuvinian 100% (70/70) 100% (70/70) 100% (70/70) 228 | ug Uyghur 100% (33/33) (0/33) 78% (26/33) 229 | uk Ukrainian 100% (72/72) 100% (72/72) 100% (72/72) 230 | ur Urdu 92% (25/27) (0/27) 85% (23/27) 231 | uz Uzbek 100% (52/52) 100% (52/52) 100% (52/52) 232 | ve Venda 100% (62/62) 100% (62/62) 100% (62/62) 233 | vi Vietnamese 100% (194/194) 100% (194/194) 76% (148/194) 234 | vo Volapuk 100% (54/54) 100% (54/54) 100% (54/54) 235 | vot Votic 100% (62/62) 100% (62/62) 100% (62/62) 236 | wa Walloon 100% (70/70) 100% (70/70) 100% (70/70) 237 | wal Wolaitta/Wolaytta (0/281) (0/281) (0/281) 238 | wen Sorbian languages (lower and upper) 100% (76/76) 100% (76/76) 100% (76/76) 239 | wo Wolof 100% (66/66) 100% (66/66) 100% (66/66) 240 | xh Xhosa 100% (52/52) 100% (52/52) 100% (52/52) 241 | yap Yapese 100% (58/58) 100% (58/58) 100% (58/58) 242 | yi Yiddish 100% (27/27) (0/27) (0/27) 243 | yo Yoruba 100% (119/119) 100% (119/119) 100% (119/119) 244 | za Zhuang/Chuang 100% (52/52) 100% (52/52) 100% (52/52) 245 | zh-cn Chinese (simplified) 0% (2/6765) 0% (2/6765) 0% (2/6765) 246 | zh-hk Chinese Hong Kong Supplementary Character Set (0/1083) (0/1083) (0/1083) 247 | zh-mo Chinese in Macau (0/1083) (0/1083) (0/1083) 248 | zh-sg Chinese in Singapore 0% (2/6765) 0% (2/6765) 0% (2/6765) 249 | zh-tw Chinese (traditional) (0/13063) (0/13063) (0/13063) 250 | zu Zulu 100% (52/52) 100% (52/52) 100% (52/52) 251 | -------------------------------------------------------------------------------- /fonts/dejavu-fonts-ttf-2.37/unicover.txt: -------------------------------------------------------------------------------- 1 | This is the Unicode coverage file for DejaVu fonts 2 | ($Id$) 3 | 4 | Control and similar characters are discounted from totals. 5 | 6 | Sans Serif Sans Mono 7 | U+0000 Basic Latin 100% (95/95) 100% (95/95) 100% (95/95) 8 | U+0080 Latin-1 Supplement 100% (96/96) 100% (96/96) 100% (96/96) 9 | U+0100 Latin Extended-A 100% (128/128) 100% (128/128) 100% (128/128) 10 | U+0180 Latin Extended-B 100% (208/208) 100% (208/208) 86% (180/208) 11 | U+0250 IPA Extensions 100% (96/96) 100% (96/96) 100% (96/96) 12 | U+02b0 Spacing Modifier Letters 78% (63/80) 73% (59/80) 62% (50/80) 13 | U+0300 Combining Diacritical Marks 83% (93/112) 61% (69/112) 59% (67/112) 14 | U+0370 Greek and Coptic 100% (135/135) 89% (121/135) 85% (116/135) 15 | U+0400 Cyrillic 100% (256/256) 79% (204/256) 70% (180/256) 16 | U+0500 Cyrillic Supplement 79% (38/48) 20% (10/48) 12% (6/48) 17 | U+0530 Armenian 96% (86/89) 96% (86/89) 96% (86/89) 18 | U+0590 Hebrew 62% (54/87) (0/87) (0/87) 19 | U+0600 Arabic 64% (165/255) (0/255) 38% (99/255) 20 | U+0700 Syriac (0/77) (0/77) (0/77) 21 | U+0750 Arabic Supplement (0/48) (0/48) (0/48) 22 | U+0780 Thaana (0/50) (0/50) (0/50) 23 | U+07c0 NKo 91% (54/59) (0/59) (0/59) 24 | U+0800 Samaritan (0/61) (0/61) (0/61) 25 | U+0840 Mandaic (0/29) (0/29) (0/29) 26 | U+08a0 Arabic Extended-A (0/73) (0/73) (0/73) 27 | U+0900 Devanagari (0/128) (0/128) (0/128) 28 | U+0980 Bengali (0/93) (0/93) (0/93) 29 | U+0a00 Gurmukhi (0/79) (0/79) (0/79) 30 | U+0a80 Gujarati (0/85) (0/85) (0/85) 31 | U+0b00 Oriya (0/90) (0/90) (0/90) 32 | U+0b80 Tamil (0/72) (0/72) (0/72) 33 | U+0c00 Telugu (0/96) (0/96) (0/96) 34 | U+0c80 Kannada (0/88) (0/88) (0/88) 35 | U+0d00 Malayalam (0/114) (0/114) (0/114) 36 | U+0d80 Sinhala (0/90) (0/90) (0/90) 37 | U+0e00 Thai 1% (1/87) 1% (1/87) 1% (1/87) 38 | U+0e80 Lao 97% (65/67) (0/67) 68% (46/67) 39 | U+0f00 Tibetan (0/211) (0/211) (0/211) 40 | U+1000 Myanmar (0/160) (0/160) (0/160) 41 | U+10a0 Georgian 94% (83/88) 94% (83/88) 51% (45/88) 42 | U+1100 Hangul Jamo (0/256) (0/256) (0/256) 43 | U+1200 Ethiopic (0/358) (0/358) (0/358) 44 | U+1380 Ethiopic Supplement (0/26) (0/26) (0/26) 45 | U+13a0 Cherokee (0/92) (0/92) (0/92) 46 | U+1400 Unified Canadian Aboriginal Syllabics 63% (404/640) (0/640) (0/640) 47 | U+1680 Ogham 100% (29/29) (0/29) (0/29) 48 | U+16a0 Runic (0/89) (0/89) (0/89) 49 | U+1700 Tagalog (0/20) (0/20) (0/20) 50 | U+1720 Hanunoo (0/23) (0/23) (0/23) 51 | U+1740 Buhid (0/20) (0/20) (0/20) 52 | U+1760 Tagbanwa (0/18) (0/18) (0/18) 53 | U+1780 Khmer (0/114) (0/114) (0/114) 54 | U+1800 Mongolian (0/156) (0/156) (0/156) 55 | U+18b0 Unified Canadian Aboriginal Syllabics Extended (0/70) (0/70) (0/70) 56 | U+1900 Limbu (0/68) (0/68) (0/68) 57 | U+1950 Tai Le (0/35) (0/35) (0/35) 58 | U+1980 New Tai Lue (0/83) (0/83) (0/83) 59 | U+19e0 Khmer Symbols (0/32) (0/32) (0/32) 60 | U+1a00 Buginese (0/30) (0/30) (0/30) 61 | U+1a20 Tai Tham (0/127) (0/127) (0/127) 62 | U+1ab0 Combining Diacritical Marks Extended (0/15) (0/15) (0/15) 63 | U+1b00 Balinese (0/121) (0/121) (0/121) 64 | U+1b80 Sundanese (0/64) (0/64) (0/64) 65 | U+1bc0 Batak (0/56) (0/56) (0/56) 66 | U+1c00 Lepcha (0/74) (0/74) (0/74) 67 | U+1c50 Ol Chiki (0/48) (0/48) (0/48) 68 | U+1c80 Cyrillic Extended-C (0/9) (0/9) (0/9) 69 | U+1cc0 Sundanese Supplement (0/8) (0/8) (0/8) 70 | U+1cd0 Vedic Extensions (0/41) (0/41) (0/41) 71 | U+1d00 Phonetic Extensions 82% (106/128) 89% (115/128) 48% (62/128) 72 | U+1d80 Phonetic Extensions Supplement 59% (38/64) 59% (38/64) 57% (37/64) 73 | U+1dc0 Combining Diacritical Marks Supplement 10% (6/59) 10% (6/59) (0/59) 74 | U+1e00 Latin Extended Additional 98% (252/256) 98% (252/256) 71% (182/256) 75 | U+1f00 Greek Extended 100% (233/233) 100% (233/233) 100% (233/233) 76 | U+2000 General Punctuation 96% (107/111) 78% (87/111) 48% (54/111) 77 | U+2070 Superscripts and Subscripts 100% (42/42) 100% (42/42) 100% (42/42) 78 | U+20a0 Currency Symbols 83% (26/31) 32% (10/31) 83% (26/31) 79 | U+20d0 Combining Diacritical Marks for Symbols 21% (7/33) (0/33) (0/33) 80 | U+2100 Letterlike Symbols 93% (75/80) 42% (34/80) 22% (18/80) 81 | U+2150 Number Forms 91% (55/60) 91% (55/60) 26% (16/60) 82 | U+2190 Arrows 100% (112/112) 100% (112/112) 100% (112/112) 83 | U+2200 Mathematical Operators 100% (256/256) 39% (101/256) 69% (178/256) 84 | U+2300 Miscellaneous Technical 25% (65/255) 14% (36/255) 53% (136/255) 85 | U+2400 Control Pictures 5% (2/39) 2% (1/39) 2% (1/39) 86 | U+2440 Optical Character Recognition (0/11) (0/11) (0/11) 87 | U+2460 Enclosed Alphanumerics 6% (10/160) (0/160) (0/160) 88 | U+2500 Box Drawing 100% (128/128) 100% (128/128) 100% (128/128) 89 | U+2580 Block Elements 100% (32/32) 100% (32/32) 100% (32/32) 90 | U+25a0 Geometric Shapes 100% (96/96) 100% (96/96) 100% (96/96) 91 | U+2600 Miscellaneous Symbols 73% (189/256) 11% (30/256) 58% (149/256) 92 | U+2700 Dingbats 90% (174/192) 0% (1/192) 75% (144/192) 93 | U+27c0 Miscellaneous Mathematical Symbols-A 18% (9/48) 10% (5/48) 22% (11/48) 94 | U+27f0 Supplemental Arrows-A 100% (16/16) 100% (16/16) 18% (3/16) 95 | U+2800 Braille Patterns 100% (256/256) 100% (256/256) (0/256) 96 | U+2900 Supplemental Arrows-B 4% (6/128) 100% (128/128) (0/128) 97 | U+2980 Miscellaneous Mathematical Symbols-B 10% (13/128) 0% (1/128) 5% (7/128) 98 | U+2a00 Supplemental Mathematical Operators 28% (74/256) 2% (6/256) 1% (4/256) 99 | U+2b00 Miscellaneous Symbols and Arrows 16% (35/206) 13% (27/206) 8% (18/206) 100 | U+2c00 Glagolitic (0/94) (0/94) (0/94) 101 | U+2c60 Latin Extended-C 96% (31/32) 84% (27/32) 43% (14/32) 102 | U+2c80 Coptic (0/123) (0/123) (0/123) 103 | U+2d00 Georgian Supplement 95% (38/40) 95% (38/40) (0/40) 104 | U+2d30 Tifinagh 93% (55/59) (0/59) (0/59) 105 | U+2d80 Ethiopic Extended (0/79) (0/79) (0/79) 106 | U+2de0 Cyrillic Extended-A (0/32) (0/32) (0/32) 107 | U+2e00 Supplemental Punctuation 10% (7/69) 10% (7/69) 10% (7/69) 108 | U+2e80 CJK Radicals Supplement (0/115) (0/115) (0/115) 109 | U+2f00 Kangxi Radicals (0/214) (0/214) (0/214) 110 | U+2ff0 Ideographic Description Characters (0/12) (0/12) (0/12) 111 | U+3000 CJK Symbols and Punctuation (0/64) (0/64) (0/64) 112 | U+3040 Hiragana (0/93) (0/93) (0/93) 113 | U+30a0 Katakana (0/96) (0/96) (0/96) 114 | U+3100 Bopomofo (0/41) (0/41) (0/41) 115 | U+3130 Hangul Compatibility Jamo (0/94) (0/94) (0/94) 116 | U+3190 Kanbun (0/16) (0/16) (0/16) 117 | U+31a0 Bopomofo Extended (0/27) (0/27) (0/27) 118 | U+31c0 CJK Strokes (0/36) (0/36) (0/36) 119 | U+31f0 Katakana Phonetic Extensions (0/16) (0/16) (0/16) 120 | U+3200 Enclosed CJK Letters and Months (0/254) (0/254) (0/254) 121 | U+3300 CJK Compatibility (0/256) (0/256) (0/256) 122 | U+3400 CJK Unified Ideographs Extension A (0/0) (0/0) (0/0) 123 | U+4dc0 Yijing Hexagram Symbols 100% (64/64) (0/64) (0/64) 124 | U+4e00 CJK Unified Ideographs (0/0) (0/0) (0/0) 125 | U+a000 Yi Syllables (0/1165) (0/1165) (0/1165) 126 | U+a490 Yi Radicals (0/55) (0/55) (0/55) 127 | U+a4d0 Lisu 100% (48/48) (0/48) (0/48) 128 | U+a500 Vai (0/300) (0/300) (0/300) 129 | U+a640 Cyrillic Extended-B 34% (33/96) 12% (12/96) (0/96) 130 | U+a6a0 Bamum (0/88) (0/88) (0/88) 131 | U+a700 Modifier Tone Letters 62% (20/32) 62% (20/32) 62% (20/32) 132 | U+a720 Latin Extended-D 48% (77/160) 37% (60/160) 10% (17/160) 133 | U+a800 Syloti Nagri (0/44) (0/44) (0/44) 134 | U+a830 Common Indic Number Forms (0/10) (0/10) (0/10) 135 | U+a840 Phags-pa (0/56) (0/56) (0/56) 136 | U+a880 Saurashtra (0/82) (0/82) (0/82) 137 | U+a8e0 Devanagari Extended (0/30) (0/30) (0/30) 138 | U+a900 Kayah Li (0/48) (0/48) (0/48) 139 | U+a930 Rejang (0/37) (0/37) (0/37) 140 | U+a960 Hangul Jamo Extended-A (0/29) (0/29) (0/29) 141 | U+a980 Javanese (0/91) (0/91) (0/91) 142 | U+a9e0 Myanmar Extended-B (0/31) (0/31) (0/31) 143 | U+aa00 Cham (0/83) (0/83) (0/83) 144 | U+aa60 Myanmar Extended-A (0/32) (0/32) (0/32) 145 | U+aa80 Tai Viet (0/72) (0/72) (0/72) 146 | U+aae0 Meetei Mayek Extensions (0/23) (0/23) (0/23) 147 | U+ab00 Ethiopic Extended-A (0/32) (0/32) (0/32) 148 | U+ab30 Latin Extended-E (0/54) (0/54) (0/54) 149 | U+ab70 Cherokee Supplement (0/80) (0/80) (0/80) 150 | U+abc0 Meetei Mayek (0/56) (0/56) (0/56) 151 | U+ac00 Hangul Syllables (0/0) (0/0) (0/0) 152 | U+d7b0 Hangul Jamo Extended-B (0/72) (0/72) (0/72) 153 | U+d800 High Surrogates (0/0) (0/0) (0/0) 154 | U+db80 High Private Use Surrogates (0/0) (0/0) (0/0) 155 | U+dc00 Low Surrogates (0/0) (0/0) (0/0) 156 | U+e000 Private Use Area (0/0) (0/0) (0/0) 157 | U+f900 CJK Compatibility Ideographs (0/472) (0/472) (0/472) 158 | U+fb00 Alphabetic Presentation Forms 100% (58/58) 12% (7/58) 3% (2/58) 159 | U+fb50 Arabic Presentation Forms-A 17% (108/611) (0/611) 11% (72/611) 160 | U+fe00 Variation Selectors 100% (16/16) 100% (16/16) (0/16) 161 | U+fe10 Vertical Forms (0/10) (0/10) (0/10) 162 | U+fe20 Combining Half Marks 25% (4/16) (0/16) (0/16) 163 | U+fe30 CJK Compatibility Forms (0/32) (0/32) (0/32) 164 | U+fe50 Small Form Variants (0/26) (0/26) (0/26) 165 | U+fe70 Arabic Presentation Forms-B 100% (141/141) (0/141) 100% (141/141) 166 | U+ff00 Halfwidth and Fullwidth Forms (0/225) (0/225) (0/225) 167 | U+fff0 Specials 100% (5/5) 100% (5/5) 100% (5/5) 168 | U+10000 Linear B Syllabary (0/88) (0/88) (0/88) 169 | U+10080 Linear B Ideograms (0/123) (0/123) (0/123) 170 | U+10100 Aegean Numbers (0/57) (0/57) (0/57) 171 | U+10140 Ancient Greek Numbers (0/79) (0/79) (0/79) 172 | U+10190 Ancient Symbols (0/13) (0/13) (0/13) 173 | U+101d0 Phaistos Disc (0/46) (0/46) (0/46) 174 | U+10280 Lycian (0/29) (0/29) (0/29) 175 | U+102a0 Carian (0/49) (0/49) (0/49) 176 | U+102e0 Coptic Epact Numbers (0/28) (0/28) (0/28) 177 | U+10300 Old Italic 97% (35/36) (0/36) (0/36) 178 | U+10330 Gothic (0/27) (0/27) (0/27) 179 | U+10350 Old Permic (0/43) (0/43) (0/43) 180 | U+10380 Ugaritic (0/31) (0/31) (0/31) 181 | U+103a0 Old Persian (0/50) (0/50) (0/50) 182 | U+10400 Deseret (0/80) (0/80) (0/80) 183 | U+10450 Shavian (0/48) (0/48) (0/48) 184 | U+10480 Osmanya (0/40) (0/40) (0/40) 185 | U+104b0 Osage (0/72) (0/72) (0/72) 186 | U+10500 Elbasan (0/40) (0/40) (0/40) 187 | U+10530 Caucasian Albanian (0/53) (0/53) (0/53) 188 | U+10600 Linear A (0/341) (0/341) (0/341) 189 | U+10800 Cypriot Syllabary (0/55) (0/55) (0/55) 190 | U+10840 Imperial Aramaic (0/31) (0/31) (0/31) 191 | U+10860 Palmyrene (0/32) (0/32) (0/32) 192 | U+10880 Nabataean (0/40) (0/40) (0/40) 193 | U+108e0 Hatran (0/26) (0/26) (0/26) 194 | U+10900 Phoenician (0/29) (0/29) (0/29) 195 | U+10920 Lydian (0/27) (0/27) (0/27) 196 | U+10980 Meroitic Hieroglyphs (0/32) (0/32) (0/32) 197 | U+109a0 Meroitic Cursive (0/90) (0/90) (0/90) 198 | U+10a00 Kharoshthi (0/65) (0/65) (0/65) 199 | U+10a60 Old South Arabian (0/32) (0/32) (0/32) 200 | U+10a80 Old North Arabian (0/32) (0/32) (0/32) 201 | U+10ac0 Manichaean (0/51) (0/51) (0/51) 202 | U+10b00 Avestan (0/61) (0/61) (0/61) 203 | U+10b40 Inscriptional Parthian (0/30) (0/30) (0/30) 204 | U+10b60 Inscriptional Pahlavi (0/27) (0/27) (0/27) 205 | U+10b80 Psalter Pahlavi (0/29) (0/29) (0/29) 206 | U+10c00 Old Turkic (0/73) (0/73) (0/73) 207 | U+10c80 Old Hungarian (0/108) (0/108) (0/108) 208 | U+10e60 Rumi Numeral Symbols (0/31) (0/31) (0/31) 209 | U+11000 Brahmi (0/109) (0/109) (0/109) 210 | U+11080 Kaithi (0/66) (0/66) (0/66) 211 | U+110d0 Sora Sompeng (0/35) (0/35) (0/35) 212 | U+11100 Chakma (0/67) (0/67) (0/67) 213 | U+11150 Mahajani (0/39) (0/39) (0/39) 214 | U+11180 Sharada (0/94) (0/94) (0/94) 215 | U+111e0 Sinhala Archaic Numbers (0/20) (0/20) (0/20) 216 | U+11200 Khojki (0/62) (0/62) (0/62) 217 | U+11280 Multani (0/38) (0/38) (0/38) 218 | U+112b0 Khudawadi (0/69) (0/69) (0/69) 219 | U+11300 Grantha (0/85) (0/85) (0/85) 220 | U+11400 Newa (0/92) (0/92) (0/92) 221 | U+11480 Tirhuta (0/82) (0/82) (0/82) 222 | U+11580 Siddham (0/92) (0/92) (0/92) 223 | U+11600 Modi (0/79) (0/79) (0/79) 224 | U+11660 Mongolian Supplement (0/13) (0/13) (0/13) 225 | U+11680 Takri (0/66) (0/66) (0/66) 226 | U+11700 Ahom (0/57) (0/57) (0/57) 227 | U+118a0 Warang Citi (0/84) (0/84) (0/84) 228 | U+11ac0 Pau Cin Hau (0/57) (0/57) (0/57) 229 | U+11c00 Bhaiksuki (0/97) (0/97) (0/97) 230 | U+11c70 Marchen (0/68) (0/68) (0/68) 231 | U+12000 Cuneiform (0/922) (0/922) (0/922) 232 | U+12400 Cuneiform Numbers and Punctuation (0/116) (0/116) (0/116) 233 | U+12480 Early Dynastic Cuneiform (0/196) (0/196) (0/196) 234 | U+13000 Egyptian Hieroglyphs (0/1071) (0/1071) (0/1071) 235 | U+14400 Anatolian Hieroglyphs (0/583) (0/583) (0/583) 236 | U+16800 Bamum Supplement (0/569) (0/569) (0/569) 237 | U+16a40 Mro (0/43) (0/43) (0/43) 238 | U+16ad0 Bassa Vah (0/36) (0/36) (0/36) 239 | U+16b00 Pahawh Hmong (0/127) (0/127) (0/127) 240 | U+16f00 Miao (0/133) (0/133) (0/133) 241 | U+16fe0 Ideographic Symbols and Punctuation (0/1) (0/1) (0/1) 242 | U+17000 Tangut (0/0) (0/0) (0/0) 243 | U+18800 Tangut Components (0/755) (0/755) (0/755) 244 | U+1b000 Kana Supplement (0/2) (0/2) (0/2) 245 | U+1bc00 Duployan (0/143) (0/143) (0/143) 246 | U+1bca0 Shorthand Format Controls (0/4) (0/4) (0/4) 247 | U+1d000 Byzantine Musical Symbols (0/246) (0/246) (0/246) 248 | U+1d100 Musical Symbols (0/231) (0/231) (0/231) 249 | U+1d200 Ancient Greek Musical Notation (0/70) (0/70) (0/70) 250 | U+1d300 Tai Xuan Jing Symbols 100% (87/87) (0/87) (0/87) 251 | U+1d360 Counting Rod Numerals (0/18) (0/18) (0/18) 252 | U+1d400 Mathematical Alphanumeric Symbols 11% (117/996) 10% (108/996) 6% (63/996) 253 | U+1d800 Sutton SignWriting (0/672) (0/672) (0/672) 254 | U+1e000 Glagolitic Supplement (0/38) (0/38) (0/38) 255 | U+1e800 Mende Kikakui (0/213) (0/213) (0/213) 256 | U+1e900 Adlam (0/87) (0/87) (0/87) 257 | U+1ee00 Arabic Mathematical Alphabetic Symbols 51% (74/143) (0/143) (0/143) 258 | U+1f000 Mahjong Tiles (0/44) (0/44) (0/44) 259 | U+1f030 Domino Tiles 100% (100/100) (0/100) (0/100) 260 | U+1f0a0 Playing Cards 71% (59/82) (0/82) (0/82) 261 | U+1f100 Enclosed Alphanumeric Supplement (0/191) (0/191) (0/191) 262 | U+1f200 Enclosed Ideographic Supplement (0/58) (0/58) (0/58) 263 | U+1f300 Miscellaneous Symbols and Pictographs 1% (12/768) (0/768) (0/768) 264 | U+1f600 Emoticons 80% (64/80) (0/80) (0/80) 265 | U+1f650 Ornamental Dingbats (0/48) (0/48) (0/48) 266 | U+1f680 Transport and Map Symbols (0/103) (0/103) (0/103) 267 | U+1f700 Alchemical Symbols (0/116) (0/116) (0/116) 268 | U+1f780 Geometric Shapes Extended (0/85) (0/85) (0/85) 269 | U+1f800 Supplemental Arrows-C (0/148) (0/148) (0/148) 270 | U+1f900 Supplemental Symbols and Pictographs (0/82) (0/82) (0/82) 271 | U+20000 CJK Unified Ideographs Extension B (0/0) (0/0) (0/0) 272 | U+2a700 CJK Unified Ideographs Extension C (0/0) (0/0) (0/0) 273 | U+2b740 CJK Unified Ideographs Extension D (0/0) (0/0) (0/0) 274 | U+2b820 CJK Unified Ideographs Extension E (0/0) (0/0) (0/0) 275 | U+2f800 CJK Compatibility Ideographs Supplement (0/542) (0/542) (0/542) 276 | U+e0000 Tags (0/98) (0/98) (0/98) 277 | U+e0100 Variation Selectors Supplement (0/240) (0/240) (0/240) 278 | U+f0000 Supplementary Private Use Area-A (0/0) (0/0) (0/0) 279 | U+100000 Supplementary Private Use Area-B (0/0) (0/0) (0/0) 280 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Graph-PHP Graph charts in PHP 2 | graph charts, graph bars, histograms, graph lines, scratter, marks 3 | 4 | # V 1.0.1 5 | 6 | ## CREATE GRAPHS IN PHP: 7 | You can create graphs charts with bars, graphs lines with marks, graphs with background images, histograms, .... 8 | 9 | # SCREENSHOTS: 10 | ![Screenshot graph lines created in Pure PHP](https://github.com/vivesweb/graph/blob/main/sample%201.png?raw=true) 11 | 12 | Nice line graph display with markers 13 | 14 | ![Screenshot graph bar & lines created in Pure PHP](https://github.com/vivesweb/graph/blob/main/sample2.png?raw=true) 15 | 16 | Graph Bars & lines 17 | 18 | ![Screenshot graph lines created in Pure PHP](https://github.com/vivesweb/graph/blob/main/sample4.png?raw=true) 19 | 20 | Nice Math line graph 21 | 22 | And now some group of samples: 23 | 24 | ![Screenshot graphs created in Pure PHP](https://github.com/vivesweb/graph-php/blob/main/multigraph1.jpg?raw=true) 25 | ![Screenshot graphs created in Pure PHP](https://github.com/vivesweb/graph-php/blob/main/multigraph2.jpg?raw=true) 26 | ![Screenshot graphs created in Pure PHP](https://github.com/vivesweb/graph-php/blob/main/multigraph3.jpg?raw=true) 27 | 28 | 29 | 30 | # REQUERIMENTS: 31 | 32 | Requires packages: 33 | 34 | img2img (https://github.com/vivesweb/img2img) 35 | 36 | ext-op-ml-php (https://github.com/vivesweb/ext_op_ml) 37 | 38 | Requires DeJaVu Fonts: (https://travis-ci.org/dejavu-fonts/dejavu-fonts) 39 | 40 | - A minimum (minimum, minimum, minimum requeriments is needed). Tested on: 41 | 42 | - Simple Raspberry pi (B + 512MB 700 MHz ARM11) with Raspbian Lite PHP7.3 (i love this gadgets) :heart_eyes: 43 | 44 | - VirtualBox Ubuntu Server 20.04.2 LTS (Focal Fossa) with PHP7.4.3 45 | 46 | - Red Hat Enterprise Linux Server release 6.10 (Santiago) PHP Version 7.3.25 (Production Server) 512Mb Memory Limit 47 | 48 | - Red Hat Enterprise Linux release 8.4 (Ootpa). PHP Version 8.0.11 (Production Server) 512Mb Memory Limit 49 | 50 | # SERVER REQUERIMENTS: 51 | 52 | - PHP with GD enabled: sudo apt install php-gd 53 | 54 | - img2img class: If you need to use IMG_FILTER_SCATTER you need at least PHP >= PHP7.4.0. See official doc: https://www.php.net/manual/en/function.imagefilter.php 55 | 56 | - PHP with Imagick for some functions. It is not required for by most methods, but in some, like reading pdf or psd, you will need it. Install: sudo apt install php-imagick 57 | 58 | - Requires for Instagram background effects: https://github.com/zaachi/PHP-Instagram-effects 59 | 60 | 61 | 62 | # FILES: 63 | *graph-php.class.php* -> **Main File**. 64 | 65 | *example.php* -> **Example File**. 66 | 67 | 68 | # INSTALLATION: 69 | A lot of easy :smiley:. It is written in PURE PHP. Only need to include the files. Tested on basic PHP installation 70 | 71 | require_once( 'graph-php.class.php' ); 72 | 73 | 74 | # NOTES: 75 | Before draw the Graph, first we need to prepare values inside (as type bar, lines, etc....) 76 | 77 | # RESUME OF METHODS: 78 | 79 | - **CREATE GRAPH OBJECT:** 80 | 81 | *$graph = new graph( $cfg=null );* 82 | 83 | default $cfg: 84 | 85 | [ 86 | 'width' => 6.4, // 6.4 inches 87 | 'height' => 4.8, // 4.8 inches 88 | 'dpi' => 100, // 100 dpis 89 | 'padding' => .6, // 0.6 inches 90 | 'fontdir' => __DIR__.'/fonts', 91 | 'fontfamilypath' => 'dejavu-fonts-ttf-2.37/ttf', 92 | 'font' => 'DejaVuSans.ttf', 93 | 'fontsize' => 10.5, 94 | 'xtickfontsize' => 10.5, 95 | 'ytickfontsize' => 10.5, 96 | 'axes' => [ 'prop_cycle' => [] 97 | ], 98 | 'lines' => 99 | ['width' => 3], 100 | 'values' => [], 101 | 'x_values' => [], 102 | 'y_values' => [], 103 | 'ylabel' => '', 104 | 'xlabel' => '', 105 | 'title' => '', 106 | 'cycler' => [ 107 | 'color' => [ 108 | 'default' => ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'] 109 | ], 110 | 'linestyle' => [ '-', '--', ':', '-.' ] 111 | ], 112 | 'backgroundstyle' => 'solid', 113 | 'backgroundcolor' => '#ffffff', 114 | 'bordertype' => 'square', 115 | 'paddingleft' => .79, 116 | 'paddingright' => .63, 117 | 'paddingtop' => .58, 118 | 'paddingbottom' => .515, 119 | 'paddinginsideleft' => .2, 120 | 'paddinginsideright' => .2, 121 | 'paddinginsidetop' => .15, 122 | 'paddinginsidebottom' => .15, 123 | 'ymarginleftlabel' => 10, 124 | 'xmarginlabelsticks' => 16, 125 | 'ymarginlabelsticks' => 10, 126 | 'xshowlabelticks' => true, 127 | 'yshowlabelticks' => true, 128 | 'margintitle' => 50, 129 | 'x_drawguidelines' => false, 130 | 'y_drawguidelines' => false, 131 | 'centerlabels' => false, 132 | 'bars' => ['percmarginbetwbars' => 20 ], 133 | 'legend' => false, 134 | 'legendmarginleft' => 7, 135 | 'legendmargintop' => 6, 136 | 'legendpaddingleft' => 5, 137 | 'legendpaddingtop' => 1, 138 | 'legendpaddingright' => 5, 139 | 'legendpaddingbottom' => 3, 140 | 'legendwidthlines' => 28, 141 | 'legendlabelheight' => 21, 142 | 'width_marker_x' => 9, 143 | 'height_marker_x' => 9, 144 | 'width_marker_o' => 10, 145 | 'height_marker_o' => 10, 146 | 'xticks' => ['rotation' => 0] 147 | 148 | ]; // /$default_cfg 149 | 150 | Example: 151 | 152 | $graph = new graph(); 153 | 154 | - **PREPARE BAR GRAPH:** 155 | 156 | *$graph->bar( $array_values, $arr_values_y_param = null, $cfg = null );* 157 | 158 | This method prepare a serie of values in BAR format. Do not echo the graph. To see how to echo graph, see *output_gd_png_base64()* method. 159 | 160 | $array_values: Values of Axis X 161 | 162 | $arr_values_y_param: Values of Axis Y. If not given, each $array_values will be the Axys Y values and each value will be an index position in Axis X automatically 163 | 164 | $cfg: *see CFG_GRAPH_TYPES 165 | 166 | Example: 167 | 168 | $graph = new graph(); 169 | $graph->bar( [1, 2, 3, 4] ); 170 | echo ''; // Echo img raw data in html page 171 | 172 | With this simple code you will generate the most simplest graph: 173 | 174 | ![Simple graph bar](https://github.com/vivesweb/graph-php/blob/main/samplesimple.png?raw=true) 175 | 176 | Example with x & y values: 177 | 178 | $graph = new graph(); 179 | $graph->bar( [10, 20, 30, 40], [1, 4, 9, 16] ); 180 | $graph->title("With X & Y Values"); // Set the title of the bar. See title() method 181 | echo ''; // Echo img raw data in html page 182 | 183 | With this simple code you will generate the most simplest graph: 184 | 185 | ![Simple graph bar with X & Y values](https://github.com/vivesweb/graph-php/blob/main/samplexyvalues.png?raw=true) 186 | 187 | - **PREPARE LINE GRAPH:** 188 | 189 | *$graph->plot( $array_values, $arr_values_y_param = null, $cfg = null );* 190 | 191 | This method prepare a serie of values in LINES format. Do not echo the graph. To see how to echo graph, see *output_gd_png_base64()* method. 192 | 193 | $array_values: Values of Axis X 194 | 195 | $arr_values_y_param: Values of Axis Y. If not given, each $array_values will be the Axys Y values and each value will be an index position in Axis X automatically 196 | 197 | $cfg: *see CFG_GRAPH_TYPES 198 | 199 | Example: 200 | 201 | $graph = new graph(); 202 | $graph->plot( [1, 1.5, 2, 1.8, 3] ); 203 | $graph->title("Simple Plot graph with line"); // Set the title of the bar. See title() method 204 | echo ''; // Echo img raw data in html page 205 | 206 | With this simple code you will generate the most simplest line graph: 207 | 208 | ![Simple plot line graph](https://github.com/vivesweb/graph-php/blob/main/sampleplotline.png?raw=true) 209 | 210 | - **PREPARE MULTILINE GRAPH:** 211 | 212 | You can prepare multilines calling plot() method as many series as you need. 213 | 214 | Example: 215 | 216 | $graph = new graph(); 217 | $graph->plot( [1, 1.5, 2, 1.8, 3] ); 218 | $graph->plot( [2, 2.8, 1.7, 2, 2.3] ); 219 | $graph->title("Multi Line"); // Set the title of the bar. See title() method 220 | echo ''; // Echo img raw data in html page 221 | 222 | With this simple code you will generate Multiline Graph: 223 | 224 | ![Plot Multiline graph](https://github.com/vivesweb/graph-php/blob/main/samplemultiline.png?raw=true) 225 | 226 | - **MERGE LINES & BAR GRAPH:** 227 | 228 | You can merge line/multilines & bars calling plot()/bar() method as many series as you need. 229 | 230 | Example: 231 | 232 | $graph = new graph(); 233 | $graph->bar( [1, 2, 3, 4, 5, 6, 7], [1, 4, 9, 16, 17, 18, 17] ); 234 | $graph->plot( [1, 2, 3, 4, 5, 6, 7], [10,8, 5, 10,15, 16, 15] ); 235 | $graph->title( 'Bar & Line' ); // Set the title of the bar. See title() method 236 | echo ''; // Echo img raw data in html page 237 | 238 | With this simple code you will generate Line & Bar Graph: 239 | 240 | ![Plot Line & Bar graph](https://github.com/vivesweb/graph-php/blob/main/samplebarline.png?raw=true) 241 | 242 | 243 | 244 | - **SET GRAPH TITLE:** 245 | 246 | *$graph->title( $title );* 247 | 248 | *$graph->set_title( $title ); // synonymous of title()* 249 | 250 | This method set the graph TITLE 251 | 252 | $title: String with the title 253 | 254 | Example: 255 | 256 | $graph = new graph(); 257 | $graph->bar( [1, 2, 3, 4] ); 258 | $graph->title("Here your graph TITLE"); 259 | echo ''; // Echo img raw data in html page 260 | 261 | With this simple code you will generate Simple Bar graph with title: 262 | 263 | ![Simple graph bar with title](https://github.com/vivesweb/graph-php/blob/main/sampletitle.png?raw=true) 264 | 265 | - **SET GRAPH X LABEL:** 266 | 267 | *$graph->xlabel( $xlabel );* 268 | 269 | *$graph->set_xlabel( $xlabel ); // synonymous of xlabel()* 270 | 271 | This method set the graph X LABEL 272 | 273 | $xlabel: String with the X LABEL 274 | 275 | Example: 276 | 277 | $graph = new graph(); 278 | $graph->bar( [1, 2, 3, 4] ); 279 | $graph->xlabel( 'Here your graph X LABEL' ); 280 | echo ''; // Echo img raw data in html page 281 | 282 | With this simple code you will generate Simple Bar graph with X label: 283 | 284 | ![Simple graph bar with X LABEL](https://github.com/vivesweb/graph-php/blob/main/samplexlabel.png?raw=true) 285 | 286 | - **SET GRAPH Y LABEL:** 287 | 288 | *$graph->ylabel( $ylabel );* 289 | 290 | *$graph->set_ylabel( $ylabel ); // synonymous of ylabel()* 291 | 292 | This method set the graph Y LABEL 293 | 294 | $ylabel: String with the Y LABEL 295 | 296 | Example: 297 | 298 | $graph = new graph(); 299 | $graph->bar( [1, 2, 3, 4] ); 300 | $graph->ylabel( 'Here your graph Y LABEL' ); 301 | echo ''; // Echo img raw data in html page 302 | 303 | With this simple code you will generate Simple Bar graph with Y label: 304 | 305 | ![Simple graph bar with Y LABEL](https://github.com/vivesweb/graph-php/blob/main/sampleylabel.png?raw=true) 306 | 307 | - **LIMIT AXES VALUES:** 308 | 309 | *$graph->axes( $xmin, $xmax, $ymin, $ymax );* 310 | 311 | *$graph->axes( $arr_min_max );* 312 | 313 | This method set the min & max values of axis X & Y 314 | 315 | You can send each value separatelly with 316 | 317 | $xmin: Minimum Value for Axis X 318 | 319 | $xmax: Maximum Value for Axis X 320 | 321 | $ymin: Minimum Value for Axis Y 322 | 323 | $ymax: Maximum Value for Axis Y 324 | 325 | If you prefer, you can send the params in one array as: 326 | 327 | $arr_params = [$xmin, $xmax, $ymin, $ymax] 328 | 329 | If any of params is NULL, then the system will select it automatically 330 | 331 | Example: 332 | 333 | $graph = new graph(); 334 | $graph->bar( [1, 2, 3, 4], [1, 4, 9, 16] ); 335 | $arr_params = [0, 6, 0, 20]; 336 | $graph->axes($arr_params); // Same as $graph->axes(0, 6, 0, 20); 337 | $graph->title("Limits Axis X & Y"); // Set the Title 338 | echo ''; // Echo img raw data in html page 339 | 340 | With this simple code you will generate Simple Bar graph with limits in X & Y axis: 341 | 342 | ![Simple graph bar with Limits Max & Min in Axes X & Y](https://github.com/vivesweb/graph-php/blob/main/samplelimitsxy.png?raw=true) 343 | 344 | - **SHOW LEGEND:** 345 | 346 | *$graph->legend( $legend = true );* 347 | 348 | Calling this method the graph show the legend. You can set it to false to hide the legend. By default the legend is not showed. 349 | 350 | By default, the title of each serie to show in legend will be the index of the serie. You can set the name of the title with $cfg param whe call bar(), plot() methods 351 | 352 | Example: 353 | 354 | $graph->bar( [1, 2, 3, 4, 5, 6, 7], [1, 4, 9, 16, 17, 18, 17] ); 355 | $graph->plot( [1, 2, 3, 4, 5, 6, 7], [10,8, 5, 10,15, 16, 15] ); 356 | $graph->title( 'Legend' ); 357 | $graph->legend( ); 358 | echo ''; // Echo img raw data in html page 359 | 360 | With this simple code you will generate Graph with legend: 361 | 362 | ![Simple graph with legend](https://github.com/vivesweb/graph-php/blob/main/samplelegend.png?raw=true) 363 | 364 | Example with legend names: 365 | 366 | $graph->bar( [1, 2, 3, 4, 5, 6, 7], [1, 4, 9, 16, 17, 18, 17], ['label'=>'Name Legend 1'] ); 367 | $graph->plot( [1, 2, 3, 4, 5, 6, 7], [10,8, 5, 10,15, 16, 15], ['label'=>'Name Legend 2'] ); 368 | $graph->title( 'Legend with label names' ); 369 | $graph->legend( ); 370 | echo ''; // Echo img raw data in html page 371 | 372 | With this simple code you will generate Graph with legend: 373 | 374 | ![Simple graph with legend names](https://github.com/vivesweb/graph-php/blob/main/samplelegendnames.png?raw=true) 375 | 376 | - **MARKERS:** 377 | 378 | When plot a line or bar, you can send a param marker. Markers allowed: 379 | 'x', 'o', 'd', '^', 's' 380 | 381 | *See USING LINES, COLORS & MARKERS. 382 | 383 | Example: 384 | 385 | $graph->plot( [4, 5, 6, 7], [1, 4, 9, 16], ['marker' => 'x'] ); 386 | $graph->plot( [4, 5, 6, 7], [5, 8, 7, 10], ['marker' => 'o'] ); 387 | $graph->axes([2, 9, 0, 20]); 388 | $graph->title( 'Lines & Legend with "x" & "o" markers' ); 389 | $graph->legend( ); 390 | echo ''; // Echo img raw data in html page 391 | 392 | With this simple code you will generate Graph with markers: 393 | 394 | ![Simple graph with markers](https://github.com/vivesweb/graph-php/blob/main/samplemarker.png?raw=true) 395 | 396 | You can pass directly the marker and format line. Example of use with line with marker and only marker: 397 | 398 | $graph->plot( [4, 5, 6, 7], [1, 4, 9, 16], 'o' ); 399 | $graph->plot( [4, 5, 6, 7], [5, 8, 7, 10], 'x-' ); 400 | $graph->axes([2, 9, 0, 20]); 401 | $graph->title( 'Line with marker & only markers' ); 402 | echo ''; // Echo img raw data in html page 403 | 404 | With this simple code you will generate Graph with markers and serie with marker and line: 405 | 406 | ![Simple graph with markers and markers with lines](https://github.com/vivesweb/graph-php/blob/main/samplemarkerplot.png?raw=true) 407 | 408 | - **PASS MORE THAN 1 PLOT VALUES, COLORS & MARKERS:** 409 | 410 | In 1 simple row you can pass more than 1 array of values with colors & markers. *See USING LINES, COLORS & MARKERS*: 411 | 412 | $graph = new graph(); 413 | $x = $graph->math->linspace( 0, 5, 20 ); 414 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 415 | $graph->title( 'Colors, disctont. line & markers "--", "square", "^"' ); 416 | echo ''; // Echo img raw data in html page 417 | 418 | With this simple code you will generate Graph with mutiple values, colors & markers: 419 | 420 | ![Simple graph with multi array of values, colors & markers](https://github.com/vivesweb/graph-php/blob/main/samplemarkers.png?raw=true) 421 | 422 | - **CUSTOM PNG MARKERS:** 423 | 424 | You can use your custom PNG markers. The file need to be .png file (NOTE: ONLY WORKS WITH PNG-8. Don't work with PNG-24) 425 | 426 | Example: 427 | 428 | $graph->plot( [4, 5, 6, 7], [1, 4, 9, 16], ['marker' => __DIR__ . '/author.png',] ); 429 | $graph->title( 'Custom image ^_^\'' ); 430 | echo ''; // Echo img raw data in html page 431 | 432 | With this simple code you will generate Graph with custom markers: 433 | 434 | ![Simple graph with custom markers](https://github.com/vivesweb/graph-php/blob/main/samplecustompng.png?raw=true) 435 | 436 | - **SHOW GUIDELINES:** 437 | 438 | You can use background guidelines 439 | 440 | *$graph->set_drawguidelines( $show=true );* 441 | 442 | Example: 443 | 444 | $graph->plot( [4, 5, 6, 7], [1, 4, 9, 16], ['marker' => __DIR__ . '/custom_marker.png', 'label'=>'PHP'] ); 445 | $graph->plot( [4, 5, 6, 7], [3, 7, 13, 8], ['marker' => __DIR__ . '/tux.png', 'label'=>'GNU/Linux'] ); 446 | $graph->plot( [4, 5, 6, 7], [5, 2, 7, 5], ['marker' => __DIR__ . '/nginx.png', 'label'=>'NGINX'] ); 447 | $graph->set_drawguidelines( ); 448 | $graph->legendwidthlines( 65 ); // Change width of legend lines 449 | $graph->legendlabelheight( 33 ); // Change height of legend labels 450 | $graph->title( 'Better with Guidelines' ); 451 | $graph->legend( ); 452 | echo ''; // Echo img raw data in html page 453 | 454 | With this simple code you will generate Graph with custom markers & Guidelines: 455 | 456 | ![Simple graph with Guidelines](https://github.com/vivesweb/graph-php/blob/main/sampleguidelines.png?raw=true) 457 | 458 | - **SHOW X GUIDELINES:** 459 | 460 | You can show only background X guidelines 461 | 462 | *$graph->set_x_drawguidelines( $show=true );* 463 | 464 | Example: 465 | 466 | $graph->set_x_drawguidelines( ); 467 | 468 | - **SHOW Y GUIDELINES:** 469 | 470 | You can show only background Y guidelines 471 | 472 | *$graph->set_y_drawguidelines( $show=true );* 473 | 474 | Example: 475 | 476 | $graph->set_y_drawguidelines( ); 477 | 478 | - **CHANGE LINE WIDTH OF LEGEND:** 479 | 480 | Sometimes you will need to change the width of the series line at Legend. You can to set the with legendwidthlines() 481 | 482 | *$graph->legendwidthlines( $legendwidthlines=28 );* 483 | 484 | See example at SHOW GUIDELINES 485 | 486 | - **CHANGE LABEL HEIGHT OF LEGEND:** 487 | 488 | Sometimes you will need to change the height of the labe series line at Legend. You can to set the with legendlabelheight() 489 | 490 | *$graph->legendlabelheight( $legendlabelheight=21 );* 491 | 492 | See example at SHOW GUIDELINES 493 | 494 | - **SET BACKGROUND IMAGE:** 495 | 496 | You can set a background image. Support .jpg, .png, .gif. The class that load the image is img2img (https://github.com/vivesweb/img2img). See the documentation for possibilites 497 | 498 | *$graph->imread( $filename );* 499 | 500 | Example: 501 | 502 | $graph = new graph(); 503 | $graph->imread( __DIR__ .'/background_example.jpg'); 504 | $x = $graph->math->linspace( 0, 5, 20 ); 505 | $graph->title( 'Original Background' ); 506 | $graph->plot( [ [$x, $x, 'r--'], [$x, $graph->math->pow($x, 2), 'bs'], [$x, $graph->math->pow($x, 3), 'g^'] ] ); 507 | echo ''; // Echo img raw data in html page 508 | 509 | With this simple code you will generate Graph with background image: 510 | 511 | ![Simple graph with Background image](https://github.com/vivesweb/graph-php/blob/main/samplebackground.png?raw=true) 512 | 513 | Is not a good idea use original image. You will need to transform it to more clearer picture. With the img2img class you can transform it directly. img2img (https://github.com/vivesweb/img2img). See the documentation for possibilites. You can see https://github.com/vivesweb/graph-php/blob/main/example.php to take some ideas for its use. 514 | 515 | The class of img2img is loaded at $graph->bckgr_img_gd. You can use directly the methods of img2img. See the next example. 516 | 517 | Example with cleared background image: 518 | 519 | $graph->plot( [4, 5, 6, 7], [1, 4, 9, 13], ['marker' => __DIR__ . '/custom_marker.png', 'label'=>'PHP'] ); 520 | $graph->plot( [4, 5, 6, 7], [3, 6, 12, 8], ['marker' => __DIR__ . '/tux.png', 'label'=>'GNU/Linux'] ); 521 | $graph->plot( [4, 5, 6, 7], [5, 2, 7, 5], ['marker' => __DIR__ . '/nginx.png', 'label'=>'NGINX'] ); 522 | $graph->legendwidthlines( 65 ); 523 | $graph->legendlabelheight( 33 ); 524 | $graph->imread( __DIR__ .'/background_example.jpg'); 525 | $graph->title( 'Better use of background' ); 526 | $graph->set_drawguidelines( ); 527 | $graph->bckgr_img_gd->filter( IMG_FILTER_GRAYSCALE ); 528 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, -50 ); 529 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 100 ); 530 | $graph->bckgr_img_gd->filter( IMG_FILTER_CONTRAST, 50 ); 531 | $graph->bckgr_img_gd->filter( IMG_FILTER_BRIGHTNESS, 115 ); 532 | $graph->bckgr_img_gd->flip( ); 533 | $graph->legend(); 534 | echo ''; // Echo img raw data in html page 535 | 536 | With this simple code you will generate Graph with cleared background image: 537 | 538 | ![Simple graph with Cleared Background image](https://github.com/vivesweb/graph-php/blob/main/samplegraybackground.png?raw=true) 539 | 540 | - **ROTATE TICKS X LABELS:** 541 | 542 | You can rotate text on X Axis labels. In this case we use 45º. if you want original horizontal, set rotation to 0. 543 | 544 | *$graph->xticks( ['rotation' => 45] );* 545 | 546 | Example: 547 | 548 | $graph->plot( [40000, 50000, 60000, 70000], [1, 4, 9, 13] ); 549 | $graph->title( 'Rotation Xticks' ); 550 | $graph->set_drawguidelines( ); 551 | $graph->xticks( ['rotation' => 45]); 552 | echo ''; // Echo img raw data in html page 553 | 554 | With this simple code you will generate Graph with rotation X labels: 555 | 556 | ![Simple graph with rotation 45º X labes](https://github.com/vivesweb/graph-php/blob/main/samplerotationticks.png?raw=true) 557 | 558 | - **SCATTER:** 559 | 560 | You can create a Scatter Graph. 561 | 562 | *$graph->scatter( $arr_values );* 563 | 564 | $arr_values will be as: 565 | 566 | $arr_values = [ 567 | [ [1, 1.5, 2, 2, 3, 4], [10, 9.5, 9, 10, 8, 9] ], // For Serie 1 [ [x_arrayvalues], [y_arrayvalues] ] 568 | [ [4, 5, 5.7, 6, 7, 8], [8, 6, 7.3, 8, 7, 8] ], // For Serie 2 [ [x_arrayvalues], [y_arrayvalues] ] 569 | ] 570 | 571 | If you want labels on Legend, use this: 572 | 573 | $arr_values = [ 574 | [ [1, 1.5, 2, 2, 3, 4], [10, 9.5, 9, 10, 8, 9], ['label'=>'Male'] ], 575 | [ [4, 5, 5.7, 6, 7, 8], [8, 6, 7.3, 8, 7, 8], ['label'=>'Female'] ], 576 | ]; 577 | 578 | Example: 579 | 580 | $arr_values = [ 581 | [ [1, 1.5, 2, 2, 3, 4], [10, 9.5, 9, 10, 8, 9], ['label'=>'Male'] ], 582 | [ [4, 5, 5.7, 6, 7, 8], [8, 6, 7.3, 8, 7, 8], ['label'=>'Female'] ], 583 | ]; 584 | 585 | $graph->title( 'Scatter & legend' ); 586 | $graph->scatter( $arr_values ); 587 | $graph->legend( ); 588 | echo ''; // Echo img raw data in html page 589 | 590 | With this simple code you will generate Scatter Graph: 591 | 592 | ![Simple graph with Scatter](https://github.com/vivesweb/graph-php/blob/main/samplescatter.png?raw=true) 593 | 594 | - **HISTOGRAM:** 595 | 596 | You can create an histogram from data. 597 | 598 | *$graph->hist( $arr_values, $cfg = null );* 599 | 600 | $cfg['num_blocks] = blocks to divide histogram. Default = 10 601 | 602 | Example: 603 | 604 | $graph->title( 'DEFAULT HISTOGRAM' ); 605 | $graph->hist( [10, 11, 40, 45, 50, 55, 60, 60, 70, 80, 85, 90, 95, 100, 105, 106, 107, 108, 109, 110, 111, 112, 123, 140, 150] ); 606 | echo ''; // Echo img raw data in html page 607 | 608 | With this simple code you will generate Histogram Graph: 609 | 610 | ![Simple graph with histogram](https://github.com/vivesweb/graph-php/blob/main/samplehistogram.png?raw=true) 611 | 612 | Example of Histogram with 7 blocks: 613 | 614 | $graph->title( '7 xval HISTOGRAM' ); 615 | $graph->hist( [10, 11, 40, 45, 50, 55, 60, 60, 70, 80, 85, 90, 95, 100, 105, 106, 107, 108, 109, 110, 111, 112, 123, 140, 150], ['num_blocks' => 7] ); 616 | echo ''; // Echo img raw data in html page 617 | 618 | With this simple code you will generate Histogram Graph with 7 bocks: 619 | 620 | ![Simple graph with histogram](https://github.com/vivesweb/graph-php/blob/main/samplehistseven.png?raw=true) 621 | 622 | 623 | 624 | - **GET BASE64 IMAGE DATE:** 625 | 626 | In this earlier version you can get the data in Base64 format and use it directly into html page. 627 | 628 | **From Version 1.0.1:** 629 | 630 | - In $cfg you can specify if you want to draw X ticks labels or Y ticks labes with array configuration: [ 'xshowlabelticks' => true, 'xshowlabelticks' => true ]. 631 | - In $cfg you can sepecify border type: [ 'bordertype' => 'square' ] or [ 'bordertype' => 'halfsquare' ]. Default is square. Halfsquare normaly used when draw subplots. 632 | - In $cfg you can sepecify the ymarginleftlabel: [ 'ymarginleftlabel' => 1 ] 633 | 634 | *$graph->output_gd_png_base64( $cfg = null )* 635 | 636 | Example: 637 | 638 | echo ''; // Echo img raw data in html page 639 | echo ''; // Echo img raw data in html page without ticks labels 640 | 641 | - **SET WIDTH GRAPH:** 642 | 643 | You can change the default (6.4 inches) width graph in inches 644 | 645 | *$graph->width( $width = 6.4 );* 646 | 647 | Example: 648 | 649 | $graph->width( 12.8 ); 650 | 651 | - **SET HEIGHT GRAPH:** 652 | 653 | You can change the default (4.8 inches) height graph in inches 654 | 655 | *$graph->height( $height = 4.8 );* 656 | 657 | Example: 658 | 659 | $graph->height( 9.6 ); 660 | 661 | 662 | - **CFG_GRAPH_TYPES - USING LINES, COLORS & MARKERS:** 663 | 664 | You can set some types of graphs: 665 | 666 | - When prepare a plot, you can to pass a cfg_param with: 667 | 668 | '-': Single line 669 | 670 | '--': Discontinued line 671 | 672 | 'bar': Bar 673 | 674 | 'scatter': Scatter 675 | 676 | One of this colors: 677 | 678 | ['b' => '#0000ff', 'g' => '#008000', 'r' => '#ff0000', 'c' => '#00cccc', 'm' => '#cc0000', 'y' => '#cc0000', 'k' => '#000000', 'w' => '#ffffff', 679 | '#1f77b4' => '#1f77b4', '#ff7f0e' => '#ff7f0e', '#2ca02c' => '#2ca02c', '#d62728' => '#d62728', '#9467bd' => '#9467bd', '#8c564b' => '#8c564b', 680 | '#e377c2' => '#e377c2', '#7f7f7f' => '#7f7f7f', '#bcbd22' => '#bcbd22', '#17becf' => '#17becf'] 681 | 682 | For markers you can to use: 683 | 684 | 'filename.png' -> Your file name of png of your marker 685 | 686 | 'o': round marker 687 | 688 | 'x': X marker 689 | 690 | '^': Triangle marker 691 | 692 | 's': Square marker 693 | 694 | 'd': Diamond marker 695 | 696 | By default, each time that you prepare a values, the system select next color in cycler: 697 | cycler' => [ 698 | 'color' => [ 699 | 'default' => ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'] 700 | ], 701 | ], 702 | 703 | If you want a special color for one serie, you can to pass it in $cfg var when draw plot(), bar(). See the examples 704 | 705 | 706 | - **MATH FUNCTIONS:** 707 | 708 | *$graph->math* 709 | 710 | This class is provided with the math library ext-op-ml-php (https://github.com/vivesweb/ext_op_ml) 711 | 712 | Here is an example of its use. Check the library documentation to see possibilities 713 | 714 | Example: 715 | 716 | $graph = new graph(); 717 | $x = $graph->math->linspace( 0, 2, 50 ); 718 | $graph->plot( $x, $x, ['label'=>'linear'] ); 719 | $graph->plot( $x, $graph->math->pow($x, 2), ['label'=>'quadratic'] ); 720 | $graph->plot( $x, $graph->math->pow($x, 3), ['label'=>'cubic'] ); 721 | $graph->xlabel('x label'); 722 | $graph->ylabel('y label'); 723 | $graph->title("Simple Plot. With Legend & Labels X, Y"); 724 | $graph->legend( ); 725 | echo ''; // Echo img raw data in html page 726 | 727 | With this simple code you will generate Simple Line graph with Math Functions: 728 | 729 | ![Simple graph bar with Limits Max & Min in Axes X & Y. Math Functions](https://github.com/vivesweb/graph-php/blob/main/sample4.png?raw=true) 730 | 731 | 732 | 733 | 734 | 735 | 736 | **Of course. You can use it freely :vulcan_salute::alien:** 737 | 738 | By Rafa. 739 | 740 | 741 | @author Rafael Martin Soto 742 | 743 | @author {@link http://www.inatica.com/ Inatica} 744 | 745 | @blog {@link https://rafamartin10.blogspot.com/ Rafael Martin's Blog} 746 | 747 | @since October 2021 748 | 749 | @version 1.0.1 750 | 751 | @license GNU General Public License v3.0 752 | --------------------------------------------------------------------------------