• 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
KisDabCacheUtils.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <[email protected]>
3  *
4  * SPDX-License-Identifier: GPL-2.0-or-later
5  */
6 
7 #include "KisDabCacheUtils.h"
8 
9 #include "kis_brush.h"
10 #include "kis_paint_device.h"
11 #include "kis_fixed_paint_device.h"
12 #include "kis_color_source.h"
13 
14 #include <kis_pressure_sharpness_option.h>
15 #include <kis_texture_option.h>
16 
17 #include <kundo2command.h>
18 
19 namespace KisDabCacheUtils
20 {
21 
22 DabRenderingResources::DabRenderingResources()
23 {
24 }
25 
26 DabRenderingResources::~DabRenderingResources()
27 {
28 }
29 
30 void DabRenderingResources::syncResourcesToSeqNo(int seqNo, const KisPaintInformation &info)
31 {
32  brush->prepareForSeqNo(info, seqNo);
33 }
34 
35 QRect correctDabRectWhenFetchedFromCache(const QRect &dabRect,
36  const QSize &realDabSize)
37 {
38  int diffX = (realDabSize.width() - dabRect.width()) / 2;
39  int diffY = (realDabSize.height() - dabRect.height()) / 2;
40 
41  return QRect(dabRect.x() - diffX, dabRect.y() - diffY,
42  realDabSize.width() , realDabSize.height());
43 }
44 
45 
46 void generateDab(const DabGenerationInfo &di, DabRenderingResources *resources, KisFixedPaintDeviceSP *dab)
47 {
48  KIS_SAFE_ASSERT_RECOVER_RETURN(*dab);
49  const KoColorSpace *cs = (*dab)->colorSpace();
50 
51 
52  if (resources->brush->brushApplication() == IMAGESTAMP) {
53  *dab = resources->brush->paintDevice(cs, di.shape, di.info,
54  di.subPixel.x(),
55  di.subPixel.y());
56  } else if (di.solidColorFill) {
57  resources->brush->mask(*dab,
58  di.paintColor,
59  di.shape,
60  di.info,
61  di.subPixel.x(), di.subPixel.y(),
62  di.softnessFactor,
63  di.lightnessStrength);
64  }
65  else {
66  if (!resources->colorSourceDevice ||
67  *cs != *resources->colorSourceDevice->colorSpace()) {
68 
69  resources->colorSourceDevice = new KisPaintDevice(cs);
70  }
71  else {
72  resources->colorSourceDevice->clear();
73  }
74 
75  QRect maskRect(QPoint(), di.dstDabRect.size());
76  resources->colorSource->colorize(resources->colorSourceDevice, maskRect, di.info.pos().toPoint());
77  resources->colorSourceDevice->convertTo(cs);
78 
79  resources->brush->mask(*dab, resources->colorSourceDevice,
80  di.shape,
81  di.info,
82  di.subPixel.x(), di.subPixel.y(),
83  di.softnessFactor,
84  di.lightnessStrength);
85  }
86 
87  if (!di.mirrorProperties.isEmpty()) {
88  (*dab)->mirror(di.mirrorProperties.horizontalMirror,
89  di.mirrorProperties.verticalMirror);
90  }
91 }
92 
93 void postProcessDab(KisFixedPaintDeviceSP dab,
94  const QPoint &dabTopLeft,
95  const KisPaintInformation& info,
96  DabRenderingResources *resources)
97 {
98  if (resources->sharpnessOption) {
99  resources->sharpnessOption->applyThreshold(dab, info);
100  }
101 
102  if (resources->textureOption) {
103  resources->textureOption->apply(dab, dabTopLeft, info);
104  }
105 }
106 
107 }
108 
KisDabCacheUtils::DabRenderingResources::DabRenderingResources
DabRenderingResources()
Definition: KisDabCacheUtils.cpp:22
KisDabCacheUtils::DabGenerationInfo::solidColorFill
bool solidColorFill
Definition: KisDabCacheUtils.h:87
KisDabCacheUtils::DabGenerationInfo::shape
KisDabShape shape
Definition: KisDabCacheUtils.h:84
KisDabCacheUtils
Definition: KisDabCacheUtils.cpp:19
KisDabCacheUtils::postProcessDab
void postProcessDab(KisFixedPaintDeviceSP dab, const QPoint &dabTopLeft, const KisPaintInformation &info, DabRenderingResources *resources)
Definition: KisDabCacheUtils.cpp:93
QRect::size
QSize size() const
QRect
MirrorProperties::horizontalMirror
bool horizontalMirror
Definition: kis_pressure_mirror_option.h:22
QRect::width
int width() const
KisDabCacheUtils::DabRenderingResources::syncResourcesToSeqNo
virtual void syncResourcesToSeqNo(int seqNo, const KisPaintInformation &info)
Definition: KisDabCacheUtils.cpp:30
QSize
QRect::x
int x() const
QRect::y
int y() const
QSize::width
int width() const
KisDabCacheUtils::DabGenerationInfo::mirrorProperties
MirrorProperties mirrorProperties
Definition: KisDabCacheUtils.h:83
kis_color_source.h
KisDabCacheUtils::DabRenderingResources::colorSourceDevice
KisPaintDeviceSP colorSourceDevice
Definition: KisDabCacheUtils.h:45
QSize::height
int height() const
MirrorProperties::isEmpty
bool isEmpty() const
Definition: kis_pressure_mirror_option.h:27
KisDabCacheUtils::DabRenderingResources::colorSource
QScopedPointer< KisColorSource > colorSource
Definition: KisDabCacheUtils.h:40
KisDabCacheUtils::DabRenderingResources::sharpnessOption
QScopedPointer< KisPressureSharpnessOption > sharpnessOption
Definition: KisDabCacheUtils.h:42
KisDabCacheUtils::correctDabRectWhenFetchedFromCache
QRect correctDabRectWhenFetchedFromCache(const QRect &dabRect, const QSize &realDabSize)
Definition: KisDabCacheUtils.cpp:35
KisDabCacheUtils::DabRenderingResources
Definition: KisDabCacheUtils.h:32
KisDabCacheUtils::DabGenerationInfo::info
KisPaintInformation info
Definition: KisDabCacheUtils.h:89
KisDabCacheUtils::DabGenerationInfo::softnessFactor
qreal softnessFactor
Definition: KisDabCacheUtils.h:90
KisDabCacheUtils::generateDab
void generateDab(const DabGenerationInfo &di, DabRenderingResources *resources, KisFixedPaintDeviceSP *dab)
Definition: KisDabCacheUtils.cpp:46
KisDabCacheUtils::DabRenderingResources::textureOption
QScopedPointer< KisTextureProperties > textureOption
Definition: KisDabCacheUtils.h:43
QRect::height
int height() const
QPointF::x
qreal x() const
QPointF::y
qreal y() const
KisDabCacheUtils::DabGenerationInfo
Definition: KisDabCacheUtils.h:81
kis_texture_option.h
KisDabCacheUtils::DabRenderingResources::brush
KisBrushSP brush
Definition: KisDabCacheUtils.h:39
KisDabCacheUtils::DabRenderingResources::~DabRenderingResources
virtual ~DabRenderingResources()
Definition: KisDabCacheUtils.cpp:26
kis_pressure_sharpness_option.h
KisDabCacheUtils::DabGenerationInfo::dstDabRect
QRect dstDabRect
Definition: KisDabCacheUtils.h:85
KisDabCacheUtils.h
KisDabCacheUtils::DabGenerationInfo::paintColor
KoColor paintColor
Definition: KisDabCacheUtils.h:88
KisDabCacheUtils::DabGenerationInfo::lightnessStrength
qreal lightnessStrength
Definition: KisDabCacheUtils.h:91
KisDabCacheUtils::DabGenerationInfo::subPixel
QPointF subPixel
Definition: KisDabCacheUtils.h:86
QPoint
MirrorProperties::verticalMirror
bool verticalMirror
Definition: kis_pressure_mirror_option.h:23
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Apr 10 2021 23:38:28 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