Blame c++/vector/context.h

Ivan Mahonin 2fb9fd
#ifndef CONTEXT_H
Ivan Mahonin 2fb9fd
#define CONTEXT_H
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
#include <cassert>
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
#include <cairomm/cairomm.h>
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
#include "color.h"
Ivan Mahonin 145120
#include "vector.h"
Ivan Mahonin 145120
#include "curve.h"
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
class ActivePoint;
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
class Context {
Ivan Mahonin 2fb9fd
public:
Ivan Mahonin 2fb9fd
	Cairo::RefPtr<Cairo::Context> context;
Ivan Mahonin 2fb9fd
	
Ivan Mahonin 2fb9fd
	explicit Context(
Ivan Mahonin 2fb9fd
		const Cairo::RefPtr<Cairo::Context> &context = Cairo::RefPtr<Cairo::Context>()
Ivan Mahonin 2fb9fd
	): context(context) { }
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
	Cairo::RefPtr<Cairo::Context> ctx() const { assert(context); return context; }
Ivan Mahonin 2fb9fd
	Cairo::Context* operator->() const { return context.operator->(); }
Ivan Mahonin 2fb9fd
	
Ivan Mahonin 2fb9fd
	Real pixelsize_sqr() const;
Ivan Mahonin 2fb9fd
	Real pixelsize() const;
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
	void set_source_rgb(const Color &c) const
Ivan Mahonin 2fb9fd
		{ ctx()->set_source_rgb(c.r, c.g, c.b); }
Ivan Mahonin 2fb9fd
	void set_source_rgba(const Color &c) const
Ivan Mahonin 2fb9fd
		{ ctx()->set_source_rgba(c.r, c.g, c.b, c.a); }
Ivan Mahonin 2fb9fd
	void set_line_width_px(const Real &pixels) const
Ivan Mahonin 2fb9fd
		{ ctx()->set_line_width( pixels*pixelsize() ); }
Ivan Mahonin 2fb9fd
	
Ivan Mahonin 2fb9fd
	void move_to(const Vector &p) const
Ivan Mahonin 2fb9fd
		{ ctx()->move_to(p.x, p.y); }
Ivan Mahonin 2fb9fd
	void line_to(const Vector &p) const
Ivan Mahonin 2fb9fd
		{ ctx()->line_to(p.x, p.y); }
Ivan Mahonin 2fb9fd
	
Ivan Mahonin 2fb9fd
	void point(const ActivePoint &point) const;
Ivan Mahonin 145120
	void bezier(const Bezier &bezier, bool jump = false) const;
Ivan Mahonin 145120
	void hermite(const Hermite &hermite, bool jump = false) const
Ivan Mahonin 145120
		{ bezier(hermite.get_bezier(), jump); }
Ivan Mahonin 2fb9fd
};
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
#endif