57 lines
952 B
C++
57 lines
952 B
C++
#include "pbd/xml++.h"
|
|
#include "canvas/polygon.h"
|
|
|
|
using namespace ArdourCanvas;
|
|
|
|
Polygon::Polygon (Group* parent)
|
|
: Item (parent)
|
|
, PolyItem (parent)
|
|
, Fill (parent)
|
|
{
|
|
|
|
}
|
|
|
|
void
|
|
Polygon::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const
|
|
{
|
|
if (_outline) {
|
|
setup_outline_context (context);
|
|
render_path (area, context);
|
|
|
|
if (!_points.empty ()) {
|
|
context->move_to (_points.front().x, _points.front().y);
|
|
}
|
|
|
|
context->stroke_preserve ();
|
|
}
|
|
|
|
if (_fill) {
|
|
setup_fill_context (context);
|
|
context->fill ();
|
|
}
|
|
}
|
|
|
|
XMLNode *
|
|
Polygon::get_state () const
|
|
{
|
|
XMLNode* node = new XMLNode ("Polygon");
|
|
#ifdef CANVAS_DEBUG
|
|
if (!name.empty ()) {
|
|
node->add_property ("name", name);
|
|
}
|
|
#endif
|
|
add_poly_item_state (node);
|
|
add_outline_state (node);
|
|
add_fill_state (node);
|
|
return node;
|
|
}
|
|
|
|
|
|
void
|
|
Polygon::set_state (XMLNode const * node)
|
|
{
|
|
set_poly_item_state (node);
|
|
set_outline_state (node);
|
|
set_fill_state (node);
|
|
}
|