| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | #include "graphics.h"#include "obsconfig.h"#define MAGICKCORE_QUANTUM_DEPTH 16#define MAGICKCORE_HDRI_ENABLE 0#if LIBOBS_IMAGEMAGICK_DIR_STYLE == LIBOBS_IMAGEMAGICK_DIR_STYLE_6L#include <magick/MagickCore.h>#elif LIBOBS_IMAGEMAGICK_DIR_STYLE == LIBOBS_IMAGEMAGICK_DIR_STYLE_7GE#include <MagickCore/MagickCore.h>#endifvoid gs_init_image_deps(){	MagickCoreGenesis(NULL, MagickTrue);}void gs_free_image_deps(){	MagickCoreTerminus();}uint8_t *gs_create_texture_file_data(const char *file,				     enum gs_color_format *format,				     uint32_t *cx_out, uint32_t *cy_out){	uint8_t *data = NULL;	ImageInfo *info;	ExceptionInfo *exception;	Image *image;	if (!file || !*file)		return NULL;	info = CloneImageInfo(NULL);	exception = AcquireExceptionInfo();	strcpy(info->filename, file);	image = ReadImage(info, exception);	if (image) {		size_t cx = image->magick_columns;		size_t cy = image->magick_rows;		data = bmalloc(cx * cy * 4);		ExportImagePixels(image, 0, 0, cx, cy, "BGRA", CharPixel, data,				  exception);		if (exception->severity != UndefinedException) {			blog(LOG_WARNING,			     "magickcore warning/error getting "			     "pixels from file '%s': %s",			     file, exception->reason);			bfree(data);			data = NULL;		}		*format = GS_BGRA;		*cx_out = (uint32_t)cx;		*cy_out = (uint32_t)cy;		DestroyImage(image);	} else if (exception->severity != UndefinedException) {		blog(LOG_WARNING,		     "magickcore warning/error reading file "		     "'%s': %s",		     file, exception->reason);	}	DestroyImageInfo(info);	DestroyExceptionInfo(exception);	return data;}
 |