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

#include <kis_filter_strategy.h>

+ Inheritance diagram for KisFilterStrategyRegistry:

Public Member Functions

KisFilterStrategyautoFilterStrategy (QSize originalSize, QSize desiredSize) const
 
QString formattedDescriptions () const
 
 KisFilterStrategyRegistry ()
 
QList< KoIDlistKeys () const
 
 ~KisFilterStrategyRegistry () override
 
- Public Member Functions inherited from KoGenericRegistry< KisFilterStrategy * >
void add (const QString &id, KisFilterStrategy * item)
 
void add (KisFilterStrategy * item)
 
void addAlias (const QString &alias, const QString &id)
 
QHash< QString, KisFilterStrategy * >::const_iterator constBegin () const
 
QHash< QString, KisFilterStrategy * >::const_iterator constEnd () const
 
bool contains (const QString &id) const
 
int count () const
 
QList< KisFilterStrategy * > doubleEntries () const
 
KisFilterStrategyget (const QString &id) const
 
QList< QString > keys () const
 
 KoGenericRegistry ()
 
void remove (const QString &id)
 
void removeAlias (const QString &alias)
 
const KisFilterStrategyvalue (const QString &id) const
 
QList< KisFilterStrategy * > values () const
 
virtual ~KoGenericRegistry ()
 

Static Public Member Functions

static KisFilterStrategyRegistryinstance ()
 

Private Member Functions

 KisFilterStrategyRegistry (const KisFilterStrategyRegistry &)
 
KisFilterStrategyRegistry operator= (const KisFilterStrategyRegistry &)
 

Detailed Description

Definition at line 171 of file kis_filter_strategy.h.

Constructor & Destructor Documentation

◆ KisFilterStrategyRegistry() [1/2]

KisFilterStrategyRegistry::KisFilterStrategyRegistry ( )

Definition at line 191 of file kis_filter_strategy.cc.

192{
193}

◆ ~KisFilterStrategyRegistry()

KisFilterStrategyRegistry::~KisFilterStrategyRegistry ( )
override

Definition at line 195 of file kis_filter_strategy.cc.

196{
197 Q_FOREACH (const QString &id, keys()) {
198 delete get(id);
199 }
200 dbgRegistry << "deleting KisFilterStrategyRegistry";
201}
KisFilterStrategy * get(const QString &id) const
#define dbgRegistry
Definition kis_debug.h:47

References dbgRegistry, KoGenericRegistry< KisFilterStrategy * >::get(), and KoGenericRegistry< KisFilterStrategy * >::keys().

◆ KisFilterStrategyRegistry() [2/2]

KisFilterStrategyRegistry::KisFilterStrategyRegistry ( const KisFilterStrategyRegistry & )
private

Member Function Documentation

◆ autoFilterStrategy()

KisFilterStrategy * KisFilterStrategyRegistry::autoFilterStrategy ( QSize originalSize,
QSize desiredSize ) const

Try to select an appropriate image filtering strategy based on original and desired parameters.

Definition at line 251 of file kis_filter_strategy.cc.

252{
253 // Default to nearest neighbor scaling for tiny source images. (i.e: icons or small sprite sheets.)
254 const int pixelArtThreshold = 256;
255 if (originalSize.width() <= pixelArtThreshold ||
256 originalSize.height() <= pixelArtThreshold) {
257 return KisFilterStrategyRegistry::instance()->value("NearestNeighbor");
258 }
259
260 const float xScaleFactor = (float)desiredSize.width() / originalSize.width();
261 const float yScaleFactor = (float)desiredSize.height() / originalSize.height();
262
263 if (xScaleFactor > 1.f || yScaleFactor > 1.f) { // Enlargement.
264 return KisFilterStrategyRegistry::instance()->value("Bicubic");
265 } else if (xScaleFactor < 1.f || yScaleFactor < 1.f) { // Reduction.
266 return KisFilterStrategyRegistry::instance()->value("Bicubic");
267 }
268
269 return KisFilterStrategyRegistry::instance()->value("NearestNeighbor");
270}
static KisFilterStrategyRegistry * instance()
const T value(const QString &id) const

References instance(), and KoGenericRegistry< T >::value().

◆ formattedDescriptions()

QString KisFilterStrategyRegistry::formattedDescriptions ( ) const

This function return a string formatted in HTML that contains the descriptions of all objects (with a non empty description) stored in the registry.

Definition at line 230 of file kis_filter_strategy.cc.

231{
232 QString formatedDescription("<html><head/><body>");
233
234 Q_FOREACH (const QString key, keys()) {
235 KisFilterStrategy *strategy = get(key);
236 QString description = strategy->description();
237
238 if (!description.isEmpty()) {
239 formatedDescription.append("<p><span style=\"font-weight:600;\">");
240 formatedDescription.append(strategy->name());
241 formatedDescription.append("</span>: ");
242 formatedDescription.append(description);
243 formatedDescription.append("</p>");
244 }
245 }
246 formatedDescription.append("</body></html>");
247
248 return formatedDescription;
249}
virtual QString description()

References KisFilterStrategy::description(), KoGenericRegistry< KisFilterStrategy * >::get(), KoGenericRegistry< KisFilterStrategy * >::keys(), and KisFilterStrategy::name().

◆ instance()

KisFilterStrategyRegistry * KisFilterStrategyRegistry::instance ( )
static

Definition at line 203 of file kis_filter_strategy.cc.

204{
205 if (!s_instance.exists()) {
206 s_instance->add(new KisBoxFilterStrategy);
207 s_instance->addAlias("Box", "NearestNeighbor");
208
209 s_instance->add(new KisHermiteFilterStrategy);
210 s_instance->add(new KisBicubicFilterStrategy);
211 s_instance->add(new KisBilinearFilterStrategy);
212 s_instance->add(new KisBellFilterStrategy);
213 s_instance->add(new KisBSplineFilterStrategy);
214 s_instance->add(new KisLanczos3FilterStrategy);
215 s_instance->add(new KisMitchellFilterStrategy);
216 }
217 return s_instance;
218}

References KoGenericRegistry< T >::add().

◆ listKeys()

QList< KoID > KisFilterStrategyRegistry::listKeys ( ) const

This function return a list of all the keys in KoID format by using the name() method on the objects stored in the registry.

Definition at line 220 of file kis_filter_strategy.cc.

221{
222 QList<KoID> answer;
223 Q_FOREACH (const QString key, keys()) {
224 answer.append(KoID(key, get(key)->name()));
225 }
226
227 return answer;
228}
Definition KoID.h:30
const char * name(StandardAction id)

References KoGenericRegistry< KisFilterStrategy * >::get(), and KoGenericRegistry< KisFilterStrategy * >::keys().

◆ operator=()

KisFilterStrategyRegistry KisFilterStrategyRegistry::operator= ( const KisFilterStrategyRegistry & )
private

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