From 8645e4456441be2d171a09b285ad49b09efd0325 Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Mon, 15 Aug 2011 16:57:04 +0200 Subject: Filters. New basic component transfer CPF. (bzr r10543) --- src/extension/internal/filter/color.h | 83 ++++++++++++++++++++++++++++ src/extension/internal/filter/filter-all.cpp | 1 + 2 files changed, 84 insertions(+) (limited to 'src') diff --git a/src/extension/internal/filter/color.h b/src/extension/internal/filter/color.h index 9ffb74e04..7a055b240 100644 --- a/src/extension/internal/filter/color.h +++ b/src/extension/internal/filter/color.h @@ -12,6 +12,7 @@ * Channel painting * Color shift * Colorize + * Component transfer * Duochrome * Extract channel * Greyscale @@ -395,6 +396,88 @@ Colorize::get_filter_text (Inkscape::Extension::Extension * ext) return _filter; }; /* Colorize filter */ +/** + \brief Custom predefined ComponentTransfer filter. + + Basic component transfer structure. + + Filter's parameters: + * Type (enum, default identity) -> component function + +*/ +class ComponentTransfer : public Inkscape::Extension::Internal::Filter::Filter { +protected: + virtual gchar const * get_filter_text (Inkscape::Extension::Extension * ext); + +public: + ComponentTransfer ( ) : Filter() { }; + virtual ~ComponentTransfer ( ) { if (_filter != NULL) g_free((void *)_filter); return; } + + static void init (void) { + Inkscape::Extension::build_from_mem( + "\n" + "" N_("Component Transfer") "\n" + "org.inkscape.effect.filter.ComponentTransfer\n" + "\n" + "<_item value=\"identity\">" N_("Identity") "\n" + "<_item value=\"table\">" N_("Table") "\n" + "<_item value=\"discrete\">" N_("Discrete") "\n" + "<_item value=\"linear\">" N_("Linear") "\n" + "<_item value=\"gamma\">" N_("Gamma") "\n" + "\n" + "\n" + "all\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "" N_("Basic component transfer structure") "\n" + "\n" + "\n", new ComponentTransfer()); + }; +}; + +gchar const * +ComponentTransfer::get_filter_text (Inkscape::Extension::Extension * ext) +{ + if (_filter != NULL) g_free((void *)_filter); + + std::ostringstream CTfunction; + const gchar *type = ext->get_param_enum("type"); + + if ((g_ascii_strcasecmp("identity", type) == 0)) { + CTfunction << "\n" + << "\n" + << "\n" + << "\n"; + } else if ((g_ascii_strcasecmp("table", type) == 0)) { + CTfunction << "\n" + << "\n" + << "\n"; + } else if ((g_ascii_strcasecmp("discrete", type) == 0)) { + CTfunction << "\n" + << "\n" + << "\n"; + } else if ((g_ascii_strcasecmp("linear", type) == 0)) { + CTfunction << "\n" + << "\n" + << "\n"; + } else { //Gamma + CTfunction << "\n" + << "\n" + << "\n"; + } + _filter = g_strdup_printf( + "\n" + "\n" + "%s\n" + "\n" + "\n", CTfunction.str().c_str()); + + return _filter; +}; /* ComponentTransfer filter */ + /** \brief Custom predefined Duochrome filter. diff --git a/src/extension/internal/filter/filter-all.cpp b/src/extension/internal/filter/filter-all.cpp index f288c27b8..251402762 100755 --- a/src/extension/internal/filter/filter-all.cpp +++ b/src/extension/internal/filter/filter-all.cpp @@ -53,6 +53,7 @@ Filter::filters_all (void ) ChannelPaint::init(); ColorShift::init(); Colorize::init(); + ComponentTransfer::init(); Duochrome::init(); ExtractChannel::init(); Greyscale::init(); -- cgit v1.2.3