SatDump 2.0.0-alpha-76a915210
Loading...
Searching...
No Matches
image_handler.h
Go to the documentation of this file.
1#pragma once
2
6
7#include "../handler.h"
9
10#include "common/widgets/image_view.h"
11#include "image/hue_saturation_json.h"
12#include "image/meta.h"
13
14#include "nlohmann/json.hpp"
16
17namespace satdump
18{
19 namespace handlers
20 {
32 class ImageHandler : public Handler, public ProcessingHandler
33 {
34 public:
39
45
51 ImageHandler(image::Image img, std::string name);
52
54
55 private:
56 std::string image_name = "Unknown Image";
57
58 bool imgview_needs_update = false;
59 bool has_second_image = false;
60 image::Image image, curr_image;
61 ImageViewWidget image_view;
62
63 public:
69 void setImage(image::Image &img);
70
77 image::Image &getImage(bool current = true)
78 {
79 if (current)
80 return has_second_image ? curr_image : image;
81 else
82 return image;
83 }
84
89 void setName(std::string name) { image_name = name; }
90
91 private:
92 // All params
93 bool huesaturation_img = false;
94 image::HueSaturation huesaturation_cfg_img;
95 bool equalize_img = false;
96 bool equalize_perchannel_img = false;
97 bool white_balance_img = false;
98 bool normalize_img = false;
99 bool invert_img = false;
100 bool median_blur_img = false;
101 bool despeckle_img = false;
102 bool rotate180_image = false;
103 bool geocorrect_image = false;
104 bool brightness_contrast_image = false;
105 float brightness_contrast_brightness_image = 0.0;
106 float brightness_contrast_contrast_image = 0.0;
107 bool remove_background_img = false;
108
109 // Proj/Calib TODOREWORK
110 bool image_calib_valid = false;
111 image::ImgCalibHandler image_calib;
112 bool image_proj_valid = false;
113 projection::Projection image_proj;
114 std::vector<float> correct_fwd_lut; // TODOREWORK handle this better?
115 std::vector<float> correct_rev_lut;
116
117 // TODOREWORK File save
118 bool file_save_thread_running = false;
119 std::thread file_save_thread;
120
121 // Proc function
122 void do_process();
123
124 public:
125 // Mouse callback to be added by other handlers if needed
126 std::function<void(int x, int y)> additionalMouseCallback = [](int, int) {};
127 // TODOREWORK
128 bool wasMenuTriggered = false;
129
130 public:
135 std::string getSaneName();
136
137 // TODOREWORK document?
138 void saveResult(std::string directory);
139
143 void drawSaveMenu();
144
145 // The Rest
146 void drawMenu();
147 void drawContents(ImVec2 win_size);
148 void drawMenuBar();
149
150 void setConfig(nlohmann::json p);
151 nlohmann::json getConfig();
152
153 // TODOREWORK DOCUMENT (must be copy-pasted from "All Params")
155 {
156 huesaturation_img = false;
157 equalize_img = false;
158 equalize_perchannel_img = false;
159 white_balance_img = false;
160 normalize_img = false;
161 invert_img = false;
162 median_blur_img = false;
163 despeckle_img = false;
164 rotate180_image = false;
165 geocorrect_image = false;
166 brightness_contrast_image = false;
167 brightness_contrast_brightness_image = 0.0;
168 brightness_contrast_contrast_image = 0.0;
169 remove_background_img = false;
170 }
171
172 std::string getName() { return image_name; }
173
174 std::string getID() { return "image_handler"; }
175 };
176 } // namespace handlers
177} // namespace satdump
SatDump's handler base class.
Definition handler.h:32
void drawMenuBar()
Render explorer menu bar (in the left sidebar)
Definition image_handler.cpp:209
std::string getSaneName()
Return a sane image name for saving.
Definition image_handler.cpp:338
std::string getName()
Get this handler's readable name.
Definition image_handler.h:172
void drawMenu()
Render explorer menu left sidebar.
Definition image_handler.cpp:92
void setImage(image::Image &img)
set current image (raw). Does NOT reset settings
Definition image_handler.cpp:331
void resetConfig()
Optional, allows resetting the handler's configuration.
Definition image_handler.h:154
void setName(std::string name)
Set the image name.
Definition image_handler.h:89
void drawContents(ImVec2 win_size)
Render explorer contents (center/left)
Definition image_handler.cpp:216
nlohmann::json getConfig()
Optional, allows getting a configuration/state as JSON.
Definition image_handler.cpp:310
image::Image & getImage(bool current=true)
Get current image. Either processed or raw.
Definition image_handler.h:77
void drawSaveMenu()
Draws the same image Menu Item.
Definition image_handler.cpp:171
void setConfig(nlohmann::json p)
Optional, allows setting a configuration/state from JSON.
Definition image_handler.cpp:290
ImageHandler()
Constructor.
Definition image_handler.cpp:40
virtual void do_process()=0
Actual processing function to be implemented by the child class.
Definition image.h:17
Extremely generic class to handle projections.
Definition projection.h:34
Image Metadata manipulation.
Hue/Saturation settings. Each array should be access using HueRange enum values.
Definition hue_saturation.h:31
Image Calibration Handler. This handles converting between raw pixel values and calibrated/physical u...
Definition meta.h:74