File indexing completed on 2024-05-12 15:58:29
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "kis_node_progress_proxy.h" 0008 0009 #include <QApplication> 0010 0011 #include "kis_node.h" 0012 0013 struct Q_DECL_HIDDEN KisNodeProgressProxy::Private { 0014 Private() 0015 : minimum(0) 0016 , maximum(100) 0017 , value(100) 0018 , percentage(-1) 0019 { 0020 } 0021 0022 KisNodeWSP node; 0023 int minimum; 0024 int maximum; 0025 int value; 0026 int percentage; 0027 0028 bool computePercentage() { 0029 int old_percentage = percentage; 0030 if (value == maximum) { 0031 percentage = -1; 0032 } else if (minimum == maximum && minimum == 0) { 0033 percentage = 0; 0034 } else { 0035 percentage = (100 * (value - minimum)) / (maximum - minimum); 0036 percentage = qBound(0, percentage, 100); 0037 } 0038 return old_percentage != percentage; 0039 } 0040 }; 0041 0042 KisNodeProgressProxy::KisNodeProgressProxy(KisNode* _node) 0043 : d(new Private) 0044 { 0045 d->node = _node; 0046 } 0047 0048 KisNodeProgressProxy::~KisNodeProgressProxy() 0049 { 0050 delete d; 0051 } 0052 0053 void KisNodeProgressProxy::prepareDestroying() 0054 { 0055 d->node = 0; 0056 } 0057 0058 0059 int KisNodeProgressProxy::maximum() const 0060 { 0061 return d->maximum; 0062 } 0063 0064 int KisNodeProgressProxy::percentage() const 0065 { 0066 return d->percentage; 0067 } 0068 0069 void KisNodeProgressProxy::setValue(int _value) 0070 { 0071 d->value = _value; 0072 if (d->node && d->computePercentage()) { 0073 emit(percentageChanged(d->percentage, d->node)); 0074 } 0075 } 0076 0077 void KisNodeProgressProxy::setRange(int _minimum, int _maximum) 0078 { 0079 d->minimum = _minimum; 0080 d->maximum = _maximum; 0081 if (d->node && d->computePercentage()) { 0082 emit(percentageChanged(d->percentage, d->node)); 0083 } 0084 } 0085 0086 void KisNodeProgressProxy::setFormat(const QString & _format) 0087 { 0088 Q_UNUSED(_format); 0089 }