1 #pragma once 2 3 #include <QtCore/QObject> 4 5 #include <physics/physics.h> 6 #include <mission/missiongrid.h> 7 #include <osapi/osapi.h> 8 #include <globalincs/pstypes.h> 9 #include <globalincs/globals.h> 10 11 #include <array> 12 13 class object; 14 class ship_subsys; 15 16 ///! \fixme This does NOT belong here. Used for porting and testing purposes ONLY! 17 struct subsys_to_render { 18 bool do_render; 19 object* ship_obj; 20 ship_subsys* cur_subsys; 21 }; 22 23 ///! \fixme does NOT belong here. 24 struct Marking_box { 25 int x1 = 0; 26 int y1 = 0; 27 int x2 = 0; 28 int y2 = 0; 29 }; 30 31 namespace fso { 32 namespace fred { 33 34 const float LOLLIPOP_SIZE = 2.5f; 35 36 enum class CursorMode { 37 Selecting, Moving, Rotating 38 }; 39 40 class Editor; 41 class EditorViewport; 42 struct ViewSettings; 43 44 class FredRenderer: public QObject { 45 Q_OBJECT 46 47 SCP_vector<int> rendering_order; 48 int Fred_outline = 0; 49 50 EditorViewport* _viewport = nullptr; 51 os::Viewport* _targetView = nullptr; 52 53 FredRenderer(const FredRenderer& other) = delete; 54 FredRenderer& operator=(const FredRenderer& other) = delete; 55 56 ViewSettings& view(); 57 58 public: 59 explicit FredRenderer(os::Viewport* targetView); 60 ~FredRenderer() override; 61 62 void setViewport(EditorViewport* viewport); 63 64 void resize(int width, int height); 65 66 void render_grid(grid* gridp); 67 void hilight_bitmap(); 68 void display_distances(); 69 void display_ship_info(int cur_object_index); 70 void cancel_display_active_ship_subsystem(subsys_to_render& Render_subsys); 71 void display_active_ship_subsystem(subsys_to_render& Render_subsys, int cur_object_index); 72 73 void render_model_x_htl(vec3d* pos, grid* gridp, int col_scheme = 0); 74 void render_compass(); 75 void draw_orient_sphere2(int col, object* obj, int r, int g, int b); 76 void draw_orient_sphere(object* obj, int r, int g, int b); 77 void render_model_x(vec3d* pos, grid* gridp, int col_scheme = 0); 78 void render_one_model_htl(object* objp, int cur_object_index, bool Bg_bitmap_dialog); 79 void render_models(int cur_object_index, bool Bg_bitmap_dialog); 80 void render_frame(int cur_object_index, 81 subsys_to_render& Render_subsys, 82 bool box_marking, 83 const Marking_box& marking_box, 84 bool Bg_bitmap_dialog); 85 86 signals: 87 void scheduleUpdate(); 88 }; 89 } 90 } 91