File indexing completed on 2024-05-12 03:47:26
0001 /* 0002 File : AbstractFilter.h 0003 Project : SciDAVis 0004 Description : Base class for all analysis operations. 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2007, 2008 Knut Franke <knut.franke*gmx.de (use @ for *)> 0007 SPDX-FileCopyrightText: 2007, 2008 Tilman Benkert <thzs@gmx.net> 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #ifndef ABSTRACT_FILTER_H 0012 #define ABSTRACT_FILTER_H 0013 0014 #include "AbstractAspect.h" 0015 #include <QVector> 0016 0017 class AbstractColumn; 0018 0019 class AbstractFilter : public AbstractAspect { 0020 Q_OBJECT 0021 0022 public: 0023 explicit AbstractFilter(const QString& name) 0024 : AbstractAspect(name, AspectType::AbstractFilter) { 0025 } 0026 ~AbstractFilter() override = default; 0027 0028 virtual int inputCount() const = 0; 0029 virtual int outputCount() const = 0; 0030 int highestConnectedInput() const; 0031 bool input(int port, const AbstractColumn* source); 0032 bool input(const AbstractFilter* sources); 0033 const AbstractColumn* input(int port) const; 0034 virtual QString inputLabel(int port) const; 0035 virtual AbstractColumn* output(int port = 0) = 0; 0036 virtual const AbstractColumn* output(int port = 0) const = 0; 0037 0038 int portIndexOf(const AbstractColumn* column); 0039 0040 protected: 0041 virtual bool inputAcceptable(int port, const AbstractColumn* source); 0042 virtual void inputAboutToBeDisconnected(const AbstractColumn* source); 0043 0044 protected Q_SLOTS: 0045 virtual void inputDescriptionAboutToChange(const AbstractColumn* source); 0046 void inputDescriptionAboutToChange(const AbstractAspect* aspect); 0047 virtual void inputDescriptionChanged(const AbstractColumn* source); 0048 void inputDescriptionChanged(const AbstractAspect* aspect); 0049 virtual void inputPlotDesignationAboutToChange(const AbstractColumn* source); 0050 0051 virtual void inputPlotDesignationChanged(const AbstractColumn* source); 0052 virtual void inputModeAboutToChange(const AbstractColumn* source); 0053 virtual void inputModeChanged(const AbstractColumn* source); 0054 virtual void inputDataAboutToChange(const AbstractColumn* source); 0055 virtual void inputDataChanged(const AbstractColumn* source); 0056 0057 virtual void inputRowsAboutToBeInserted(const AbstractColumn* source, int before, int count) { 0058 Q_UNUSED(source); 0059 Q_UNUSED(before); 0060 Q_UNUSED(count); 0061 } 0062 virtual void inputRowsInserted(const AbstractColumn* source, int before, int count) { 0063 Q_UNUSED(source); 0064 Q_UNUSED(before); 0065 Q_UNUSED(count); 0066 } 0067 virtual void inputRowsAboutToBeRemoved(const AbstractColumn* source, int first, int count) { 0068 Q_UNUSED(source); 0069 Q_UNUSED(first); 0070 Q_UNUSED(count); 0071 } 0072 virtual void inputRowsRemoved(const AbstractColumn* source, int first, int count) { 0073 Q_UNUSED(source); 0074 Q_UNUSED(first); 0075 Q_UNUSED(count); 0076 } 0077 virtual void inputMaskingAboutToChange(const AbstractColumn* source) { 0078 Q_UNUSED(source); 0079 } 0080 virtual void inputMaskingChanged(const AbstractColumn* source) { 0081 Q_UNUSED(source); 0082 } 0083 void inputAboutToBeDestroyed(const AbstractColumn* source) { 0084 input(portIndexOf(source), nullptr); 0085 } 0086 0087 protected: 0088 QVector<const AbstractColumn*> m_inputs; 0089 }; 0090 0091 #endif // ifndef ABSTRACT_FILTER_H