Blob Blame Raw
#ifndef LABPANGORENDERER_H
#define LABPANGORENDERER_H


#include <pango/pango.h>

#include "matrix.h"

class Surface;
class Matrix3;
class Color;


G_BEGIN_DECLS

#define LAB_TYPE_PANGO_RENDERER (lab_pango_renderer_get_type ())

typedef struct _LabPangoRenderer LabPangoRenderer;
typedef struct _LabPangoRendererClass LabPangoRendererClass;

#define LAB_PANGO_RENDERER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), LAB_TYPE_PANGO_RENDERER, LabPangoRendererClass))
#define LAB_IS_PANGO_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LAB_TYPE_PANGO_RENDERER))
#define LAB_PANGO_RENDERER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), LAB_TYPE_PANGO_RENDERER, LabPangoRendererClass))

struct LabPangoRendererParams {
	Surface *surface;
	IntPair2 bounds;
	Matrix3 matrix;
	Matrix2 glyph_matrix;
	Color color;
	bool hinting;
	bool antialiasing;
	LabPangoRendererParams():
		surface(), hinting(), antialiasing() { }
};


PangoRenderer* lab_pango_renderer_new(LabPangoRendererParams *params);

void lab_pango_renderer_set_params(LabPangoRenderer *renderer, LabPangoRendererParams *params);
void lab_pango_renderer_get_params(LabPangoRenderer *renderer, LabPangoRendererParams *params);

PangoFontMap* lab_pango_font_map_new(bool hinting, bool antialiasing);

G_END_DECLS


#endif