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

plugins/paintops/libpaintop

  • sources
  • kfour-appscomplete
  • krita
  • plugins
  • paintops
  • libpaintop
kis_color_source_option.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2011 Cyrille Berger <[email protected]>
3  *
4  * SPDX-License-Identifier: LGPL-2.0-or-later
5  */
6 
7 #include "kis_color_source_option.h"
8 
9 #include <QMap>
10 #include <KoID.h>
11 #include <kis_properties_configuration.h>
12 #include "kis_color_source.h"
13 #include <kis_painter.h>
14 #include <kis_paint_device.h>
15 #include <resources/KoPattern.h>
16 
17 struct KisColorSourceOption::Private {
18  Private()
19  : type(PLAIN)
20  {}
21 
22  KisColorSourceOption::Type type;
23 
24  static QMap<KisColorSourceOption::Type, KoID> type2id;
25  static QMap<QString, KisColorSourceOption::Type> id2type;
26  static void addType(KisColorSourceOption::Type _type, KoID _id);
27 };
28 
29 QMap<KisColorSourceOption::Type, KoID> KisColorSourceOption::Private::type2id;
30 QMap<QString, KisColorSourceOption::Type> KisColorSourceOption::Private::id2type;
31 
32 void KisColorSourceOption::Private::addType(KisColorSourceOption::Type _type, KoID _id)
33 {
34  type2id[_type] = _id;
35  id2type[_id.id()] = _type;
36 }
37 
38 
39 KisColorSourceOption::KisColorSourceOption() : d(new Private)
40 {
41  if (Private::type2id.isEmpty()) {
42  Private::addType(PLAIN, KoID("plain", i18n("Plain color")));
43  Private::addType(GRADIENT, KoID("gradient", i18n("Gradient")));
44  Private::addType(UNIFORM_RANDOM, KoID("uniform_random", i18n("Uniform random")));
45  Private::addType(TOTAL_RANDOM, KoID("total_random", i18n("Total random")));
46  Private::addType(PATTERN, KoID("pattern", i18n("Pattern")));
47  Private::addType(PATTERN_LOCKED, KoID("lockedpattern", i18n("Locked pattern")));
48  }
49 }
50 
51 KisColorSourceOption::~KisColorSourceOption()
52 {
53  delete d;
54 }
55 
56 void KisColorSourceOption::writeOptionSetting(KisPropertiesConfigurationSP setting) const
57 {
58  setting->setProperty("ColorSource/Type", Private::type2id.value(d->type).id());
59 }
60 
61 void KisColorSourceOption::readOptionSetting(const KisPropertiesConfigurationSP setting)
62 {
63  QString colorSourceType = setting->getString("ColorSource/Type", "plain");
64  d->type = Private::id2type.value(colorSourceType, PLAIN);
65 }
66 
67 KisColorSource* KisColorSourceOption::createColorSource(const KisPainter* _painter) const
68 {
69  Q_ASSERT(_painter);
70 
71  switch (d->type) {
72  case PLAIN:
73  return new KisPlainColorSource(_painter->backgroundColor(), _painter->paintColor());
74  case GRADIENT:
75  return new KisGradientColorSource(_painter->gradient(), _painter->paintColor().colorSpace());
76  case UNIFORM_RANDOM:
77  return new KisUniformRandomColorSource();
78  case TOTAL_RANDOM:
79  return new KisTotalRandomColorSource();
80  case PATTERN: {
81  if (_painter->pattern()) {
82  KisPaintDevice* dev = new KisPaintDevice(_painter->paintColor().colorSpace(), _painter->pattern()->name());
83  dev->convertFromQImage(_painter->pattern()->pattern(), 0);
84  return new KoPatternColorSource(dev, _painter->pattern()->width(), _painter->pattern()->height(), false);
85  }
86  break;
87  }
88  case PATTERN_LOCKED: {
89  if (_painter->pattern()) {
90  KisPaintDevice* dev = new KisPaintDevice(_painter->paintColor().colorSpace(), _painter->pattern()->name());
91  dev->convertFromQImage(_painter->pattern()->pattern(), 0);
92  return new KoPatternColorSource(dev, _painter->pattern()->width(), _painter->pattern()->height(), true);
93  }
94 
95  }
96  }
97  // Fallback in case the patterns are messed up
98  return new KisPlainColorSource(_painter->backgroundColor(), _painter->paintColor());
99 }
100 
101 QString KisColorSourceOption::colorSourceTypeId() const
102 {
103  return Private::type2id.value(d->type).id();
104 }
105 
106 void KisColorSourceOption::setColorSourceType(Type _type)
107 {
108  d->type = _type;
109 }
110 
111 void KisColorSourceOption::setColorSourceType(const QString& _id)
112 {
113  d->type = Private::id2type[_id];
114 }
115 
116 QList<KoID> KisColorSourceOption::sourceIds()
117 {
118  return Private::type2id.values();
119 }
120 
121 KisColorSourceOption::Type KisColorSourceOption::type() const
122 {
123  return d->type;
124 }
KisColorSourceOption::sourceIds
static QList< KoID > sourceIds()
Definition: kis_color_source_option.cpp:116
KisColorSourceOption::KisColorSourceOption
KisColorSourceOption()
Definition: kis_color_source_option.cpp:39
KisColorSourceOption::PATTERN_LOCKED
Definition: kis_color_source_option.h:29
KisColorSourceOption::UNIFORM_RANDOM
Definition: kis_color_source_option.h:26
KisColorSourceOption::PLAIN
Definition: kis_color_source_option.h:24
QList
KisColorSourceOption::PATTERN
Definition: kis_color_source_option.h:28
KisColorSource
A color source allow to abstract how a brush is colorized, and to apply transformation.
Definition: kis_color_source.h:29
KisColorSourceOption::colorSourceTypeId
QString colorSourceTypeId() const
Definition: kis_color_source_option.cpp:101
KisGradientColorSource
Definition: kis_color_source.h:87
KisColorSourceOption::TOTAL_RANDOM
Definition: kis_color_source_option.h:27
kis_color_source.h
KisTotalRandomColorSource
Definition: kis_color_source.h:105
QString
KisColorSourceOption::readOptionSetting
void readOptionSetting(const KisPropertiesConfigurationSP setting)
Definition: kis_color_source_option.cpp:61
KoPatternColorSource
Definition: kis_color_source.h:122
QMap< KisColorSourceOption::Type, KoID >
KisColorSourceOption::type
Type type() const
Definition: kis_color_source_option.cpp:121
KisColorSourceOption::GRADIENT
Definition: kis_color_source_option.h:25
KisColorSourceOption::writeOptionSetting
void writeOptionSetting(KisPropertiesConfigurationSP setting) const
Definition: kis_color_source_option.cpp:56
KisUniformRandomColorSource
Definition: kis_color_source.h:97
KisPlainColorSource
Definition: kis_color_source.h:75
KisColorSourceOption::~KisColorSourceOption
~KisColorSourceOption()
Definition: kis_color_source_option.cpp:51
KisColorSourceOption::setColorSourceType
void setColorSourceType(Type _type)
Definition: kis_color_source_option.cpp:106
kis_color_source_option.h
KisColorSourceOption::createColorSource
KisColorSource * createColorSource(const KisPainter *_painter) const
Definition: kis_color_source_option.cpp:67
KisColorSourceOption::Type
Type
Definition: kis_color_source_option.h:23
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Apr 17 2021 23:38:22 by doxygen 1.8.16 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

plugins/paintops/libpaintop

Skip menu "plugins/paintops/libpaintop"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

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