//============================================================================== void ColouredElement::convertToNewPathElement (const Path& path) { if (! path.isEmpty()) { PaintElementPath newElement (getOwner()); newElement.setToPath (path); newElement.setFillType (fillType, false); newElement.enableStroke (isStrokeEnabled(), false); newElement.setStrokeType (getStrokeType().stroke, false); newElement.setStrokeFill (getStrokeType().fill, false); ScopedPointer<XmlElement> xml (newElement.createXml()); PaintElement* e = getOwner()->addElementFromXml (*xml, getOwner()->indexOfElement (this), true); getOwner()->getSelectedElements().selectOnly (e); getOwner()->removeElement (this, true); } }
void PaintElementPath::draw (Graphics& g, const ComponentLayout* layout, const Rectangle<int>& parentArea) { updateStoredPath (layout, parentArea); path.setUsingNonZeroWinding (nonZeroWinding); fillType.setFillType (g, getDocument(), parentArea); g.fillPath (path); if (isStrokePresent) { strokeType.fill.setFillType (g, getDocument(), parentArea); g.strokePath (path, getStrokeType().stroke); } }
void ColouredElement::getColourSpecificProperties (Array <PropertyComponent*>& props) { props.add (new ElementFillModeProperty (this, false)); switch (getFillType().mode) { case JucerFillType::solidColour: props.add (new ElementFillColourProperty ("colour", this, ElementFillColourProperty::solidColour, false)); break; case JucerFillType::linearGradient: case JucerFillType::radialGradient: props.add (new ElementFillColourProperty ("colour 1", this, ElementFillColourProperty::gradientColour1, false)); props.add (new ElementFillPositionProperty (this, "x1", PositionPropertyBase::componentX, true, false)); props.add (new ElementFillPositionProperty (this, "y1", PositionPropertyBase::componentY, true, false)); props.add (new ElementFillColourProperty ("colour 2", this, ElementFillColourProperty::gradientColour2, false)); props.add (new ElementFillPositionProperty (this, "x2", PositionPropertyBase::componentX, false, false)); props.add (new ElementFillPositionProperty (this, "y2", PositionPropertyBase::componentY, false, false)); break; case JucerFillType::imageBrush: props.add (new ImageBrushResourceProperty (this, false)); props.add (new ImageBrushPositionProperty (this, "anchor x", PositionPropertyBase::componentX, false)); props.add (new ImageBrushPositionProperty (this, "anchor y", PositionPropertyBase::componentY, false)); props.add (new ImageBrushOpacityProperty (this, false)); break; default: jassertfalse; break; } if (showOutline) { props.add (new EnableStrokeProperty (this)); if (isStrokePresent) { props.add (new StrokeThicknessProperty (this)); if (showJointAndEnd) { props.add (new StrokeJointProperty (this)); props.add (new StrokeEndCapProperty (this)); } props.add (new ElementFillModeProperty (this, true)); switch (getStrokeType().fill.mode) { case JucerFillType::solidColour: props.add (new ElementFillColourProperty ("colour", this, ElementFillColourProperty::solidColour, true)); break; case JucerFillType::linearGradient: case JucerFillType::radialGradient: props.add (new ElementFillColourProperty ("colour 1", this, ElementFillColourProperty::gradientColour1, true)); props.add (new ElementFillPositionProperty (this, "x1", PositionPropertyBase::componentX, true, true)); props.add (new ElementFillPositionProperty (this, "y1", PositionPropertyBase::componentY, true, true)); props.add (new ElementFillColourProperty ("colour 2", this, ElementFillColourProperty::gradientColour2, true)); props.add (new ElementFillPositionProperty (this, "x2", PositionPropertyBase::componentX, false, true)); props.add (new ElementFillPositionProperty (this, "y2", PositionPropertyBase::componentY, false, true)); break; case JucerFillType::imageBrush: props.add (new ImageBrushResourceProperty (this, true)); props.add (new ImageBrushPositionProperty (this, "stroke anchor x", PositionPropertyBase::componentX, true)); props.add (new ImageBrushPositionProperty (this, "stroke anchor y", PositionPropertyBase::componentY, true)); props.add (new ImageBrushOpacityProperty (this, true)); break; default: jassertfalse; break; } } } }