~jkaivo/freeonebook

3b6859a3668624f49a7bcc7fe53d41cb5f4be243 — Jakob Kaivo 3 years ago a432069
begin integrating ImageMagick
4 files changed, 41 insertions(+), 3 deletions(-)

A .gitmodules
A ImageMagick
M Makefile
M fb.c
A .gitmodules => .gitmodules +3 -0
@@ 0,0 1,3 @@
[submodule "ImageMagick"]
	path = ImageMagick
	url = git@github.com:ImageMagick/ImageMagick.git

A ImageMagick => ImageMagick +1 -0
@@ 0,0 1,1 @@
Subproject commit 20f093b8865ea6c35f36128ae0ba47cc56e699b0

M Makefile => Makefile +3 -2
@@ 1,6 1,7 @@
CC=arm-linux-gnueabihf-gcc
CFLAGS=-Wall -Wextra -I.
LDFLAGS=-lpthread
CFLAGS=-Wall -Wextra -I. -IImageMagick
LDFLAGS=-lpthread -LImageMagick/MagickCore/.libs
LDLIBS=-lMagickCore-7.Q8 -lm

freeonebook: freeonebook.o gpio.o fb.o


M fb.c => fb.c +34 -1
@@ 10,6 10,10 @@
#include <linux/mxcfb.h>
#include <sys/ioctl.h>

#define MAGICKCORE_QUANTUM_DEPTH 8
#define MAGICKCORE_HDRI_ENABLE 0
#include <MagickCore/MagickCore.h>

#include "fb.h"
#include "gpio.h"



@@ 66,7 70,34 @@ void fb_loadimage(int screen, const char *path)
	printf("loading image %s\n", path);
	fflush(NULL); sync();

	int fd = open(path, O_RDONLY);
	ExceptionInfo *exception = AcquireExceptionInfo();

	printf("reading original image\n");
	ImageInfo *info = CloneImageInfo((ImageInfo*)NULL);
	strcpy(info->filename, path);
	Image *images = ReadImage(info, exception);

	printf("resizing\n");
	Image *original = RemoveFirstImageFromList(&images);
	Image *resized = ResizeImage(original, fb.vsi.xres, fb.vsi.yres, LanczosFilter, exception);
	DestroyImage(original);

	printf("rotating\n");
	Image *rotated = IntegralRotateImage(resized, 3, exception);
	DestroyImage(rotated);

	printf("writing grayscale\n");
	AppendImageToList(&images, rotated);
	strcpy(info->filename, "/tmp/converted.gray");
	WriteImage(info, images, exception);

	printf("cleaning up\n");
	DestroyImageList(images);
	DestroyImage(rotated);
	DestroyImageInfo(info);
	DestroyExceptionInfo(exception);

	int fd = open("/tmp/converted.gray", O_RDONLY);
	if (fd == -1) {
		printf("not found\n");
		fflush(NULL);


@@ 98,6 129,8 @@ void fb_loadimage(int screen, const char *path)

void fb_init(void)
{
	MagickCoreGenesis(NULL, MagickFalse);

	fb.fd = open("/dev/fb0", O_RDWR);

	ioctl(fb.fd, FBIOGET_FSCREENINFO, &fb.fsi);