Example #1
0
from helpers import get_inc_dir, get_lib_dir

ffi = cffi.FFI()

ffi.cdef("""

// functions

int write_jpeg (const char *file_name, unsigned char** image_buffer,
    int image_width, int image_height, int quality, char** error);

""")

jpglib = ffi.set_source("pygame._jpg_c",
                        libraries=['jpeg'],
                        include_dirs=get_inc_dir(),
                        library_dirs=get_lib_dir(),
                        source="""
    #include <stdlib.h>
    #include <jpeglib.h>

    #define NUM_LINES_TO_WRITE 500


    int write_jpeg (const char *file_name, unsigned char** image_buffer,
                int image_width, int image_height, int quality, char** error) {

        struct jpeg_compress_struct cinfo;
        struct jpeg_error_mgr jerr;
        FILE * outfile;
        JSAMPROW row_pointer[NUM_LINES_TO_WRITE];
Example #2
0
// constants

#define PNG_COLOR_TYPE_RGB_ALPHA ...
#define PNG_COLOR_TYPE_RGB ...

// functions

static int write_png(const char *file_name, unsigned char **rows, int w, int h,
    int colortype, int bitdepth, char** error);

""")

pnglib = ffi.set_source(
    "pygame._png_c",
    libraries=['png'],
    include_dirs=get_inc_dir(),
    library_dirs=get_lib_dir(),
    source="""
    #define PNG_SKIP_SETJMP_CHECK 1
    #include <stdlib.h>
    #include <png.h>

    static void
    png_write_fn (png_structp png_ptr, png_bytep data, png_size_t length)
    {
        FILE *fp = (FILE *)png_get_io_ptr(png_ptr);
        if (fwrite(data, 1, length, fp) != length) {
            fclose(fp);
            png_error(png_ptr, "Error while writing to the PNG file (fwrite)");
        }
    }