Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
filter-chemistry.cpp File Reference

Go to the source code of this file.

Functions

static guint count_filter_hrefs (SPObject *o, SPFilter *filter)
 Count how many times the filter is used by the styles of o and its descendants.
 
SPFilternew_filter (SPDocument *document)
 
SPFilterPrimitivefilter_add_primitive (SPFilter *filter, const Inkscape::Filters::FilterPrimitiveType type)
 
SPFilternew_filter_gaussian_blur (SPDocument *document, gdouble radius, double expansion)
 Creates a filter with blur primitive of specified radius for an item with the given matrix expansion, width and height.
 
static SPFilternew_filter_blend_gaussian_blur (SPDocument *document, const char *blendmode, gdouble radius, double expansion)
 Creates a simple filter with a blend primitive and a blur primitive of specified radius for an item with the given matrix expansion, width and height.
 
SPFilternew_filter_simple_from_item (SPDocument *document, SPItem *item, const char *mode, gdouble radius)
 Creates a simple filter for the given item with blend and blur primitives, using the specified mode and radius, respectively.
 
SPFiltermodify_filter_gaussian_blur_from_item (SPDocument *document, SPItem *item, gdouble radius)
 Modifies the gaussian blur applied to the item.
 
void remove_filter (SPObject *item, bool recursive)
 
void remove_hidder_filter (SPObject *item)
 
bool has_hidder_filter (SPObject const *item)
 
void remove_filter_gaussian_blur (SPObject *item)
 Removes the first feGaussianBlur from the filter attached to given item.
 
void remove_filter_legacy_blend (SPObject *item)
 Removes blend primitive from the filter attached to given item.
 
SPBlendMode filter_get_legacy_blend (SPObject *item)
 Get if the filter have a < 1.0 blending filter @params: the item to get filtered blend.
 
bool filter_is_single_gaussian_blur (SPFilter *filter)
 
double get_single_gaussian_blur_radius (SPFilter *filter)
 
bool set_blend_mode (SPItem *item, SPBlendMode blend_mode)
 

Function Documentation

◆ count_filter_hrefs()

static guint count_filter_hrefs ( SPObject o,
SPFilter filter 
)
static

Count how many times the filter is used by the styles of o and its descendants.

Definition at line 37 of file filter-chemistry.cpp.

References child, SPObject::children, count_filter_hrefs(), SPStyle::filter, SPStyle::getFilter(), and SPObject::style.

Referenced by count_filter_hrefs(), and modify_filter_gaussian_blur_from_item().

◆ filter_add_primitive()

◆ filter_get_legacy_blend()

SPBlendMode filter_get_legacy_blend ( SPObject item)

Get if the filter have a < 1.0 blending filter @params: the item to get filtered blend.

Definition at line 490 of file filter-chemistry.cpp.

References SPObject::children, SPStyle::filter, SPStyle::getFilter(), item, SP_CSS_BLEND_NORMAL, and SPObject::style.

Referenced by objects_query_blend().

◆ filter_is_single_gaussian_blur()

bool filter_is_single_gaussian_blur ( SPFilter filter)

◆ get_single_gaussian_blur_radius()

double get_single_gaussian_blur_radius ( SPFilter filter)

Definition at line 529 of file filter-chemistry.cpp.

References SPObject::children, SPObject::firstChild(), and MAX.

◆ has_hidder_filter()

bool has_hidder_filter ( SPObject const *  item)

◆ modify_filter_gaussian_blur_from_item()

SPFilter * modify_filter_gaussian_blur_from_item ( SPDocument document,
SPItem item,
gdouble  radius 
)

Modifies the gaussian blur applied to the item.

If no filters are applied to given item, creates a new blur filter. If a filter is applied and it contains a blur, modify that blur. If the filter doesn't contain blur, a blur is added to the filter. Should there be more references to modified filter, that filter is duplicated, so that other elements referring that filter are not modified.

Definition at line 318 of file filter-chemistry.cpp.

References SPObject::appendChild(), Inkscape::XML::Node::appendChild(), count_filter_hrefs(), Inkscape::XML::Document::createElement(), Geom::Affine::descrim(), Inkscape::XML::Node::duplicate(), SPStyle::filter, Inkscape::XML::Node::firstChild(), SPDocument::getDefs(), SPStyle::getFilter(), SPDocument::getObjectByRepr(), SPObject::getRepr(), SPDocument::getReprDoc(), SPObject::hrefcount, SPItem::i2dt_affine(), item, Inkscape::XML::Node::name(), new_filter_simple_from_item(), Inkscape::XML::Node::next(), Inkscape::GC::release(), Inkscape::XML::Node::setAttributeSvgDouble(), and SPObject::style.

Referenced by Inkscape::UI::Widget::ObjectCompositeSettings::_blendBlurValueChanged(), and Inkscape::UI::Tools::sp_tweak_color_recursive().

◆ new_filter()

◆ new_filter_blend_gaussian_blur()

static SPFilter * new_filter_blend_gaussian_blur ( SPDocument document,
const char *  blendmode,
gdouble  radius,
double  expansion 
)
static

◆ new_filter_gaussian_blur()

SPFilter * new_filter_gaussian_blur ( SPDocument document,
gdouble  radius,
double  expansion 
)

◆ new_filter_simple_from_item()

SPFilter * new_filter_simple_from_item ( SPDocument document,
SPItem item,
const char *  mode,
gdouble  radius 
)

Creates a simple filter for the given item with blend and blur primitives, using the specified mode and radius, respectively.

Definition at line 304 of file filter-chemistry.cpp.

References Geom::Affine::descrim(), SPItem::i2dt_affine(), item, mode, and new_filter_blend_gaussian_blur().

Referenced by modify_filter_gaussian_blur_from_item().

◆ remove_filter()

◆ remove_filter_gaussian_blur()

void remove_filter_gaussian_blur ( SPObject item)

Removes the first feGaussianBlur from the filter attached to given item.

Should this leave us with an empty filter, remove that filter.

Definition at line 424 of file filter-chemistry.cpp.

References Inkscape::XML::Node::childCount(), SPStyle::filter, Inkscape::XML::Node::firstChild(), SPStyle::getFilter(), SPObject::getRepr(), item, Inkscape::XML::Node::name(), Inkscape::XML::Node::next(), remove_filter(), sp_repr_unparent(), and SPObject::style.

◆ remove_filter_legacy_blend()

void remove_filter_legacy_blend ( SPObject item)

Removes blend primitive from the filter attached to given item.

Get if the filter have a < 1.0 blending filter and if it remove it @params: the item to remove filtered blend

Definition at line 453 of file filter-chemistry.cpp.

References SPObject::children, SPObject::deleteObject(), SPStyle::filter, SPStyle::getFilter(), item, remove_filter(), and SPObject::style.

Referenced by set_blend_mode().

◆ remove_hidder_filter()

void remove_hidder_filter ( SPObject item)

◆ set_blend_mode()