• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • krita API Reference
  • KDE Home
  • Contact Us
 

KritaWidgets

  • sources
  • kfour-appscomplete
  • krita
  • libs
  • widgets
KoResourceServerProvider.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2 
3  SPDX-FileCopyrightText: 1999 Matthias Elter <[email protected]>
4  SPDX-FileCopyrightText: 2003 Patrick Julien <[email protected]>
5  SPDX-FileCopyrightText: 2005 Sven Langkamp <[email protected]>
6  SPDX-FileCopyrightText: 2011 Srikanth Tiyyagura <[email protected]>
7 
8  SPDX-License-Identifier: LGPL-2.1-or-later
9  */
10 
11 #include "KoResourceServerProvider.h"
12 
13 #include <QApplication>
14 #include <QFileInfo>
15 #include <QStringList>
16 #include <QDir>
17 #include <QStandardPaths>
18 #include <QGlobalStatic>
19 
20 #include <resources/KoSegmentGradient.h>
21 #include <resources/KoStopGradient.h>
22 #include "KoColorSpaceRegistry.h"
23 #include "KoResourcePaths.h"
24 #include "klocalizedstring.h"
25 #include <iostream>
26 
27 using namespace std;
28 
29 class GradientResourceServer : public KoResourceServer<KoAbstractGradient> {
30 
31 public:
32 
33  GradientResourceServer(const QString& type)
34  : KoResourceServer<KoAbstractGradient>(type)
35  {
36  insertSpecialGradients();
37  }
38 
39  void insertSpecialGradients()
40  {
41  qDebug() << "insertSpecialGradients broken because we don't have a list we can insert in front of anymore";
42 
43 
44  const KoColorSpace* cs = KoColorSpaceRegistry::instance()->rgb8();
45  QList<KoGradientStop> stops;
46 
47  KoStopGradientSP gradient(new KoStopGradient());
48  gradient->setType(QGradient::LinearGradient);
49  gradient->setName(i18n("Foreground to Transparent"));
50  gradient->setFilename("Foreground to Transparent");
51  stops << KoGradientStop(0.0, KoColor(Qt::black, cs), FOREGROUNDSTOP);
52  stops << KoGradientStop(1.0, KoColor(QColor(0, 0, 0, 0), cs), COLORSTOP);
53 
54  gradient->setStops(stops);
55  gradient->setValid(true);
56  gradient->setPermanent(true);
57  addResource(gradient, false);
58  m_foregroundToTransparent = gradient;
59 
60  gradient.reset(new KoStopGradient());
61  gradient->setType(QGradient::LinearGradient);
62  gradient->setName(i18n("Foreground to Background"));
63  gradient->setFilename("Foreground to Background");
64 
65  stops.clear();
66  stops << KoGradientStop(0.0, KoColor(Qt::black, cs), FOREGROUNDSTOP);
67  stops << KoGradientStop(1.0, KoColor(Qt::white, cs), BACKGROUNDSTOP);
68 
69  gradient->setStops(stops);
70  gradient->setValid(true);
71  gradient->setPermanent(true);
72  addResource(gradient, false);
73  m_foregroundToBackground = gradient;
74  }
75 
76 private:
77 
78  friend class KoResourceBundle;
79 
80  KoAbstractGradientSP createResource( const QString & filename ) {
81 
82  QString fileExtension;
83  int index = filename.lastIndexOf('.');
84 
85  if (index != -1)
86  fileExtension = filename.mid(index).toLower();
87 
88  KoAbstractGradientSP grad;
89 
90  if(fileExtension == ".svg" || fileExtension == ".kgr") {
91  grad.reset(new KoStopGradient(filename));
92  }
93  else if(fileExtension == ".ggr" ) {
94  grad.reset(new KoSegmentGradient(filename));
95  }
96 
97  return grad;
98  }
99 
100  KoAbstractGradientSP m_foregroundToTransparent;
101  KoAbstractGradientSP m_foregroundToBackground;
102 };
103 
104 struct Q_DECL_HIDDEN KoResourceServerProvider::Private
105 {
106  KoResourceServer<KoPattern> *patternServer;
107  KoResourceServer<KoAbstractGradient> *gradientServer;
108  KoResourceServer<KoColorSet> *paletteServer;
109  KoResourceServer<KoSvgSymbolCollectionResource> *svgSymbolCollectionServer;
110  KoResourceServer<KoGamutMask> *gamutMaskServer;
111 #if defined HAVE_SEEXPR
112  KoResourceServer<KisSeExprScript>* seExprScriptServer;
113 #endif
114 };
115 
116 KoResourceServerProvider::KoResourceServerProvider() : d(new Private)
117 {
118  d->patternServer = new KoResourceServer<KoPattern>(ResourceType::Patterns);
119  d->gradientServer = new GradientResourceServer(ResourceType::Gradients);
120  d->paletteServer = new KoResourceServer<KoColorSet>(ResourceType::Palettes);
121  d->svgSymbolCollectionServer = new KoResourceServer<KoSvgSymbolCollectionResource>(ResourceType::Symbols);
122  d->gamutMaskServer = new KoResourceServer<KoGamutMask>(ResourceType::GamutMasks);
123 #if defined HAVE_SEEXPR
124  d->seExprScriptServer = new KoResourceServer<KisSeExprScript>(ResourceType::SeExprScripts);
125 #endif
126 }
127 
128 KoResourceServerProvider::~KoResourceServerProvider()
129 {
130  delete d->patternServer;
131  delete d->gradientServer;
132  delete d->paletteServer;
133  delete d->svgSymbolCollectionServer;
134  delete d->gamutMaskServer;
135 #if defined HAVE_SEEXPR
136  delete d->seExprScriptServer;
137 #endif
138 
139  delete d;
140 }
141 
142 Q_GLOBAL_STATIC(KoResourceServerProvider, s_instance)
143 
144 KoResourceServerProvider *KoResourceServerProvider::instance()
145 {
146  return s_instance;
147 }
148 
149 KoResourceServer<KoPattern> *KoResourceServerProvider::patternServer()
150 {
151  return KoResourceServerProvider::instance()->d->patternServer;
152 }
153 
154 KoResourceServer<KoAbstractGradient> *KoResourceServerProvider::gradientServer()
155 {
156  return KoResourceServerProvider::instance()->d->gradientServer;
157 }
158 
159 KoResourceServer<KoColorSet> *KoResourceServerProvider::paletteServer()
160 {
161  return KoResourceServerProvider::instance()->d->paletteServer;
162 }
163 
164 KoResourceServer<KoSvgSymbolCollectionResource> *KoResourceServerProvider::svgSymbolCollectionServer()
165 {
166  return KoResourceServerProvider::instance()->d->svgSymbolCollectionServer;
167 }
168 
169 KoResourceServer<KoGamutMask> *KoResourceServerProvider::gamutMaskServer()
170 {
171  return KoResourceServerProvider::instance()->d->gamutMaskServer;
172 }
173 
174 #if defined HAVE_SEEXPR
175 KoResourceServer<KisSeExprScript> *KoResourceServerProvider::seExprScriptServer()
176 {
177  return KoResourceServerProvider::instance()->d->seExprScriptServer;
178 }
179 #endif
QColor
QString::lastIndexOf
int lastIndexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
QList
KoResourceServerProvider.h
QString
QString::toLower
QString toLower() const
QList::clear
void clear()
Private
QString::mid
QString mid(int position, int n) const
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Jan 23 2021 11:48:22 by doxygen 1.8.16 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KritaWidgets

Skip menu "KritaWidgets"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

krita API Reference

Skip menu "krita API Reference"
  • libs
  •   KritaBasicFlakes
  •   brush
  •   KritaUndo2
  •   KritaFlake
  •   image
  •   KritaPlugin
  •   Krita
  •   KritaPigment
  •   KritaResources
  •   KritaStore
  •   ui
  •   KritaWidgets
  •   KritaWidgetUtils
  • plugins
  •   Assitants
  •   Extensions
  •   Filters
  •   Generators
  •   Formats
  •           src
  •   PaintOps
  •     libpaintop

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal