3
* $Id: herramientaelevacion.cpp 3526 2011-03-16 19:56:19Z carlos $
6
* Copyright 2008-10 MetaEmotion S.L. All rights reserved.
7
* http://ginkgo-cadx.com
9
* This file is licensed under LGPL v3 license.
10
* See License.txt for details
14
//#define _GINKGO_TRACE
15
#include <wx/aui/aui.h>
16
#include <wx/stattext.h>
17
#include <wx/slider.h>
19
#include <api/globals.h>
20
#include <api/iwidgetsmanager.h>
21
#include "herramientaelevacion.h"
22
#include <resources/ginkgoresourcemanager.h>
23
#include <api/inotificadoresherramientas.h>
24
#include <main/entorno.h>
25
#include <api/internacionalizacion.h>
30
#include <vtk/vtkginkgoimageviewer.h>
31
#include <vtkImageData.h>
32
#include <vtkPointData.h>
36
#define ELEVAR_VALORACION 1351
37
#define DISMINUIR_VALORACION 1352
42
class HerramientaOpcionesElevacionGUI : public AUI_NAMESPACE wxAuiToolBar {
44
HerramientaOpcionesElevacionGUI(wxWindow* pParent, GNC::HerramientaElevacion* pHerramienta): AUI_NAMESPACE wxAuiToolBar(pParent,wxID_ANY, wxDefaultPosition, wxDefaultSize)
46
m_pHerramienta = pHerramienta;
48
SetToolBitmapSize( wxSize( 16,16 ) );
49
AddTool( DISMINUIR_VALORACION, _("Decrease"), GinkgoResourcesManager::BarraElevacion::GetIcoDisminuirValoracion(), _("Decrease value"), wxITEM_CHECK);
50
AddTool( ELEVAR_VALORACION, _("Increase"), GinkgoResourcesManager::BarraElevacion::GetIcoAumentarValoracion(), _("Increase value"), wxITEM_CHECK );
51
ToggleTool(ELEVAR_VALORACION,true);
56
wxStaticText* m_staticText4 = new wxStaticText( this, wxID_ANY, _("Radious"), wxDefaultPosition, wxSize(-1,16), 0 );
57
AddControl(m_staticText4 );
58
m_pSliderRadio = new wxSlider( this, wxID_ANY, 15, 1, 100, wxDefaultPosition, wxSize(-1,16), wxSL_HORIZONTAL );
59
m_pSliderRadio->SetToolTip(_("Radious"));
60
AddControl(m_pSliderRadio);
63
m_pLabelFactor = new wxStaticText( this, wxID_ANY, _("Factor (0.50)"), wxDefaultPosition, wxSize(-1,16), 0 );
64
AddControl(m_pLabelFactor );
65
m_pSliderFactor = new wxSlider( this, wxID_ANY, 50,0, 100, wxDefaultPosition, wxSize(-1,16), wxSL_HORIZONTAL );
66
m_pSliderFactor->SetToolTip(_("Factor"));
67
AddControl(m_pSliderFactor);
73
this->Connect( ELEVAR_VALORACION, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( HerramientaOpcionesElevacionGUI::OnBElevarClick ) );
74
this->Connect( DISMINUIR_VALORACION, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( HerramientaOpcionesElevacionGUI::OnBDisminuirClick ) );
76
m_pSliderRadio->Connect( wxEVT_SCROLL_TOP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
77
m_pSliderRadio->Connect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
78
m_pSliderRadio->Connect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
79
m_pSliderRadio->Connect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
80
m_pSliderRadio->Connect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
81
m_pSliderRadio->Connect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
82
m_pSliderRadio->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
83
m_pSliderRadio->Connect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
84
m_pSliderRadio->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
86
m_pSliderFactor->Connect( wxEVT_SCROLL_TOP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
87
m_pSliderFactor->Connect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
88
m_pSliderFactor->Connect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
89
m_pSliderFactor->Connect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
90
m_pSliderFactor->Connect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
91
m_pSliderFactor->Connect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
92
m_pSliderFactor->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
93
m_pSliderFactor->Connect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
94
m_pSliderFactor->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
97
~HerramientaOpcionesElevacionGUI(){
99
this->Disconnect( ELEVAR_VALORACION, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( HerramientaOpcionesElevacionGUI::OnBElevarClick ) );
100
this->Disconnect( DISMINUIR_VALORACION, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( HerramientaOpcionesElevacionGUI::OnBDisminuirClick ) );
102
m_pSliderRadio->Disconnect( wxEVT_SCROLL_TOP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
103
m_pSliderRadio->Disconnect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
104
m_pSliderRadio->Disconnect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
105
m_pSliderRadio->Disconnect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
106
m_pSliderRadio->Disconnect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
107
m_pSliderRadio->Disconnect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
108
m_pSliderRadio->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
109
m_pSliderRadio->Disconnect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
110
m_pSliderRadio->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnRadioScroll ), NULL, this );
112
m_pSliderFactor->Disconnect( wxEVT_SCROLL_TOP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
113
m_pSliderFactor->Disconnect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
114
m_pSliderFactor->Disconnect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
115
m_pSliderFactor->Disconnect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
116
m_pSliderFactor->Disconnect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
117
m_pSliderFactor->Disconnect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
118
m_pSliderFactor->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
119
m_pSliderFactor->Disconnect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
120
m_pSliderFactor->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( HerramientaOpcionesElevacionGUI::OnFactorScroll ), NULL, this );
124
virtual void OnRadioScroll( wxScrollEvent& ){
125
m_pHerramienta->AjustarRadio((float)(m_pSliderRadio->GetValue()));
128
virtual void OnFactorScroll( wxScrollEvent& ){
129
m_pHerramienta->AjustarSensibilidad((float)(m_pSliderFactor->GetValue())/GetRango());
130
wxString str = wxString::Format(_("Factor (%.2f)"),(float)(m_pSliderFactor->GetValue())/GetRango());
131
m_pLabelFactor->SetLabel(str);
134
virtual void OnBElevarClick( wxCommandEvent& event ){
135
m_pHerramienta->SetTipoAccion(GNC::TAE_AUMENTAR);
136
ToggleTool(DISMINUIR_VALORACION,false);
137
ToggleTool(ELEVAR_VALORACION,true);
140
virtual void OnBDisminuirClick( wxCommandEvent& event ){
141
m_pHerramienta->SetTipoAccion(GNC::TAE_DISMINUIR);
142
ToggleTool(DISMINUIR_VALORACION,true);
143
ToggleTool(ELEVAR_VALORACION,false);
147
void SetNumeroValores(int numeroValores)
149
m_pSliderFactor->SetMax(numeroValores);
150
if(numeroValores ==2) {
151
m_pSliderFactor->SetValue(1);
152
m_pHerramienta->AjustarSensibilidad((float)(m_pSliderFactor->GetValue())/GetRango());
153
wxString str = wxString::Format(_("Factor (%.2f)"),(float)(m_pSliderFactor->GetValue())/GetRango());
154
m_pLabelFactor->SetLabel(str);
155
m_pSliderFactor->Show(false);
156
m_pLabelFactor->Show(false);
158
m_pSliderFactor->Show(true);
159
m_pLabelFactor->Show(true);
164
return m_pSliderFactor->GetMax() - m_pSliderFactor->GetMin();
167
wxStaticText* m_pLabelFactor;
168
wxSlider* m_pSliderRadio;
169
wxSlider* m_pSliderFactor;
170
GNC::HerramientaElevacion* m_pHerramienta;
176
//----------------------------------------------------------------------
178
GNC::HerramientaElevacion::HerramientaElevacion()
181
m_pElevacionBuilder = NULL;
183
// Representacion 0: Semilla sana
185
/* Configuracion del widget de semillas de elevacion. Atributos radiometricos de las semillas */
186
GNC::GCS::Widgets::Elevacion::RepresentacionElevacion* pRep = NULL;
189
m_TipoAccion=GNC::TAE_AUMENTAR;
191
// Representacion 0: Semilla poner mas afectado
192
pRep = new GNC::GCS::Widgets::Elevacion::RepresentacionElevacion();
193
pRep->colorCircunferencia.asignar(0.5f, 0.0f, 0.0f, 0.5f);
194
pRep->colorCircunferenciaIluminada.asignar(1.0f, 0.0f, 0.0f, 0.5f);
195
pRep->m_RadioCircunferencia=m_radio;
196
m_RepresentacionesElevacion.push_back(pRep);
198
// Representacion 0: Semilla poner mas sano
199
pRep = new GNC::GCS::Widgets::Elevacion::RepresentacionElevacion();
200
pRep->colorCircunferencia.asignar(0.0f, 0.5f, 0.0f, 0.5f);
201
pRep->colorCircunferenciaIluminada.asignar(0.0f, 1.0f, 0.0f, 0.5f);
202
pRep->m_RadioCircunferencia=m_radio;
203
m_RepresentacionesElevacion.push_back(pRep);
204
m_PuntosInsertados.clear();
206
m_Descripcion = _Std("Elevation");
208
m_Icono = GinkgoResourcesManager::IconosHerramientas::GetIcoElevacion();
211
GNC::HerramientaElevacion::~HerramientaElevacion()
213
for(GNC::GCS::Widgets::Elevacion::ListaRepresentaciones::iterator it = m_RepresentacionesElevacion.begin(); it != m_RepresentacionesElevacion.end(); it++) {
216
m_RepresentacionesElevacion.clear();
218
m_PuntosInsertados.clear();
221
//region "Realizaciļæ½n de la interfaz IHerramienta"
223
void GNC::HerramientaElevacion::CrearPaneles( wxPanel* panel )
225
m_pAbstractPanelHerramientaOpciones = new GNC::GUI::HerramientaOpcionesElevacionGUI(panel,this);
228
void GNC::HerramientaElevacion::ConectarContratoFalso(bool activar) {
229
if (TContratableWidgets::m_pListaActiva == NULL) {
230
//std::cerr << "Error: Se trato de activar el modo deshabilitado de una vista sin haber asignado la vista activa. Error en la logica de activacion. Accion ignorada" << std::endl;
234
for (TContratableWidgets::IteradorListaContratos it = TContratableWidgets::m_pListaActiva->begin(); it != TContratableWidgets::m_pListaActiva->end(); it++) {
235
TContratoWidgets* pC = (*it);
236
if (pC->Inicializado()) {
237
pC->GetManager()->EnableAnotacionDinamica(activar);
239
GTRACE( "HerramientaElevacion: Conectando contrato falso de vista " << TContratableWidgets::m_pVistaActiva );
240
pC->GetViewer()->SetInteractionStyle(vtkGinkgoImageViewer::ZOOM_INTERACTION);
241
pC->GetManager()->SetCursor(GNC::GCS::Widgets::CUR_FLECHA);
242
pC->GetManager()->Render();
245
GTRACE( "HerramientaElevacion: Desconectando contrato falso de vista " << TContratableWidgets::m_pVistaActiva );
246
pC->GetViewer()->SetInteractionStyle(vtkGinkgoImageViewer::ZOOM_INTERACTION);
247
pC->GetManager()->SetCursor(GNC::GCS::Widgets::CUR_FLECHA);
253
void GNC::HerramientaElevacion::SetVistaActiva(GNC::GCS::IVista* pVista) {
254
TContratableWidgets::EstablecerVistaActiva(pVista);
255
TContratableElevacion::EstablecerVistaActiva(pVista);
256
GTRACE("GNC::TContratableElevacion::EstablecerVistaActiva(pVista);::SetVistaActiva(" << pVista << ")");
259
/* FIXME: Aviso!!!! para que funcione deben contratarse contratos pareados obligatorios y en el mismo orden*/
260
void GNC::HerramientaElevacion::ConectarContratos(bool activar)
262
if (TContratableWidgets::m_pListaActiva == NULL || TContratableElevacion::m_pListaActiva == NULL) {
264
std::cerr << "Error: Se trataron de conectar contratos sin haber asignado la vista activa. Error en la logica de activacion. Accion ignorada" << std::endl;
266
if(m_pElevacionBuilder != NULL) {
267
delete m_pElevacionBuilder;
268
m_pElevacionBuilder = NULL;
274
if (TContratableWidgets::m_pListaActiva->size() != TContratableElevacion::m_pListaActiva->size()) {
275
std::cerr << "Error: La vista tiene un numero distinto de contratos IContratoWidget que IContratoElevacion y de IcontratoAnotador. Imposible conectar" << std::endl;
279
// Recorrido de los contratos pareados: Contrato de widgets y Contrato especĆfico de herramienta de semillas.
280
TContratableWidgets::IteradorListaContratos it1 = TContratableWidgets::m_pListaActiva->begin();
281
TContratableElevacion::IteradorListaContratos it2 = TContratableElevacion::m_pListaActiva->begin();
282
for ( ; it1 != TContratableWidgets::m_pListaActiva->end() && it2 != TContratableElevacion::m_pListaActiva->end(); it1++, it2++) {
283
TContratoWidgets* pCW = (*it1);
284
TContratoElevacion* pCE = (*it2);
285
if (pCW->Inicializado() && pCE->Inicializado()) {
286
pCW->GetManager()->EnableAnotacionDinamica(activar);
288
GTRACE("HerramientaElevacion: Conectando contratos de vista " << pCW->m_pVista);
289
// Usamos de Id de grupo el valor del puntero de la herramienta, que es unico y no cambia
290
m_pElevacionBuilder = new GNC::GCS::Widgets::WElevacionBuilder(pCW->GetManager(), &m_RepresentacionesElevacion, (unsigned long)this);
291
if(m_TipoAccion==GNC::TAE_DISMINUIR){
292
m_pElevacionBuilder->SetRepresentacionActiva(1);
294
m_pElevacionBuilder->SetRepresentacionActiva(0);
296
//conectamos los observadores
297
m_pElevacionBuilder->SetObservador(this);
298
pCW->GetViewer()->SetInteractionStyle(vtkGinkgoImageViewer::ZOOM_INTERACTION);
299
pCW->GetManager()->SetCursor(m_pElevacionBuilder->GetCursor());
300
pCW->GetManager()->Render();
301
if(pCE->m_modoMascara) {
302
((GNC::GUI::HerramientaOpcionesElevacionGUI*)m_pAbstractPanelHerramientaOpciones)->SetNumeroValores(2);
304
((GNC::GUI::HerramientaOpcionesElevacionGUI*)m_pAbstractPanelHerramientaOpciones)->SetNumeroValores((pCE->m_maximo-pCE->m_minimo)+1);
308
GTRACE( "HerramientaElevacion: Desconectando contratos de vista " << pCW->m_pVista );
309
if(m_pElevacionBuilder != NULL) {
310
delete m_pElevacionBuilder;
311
m_pElevacionBuilder = NULL;
313
//se borra la semilla
314
for(GNC::GCS::IWidgetsManager::IteradorListaWidgets it2 = pCW->GetManager()->GetListaWidgets().begin(); it2 != pCW->GetManager()->GetListaWidgets().end(); it2++){
315
if((*it2)->GetGID() == (long)this){
316
pCW->GetManager()->EliminarWidget(*it2,false);
320
pCW->GetViewer()->SetInteractionStyle(vtkGinkgoImageViewer::ZOOM_INTERACTION);
321
pCW->GetManager()->SetCursor(GNC::GCS::Widgets::CUR_FLECHA);
330
//region "Eventos refinados desde los paneles"
334
//region "metodos propios de la varita"
336
void GNC::HerramientaElevacion::OnPuntoInsertado(float x, float y) {
338
if (TContratableElevacion::m_pListaActiva == NULL) {
339
std::cerr << "Error: Se trataron de conectar contratos sin haber asignado la vista activa. Error en la logica de activacion. Accion ignorada" << std::endl;
343
m_PuntosInsertados.push_back(GNC::GCS::Vector(x,y));
346
void GNC::HerramientaElevacion::OnTerminarInsertar() {
348
if (TContratableElevacion::m_pListaActiva == NULL) {
349
std::cerr << "Error: Se trataron de conectar contratos sin haber asignado la vista activa. Error en la logica de activacion. Accion ignorada" << std::endl;
354
TContratableWidgets::IteradorListaContratos it1 = TContratableWidgets::m_pListaActiva->begin();
355
for (TContratableElevacion::IteradorListaContratos it = TContratableElevacion::m_pListaActiva->begin(); it != TContratableElevacion::m_pListaActiva->end()&&it1 != TContratableWidgets::m_pListaActiva->end(); it++,it1++) {
356
GNC::GCS::IContratoElevacion* pC = (*it);
357
//TContratoWidgets* pCW = (*it1);
358
if(pC!=NULL && pC->m_pMapaValoracion != NULL){
360
pC->m_pMapaValoracion->GetDimensions(dimensiones);
361
unsigned char* img = new unsigned char[dimensiones[0]*dimensiones[1]];
366
unsigned int off = 0;
367
unsigned int size = dimensiones[0]*dimensiones[1];
368
for(; off<size; ++off)
373
// TODO: Arreglar todo esto. PodrĆa ser elĆptico
374
//float radio = m_radio / std::max(vSpacing.x, vSpacing.y);
376
for (TipoIteradorPuntosInsertados it = m_PuntosInsertados.begin(); it!= m_PuntosInsertados.end(); ++it) {
377
GNC::GCS::Vector n = (*it);
378
float nNorma2Cuadrado = (m_radio * m_radio);
379
for (int y = (n.y - m_radio); y < (n.y + m_radio); ++y) {
380
iy = y; // Correccion de coordenadas ??????????????????
381
if (iy >= 0 && iy < (unsigned int)dimensiones[1]) {
382
for (int x = (n.x - m_radio); x < (n.x + m_radio); ++x) {
384
if (ix >= 0 && ix < (unsigned int)dimensiones[0]) {
385
off = iy * dimensiones[0] + ix;
386
d = n - (GNC::GCS::Vector(x, y));
388
if (d.Norma2Cuadrado() < nNorma2Cuadrado) {
400
if(pC->m_modoMascara) {
401
unsigned char maskSet = pC->m_mascaraSet;
402
unsigned char maskUnset = pC->m_mascaraUnSet;
403
unsigned char* data = (unsigned char*) pC->m_pMapaValoracion->GetScalarPointer();
405
if(m_TipoAccion==GNC::TAE_AUMENTAR){
406
for (off = 0; off < size; off++) {
407
if (img[off] == 255) {
408
data[off] |= maskSet;
412
for (off = 0; off < size; off++) {
413
if (img[off] == 255) {
414
data[off] &= maskUnset;
420
const int st = pC->m_pMapaValoracion->GetScalarType();
421
const double maximo = pC->m_maximo;
422
const double minimo = pC->m_minimo;
423
double factor = m_sensibilidad * (pC->m_maximo-pC->m_minimo+1);
428
double* data = (double*) pC->m_pMapaValoracion->GetScalarPointer();
429
for (off = 0; off < size; off++) {
430
if (img[off] == 255) {
431
if(m_TipoAccion==GNC::TAE_AUMENTAR){
432
valor = std::min( (data[off] + factor) ,maximo);
435
valor = std::max( (data[off]-factor) ,minimo);
444
float* data = (float*) pC->m_pMapaValoracion->GetScalarPointer();
445
for (off = 0; off < size; off++) {
446
if (img[off] == 255) {
447
if(m_TipoAccion==GNC::TAE_AUMENTAR){
448
valor = std::min( (double)(data[off] + factor) ,maximo);
451
valor = std::max( (double)(data[off]-factor) ,minimo);
453
data[off] = (float)valor;
458
case VTK_UNSIGNED_LONG:
460
unsigned long* data = (unsigned long*) pC->m_pMapaValoracion->GetScalarPointer();
461
for (off = 0; off < size; off++) {
462
if (img[off] == 255) {
463
if(m_TipoAccion==GNC::TAE_AUMENTAR){
464
valor = std::min( (double)(data[off] + factor) ,maximo);
467
valor = std::max( (double)(data[off]-factor) ,minimo);
469
data[off] = (unsigned long)valor;
476
long* data = (long*) pC->m_pMapaValoracion->GetScalarPointer();
477
for (off = 0; off < size; off++) {
478
if (img[off] == 255) {
479
if(m_TipoAccion==GNC::TAE_AUMENTAR){
480
valor = std::min( (double)(data[off] + factor) ,maximo);
483
valor = std::max( (double)(data[off]-factor) ,minimo);
485
data[off] = (long)valor;
490
case VTK_UNSIGNED_INT:
492
unsigned int* data = (unsigned int*) pC->m_pMapaValoracion->GetScalarPointer();
493
for (off = 0; off < size; off++) {
494
if (img[off] == 255) {
495
if(m_TipoAccion==GNC::TAE_AUMENTAR){
496
valor = std::min( (double)(data[off] + factor) ,maximo);
499
valor = std::max( (double)(data[off]-factor) ,minimo);
501
data[off] = (unsigned int)valor;
508
int* data = (int*) pC->m_pMapaValoracion->GetScalarPointer();
509
for (off = 0; off < size; off++) {
510
if (img[off] == 255) {
511
if(m_TipoAccion==GNC::TAE_AUMENTAR){
512
valor = std::min( (double)(data[off] + factor) ,maximo);
515
valor = std::max( (double)(data[off]-factor) ,minimo);
517
data[off] = (int)valor;
522
case VTK_UNSIGNED_SHORT:
524
unsigned short* data = (unsigned short*) pC->m_pMapaValoracion->GetScalarPointer();
525
for (off = 0; off < size; off++) {
526
if (img[off] == 255) {
527
if(m_TipoAccion==GNC::TAE_AUMENTAR){
528
valor = std::min( (double)(data[off] + factor) ,maximo);
531
valor = std::max( (double)(data[off]-factor) ,minimo);
533
data[off] = (unsigned short)valor;
540
short* data = (short*) pC->m_pMapaValoracion->GetScalarPointer();
541
for (off = 0; off < size; off++) {
542
if (img[off] == 255) {
543
if(m_TipoAccion==GNC::TAE_AUMENTAR){
544
valor = std::min( (double)(data[off] + factor) ,maximo);
547
valor = std::max( (double)(data[off]-factor) ,minimo);
549
data[off] = (short)valor;
554
case VTK_UNSIGNED_CHAR:
556
unsigned char* data = (unsigned char*) pC->m_pMapaValoracion->GetScalarPointer();
557
for (off = 0; off < size; off++) {
558
if (img[off] == 255) {
559
if(m_TipoAccion==GNC::TAE_AUMENTAR){
560
valor = std::min( (double)(data[off] + factor) ,maximo);
563
valor = std::max( (double)(data[off]-factor) ,minimo);
565
data[off] = (unsigned char)valor;
572
char* data = (char*) pC->m_pMapaValoracion->GetScalarPointer();
573
for (off = 0; off < size; off++) {
574
if (img[off] == 255) {
575
if(m_TipoAccion==GNC::TAE_AUMENTAR){
576
valor = std::min( (double)(data[off] + factor) ,maximo);
579
valor = std::max( (double)(data[off]-factor) ,minimo);
581
data[off] = (char)valor;
591
pC->m_pMapaValoracion->Modified();
592
pC->m_pNotificador->ActualizarVistaElevacion();
595
m_PuntosInsertados.clear();
598
void GNC::HerramientaElevacion::AjustarSensibilidad(float valorNormalizado) {
599
m_sensibilidad=valorNormalizado;
602
void GNC::HerramientaElevacion::AjustarRadio(float valor) {
603
for(GNC::GCS::Widgets::Elevacion::ListaRepresentaciones::iterator it = m_RepresentacionesElevacion.begin(); it != m_RepresentacionesElevacion.end(); it++) {
604
(*it)->m_RadioCircunferencia=valor;
609
for ( TContratableWidgets::IteradorListaContratos it1 = TContratableWidgets::m_pListaActiva->begin(); it1 != TContratableWidgets::m_pListaActiva->end() ; it1++) {
610
TContratoWidgets* pCW = (*it1);
611
pCW->GetManager()->Modificado();
615
void GNC::HerramientaElevacion::SetTipoAccion(GNC::TipoAccionElevacion tipoAccion){
616
m_TipoAccion=tipoAccion;
617
if(m_pElevacionBuilder!=NULL){
618
if(m_TipoAccion==GNC::TAE_DISMINUIR){
619
m_pElevacionBuilder->SetRepresentacionActiva(1);
621
m_pElevacionBuilder->SetRepresentacionActiva(0);
623
for ( TContratableWidgets::IteradorListaContratos it1 = TContratableWidgets::m_pListaActiva->begin(); it1 != TContratableWidgets::m_pListaActiva->end() ; it1++) {
624
TContratoWidgets* pCW = (*it1);
625
pCW->GetManager()->Modificado();