77
77
#include <hackimageactor.h>
79
#define VTK_GINKGO_ZOOM_MIN 0.5f
79
#define VTK_GINKGO_ZOOM_MIN 0.25f
80
80
#define VTK_GINKGO_ZOOM_MAX 200
82
82
extern int vtkrint(double a);
1817
1821
e.RollOffset = eo.RollOffset;
1818
1822
e.FlipHorizontal = eo.FlipHorizontal;
1819
1823
e.FlipVertical = eo.FlipVertical;
1825
double focal[3], pos[3];
1826
w->GetRelativePositionOfCamera(focal, pos);
1827
this->SetRelativePositionOfCamera(focal,pos);
1999
2007
void vtkGinkgoImageViewer::SyncSetCameraFocalAndPosition(double* /*focal*/, double* /*pos*/)
2010
this->InvokeEvent (vtkGinkgoImageViewer::ViewImagePositionChangeEvent, NULL);
2013
void vtkGinkgoImageViewer::GetRelativePositionOfCamera(double focal[3], double pos[3])
2015
//relative position of camera
2016
Propiedades& pr = members->Propiedades;
2017
Pipeline& p = members->Pipeline;
2019
vtkCamera *camera = p.Renderer->GetActiveCamera();
2020
double focal_c[3], pos_c[3];
2021
camera->GetPosition(pos_c);
2022
camera->GetFocalPoint(focal_c);
2024
for (int i = 0; i < 3; i++) {
2025
focal[i] = pr.CameraFocalPoint[i] - focal_c[i];
2026
pos[i] = pr.CameraPosition[i] - pos_c[i];
2030
void vtkGinkgoImageViewer::SetRelativePositionOfCamera(const double focal[3], const double pos[3])
2032
Propiedades& pr = members->Propiedades;
2033
Pipeline& p = members->Pipeline;
2035
double focal_c[3], pos_c[3];
2036
for (int i = 0; i < 3; i++) {
2037
focal_c[i] = pr.CameraFocalPoint[i] - focal[i];
2038
pos_c[i] = pr.CameraPosition[i] - pos[i];
2041
vtkCamera *camera = p.Renderer->GetActiveCamera();
2042
camera->SetPosition(pos_c);
2043
camera->SetFocalPoint(focal_c);
2004
2046
void vtkGinkgoImageViewer::SetLookupTable(vtkSmartPointer<vtkScalarsToColors> lut, int idLookupTable)
2048
2090
Pipeline& p = members->Pipeline;
2049
2091
Estado& e = members->Estado;
2050
p.Renderer->ResetCamera();
2052
e.InitialParallelScale = p.Renderer->GetActiveCamera()->GetParallelScale();
2092
Propiedades& pr = members->Propiedades;
2095
p.Renderer->ComputeVisiblePropBounds(bounds);
2096
p.Renderer->ResetCamera(members->Pipeline.ImageActor->GetBounds());
2097
double w1 = bounds[1] - bounds[0];
2098
double w2 = bounds[3] - bounds[2];
2099
double w3 = bounds[5] - bounds[4];
2100
double radius = 0.5 * (std::max(w1, std::max(w2, w3)));
2101
vtkCamera *camera = p.Renderer->GetActiveCamera();
2103
camera->SetParallelScale(radius);
2105
double focal_c[3], pos_c[3];
2106
camera->GetPosition(pos_c);
2107
camera->GetFocalPoint(focal_c);
2108
//save initial focal point and position
2109
pr.CameraFocalPoint[0] = focal_c[0];
2110
pr.CameraFocalPoint[1] = focal_c[1];
2111
pr.CameraFocalPoint[2] = focal_c[2];
2113
pr.CameraPosition[0] = pos_c[0];
2114
pr.CameraPosition[1] = pos_c[1];
2115
pr.CameraPosition[2] = pos_c[2];
2117
e.InitialParallelScale = radius;
2053
2118
if (mantenerZoom) {
2054
2119
SetZoom(e.Zoom);
2125
void vtkGinkgoImageViewer::SetInitialParallelScale(double scale)
2127
Estado& e = members->Estado;
2128
e.InitialParallelScale = scale;
2061
2133
/** Set the actual zoom factor of the view. */
2062
2134
void vtkGinkgoImageViewer::SetZoom(double factor)