Studio/src/Visualization/Lightbox.h
Namespaces
Name |
---|
shapeworks |
Classes
Name | |
---|---|
class | shapeworks::Lightbox Display multiple Viewers in a tiled display. |
Source code
#pragma once
#include <Data/Preferences.h>
#include <Visualization/Viewer.h>
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkPoints.h>
#include <vtkPolyDataMapper.h>
#include <vtkSmartPointer.h>
#include <QSharedPointer>
#include <QTimer>
#include <QVector>
class vtkOrientationMarkerWidget;
namespace shapeworks {
class StudioMesh;
class Shape;
class StudioInteractorStyle;
class StudioSliceInteractorStyle;
class Visualizer;
class Lightbox;
typedef QSharedPointer<Lightbox> LightboxHandle;
class Lightbox : public QObject {
Q_OBJECT;
public:
Lightbox();
~Lightbox();
void set_shapes(QVector<QSharedPointer<Shape>> shapes);
QVector<ShapeHandle> get_shapes();
void set_interactor(vtkRenderWindowInteractor* interactor);
void set_render_window(vtkRenderWindow* render_window);
void set_tile_layout(int width, int height);
void setup_renderers();
int get_num_rows();
int get_num_rows_visible();
void set_start_row(int row);
ViewerList get_viewers();
void redraw();
void handle_pick(int* click_pos, bool one, bool ctrl);
void handle_hover(int* click_pos);
void handle_key(int* click_pos, std::string key);
void set_glyph_lut(vtkSmartPointer<vtkLookupTable> lut);
void set_session(QSharedPointer<Session> session);
void set_visualizer(Visualizer* visualizer);
bool render_window_ready() { return render_window_ != NULL; }
void clear_renderers();
std::array<double, 3> initPos();
void handle_new_mesh();
void reset_camera();
void reset_camera_clipping_range();
void set_orientation_marker(Preferences::OrientationMarkerType type, Preferences::OrientationMarkerCorner corner);
void set_orientation_marker_viewport();
void update_feature_range();
void update_interactor_style();
void set_shared_window_and_level(double window, double level);
vtkRenderWindow* get_render_window();
public Q_SLOTS:
void handle_timer_callback();
private:
vtkSmartPointer<vtkOrientationMarkerWidget> create_orientation_marker();
void check_for_first_draw();
void display_shapes();
void insert_shape_into_viewer(QSharedPointer<Shape> shape, int position);
int get_start_shape();
vtkSmartPointer<vtkRenderer> renderer_;
QVector<QSharedPointer<Shape>> shapes_;
// there is one viewer for every tile in the lightbox display
ViewerList viewers_;
vtkRenderWindow* render_window_ = nullptr;
vtkRenderWindowInteractor* interactor_ = nullptr;
vtkCamera* camera_ = nullptr;
int tile_layout_width_ = 4;
int tile_layout_height_ = 4;
int start_row_ = 0;
bool first_draw_ = true;
vtkSmartPointer<StudioInteractorStyle> style_;
vtkSmartPointer<StudioSliceInteractorStyle> slice_style_;
Visualizer* visualizer_{nullptr};
std::vector<vtkSmartPointer<vtkImageData>> spinner_images_;
QTimer loading_timer_;
int timer_callback_count_ = 0;
std::array<double, 3> initPos_;
vtkSmartPointer<vtkOrientationMarkerWidget> orientation_marker_widget_;
Preferences::OrientationMarkerType current_orientation_marker_type_ = Preferences::OrientationMarkerType::none;
Preferences::OrientationMarkerCorner current_orientation_marker_corner_ =
Preferences::OrientationMarkerCorner::upper_right;
QSharedPointer<Session> session_;
};
} // namespace shapeworks
Updated on 2022-07-23 at 16:40:07 -0600