18 #ifndef __otbChangeScaleActionHandler_h
19 #define __otbChangeScaleActionHandler_h
38 template <
class TModel,
class TView,
class TViewToUpdate=TView>
76 if (widgetId ==
m_View->GetZoomWidget()->GetIdentifier()
77 &&
event == FL_MOUSEWHEEL)
80 <<
"ChangeScaleActionHandler::HandleWidgetEvent(): handling (" << widgetId <<
", " << event <<
")");
82 int dy = Fl::event_dy();
85 double newScale =
m_View->GetZoomWidget()->GetIsotropicZoom() * vcl_pow(
m_ScaleRatio, -dy);
91 double sizex =
m_View->GetZoomWidget()->w() / newScale;
92 double sizey =
m_View->GetZoomWidget()->h() / newScale;
94 if (sizex > 1. && sizey >1.)
96 m_View->GetZoomWidget()->SetIsotropicZoom(newScale);
106 typename RegionType::IndexType index = region.GetIndex();
107 typename RegionType::SizeType size = region.GetSize();
108 index[0] += size[0] / 2;
109 index[1] += size[1] / 2;
110 size[0] =
static_cast<unsigned int>(
m_View->GetZoomWidget()->w() /
m_View->GetZoomWidget()->GetIsotropicZoom());
111 size[1] =
static_cast<unsigned int>(
m_View->GetZoomWidget()->h() /
m_View->GetZoomWidget()->GetIsotropicZoom());
112 region.SetSize(size);
113 m_Model->SetScaledExtractRegion(region);
114 m_Model->SetScaledExtractRegionCenter(index);
137 itkSetMacro(ScaleRatio,
double);
138 itkGetMacro(ScaleRatio,
double);