Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_mirror_processing_visitor.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2013 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include "kis_paint_device.h"
10#include "kis_transaction.h"
11#include "kis_node.h"
12#include "kis_image.h"
13#include "kis_painter.h"
14
18
20#include <functional>
21
22
23KisMirrorProcessingVisitor::KisMirrorProcessingVisitor(const QRect &bounds, Qt::Orientation orientation)
24 : m_bounds(bounds),
25 m_orientation(orientation),
26 m_selectionHelper(0, std::bind(&KisMirrorProcessingVisitor::mirrorDevice, this, std::placeholders::_1))
27{
28 m_axis = m_orientation == Qt::Horizontal ?
29 m_bounds.x() + 0.5 * m_bounds.width() :
30 m_bounds.y() + 0.5 * m_bounds.height();
31}
32
34 : KisMirrorProcessingVisitor(selection->selectedExactRect(), orientation)
35{
37}
38
43
48
53
58
60{
61 if (m_orientation == Qt::Horizontal) {
62 KisTransformProcessingVisitor visitor(-1.0, 1.0,
63 0.0, 0.0,
64 0.0,
65 m_bounds.width(), 0.0,
66 0);
67 visitor.visit(layer, undoAdapter);
68 } else {
69 KisTransformProcessingVisitor visitor(1.0, -1.0,
70 0.0, 0.0,
71 0.0,
72 0.0, m_bounds.height(),
73 0);
74 visitor.visit(layer, undoAdapter);
75 }
76}
77
79{
81
82 Q_FOREACH (KisPaintDeviceSP device, devices) {
83 transformPaintDevice(device, undoAdapter);
84 }
85}
QVector< KisPaintDeviceSP > allPaintDevices() const
KisSelectionBasedProcessingHelper m_selectionHelper
void visitColorizeMask(KisColorizeMask *node, KisUndoAdapter *undoAdapter) override
void visitNodeWithPaintDevice(KisNode *node, KisUndoAdapter *undoAdapter) override
void mirrorDevice(KisPaintDeviceSP device)
KUndo2Command * createInitCommand() override
KisMirrorProcessingVisitor(const QRect &bounds, Qt::Orientation orientation)
void transformPaintDevice(KisPaintDeviceSP device, KisUndoAdapter *undoAdapter)
void visitExternalLayer(KisExternalLayer *layer, KisUndoAdapter *undoAdapter) override
void transformPaintDevice(KisPaintDeviceSP device, KisUndoAdapter *undoAdapter)
void visit(KisNode *node, KisUndoAdapter *undoAdapter) override
static void mirror(KisPaintDeviceSP dev, qreal axis, Qt::Orientation orientation)
#define bounds(x, a, b)
virtual KisPaintDeviceSP paintDevice() const =0