Blob Blame Raw
#ifndef FREETYPEVIEW_H
#define FREETYPEVIEW_H

#include "view.h"

class FreeTypeView: public View {
public:
	class Params {
	public:
		std::string family;
		bool bold;
		bool italic;
		Real size;

		bool hinting;
		bool antialiasing;
		
		int alignment;
		bool justify;
		Real wrap_width;
		bool alignment_by_origin;
		
		Vector2 spacing;
		
		Vector2 origin;
		Matrix matrix;
		Color color;
		bool invert;

		std::string text;

		Params():
			bold(),
			italic(),
			size(),
			hinting(),
			antialiasing(),
			alignment(),
			justify(),
			wrap_width(),
			alignment_by_origin(),
			invert()
		{ }
	};
	
	View::PointPtr
		p0,
		px,
		py,
		bounds_p0,
		bounds_p1;
	Vector2 prev_p0;

	Params params;
	Cairo::RefPtr<Cairo::ImageSurface> surface;
	
	FreeTypeView();
	~FreeTypeView();
	
	bool on_timeout();
	
	void update_surface();
	void on_point_motion(const View::PointPtr &point);
	void on_draw_view(const Cairo::RefPtr<Cairo::Context> &context);
};

#endif