#include #include #include #include #include #include #include #include "../include/ft2build.h" #include "murmur3.h" /* MurmurHash3_x64_128 header file */ #include #include #include #include FT_FREETYPE_H #include FT_MODULE_H #include FT_LCD_FILTER_H #include FT_BITMAP_H #define BITS_PER_PIXEL_RGBA 32 #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b)) typedef struct { /* To store 32bit Hash */ FT_UInt32 hash; }HASH_32; typedef struct { /* To store 128bit Hash */ FT_UInt32 hash[4]; }HASH_128; /* A 32-bit pixel */ typedef struct { unsigned char red; unsigned char green; unsigned char blue; unsigned char alpha; } PIXEL; /* A picture. */ typedef struct { PIXEL* pixels; size_t width; size_t height; } IMAGE; /* Render modes */ enum render_modes { MONO, AA, RGB, BGR, VRGB, VBGR }; /*-----------------------------------------------------------------*/ HASH_32* Generate_Hash_x86_32(FT_Bitmap* bitmap, HASH_32* murmur); HASH_128* Generate_Hash_x86_128(FT_Bitmap* bitmap, HASH_128* murmur); HASH_128* Generate_Hash_x64_128(FT_Bitmap* bitmap, HASH_128* murmur); int Compare_Hash(HASH_128* hash_b, HASH_128* hash_t); /*-----------------------------------------------------------------*/ /* Returns the render_mode */ int Get_Render_Mode(const char* mode); /* Returns a pointer to pixel */ /* at (x,y) co-ordinate */ PIXEL* Pixel_At (IMAGE * bitmap, int x, int y); /*Render mode string to render_mode code */ void Make_PNG (FT_Bitmap* bitmap,IMAGE* fruit, int i,int render_mode); /* Image to file */ int Generate_PNG (IMAGE *bitmap, const char *path,int render_mode); /* Read PNG */ void Read_PNG(char *filename, IMAGE * after_effect); /* Add effects using two PNG images and generate an image*/ int Add_effect(IMAGE* base, IMAGE* test, IMAGE* out, int Effect_ID); /* Stitch 2 PNG files */ void Stitch(IMAGE* left, IMAGE* right, IMAGE* result); /* Finding the first non-empty (non-white) column */ int First_Column(IMAGE* input); /* Finding the first non-empty (non-white) row */ int First_Row(IMAGE* input); /* Appening white columns with image alignment */ IMAGE* Append_Columns(IMAGE* small, IMAGE* big); /* Appening white columns with image alignment */ IMAGE* Append_Rows(IMAGE* small, IMAGE* big); /* calculating the Pixel Differences */ int Image_Diff( IMAGE* base, IMAGE* test); /* Print the row in list-view webpage */ void Print_Row( FILE* fp, int index, char* name, int diff ); /* Print the table-headers in list-view webpage */ void Print_Head( FILE* fp ); /* Returns the name of the font file without the extension */ char* Get_Font_File_Name(const char* font_file_full_name); /* Returns the file extension of the font file */ char* Get_Font_File_Type(const char* font_file_full_name);