File indexing completed on 2025-01-26 03:34:20
0001 /* 0002 File : XYFourierTransformCurve.h 0003 Project : LabPlot 0004 Description : A xy-curve defined by a Fourier transform 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2016-2021 Stefan Gerlach <stefan.gerlach@uni.kn> 0007 SPDX-FileCopyrightText: 2017 Alexander Semke <alexander.semke@web.de> 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #ifndef XYFOURIERTRANSFORMCURVE_H 0012 #define XYFOURIERTRANSFORMCURVE_H 0013 0014 #include "backend/worksheet/plots/cartesian/XYAnalysisCurve.h" 0015 extern "C" { 0016 #include "backend/nsl/nsl_dft.h" 0017 #include "backend/nsl/nsl_sf_window.h" 0018 } 0019 0020 class XYFourierTransformCurvePrivate; 0021 0022 class XYFourierTransformCurve : public XYAnalysisCurve { 0023 Q_OBJECT 0024 0025 public: 0026 struct TransformData { 0027 TransformData(){}; 0028 0029 nsl_dft_result_type type{nsl_dft_result_magnitude}; 0030 bool twoSided{false}; 0031 bool shifted{false}; 0032 nsl_dft_xscale xScale{nsl_dft_xscale_frequency}; 0033 nsl_sf_window_type windowType{nsl_sf_window_uniform}; 0034 bool autoRange{true}; // use all data? 0035 // TODO: use Range 0036 QVector<double> xRange{0, 0}; // x range for transform 0037 }; 0038 0039 explicit XYFourierTransformCurve(const QString& name); 0040 ~XYFourierTransformCurve() override; 0041 0042 void recalculate() override; 0043 QIcon icon() const override; 0044 void save(QXmlStreamWriter*) const override; 0045 bool load(XmlStreamReader*, bool preview) override; 0046 0047 CLASS_D_ACCESSOR_DECL(TransformData, transformData, TransformData) 0048 0049 typedef XYAnalysisCurve::Result TransformResult; 0050 virtual const XYAnalysisCurve::Result& result() const override; 0051 0052 typedef XYFourierTransformCurvePrivate Private; 0053 0054 protected: 0055 XYFourierTransformCurve(const QString& name, XYFourierTransformCurvePrivate* dd); 0056 0057 private: 0058 Q_DECLARE_PRIVATE(XYFourierTransformCurve) 0059 0060 Q_SIGNALS: 0061 void transformDataChanged(const XYFourierTransformCurve::TransformData&); 0062 }; 0063 0064 #endif