File indexing completed on 2025-02-09 05:13:17

0001 /*
0002  *  SPDX-FileCopyrightText: 2019 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "KisMoveBoundsCalculationJob.h"
0008 #include "kis_node.h"
0009 #include "kis_selection.h"
0010 #include "kis_layer_utils.h"
0011 
0012 KisMoveBoundsCalculationJob::KisMoveBoundsCalculationJob(KisNodeList nodes,
0013                                                          KisSelectionSP selection,
0014                                                          QObject *requestedBy)
0015     : m_nodes(nodes),
0016       m_selection(selection),
0017       m_requestedBy(requestedBy)
0018 {
0019     setExclusive(true);
0020 }
0021 
0022 void KisMoveBoundsCalculationJob::run()
0023 {
0024     QRect handlesRect;
0025 
0026     Q_FOREACH (KisNodeSP node, m_nodes) {
0027         handlesRect |= KisLayerUtils::recursiveTightNodeVisibleBounds(node);
0028     }
0029 
0030     if (m_selection) {
0031         handlesRect &= m_selection->selectedExactRect();
0032     }
0033 
0034     emit sigCalculationFinished(handlesRect);
0035 }
0036 
0037 bool KisMoveBoundsCalculationJob::overrides(const KisSpontaneousJob *_otherJob)
0038 {
0039     const KisMoveBoundsCalculationJob *otherJob =
0040         dynamic_cast<const KisMoveBoundsCalculationJob*>(_otherJob);
0041 
0042     return otherJob && otherJob->m_requestedBy == m_requestedBy;
0043 }
0044 
0045 int KisMoveBoundsCalculationJob::levelOfDetail() const
0046 {
0047     return 0;
0048 }
0049 
0050 QString KisMoveBoundsCalculationJob::debugName() const
0051 {
0052     QString result;
0053     QDebug dbg(&result);
0054     dbg << "KisMoveBoundsCalculationJob" << ppVar(m_requestedBy) << m_nodes;
0055     return result;
0056 }