Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDabCacheUtils.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KISDABCACHEUTILS_H
8#define KISDABCACHEUTILS_H
9
10#include <QRect>
11#include <QSize>
12
13#include "kis_types.h"
14
15#include <KoColor.h>
17#include <KisMirrorProperties.h>
18#include "kis_dab_shape.h"
19
20#include "kritapaintop_export.h"
21#include <functional>
22#include <memory>
23
24class KisBrush;
26
27class KisColorSource;
30
31
32namespace KisDabCacheUtils
33{
34
35struct PAINTOP_EXPORT DabRenderingResources
36{
38 virtual ~DabRenderingResources();
39
40 virtual void syncResourcesToSeqNo(int seqNo, const KisPaintInformation &info);
41
43 std::unique_ptr<KisColorSource> colorSource;
44
45 std::unique_ptr<KisSharpnessOption> sharpnessOption;
46 std::unique_ptr<KisTextureOption> textureOption;
47
49
50private:
52};
53
54typedef std::function<DabRenderingResources*()> ResourcesFactory;
55
56struct PAINTOP_EXPORT DabRequestInfo
57{
58 DabRequestInfo(const KoColor &_color,
59 const QPointF &_cursorPoint,
60 const KisDabShape &_shape,
61 const KisPaintInformation &_info,
62 qreal _softnessFactor,
63 qreal _lightnessStrength = 1.0)
64 : color(_color),
65 cursorPoint(_cursorPoint),
66 shape(_shape),
67 info(_info),
68 softnessFactor(_softnessFactor),
69 lightnessStrength(_lightnessStrength)
70 {
71 }
72
73 const KoColor &color;
74 const QPointF &cursorPoint;
77 const qreal softnessFactor;
78 const qreal lightnessStrength;
79
80private:
82};
83
84struct PAINTOP_EXPORT DabGenerationInfo
85{
89 QPointF subPixel;
90 bool solidColorFill = true;
93 qreal softnessFactor = 1.0;
94 qreal lightnessStrength = 1.0;
95
96 bool needsPostprocessing = false;
97};
98
99PAINTOP_EXPORT QRect correctDabRectWhenFetchedFromCache(const QRect &dabRect,
100 const QSize &realDabSize);
101
102PAINTOP_EXPORT void generateDab(const DabGenerationInfo &di,
103 DabRenderingResources *resources,
105 bool forceImageStamp = false);
106
107PAINTOP_EXPORT void postProcessDab(KisFixedPaintDeviceSP dab,
108 const QPoint &dabTopLeft,
109 const KisPaintInformation& info,
110 DabRenderingResources *resources);
111
112}
113
114template<class T> class QSharedPointer;
117
118#endif // KISDABCACHEUTILS_H
QSharedPointer< KisBrush > KisBrushSP
QSharedPointer< KisDabRenderingJob > KisDabRenderingJobSP
void postProcessDab(KisFixedPaintDeviceSP dab, const QPoint &dabTopLeft, const KisPaintInformation &info, DabRenderingResources *resources)
void generateDab(const DabGenerationInfo &di, DabRenderingResources *resources, KisFixedPaintDeviceSP *dab, bool forceNormalizedRGBAImageStamp)
QRect correctDabRectWhenFetchedFromCache(const QRect &dabRect, const QSize &realDabSize)
std::function< DabRenderingResources *()> ResourcesFactory
std::unique_ptr< KisTextureOption > textureOption
std::unique_ptr< KisSharpnessOption > sharpnessOption
DabRenderingResources(const DabRenderingResources &rhs)=delete
std::unique_ptr< KisColorSource > colorSource
DabRequestInfo(const DabRequestInfo &rhs)
DabRequestInfo(const KoColor &_color, const QPointF &_cursorPoint, const KisDabShape &_shape, const KisPaintInformation &_info, qreal _softnessFactor, qreal _lightnessStrength=1.0)
const KisPaintInformation & info