Krita Source Code Documentation
Loading...
Searching...
No Matches
KisBicubicFilterStrategy Class Reference

#include <kis_filter_strategy.h>

+ Inheritance diagram for KisBicubicFilterStrategy:

Public Member Functions

QString description () override
 
qint32 intValueAt (qint32 t, qreal weightsPositionScale) const override
 
 KisBicubicFilterStrategy ()
 
 ~KisBicubicFilterStrategy () override
 
- Public Member Functions inherited from KisFilterStrategy
QString id ()
 
virtual qint32 intSupport (qreal weightsPositionScale)
 
 KisFilterStrategy (KoID id)
 
QString name ()
 
virtual qreal support (qreal weightsPositionScale)
 
virtual qreal valueAt (qreal t, qreal weightsPositionScale) const
 
virtual ~KisFilterStrategy ()
 

Additional Inherited Members

- Protected Attributes inherited from KisFilterStrategy
qint32 intSupportVal {0}
 
KoID m_id
 
qreal supportVal {0.0}
 

Detailed Description

Definition at line 69 of file kis_filter_strategy.h.

Constructor & Destructor Documentation

◆ KisBicubicFilterStrategy()

KisBicubicFilterStrategy::KisBicubicFilterStrategy ( )
inline

Definition at line 72 of file kis_filter_strategy.h.

72 : KisFilterStrategy(KoID("Bicubic", i18n("Bicubic"))) {
73 supportVal = 2.0; intSupportVal = 512;
74 }
Definition KoID.h:30

◆ ~KisBicubicFilterStrategy()

KisBicubicFilterStrategy::~KisBicubicFilterStrategy ( )
inlineoverride

Definition at line 75 of file kis_filter_strategy.h.

75{}

Member Function Documentation

◆ description()

QString KisBicubicFilterStrategy::description ( )
inlineoverridevirtual

Reimplemented from KisFilterStrategy.

Definition at line 77 of file kis_filter_strategy.h.

77 {
78 return i18n("Adds pixels using the color of surrounding pixels. Produces smoother tonal gradations than Bilinear.");
79 }

◆ intValueAt()

qint32 KisBicubicFilterStrategy::intValueAt ( qint32 t,
qreal weightsPositionScale ) const
overridevirtual

Reimplemented from KisFilterStrategy.

Definition at line 50 of file kis_filter_strategy.cc.

51{
52 Q_UNUSED(weightsPositionScale);
53 /* f(t) = 1.5|t|^3 - 2.5|t|^2 + 1, -1 <= t <= 1 */
54 if (t < 0) t = -t;
55 if (t < 256) {
56 t = (3 * t - 5 * 256) * t * t / 2 + (256 << 16);
57
58 //go from .24 fixed point to .8 fixedpoint (hack only works with positive numbers, which it is)
59 t = (t + 0x8000) >> 16;
60
61 // go from .8 fixed point to 8bitscale. ie t = (t*255)/256;
62 if (t >= 128)
63 return t - 1;
64 return t;
65 }
66 if (t < 512) {
67 /* f(t) = -0.5|t|^3 + 2.5|t|^2 + 4|t| - 2, -2 <= t <= 2 */
68 t = ((-t + 5 * 256) * t / 2 - 4 * 256 * 256) * t + (2 * 256 << 16);
69
70 //go from .24 fixed point to .8 fixedpoint (hack only works with positive numbers, which it is)
71 t = (t + 0x8000) >> 16;
72
73 // go from .8 fixed point to 8bitscale. ie t = (t*255)/256;
74 if (t >= 128)
75 return t - 1;
76 return t;
77 }
78 return(0);
79}

The documentation for this class was generated from the following files: