[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-kimageshop
Subject:    Re: Add filter plugin
From:       Daniel Johannsen <dj () danieljohannsen ! de>
Date:       2012-08-03 16:37:28
Message-ID: 501BFE48.8000703 () danieljohannsen ! de
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


On 03.08.2012 12:52, Boudewijn Rempt wrote:
> On Fri, 3 Aug 2012, Daniel Johannsen wrote:
>
>> Hi Krita development team,
>>
>> i like to add a new filter plugin into Krita. Basically, it is a 
>> desaturation filter which preserves luminance information
>> when converting from rgb to grayscale. The algorithm constists of a 
>> simple linear combination of the rgb values
>> in order to derive the gray value.
>>
>> As a quick (and dirty) feasibility study, i altered the source file 
>> LcmsColorSpace.h by overwriting the method call
>>
>> cmsDoTransform(cmstransform, const_cast<quint8 *>(src), dst, nPixels);
>>
>> inside the method transform in struct KoLcmsColorTransformation.
>>
>> While this works and changes the color of the image in the way it 
>> supposed to, of course it is far from being
>> an incorporation of a new filter plugin into Krita.
>>
>> Now,
>> how do i add a new filter plugin into Krita the right way?
>> Is there any documentation which explains how to write a filter 
>> plugin? (I found only one Developing Krita Plugins,
>> but it seems way out of date.)
>>
>
> Yeah, that's very out of date... Basically, when doing a filter you 
> have two choices: either you can use lcms' color transformations. That 
> is mostly colorspace independent. That's where you ended up in this case.
>
> However, you can also implement the code right inside the filter 
> plugin. These are in krita/plugins/filters, where you can find lots of 
> examples. What you need to do then is to take the incoming pixels, 
> convert them to a known colorspace (like Lab, for instance), do the 
> algorithm, then convert it back.
>
> Basically, all you then need to do is implement the process() method.
>
> Boudewijn
> _______________________________________________
> kimageshop mailing list
> kimageshop@kde.org
> https://mail.kde.org/mailman/listinfo/kimageshop
>
Thank you very much for your fast answer!
I will start by defining a new process() method and take a look at the 
examples on how to create proper menu entries.

Motivation comes from the importance of luminance information in 
paintings (ref. M. Livingstone).
Let me suggest for future versions to extend the existing desaturation 
filter in order to be able to choose among several
color-to-gray transformation algorithms ( e.g. luminance or luminosity 
in gimp, average, etc. ).

By the way, when invoking the desaturate filter in calligra version 
2.4.2, there is repeatedly the message on stdout:
/krita(12176)/koffice: Lcms2 error:  12 Malformed struct in type 'desc' 
for tag 'dmnd'/.
Since the filter works, it is not a big issue.

Congratulations and thank you very much for this fantastic painting program.
Daniel

[Attachment #5 (text/html)]

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 03.08.2012 12:52, Boudewijn Rempt
      wrote:<br>
    </div>
    <blockquote
      cite="mid:alpine.LNX.2.00.1208031244020.27305@calcifer.valdyas.org"
      type="cite">On Fri, 3 Aug 2012, Daniel Johannsen wrote:
      <br>
      <br>
      <blockquote type="cite">Hi Krita development team,
        <br>
        <br>
        i like to add a new filter plugin into Krita. Basically, it is a
        desaturation filter which preserves luminance information
        <br>
        when converting from rgb to grayscale. The algorithm constists
        of a simple linear combination of the rgb values
        <br>
        in order to derive the gray value.
        <br>
        <br>
        As a quick (and dirty) feasibility study, i altered the source
        file LcmsColorSpace.h by overwriting the method call
        <br>
        <br>
        cmsDoTransform(cmstransform, const_cast&lt;quint8 *&gt;(src),
        dst, nPixels);
        <br>
        <br>
        inside the method transform in struct KoLcmsColorTransformation.
        <br>
        <br>
        While this works and changes the color of the image in the way
        it supposed to, of course it is far from being
        <br>
        an incorporation of a new filter plugin into Krita.
        <br>
        <br>
        Now,
        <br>
        how do i add a new filter plugin into Krita the right way?
        <br>
        Is there any documentation which explains how to write a filter
        plugin? (I found only one Developing Krita Plugins,
        <br>
        but it seems way out of date.)
        <br>
        <br>
      </blockquote>
      <br>
      Yeah, that's very out of date... Basically, when doing a filter
      you have two choices: either you can use lcms' color
      transformations. That is mostly colorspace independent. That's
      where you ended up in this case.
      <br>
      <br>
      However, you can also implement the code right inside the filter
      plugin. These are in krita/plugins/filters, where you can find
      lots of examples. What you need to do then is to take the incoming
      pixels, convert them to a known colorspace (like Lab, for
      instance), do the algorithm, then convert it back.
      <br>
      <br>
      Basically, all you then need to do is implement the process()
      method.
      <br>
      <br>
      Boudewijn
      <br>
      _______________________________________________
      <br>
      kimageshop mailing list
      <br>
      <a class="moz-txt-link-abbreviated" \
href="mailto:kimageshop@kde.org">kimageshop@kde.org</a>  <br>
      <a class="moz-txt-link-freetext" \
href="https://mail.kde.org/mailman/listinfo/kimageshop">https://mail.kde.org/mailman/listinfo/kimageshop</a>
  <br>
      <br>
    </blockquote>
    Thank you very much for your fast answer!<br>
    I will start by defining a new process() method and take a look at
    the examples on how to create proper menu entries.<br>
    <br>
    Motivation comes from the importance of luminance information in
    paintings (ref. M. Livingstone).<br>
    Let me suggest for future versions to extend the existing
    desaturation filter in order to be able to choose among several<br>
    color-to-gray transformation algorithms ( e.g. luminance or
    luminosity in gimp, average, etc. ).<br>
    <br>
    By the way, when invoking the desaturate filter in calligra version
    2.4.2, there is repeatedly the message on stdout:<br>
    <i>krita(12176)/koffice: Lcms2 error:&nbsp; 12 Malformed struct in type
      'desc' for tag 'dmnd'</i>.<br>
    Since the filter works, it is not a big issue.<br>
    <br>
    Congratulations and thank you very much for this fantastic painting
    program.<br>
    Daniel<br>
  </body>
</html>



_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic