117 lines
3.9 KiB
C++
117 lines
3.9 KiB
C++
#pragma once
|
|
#include "Hover_Info.h"
|
|
#include "Spectrum.h"
|
|
namespace YSG {
|
|
class Frequent_Axis;
|
|
struct Spectrum_Private;
|
|
class LIB_DECL Spectrum : public Renderable, public Hover_Info_Render_Able<Spectrum> {
|
|
public:
|
|
Spectrum_Private* d();
|
|
Render_Data* create_render_data() override;
|
|
Render_State* create_render_state() override;
|
|
Input_Data* create_input_data() override;
|
|
protected:
|
|
Spectrum();
|
|
friend struct Spectrum_Private;
|
|
friend struct Spectrum_Render_State;
|
|
friend struct Spectrum_Input_Data;
|
|
public:
|
|
PROP(Frequent_Axis*, frequent_axis)
|
|
PROP(Axis*, power_axis);
|
|
PROP(int, frequent_point_size);
|
|
PROP(Range, frequent_range);
|
|
PROP(double, middle_sweep_frequent);
|
|
PROP(Range, sweep_frequent_range);
|
|
PROP(bool, use_max_line);
|
|
PROP(bool, use_min_line);
|
|
PROP(bool, use_max_marker);
|
|
PROP(bool, use_min_marker);
|
|
PROP(bool, use_sweep_frequent_rect);
|
|
PROP(QBrush, max_brush);
|
|
PROP(QBrush, cur_brush);
|
|
PROP(QBrush, min_brush);
|
|
PROP(QPen, max_pen);
|
|
PROP(QPen, cur_pen);
|
|
PROP(QPen, min_pen);
|
|
PROP(QPen, select_marker_pen);
|
|
PROP(QPen, marker_pen);
|
|
PROP(QPen, middle_frequent_pen);
|
|
PROP(QBrush, sweep_rect_brush);
|
|
void give_data(const QVector<double>& lineData);
|
|
double get_power(double frequent, bool& ok, SRC = SRC::Edit);
|
|
void add_custom_marker(double frequent);
|
|
void add_custom_line_marker(double frequent);
|
|
void remove_custom_marker(double frequent);
|
|
void remove_current_marker(SRC = SRC::Edit);
|
|
void clear_all_custom_marker(SRC = SRC::Edit);
|
|
int select_line_marker_size(SRC = SRC::Edit);
|
|
int cur_select_marker_index(SRC = SRC::Edit);
|
|
void set_selected_line_marker(int markerIndex);
|
|
void select_next(SRC = SRC::Edit);
|
|
void un_select_marker(SRC = SRC::Edit);
|
|
void select_previous(SRC = SRC::Edit);
|
|
double get_mark_frequent(int markIndex, SRC = SRC::Edit);
|
|
void set_marker_frequent(int markerIndex, double frequent);
|
|
void set_current_marker_frequent(double frequent);
|
|
struct Builder;
|
|
};
|
|
struct Spectrum_PROP {
|
|
Frequent_Axis* frequent_axis{};
|
|
Axis* power_axis{};
|
|
int frequent_point_size{};
|
|
Range frequent_range{};
|
|
double middle_sweep_frequent = 50;
|
|
Range sweep_frequent_range{40, 60};
|
|
bool use_max_line = false;
|
|
bool use_min_line = false;
|
|
bool use_max_marker = false;
|
|
bool use_min_marker = false;
|
|
bool use_sweep_frequent_rect = false;
|
|
QBrush max_brush;
|
|
QBrush cur_brush;
|
|
QBrush min_brush;
|
|
QPen max_pen = QPen(Qt::red);
|
|
QPen cur_pen = QPen(Qt::green);
|
|
QPen min_pen = QPen(Qt::white);
|
|
QPen select_marker_pen = QPen(Qt::darkBlue, 2);
|
|
QPen marker_pen = QPen(Qt::red);
|
|
QPen middle_frequent_pen = QPen(Qt::red);
|
|
QBrush sweep_rect_brush = QBrush(QColor(255, 255, 0, 100));
|
|
Spectrum_PROP() {
|
|
max_brush = QBrush(QColor(), Qt::NoBrush);
|
|
cur_brush = QBrush(QColor(), Qt::NoBrush);
|
|
min_brush = QBrush(QColor(), Qt::NoBrush);
|
|
}
|
|
};
|
|
struct LIB_DECL Spectrum::Builder : Spectrum_PROP{
|
|
PROP_B(Frequent_Axis *, frequent_axis)
|
|
PROP_B(Axis *, power_axis);
|
|
PROP_B(int, frequent_point_size);
|
|
PROP_B(Range, frequent_range);
|
|
PROP_B(double, middle_sweep_frequent);
|
|
PROP_B(Range, sweep_frequent_range);
|
|
PROP_B(bool, use_max_line);
|
|
PROP_B(bool, use_min_line);
|
|
PROP_B(bool, use_max_marker);
|
|
PROP_B(bool, use_min_marker);
|
|
PROP_B(bool, use_sweep_frequent_rect);
|
|
PROP_B(QBrush, max_brush);
|
|
PROP_B(QBrush, cur_brush);
|
|
PROP_B(QBrush, min_brush);
|
|
PROP_B(QPen, max_pen);
|
|
PROP_B(QPen, cur_pen);
|
|
PROP_B(QPen, min_pen);
|
|
PROP_B(QPen, select_marker_pen);
|
|
PROP_B(QPen, marker_pen);
|
|
PROP_B(QPen, middle_frequent_pen);
|
|
PROP_B(QBrush, sweep_rect_brush);
|
|
SETTER(QString, layerName, "plottable")
|
|
Builder(Frequent_Axis * frequent_axis, Axis * axis);
|
|
Spectrum * build();
|
|
protected:
|
|
Plot * plot{};
|
|
|
|
|
|
};
|
|
}
|