2016-01-01 11:58:36 +01:00
|
|
|
# cairo_jpg
|
2016-01-01 13:49:39 +01:00
|
|
|
|
|
|
|
## Introduction
|
|
|
|
|
|
|
|
This is an implementation of functions to import and export Cairo surfaces from
|
|
|
|
and to JPEG files. It uses the same function prototypes as Cairo's [PNG
|
|
|
|
support](http://www.cairographics.org/manual/cairo-PNG-Support.html).
|
|
|
|
|
|
|
|
## Description
|
|
|
|
|
|
|
|
The implementation is done on top of the Cairo API. It does not access
|
|
|
|
Cairo-internal functions.
|
2018-02-16 11:40:03 +01:00
|
|
|
For compression and decompression a JPEG library is used. It compiles against
|
|
|
|
[libjpeg-turbo](https://libjpeg-turbo.org/) or the original
|
|
|
|
[libjpeg](http://www.ijg.org/).
|
2016-01-01 13:49:39 +01:00
|
|
|
|
2018-02-16 11:40:03 +01:00
|
|
|
The following prototypes are implemented. Their functionality is equal to the
|
2016-01-01 13:49:39 +01:00
|
|
|
PNG functions of Cairo with the advance that there are memory-buffer-based
|
|
|
|
functions as well.
|
|
|
|
|
|
|
|
```C
|
|
|
|
cairo_status_t cairo_image_surface_write_to_jpeg_mem(cairo_surface_t *sfc, unsigned char **data, size_t *len, int quality);
|
|
|
|
cairo_status_t cairo_image_surface_write_to_jpeg_stream(cairo_surface_t *sfc, cairo_write_func_t write_func, void *closure, int quality);
|
|
|
|
cairo_status_t cairo_image_surface_write_to_jpeg(cairo_surface_t *sfc, const char *filename, int quality);
|
|
|
|
cairo_surface_t *cairo_image_surface_create_from_jpeg_mem(void *data, size_t len);
|
|
|
|
cairo_surface_t *cairo_image_surface_create_from_jpeg_stream(cairo_read_func_t read_func, void *closure);
|
|
|
|
cairo_surface_t *cairo_image_surface_create_from_jpeg(const char *filename);
|
|
|
|
```
|
|
|
|
|
|
|
|
To compile this code you need to have installed the packages libcairo2-dev
|
|
|
|
and libjpeg-dev. Compile with the following command to create an object file
|
|
|
|
linkable to your code:
|
|
|
|
```Shell
|
|
|
|
gcc -Wall -c `pkg-config cairo libjpeg --cflags --libs` cairo_jpg.c
|
|
|
|
```
|
|
|
|
|
|
|
|
Please have a look at the comments within the source files for further details.
|
|
|
|
Don't hesitate to contact me at [bf@abenteuerland.at](mailto:bf@abenteuerland.at).
|
|
|
|
|
2018-02-16 11:40:03 +01:00
|
|
|
## Testing
|
|
|
|
|
|
|
|
There is a ```main()``` function implemented which serves as demonstrational
|
|
|
|
purpose and for testing. To compile with the ```main()``` function run the
|
|
|
|
following statement:
|
|
|
|
```Shell
|
|
|
|
gcc -Wall -o cairo_jpg -DCAIRO_JPEG_MAIN `pkg-config cairo libjpeg --cflags --libs` cairo_jpg.c
|
|
|
|
```
|
|
|
|
|
2018-12-11 11:26:25 +01:00
|
|
|
## License
|
|
|
|
|
|
|
|
Cairo_JPG is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
Cairo_JPG is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with Cairo_JPG. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
|