| #include <stdio.h> |
| #include <ft2build.h> |
| #include <string.h> |
| #include "murmur3.h" // MurmurHash3_x64_128 header file |
| |
| #include FT_FREETYPE_H |
| #include FT_MODULE_H |
| #include FT_LCD_FILTER_H |
| #include FT_BITMAP_H |
| |
| #define BITS_PER_PIXEL_MONO 1 // Constants for the Bitmap Header |
| #define BITS_PER_PIXEL_GRAY 8 |
| #define BITS_PER_PIXEL_LCD 24 |
| |
| #define PLANES 1 // Constants for the Bitmap Header |
| #define COMPRESSION 0 |
| #define X_PIXELS_PER_METER 0 |
| #define Y_PIXELS_PER_METER 0 |
| #define USED_COLORS 0 |
| #define IMPORTANT_COLORS 0 |
| //------------------------------------------------------------------------------- |
| #pragma pack(push,1) |
| |
| typedef struct{ // Bitmap FILE Header |
| |
| FT_UInt16 type; |
| FT_UInt32 file_size; |
| FT_UInt32 reserved; |
| FT_UInt32 file_offset; |
| |
| } BMP_FILE_HEADER; |
| |
| typedef struct{ // Bitmap INFO Header |
| |
| FT_UInt32 info_header_size; |
| FT_UInt32 width; |
| FT_Int height; |
| FT_UInt16 planes; |
| FT_UInt16 bits_per_pixel; |
| FT_UInt32 compression; |
| FT_UInt32 image_size; |
| FT_UInt32 y_pixels_per_meter; |
| FT_UInt32 x_pixels_per_meter; |
| FT_UInt32 used_colors; |
| FT_UInt32 important_colors; |
| |
| } BMP_INFO_HEADER; |
| |
| typedef struct { // Bitmap Header |
| |
| BMP_FILE_HEADER file_header; |
| BMP_INFO_HEADER info_header; |
| |
| } HEADER; |
| |
| //------------------------------------------------------------------------------ |
| typedef struct { // To store 32bit Hash |
| FT_UInt32 hash[1]; |
| }HASH_32; |
| |
| typedef struct { // To store 128bit Hash |
| FT_UInt32 hash[4]; |
| }HASH_128; |
| |
| #pragma pack(pop) |
| |
| //------------------------------------------------------------------------------- |
| |
| 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 Get_Padding (FT_Bitmap * bitmap); |
| |
| int Get_Bits_Per_Pixel ( unsigned char PIXEL_MODE ); |
| |
| void Write_Bitmap_Header (FT_Bitmap * bitmap, char * fname); |
| |
| void Write_Bitmap_Data_MONO (FT_Bitmap * bitmap, char * fname); |
| void Write_Bitmap_Data_GRAY (FT_Bitmap * bitmap, char * fname); |
| void Write_Bitmap_Data_LCD_BGR (FT_Bitmap * bitmap, char * fname); |
| void Write_Bitmap_Data_LCD_RGB (FT_Bitmap * bitmap, char * fname); |
| void Write_Bitmap_Data_LCD_V_RGB (FT_Bitmap * bitmap, char * fname); |
| void Write_Bitmap_Data_LCD_V_BGR (FT_Bitmap * bitmap, char * fname); |