use super::*;
use super::super::path::*;
use super::super::edit::*;
use super::super::brush_definition::*;
use super::super::brush_drawing_style::*;
use super::super::super::brushes::*;
#[derive(Clone)]
pub struct BrushDefinitionElement {
id: ElementId,
new_definition: BrushDefinition,
drawing_style: BrushDrawingStyle
}
impl BrushDefinitionElement {
pub fn new(id: ElementId, new_definition: BrushDefinition, drawing_style: BrushDrawingStyle) -> BrushDefinitionElement {
BrushDefinitionElement {
id: id,
new_definition: new_definition,
drawing_style: drawing_style
}
}
pub fn definition<'a>(&'a self) -> &'a BrushDefinition {
&self.new_definition
}
pub fn drawing_style(&self) -> BrushDrawingStyle {
self.drawing_style
}
}
impl VectorElement for BrushDefinitionElement {
fn id(&self) -> ElementId {
self.id
}
fn render(&self, gc: &mut GraphicsPrimitives, properties: &VectorProperties) {
gc.draw_list(properties.brush.prepare_to_render(&properties.brush_properties));
}
fn update_properties(&self, properties: &mut VectorProperties) {
properties.brush = create_brush_from_definition(&self.new_definition, self.drawing_style);
}
fn to_path(&self, _properties: &VectorProperties) -> Option<Vec<Path>> {
None
}
}
impl Into<Vector> for BrushDefinitionElement {
#[inline]
fn into(self) -> Vector {
Vector::BrushDefinition(self)
}
}