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

digikam

  • extragear
  • graphics
  • digikam
  • core
  • dplugins
  • generic
  • tools
  • mediaserver
  • upnpsdk
  • Neptune
  • Source
  • Core
NptThreads.h
Go to the documentation of this file.
1 /*****************************************************************
2 |
3 | Neptune - Threads
4 |
5 | Copyright (c) 2002-2008, Axiomatic Systems, LLC.
6 | All rights reserved.
7 |
8 | Redistribution and use in source and binary forms, with or without
9 | modification, are permitted provided that the following conditions are met:
10 | * Redistributions of source code must retain the above copyright
11 | notice, this list of conditions and the following disclaimer.
12 | * Redistributions in binary form must reproduce the above copyright
13 | notice, this list of conditions and the following disclaimer in the
14 | documentation and/or other materials provided with the distribution.
15 | * Neither the name of Axiomatic Systems nor the
16 | names of its contributors may be used to endorse or promote products
17 | derived from this software without specific prior written permission.
18 |
19 | THIS SOFTWARE IS PROVIDED BY AXIOMATIC SYSTEMS ''AS IS'' AND ANY
20 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 | DISCLAIMED. IN NO EVENT SHALL AXIOMATIC SYSTEMS BE LIABLE FOR ANY
23 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 |
30  ****************************************************************/
31 
32 #ifndef _NPT_THREADS_H_
33 #define _NPT_THREADS_H_
34 
35 /*----------------------------------------------------------------------
36 | includes
37 +---------------------------------------------------------------------*/
38 #include "NptTypes.h"
39 #include "NptConstants.h"
40 #include "NptInterfaces.h"
41 
42 /*----------------------------------------------------------------------
43 | error codes
44 +---------------------------------------------------------------------*/
45 const int NPT_ERROR_CALLBACK_HANDLER_SHUTDOWN = NPT_ERROR_BASE_THREADS-0;
46 const int NPT_ERROR_CALLBACK_NOTHING_PENDING = NPT_ERROR_BASE_THREADS-1;
47 
48 /*----------------------------------------------------------------------
49 | constants
50 +---------------------------------------------------------------------*/
51 const int NPT_THREAD_PRIORITY_MIN = -15;
52 const int NPT_THREAD_PRIORITY_IDLE = -15;
53 const int NPT_THREAD_PRIORITY_LOWEST = -2;
54 const int NPT_THREAD_PRIORITY_BELOW_NORMAL = -1;
55 const int NPT_THREAD_PRIORITY_NORMAL = 0;
56 const int NPT_THREAD_PRIORITY_ABOVE_NORMAL = 1;
57 const int NPT_THREAD_PRIORITY_HIGHEST = 2;
58 const int NPT_THREAD_PRIORITY_TIME_CRITICAL = 15;
59 const int NPT_THREAD_PRIORITY_MAX = 15;
60 
61 /*----------------------------------------------------------------------
62 | NPT_MutexInterface
63 +---------------------------------------------------------------------*/
64 class NPT_MutexInterface
65 {
66  public:
67  // methods
68  virtual ~NPT_MutexInterface() {}
69  virtual NPT_Result Lock() = 0;
70  virtual NPT_Result Unlock() = 0;
71 };
72 
73 /*----------------------------------------------------------------------
74 | NPT_Mutex
75 +---------------------------------------------------------------------*/
76 class NPT_Mutex : public NPT_MutexInterface
77 {
78  public:
79  // methods
80  NPT_Mutex();
81  ~NPT_Mutex() override { delete m_Delegate; }
82  NPT_Result Lock() override { return m_Delegate->Lock(); }
83  NPT_Result Unlock() override { return m_Delegate->Unlock(); }
84 
85  private:
86  // members
87  NPT_MutexInterface* m_Delegate;
88 };
89 
90 /*----------------------------------------------------------------------
91 | NPT_AutoLock
92 +---------------------------------------------------------------------*/
93 class NPT_AutoLock
94 {
95  public:
96  // methods
97  NPT_AutoLock(NPT_Mutex &mutex) : m_Mutex(mutex) {
98  m_Mutex.Lock();
99  }
100  ~NPT_AutoLock() {
101  m_Mutex.Unlock();
102  }
103 
104  private:
105  // members
106  NPT_Mutex& m_Mutex;
107 };
108 
109 /*----------------------------------------------------------------------
110 | NPT_Lock
111 +---------------------------------------------------------------------*/
112 template <typename T>
113 class NPT_Lock : public T,
114  public NPT_Mutex
115 {
116 };
117 
118 /*----------------------------------------------------------------------
119 | NPT_SingletonLock
120 +---------------------------------------------------------------------*/
121 class NPT_SingletonLock
122 {
123 public:
124  static NPT_Mutex& GetInstance() {
125  return Instance;
126  }
127 
128 private:
129  static NPT_Mutex Instance;
130 };
131 
132 /*----------------------------------------------------------------------
133 | NPT_SharedVariableInterface
134 +---------------------------------------------------------------------*/
135 class NPT_SharedVariableInterface
136 {
137  public:
138  // methods
139  virtual ~NPT_SharedVariableInterface() {}
140  virtual void SetValue(int value)= 0;
141  virtual int GetValue() = 0;
142  virtual NPT_Result WaitUntilEquals(int value, NPT_Timeout timeout = NPT_TIMEOUT_INFINITE) = 0;
143  virtual NPT_Result WaitWhileEquals(int value, NPT_Timeout timeout = NPT_TIMEOUT_INFINITE) = 0;
144 };
145 
146 /*----------------------------------------------------------------------
147 | NPT_SharedVariable
148 +---------------------------------------------------------------------*/
149 class NPT_SharedVariable : public NPT_SharedVariableInterface
150 {
151  public:
152  // methods
153  NPT_SharedVariable(int value = 0);
154  ~NPT_SharedVariable() override { delete m_Delegate; }
155  void SetValue(int value) override {
156  m_Delegate->SetValue(value);
157  }
158  int GetValue() override {
159  return m_Delegate->GetValue();
160  }
161  NPT_Result WaitUntilEquals(int value, NPT_Timeout timeout = NPT_TIMEOUT_INFINITE) override {
162  return m_Delegate->WaitUntilEquals(value, timeout);
163  }
164  NPT_Result WaitWhileEquals(int value, NPT_Timeout timeout = NPT_TIMEOUT_INFINITE) override {
165  return m_Delegate->WaitWhileEquals(value, timeout);
166  }
167 
168  private:
169  // members
170  NPT_SharedVariableInterface* m_Delegate;
171 };
172 
173 /*----------------------------------------------------------------------
174 | NPT_AtomicVariableInterface
175 +---------------------------------------------------------------------*/
176 class NPT_AtomicVariableInterface
177 {
178  public:
179  // methods
180  virtual ~NPT_AtomicVariableInterface() {}
181  virtual int Increment() = 0;
182  virtual int Decrement() = 0;
183  virtual int GetValue() = 0;
184  virtual void SetValue(int value) = 0;
185 };
186 
187 /*----------------------------------------------------------------------
188 | NPT_AtomicVariable
189 +---------------------------------------------------------------------*/
190 class NPT_AtomicVariable : public NPT_AtomicVariableInterface
191 {
192  public:
193  // methods
194  NPT_AtomicVariable(int value = 0);
195  ~NPT_AtomicVariable() override { delete m_Delegate; }
196  int Increment() override { return m_Delegate->Increment();}
197  int Decrement() override { return m_Delegate->Decrement();}
198  void SetValue(int value) override { m_Delegate->SetValue(value); }
199  int GetValue() override { return m_Delegate->GetValue(); }
200 
201  private:
202  // members
203  NPT_AtomicVariableInterface* m_Delegate;
204 };
205 
206 /*----------------------------------------------------------------------
207 | NPT_Runnable
208 +---------------------------------------------------------------------*/
209 class NPT_Runnable
210 {
211 public:
212  virtual ~NPT_Runnable() {}
213  virtual void Run() = 0;
214 };
215 
216 /*----------------------------------------------------------------------
217 | NPT_ThreadInterface
218 +---------------------------------------------------------------------*/
219 class NPT_ThreadInterface: public NPT_Runnable, public NPT_Interruptible
220 {
221  public:
222  // methods
223  ~NPT_ThreadInterface() override {}
224  virtual NPT_Result Start() = 0;
225  virtual NPT_Result Wait(NPT_Timeout timeout = NPT_TIMEOUT_INFINITE) = 0;
226  virtual NPT_Result SetPriority(int /*priority*/) { return NPT_SUCCESS; }
227  virtual NPT_Result GetPriority(int& priority) = 0;
228 };
229 
230 /*----------------------------------------------------------------------
231 | NPT_Thread
232 +---------------------------------------------------------------------*/
233 class NPT_Thread : public NPT_ThreadInterface
234 {
235  public:
236  // types
237  typedef unsigned long ThreadId;
238 
239  // class methods
240  static ThreadId GetCurrentThreadId();
241  static NPT_Result SetCurrentThreadPriority(int priority);
242  static NPT_Result GetCurrentThreadPriority(int& priority);
243 
244  // methods
245  explicit NPT_Thread(bool detached = false);
246  explicit NPT_Thread(NPT_Runnable& target, bool detached = false);
247  ~NPT_Thread() override { delete m_Delegate; }
248 
249  // NPT_ThreadInterface methods
250  NPT_Result Start() override {
251  return m_Delegate->Start();
252  }
253  NPT_Result Wait(NPT_Timeout timeout = NPT_TIMEOUT_INFINITE) override {
254  return m_Delegate->Wait(timeout);
255  }
256  NPT_Result SetPriority(int priority) override {
257  return m_Delegate->SetPriority(priority);
258  }
259  NPT_Result GetPriority(int& priority) override {
260  return m_Delegate->GetPriority(priority);
261  }
262 
263  // NPT_Runnable methods
264  void Run() override {}
265 
266  // NPT_Interruptible methods
267  NPT_Result Interrupt() override { return m_Delegate->Interrupt(); }
268 
269  private:
270  // members
271  NPT_ThreadInterface* m_Delegate;
272 };
273 
274 
275 /*----------------------------------------------------------------------
276 | NPT_ThreadCallbackReceiver
277 +---------------------------------------------------------------------*/
278 class NPT_ThreadCallbackReceiver
279 {
280 public:
281  virtual ~NPT_ThreadCallbackReceiver() {}
282  virtual void OnCallback(void* args) = 0;
283 };
284 
285 /*----------------------------------------------------------------------
286 | NPT_ThreadCallbackSlot
287 +---------------------------------------------------------------------*/
288 class NPT_ThreadCallbackSlot
289 {
290 public:
291  // types
292  class NotificationHelper {
293  public:
294  virtual ~NotificationHelper() {};
295  virtual void Notify(void) = 0;
296  };
297 
298  // constructor
299  NPT_ThreadCallbackSlot();
300 
301  // methods
302  NPT_Result ReceiveCallback(NPT_ThreadCallbackReceiver& receiver, NPT_Timeout timeout = 0);
303  NPT_Result SendCallback(void* args);
304  NPT_Result SetNotificationHelper(NotificationHelper* helper);
305  NPT_Result Shutdown();
306 
307 protected:
308  // members
309  volatile void* m_CallbackArgs;
310  volatile bool m_Shutdown;
311  NPT_SharedVariable m_Pending;
312  NPT_SharedVariable m_Ack;
313  NPT_Mutex m_ReadLock;
314  NPT_Mutex m_WriteLock;
315  NotificationHelper* m_NotificationHelper;
316 };
317 
318 #endif // _NPT_THREADS_H_
NPT_THREAD_PRIORITY_NORMAL
const int NPT_THREAD_PRIORITY_NORMAL
Definition: NptThreads.h:55
NPT_THREAD_PRIORITY_LOWEST
const int NPT_THREAD_PRIORITY_LOWEST
Definition: NptThreads.h:53
NPT_SharedVariableInterface::WaitWhileEquals
virtual NPT_Result WaitWhileEquals(int value, NPT_Timeout timeout=NPT_TIMEOUT_INFINITE)=0
T
#define T
Definition: libraw_cxx_defs.h:59
NPT_THREAD_PRIORITY_HIGHEST
const int NPT_THREAD_PRIORITY_HIGHEST
Definition: NptThreads.h:57
NPT_Thread
Definition: NptThreads.h:233
NPT_SUCCESS
#define NPT_SUCCESS
Result indicating that the operation or call succeeded.
Definition: NptResults.h:104
NPT_SharedVariable::SetValue
void SetValue(int value) override
Definition: NptThreads.h:155
NPT_SharedVariableInterface::SetValue
virtual void SetValue(int value)=0
NPT_MutexInterface::~NPT_MutexInterface
virtual ~NPT_MutexInterface()
Definition: NptThreads.h:68
NPT_AutoLock::NPT_AutoLock
NPT_AutoLock(NPT_Mutex &mutex)
Definition: NptThreads.h:97
NPT_Mutex::NPT_Mutex
NPT_Mutex()
Definition: NptPosixThreads.cpp:99
NPT_ThreadCallbackSlot::m_Ack
NPT_SharedVariable m_Ack
Definition: NptThreads.h:312
NPT_Thread::Wait
NPT_Result Wait(NPT_Timeout timeout=NPT_TIMEOUT_INFINITE) override
Definition: NptThreads.h:253
NPT_Interruptible
Definition: NptInterfaces.h:81
NPT_ThreadCallbackReceiver::OnCallback
virtual void OnCallback(void *args)=0
NPT_Runnable::~NPT_Runnable
virtual ~NPT_Runnable()
Definition: NptThreads.h:212
NPT_SharedVariable::WaitUntilEquals
NPT_Result WaitUntilEquals(int value, NPT_Timeout timeout=NPT_TIMEOUT_INFINITE) override
Definition: NptThreads.h:161
NPT_THREAD_PRIORITY_ABOVE_NORMAL
const int NPT_THREAD_PRIORITY_ABOVE_NORMAL
Definition: NptThreads.h:56
NPT_Runnable
Definition: NptThreads.h:209
NPT_THREAD_PRIORITY_TIME_CRITICAL
const int NPT_THREAD_PRIORITY_TIME_CRITICAL
Definition: NptThreads.h:58
NPT_ThreadCallbackSlot::NotificationHelper::Notify
virtual void Notify(void)=0
NPT_THREAD_PRIORITY_IDLE
const int NPT_THREAD_PRIORITY_IDLE
Definition: NptThreads.h:52
NPT_ThreadCallbackSlot::SendCallback
NPT_Result SendCallback(void *args)
Definition: NptThreads.cpp:127
NPT_THREAD_PRIORITY_MAX
const int NPT_THREAD_PRIORITY_MAX
Definition: NptThreads.h:59
NPT_Thread::~NPT_Thread
~NPT_Thread() override
Definition: NptThreads.h:247
NPT_ThreadCallbackSlot::m_ReadLock
NPT_Mutex m_ReadLock
Definition: NptThreads.h:313
NPT_ThreadCallbackSlot::SetNotificationHelper
NPT_Result SetNotificationHelper(NotificationHelper *helper)
Definition: NptThreads.cpp:76
NPT_ThreadCallbackSlot::m_Shutdown
volatile bool m_Shutdown
Definition: NptThreads.h:310
NPT_AtomicVariable::Decrement
int Decrement() override
Definition: NptThreads.h:197
NPT_MutexInterface::Lock
virtual NPT_Result Lock()=0
NPT_ERROR_CALLBACK_HANDLER_SHUTDOWN
const int NPT_ERROR_CALLBACK_HANDLER_SHUTDOWN
Definition: NptThreads.h:45
value
qulonglong value
Definition: itemviewutilities.cpp:530
NPT_ERROR_BASE_THREADS
#define NPT_ERROR_BASE_THREADS
Definition: NptResults.h:123
NPT_Mutex
Definition: NptThreads.h:76
NPT_AtomicVariableInterface::GetValue
virtual int GetValue()=0
NPT_TIMEOUT_INFINITE
const int NPT_TIMEOUT_INFINITE
Definition: NptConstants.h:42
NPT_AtomicVariable::NPT_AtomicVariable
NPT_AtomicVariable(int value=0)
Definition: NptNullThreads.cpp:39
NPT_SharedVariableInterface::~NPT_SharedVariableInterface
virtual ~NPT_SharedVariableInterface()
Definition: NptThreads.h:139
NptConstants.h
NPT_AtomicVariableInterface::~NPT_AtomicVariableInterface
virtual ~NPT_AtomicVariableInterface()
Definition: NptThreads.h:180
NPT_ThreadInterface::Start
virtual NPT_Result Start()=0
NPT_AtomicVariableInterface
Definition: NptThreads.h:176
NPT_SharedVariable
Definition: NptThreads.h:149
NPT_AtomicVariableInterface::SetValue
virtual void SetValue(int value)=0
NPT_AtomicVariable
Definition: NptThreads.h:190
NPT_ThreadCallbackReceiver::~NPT_ThreadCallbackReceiver
virtual ~NPT_ThreadCallbackReceiver()
Definition: NptThreads.h:281
NPT_Thread::Interrupt
NPT_Result Interrupt() override
Definition: NptThreads.h:267
NPT_AutoLock
Definition: NptThreads.h:93
NPT_ThreadInterface::GetPriority
virtual NPT_Result GetPriority(int &priority)=0
NPT_Thread::SetCurrentThreadPriority
static NPT_Result SetCurrentThreadPriority(int priority)
Definition: NptPosixThreads.cpp:442
NPT_ThreadCallbackSlot::NotificationHelper::~NotificationHelper
virtual ~NotificationHelper()
Definition: NptThreads.h:294
NPT_MutexInterface
Definition: NptThreads.h:64
NPT_ThreadCallbackReceiver
Definition: NptThreads.h:278
NPT_Lock
Definition: NptThreads.h:113
NPT_THREAD_PRIORITY_MIN
const int NPT_THREAD_PRIORITY_MIN
Definition: NptThreads.h:51
NPT_Runnable::Run
virtual void Run()=0
NPT_ThreadCallbackSlot::NPT_ThreadCallbackSlot
NPT_ThreadCallbackSlot()
Definition: NptThreads.cpp:45
NPT_ThreadInterface
Definition: NptThreads.h:219
NPT_ThreadCallbackSlot::m_CallbackArgs
volatile void * m_CallbackArgs
Definition: NptThreads.h:309
NPT_THREAD_PRIORITY_BELOW_NORMAL
const int NPT_THREAD_PRIORITY_BELOW_NORMAL
Definition: NptThreads.h:54
NPT_SingletonLock
Definition: NptThreads.h:121
NPT_ThreadCallbackSlot::Shutdown
NPT_Result Shutdown()
Definition: NptThreads.cpp:56
NPT_AutoLock::~NPT_AutoLock
~NPT_AutoLock()
Definition: NptThreads.h:100
NPT_ThreadCallbackSlot::NotificationHelper
Definition: NptThreads.h:292
NPT_ThreadCallbackSlot::m_WriteLock
NPT_Mutex m_WriteLock
Definition: NptThreads.h:314
NPT_ThreadCallbackSlot::m_NotificationHelper
NotificationHelper * m_NotificationHelper
Definition: NptThreads.h:315
NPT_Thread::GetCurrentThreadPriority
static NPT_Result GetCurrentThreadPriority(int &priority)
Definition: NptPosixThreads.cpp:451
NPT_Thread::Start
NPT_Result Start() override
Definition: NptThreads.h:250
NPT_AtomicVariable::Increment
int Increment() override
Definition: NptThreads.h:196
NPT_ThreadInterface::SetPriority
virtual NPT_Result SetPriority(int)
Definition: NptThreads.h:226
NPT_Mutex::Unlock
NPT_Result Unlock() override
Definition: NptThreads.h:83
NPT_AtomicVariableInterface::Decrement
virtual int Decrement()=0
NptTypes.h
NPT_Thread::ThreadId
unsigned long ThreadId
Definition: NptThreads.h:237
NPT_Thread::Run
void Run() override
Definition: NptThreads.h:264
NPT_Thread::GetCurrentThreadId
static ThreadId GetCurrentThreadId()
Definition: NptPosixThreads.cpp:432
NPT_ThreadCallbackSlot::m_Pending
NPT_SharedVariable m_Pending
Definition: NptThreads.h:311
NPT_SharedVariableInterface
Definition: NptThreads.h:135
NptInterfaces.h
NPT_ThreadInterface::~NPT_ThreadInterface
~NPT_ThreadInterface() override
Definition: NptThreads.h:223
NPT_AtomicVariable::GetValue
int GetValue() override
Definition: NptThreads.h:199
NPT_Mutex::~NPT_Mutex
~NPT_Mutex() override
Definition: NptThreads.h:81
NPT_Thread::GetPriority
NPT_Result GetPriority(int &priority) override
Definition: NptThreads.h:259
NPT_ThreadInterface::Wait
virtual NPT_Result Wait(NPT_Timeout timeout=NPT_TIMEOUT_INFINITE)=0
NPT_MutexInterface::Unlock
virtual NPT_Result Unlock()=0
NPT_ThreadCallbackSlot::ReceiveCallback
NPT_Result ReceiveCallback(NPT_ThreadCallbackReceiver &receiver, NPT_Timeout timeout=0)
Definition: NptThreads.cpp:86
NPT_ThreadCallbackSlot
Definition: NptThreads.h:288
NPT_Thread::SetPriority
NPT_Result SetPriority(int priority) override
Definition: NptThreads.h:256
NPT_SharedVariable::WaitWhileEquals
NPT_Result WaitWhileEquals(int value, NPT_Timeout timeout=NPT_TIMEOUT_INFINITE) override
Definition: NptThreads.h:164
NPT_Interruptible::Interrupt
virtual NPT_Result Interrupt()=0
NPT_SingletonLock::GetInstance
static NPT_Mutex & GetInstance()
Definition: NptThreads.h:124
NPT_Mutex::Lock
NPT_Result Lock() override
Definition: NptThreads.h:82
NPT_Timeout
NPT_Int32 NPT_Timeout
Definition: NptTypes.h:63
NPT_SharedVariableInterface::WaitUntilEquals
virtual NPT_Result WaitUntilEquals(int value, NPT_Timeout timeout=NPT_TIMEOUT_INFINITE)=0
NPT_SharedVariable::NPT_SharedVariable
NPT_SharedVariable(int value=0)
Definition: NptPosixThreads.cpp:257
NPT_AtomicVariable::~NPT_AtomicVariable
~NPT_AtomicVariable() override
Definition: NptThreads.h:195
NPT_AtomicVariable::SetValue
void SetValue(int value) override
Definition: NptThreads.h:198
NPT_Result
int NPT_Result
Definition: NptTypes.h:56
NPT_SharedVariableInterface::GetValue
virtual int GetValue()=0
NPT_Thread::NPT_Thread
NPT_Thread(bool detached=false)
Definition: NptPosixThreads.cpp:693
NPT_AtomicVariableInterface::Increment
virtual int Increment()=0
NPT_SharedVariable::~NPT_SharedVariable
~NPT_SharedVariable() override
Definition: NptThreads.h:154
NPT_SharedVariable::GetValue
int GetValue() override
Definition: NptThreads.h:158
NPT_ERROR_CALLBACK_NOTHING_PENDING
const int NPT_ERROR_CALLBACK_NOTHING_PENDING
Definition: NptThreads.h:46
This file is part of the KDE documentation.
Documentation copyright © 1996-2019 The KDE developers.
Generated on Sat Dec 14 2019 02:33:49 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

digikam

Skip menu "digikam"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages
-->

graphics API Reference

Skip menu "graphics API Reference"
  • digikam
  • KDiagram
  •     KChart
  •     KGantt
  • KPhotoAlbum
  •   AndroidRemoteControl
  • Krita
  •   libs
  •     KritaBasicFlakes
  •     brush
  •     KritaUndo2
  •     KritaFlake
  •     image
  •     KritaPlugin
  •     Krita
  •     KritaOdf
  •     KritaPigment
  •     KritaStore
  •     ui
  •     KritaWidgets
  •     KritaWidgetUtils
  •   plugins
  •     Assitants
  •     Extensions
  •     Filters
  •         KritaText
  •         KritaTextLayout
  •     Generators
  •     Formats
  •             src
  •     PaintOps
  •       libpaintop
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