SatDump 2.0.0-alpha-76a915210
Loading...
Searching...
No Matches
processor.h
1#pragma once
2
3#include "core/params.h"
4#include "dataset_handler.h"
5
6namespace satdump
7{
8 namespace handlers
9 {
10 class DatasetProductProcessor
11 {
12 protected:
13 const DatasetHandler *dataset_handler;
14 const Handler *dataset_product_handler;
15 const std::string name, processor;
16 // const nlohmann::json parameters;
17
18 std::map<std::string, params::EditableParameter> params; // TODOREWORK make this more dynamic...
19
20 protected:
21 nlohmann::json getParams()
22 {
23 nlohmann::json cfg;
24 for (auto &p : params)
25 cfg[p.first] = p.second.getValue();
26 return cfg;
27 }
28
29 protected:
30 products::Product *get_instrument_products(std::string v, int index)
31 {
32 std::vector<products::Product *> pro;
33 for (auto &h : dataset_handler->all_products)
34 if (h->instrument_name == v)
35 pro.push_back(h.get());
36 return index < pro.size() ? pro[index] : nullptr;
37 };
38
39 void add_handler_to_products(std::shared_ptr<Handler> p)
40 {
41 if (p)
42 ((Handler *)dataset_product_handler)->addSubHandler(p);
43 };
44
45 public:
46 DatasetProductProcessor(DatasetHandler *dh, Handler *dp, nlohmann::json p) : dataset_handler(dh), dataset_product_handler(dp), name(p["name"]), processor(p["processor"])
47 {
48 if (p.contains("cfg"))
49 params = p["cfg"];
50 }
51
52 virtual nlohmann::json getCfg()
53 {
54 nlohmann::json cfg;
55 cfg["cfg"] = params;
56 cfg["name"] = name;
57 cfg["processor"] = processor;
58 return cfg;
59 }
60
61 virtual bool can_process() = 0;
62 virtual void process(float *progress = nullptr) = 0;
63 virtual void renderUI() = 0;
64
65 void renderParams()
66 {
67 if (ImGui::BeginTable("##pipelinesmainoptions", 2, ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders))
68 {
69 ImGui::TableSetupColumn("##pipelinesmaincolumn1", ImGuiTableColumnFlags_None);
70 ImGui::TableSetupColumn("##pipelinesmaincolumn2", ImGuiTableColumnFlags_None);
71
72 for (auto &p : params)
73 p.second.draw();
74
75 ImGui::EndTable();
76 }
77 }
78 };
79 } // namespace handlers
80} // namespace satdump
Dataset handler.
Definition dataset_handler.h:29
SatDump's handler base class.
Definition handler.h:32
Core SatDump product class.
Definition product.h:33