00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if ! defined (txt_eng_ft_h)
00024 #define txt_eng_ft_h 1
00025
00026 #if HAVE_FREETYPE
00027
00028 #include <ft2build.h>
00029 #include FT_FREETYPE_H
00030
00031 #include <dMatrix.h>
00032 #include <uint8NDArray.h>
00033 #include "graphics.h"
00034 #include "txt-eng.h"
00035
00036 class
00037 OCTINTERP_API
00038 ft_render : public text_processor
00039 {
00040 public:
00041 enum {
00042 MODE_BBOX = 0,
00043 MODE_RENDER = 1
00044 };
00045
00046 enum {
00047 ROTATION_0 = 0,
00048 ROTATION_90 = 1,
00049 ROTATION_180 = 2,
00050 ROTATION_270 = 3
00051 };
00052
00053 public:
00054 ft_render (void);
00055
00056 ~ft_render (void);
00057
00058 void visit (text_element_string& e);
00059
00060 void reset (void);
00061
00062 uint8NDArray get_pixels (void) const { return pixels; }
00063
00064 Matrix get_boundingbox (void) const { return bbox; }
00065
00066 uint8NDArray render (text_element* elt, Matrix& box,
00067 int rotation = ROTATION_0);
00068
00069 void set_font (const base_properties& props);
00070
00071 void set_color (Matrix c);
00072
00073 void set_mode (int m);
00074
00075 private:
00076 FT_Face face;
00077 Matrix bbox;
00078 uint8NDArray pixels;
00079 int xoffset;
00080 int yoffset;
00081 int mode;
00082 uint8_t red, green, blue;
00083 };
00084
00085 #endif // HAVE_FREETYPE
00086
00087 #endif