Difference between revisions of "SpecCustomPredefinedFilters"

From Inkscape Wiki
Jump to navigation Jump to search
 
(40 intermediate revisions by 2 users not shown)
Line 3: Line 3:


== Summary ==
== Summary ==
The goal is to add new custom predefined filters (CPF) with parameters (such as the existing Drop Shadow filter), by using the internal extensions system. I wouldn't be a full high level filter editor (such as https://blueprints.launchpad.net/inkscape/+spec/non-advanced-filters-ui), but just an UI help for creating custom filters based on predefined sets of primitives.
The goal is to add new custom predefined filters (CPF) with parameters (such as the existing Drop Shadow filter), by using the internal extensions system. It wouldn't be a full high level filter editor (such as https://blueprints.launchpad.net/inkscape/+spec/non-advanced-filters-ui), but just an UI help for creating custom filters based on predefined sets of primitives.


It could also be useful if we wish to reduce the number of predefined filters by grouping them by filter type.
It could also be useful if we wish to reduce the number of predefined filters by grouping them by filter type.
Line 13: Line 13:


== Rationale ==
== Rationale ==
Inkscape now has lots of predefined filters, but doesn't provide an simple UI to create them. Modifying them would be great too, but:
Inkscape now has lots of predefined filters, but doesn't provide a simple UI to create them. Allowing users to modify them afterward would be great too, but:
*Some high level parameters may not be linked to a single primitive parameter.
*Some high level parameters may be linked to more than one primitive parameter, or even calculated.
*Applying two filters to the same object merges the filters, and thus makes them difficult to modify afterward.
*Applying two filters to the same object merges the filters, and thus makes them difficult to modify afterward.
*It probably would require new inkscape specific attributes in order to map to the available simplified parameters to the primitives ones.
*It probably would require new inkscape specific attributes in order to map the available simplified parameters to the primitives ones.


Thus this project on focuses on the improving the creation of new filters, which is relatively straightforward thanks to the internal extension design.
Thus this project focuses on improving the creation of new filters, which is relatively straightforward thanks to the internal extension design.


== Design ==
== Design ==
Line 25: Line 25:
New CPFs can either replace existing predefined filters (when finding the parameters to reproduce it is not too difficult) or be added to the list (very generic CPFs).
New CPFs can either replace existing predefined filters (when finding the parameters to reproduce it is not too difficult) or be added to the list (very generic CPFs).


Adding an optional presets list to extensions, so that users can choose between default, user, and other predefined parameters in a drop-down list, would ease the replacement of the current filters (specification needed).
=== Possible improvements ===
Adding an optional presets list to extensions, so that users can choose between default, user, and other predefined parameters in a drop-down list, would ease the replacement of the current filters (specification needed). The other internal and external extensions would also benefit from such a presets feature.


Adding new extension widgets (horizontal slider) would also make parameters tweaking more handy.
Adding new extension widgets (horizontal slider) would also make parameters tweaking more handy. (original implementation in revision 10103, and some fixes in the following revisions --[[User:JazzyNico|JazzyNico]] 13:10, 16 March 2011 (UTC)).


=== Filters list ===
=== Filters list ===
Line 33: Line 34:
Old static filter name given as comment (if different from the new one).
Old static filter name given as comment (if different from the new one).


==== ABC ====
==== Bevels ====
* Blur
* Clean edges
* Color shift (new)
* Diffuse light
* Diffuse light
* Feather
* Matte jelly
* Matte jelly
* Noise fill (replaces Noise fill and Noise transparency)
* Outline (Black outline)
* Roughen
* Silhouette (replaces Alpha repaint monochrome)
* Specular light
* Specular light
==== Blur ====
* Blur (replaces motion blurs -vertical and horizontal)
* Clean edges
* Cross blur (new)
* Feather
* Out of focus (new)
==== Bumps ====
* Bump (replaces Color bump, HSL bump, HSL bump matte, Copper and chocolate, Emboss)
* Wax bump (new)


==== Color ====
==== Color ====
* Brilliance (new)
* Channel painting (new)
* Color shift (new)
* Colorize (replaces the previous Colorize + Duotone and Sepia)
* Colorize (replaces the previous Colorize + Duotone and Sepia)
* Duochrome
* Duochrome (new)
* Electrize (new)
* Extract channel (new)
* Quadritone
* Fade to Black or White (new)
* Greyscales (new)
* Invert (replaces Invert, Invert lightness, Invert Hue, Light eraser, Light eraser negative...)
* Lightness (new)
* Lightness-Contrast (replaces the existing one)
* Nudge (new)
* Quadritone (replaces Quadritone fantasy)
* Solarize (replaces Solarize and Lunarize)
* Solarize (replaces Solarize and Lunarize)
* Tritone
* Tritone (replaces and improves the existing one with four different types)


==== Morphology ====
==== Distort ====
* Cross-smooth (replaces Cross smooth and Smooth edges)
* Roughen
* Felt feather (new)


==== Shadows and glows ====
==== Image effects ====
* Colorizable drop shadow (replaces Drop shadow and Drop glow)
* Edge detect


==== Experimental (not yet affected) ====
==== Image paint and draw ====
* Chromolitho (new)
* Chromolitho (new)
* Cross engraving (new)
* Cross engraving (new)
* Drawing (new)
* Drawing (new)
* Electrize (new)
* Neon draw (new)
* Neon draw (new)
* Posterize
* Point engraving (new)
* Poster paint (new)
* Posterize basic (new)
* Posterize basic (new)
==== Morphology ====
* Cross-smooth (replaces Cross smooth and Smooth edges)
* Outline (replaces and improves Black outline and Color outline)
==== Overlays ====
* Noise fill (replaces and improves Noise fill and Noise transparency)
==== Shadows and glows ====
* Colorizable drop shadow (replaces and improves Cutout, Fuzzy glow, Drop shadow, Drop glow, Inner glow and Inner shadow)
==== Textures ====
* Ink blot
==== Fill and Transparency ====
* Blend (new)
* Channel transparency (new)
* Light Eraser (replaces the existing one)
* Opacity (new)
* Silhouette (replaces and improves Alpha repaint monochrome)


== TODO ==
== TODO ==
Line 90: Line 126:


== Discussion ==
== Discussion ==
[[Category:Developer Documentation]]
[[Category:Specification]]

Latest revision as of 18:52, 1 October 2011

Launchpad Entry: https://blueprints.launchpad.net/inkscape/+spec/custom-predefined-filters

Summary

The goal is to add new custom predefined filters (CPF) with parameters (such as the existing Drop Shadow filter), by using the internal extensions system. It wouldn't be a full high level filter editor (such as https://blueprints.launchpad.net/inkscape/+spec/non-advanced-filters-ui), but just an UI help for creating custom filters based on predefined sets of primitives.

It could also be useful if we wish to reduce the number of predefined filters by grouping them by filter type.

Release Note

Examples can be tested in the trunk, Filters>Experimental menu.

We have started with filters from the color group, but plan to work on some other groups before 0.49 is out.

Rationale

Inkscape now has lots of predefined filters, but doesn't provide a simple UI to create them. Allowing users to modify them afterward would be great too, but:

  • Some high level parameters may be linked to more than one primitive parameter, or even calculated.
  • Applying two filters to the same object merges the filters, and thus makes them difficult to modify afterward.
  • It probably would require new inkscape specific attributes in order to map the available simplified parameters to the primitives ones.

Thus this project focuses on improving the creation of new filters, which is relatively straightforward thanks to the internal extension design.

Design

CPFs are based on the internal extension system, already used to create the Drop shadow, Drop glow and Snow filters (available as of 0.47). CPE are very easy to implement with internal extensions (lots of code specific to filters already exist), very probably a lot easier than with external (inx+py) extensions.

New CPFs can either replace existing predefined filters (when finding the parameters to reproduce it is not too difficult) or be added to the list (very generic CPFs).

Possible improvements

Adding an optional presets list to extensions, so that users can choose between default, user, and other predefined parameters in a drop-down list, would ease the replacement of the current filters (specification needed). The other internal and external extensions would also benefit from such a presets feature.

Adding new extension widgets (horizontal slider) would also make parameters tweaking more handy. (original implementation in revision 10103, and some fixes in the following revisions --JazzyNico 13:10, 16 March 2011 (UTC)).

Filters list

Old static filter name given as comment (if different from the new one).

Bevels

  • Diffuse light
  • Matte jelly
  • Specular light

Blur

  • Blur (replaces motion blurs -vertical and horizontal)
  • Clean edges
  • Cross blur (new)
  • Feather
  • Out of focus (new)

Bumps

  • Bump (replaces Color bump, HSL bump, HSL bump matte, Copper and chocolate, Emboss)
  • Wax bump (new)

Color

  • Brilliance (new)
  • Channel painting (new)
  • Color shift (new)
  • Colorize (replaces the previous Colorize + Duotone and Sepia)
  • Duochrome (new)
  • Extract channel (new)
  • Fade to Black or White (new)
  • Greyscales (new)
  • Invert (replaces Invert, Invert lightness, Invert Hue, Light eraser, Light eraser negative...)
  • Lightness (new)
  • Lightness-Contrast (replaces the existing one)
  • Nudge (new)
  • Quadritone (replaces Quadritone fantasy)
  • Solarize (replaces Solarize and Lunarize)
  • Tritone (replaces and improves the existing one with four different types)

Distort

  • Roughen
  • Felt feather (new)

Image effects

  • Edge detect

Image paint and draw

  • Chromolitho (new)
  • Cross engraving (new)
  • Drawing (new)
  • Electrize (new)
  • Neon draw (new)
  • Point engraving (new)
  • Poster paint (new)
  • Posterize basic (new)

Morphology

  • Cross-smooth (replaces Cross smooth and Smooth edges)
  • Outline (replaces and improves Black outline and Color outline)

Overlays

  • Noise fill (replaces and improves Noise fill and Noise transparency)

Shadows and glows

  • Colorizable drop shadow (replaces and improves Cutout, Fuzzy glow, Drop shadow, Drop glow, Inner glow and Inner shadow)

Textures

  • Ink blot

Fill and Transparency

  • Blend (new)
  • Channel transparency (new)
  • Light Eraser (replaces the existing one)
  • Opacity (new)
  • Silhouette (replaces and improves Alpha repaint monochrome)

TODO

  • Existing CPFs need testing and code documentation.
  • Reorganize the existing filters list in order to integrate the new CPFs.
  • Gimp already has lots of CPFs. Let's not reinvent the wheel...

Roadmap

Initial development

From November 2010 to February 2011

Initial filter sets. All the ABC filters and some others of all kind should be available (total: ~20 filters).

Request for comments

February 2011

General presentation on the dev list. Comments are welcome!

Final phase (if the project is widely accepted)

March 2011 -> 0.49

Some new filters, UI consistency (parameters name and behavior), filters grouping...

Discussion