]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ThresholdImageView.cxx
f20eefcf92e9d57318477c5711e7cd62ecd63d35
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / ThresholdImageView / ThresholdImageView.cxx
1 /*# ---------------------------------------------------------------------
2 #
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
4 #                        pour la Sant�)
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
8 #
9 #  This software is governed by the CeCILL-B license under French law and
10 #  abiding by the rules of distribution of free software. You can  use,
11 #  modify and/ or redistribute the software under the terms of the CeCILL-B
12 #  license as circulated by CEA, CNRS and INRIA at the following URL
13 #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 #  or in the file LICENSE.txt.
15 #
16 #  As a counterpart to the access to the source code and  rights to copy,
17 #  modify and redistribute granted by the license, users are provided only
18 #  with a limited warranty  and the software's author,  the holder of the
19 #  economic rights,  and the successive licensors  have only  limited
20 #  liability.
21 #
22 #  The fact that you are presently reading this means that you have had
23 #  knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
25
26
27 /**
28  *  \file 
29  *  \brief Class bbtk::ThresholdImageView . 
30  */
31
32 #include "ThresholdImageView.h"
33 #include <vtkImageReslice.h>
34 #include <vtkLookupTable.h>
35 #include <vtkImageData.h>
36
37
38   //=========================================================================
39   //=========================================================================
40   //=========================================================================
41   //=========================================================================
42         ThresholdImageView::ThresholdImageView( )
43   {
44           _minValue                                     =       0;
45           _maxValue                                     =       1000;
46           _baseColorR                           =       1;
47           _baseColorG                           =       0;
48           _baseColorB                           =       0;
49   }
50
51   //=========================================================================
52   ThresholdImageView::~ThresholdImageView()
53   {
54   }
55   //=========================================================================
56
57
58
59 //----------------------------------------------------------------------------
60 void ThresholdImageView::SetminMaxValue(int min, int max)
61 {
62         _minValue = min;
63         _maxValue = max;
64 }
65
66
67 //----------------------------------------------------------------------------
68 void ThresholdImageView::ConfigLookupTable()  // virtual
69 {
70         double range[2];
71         
72         GetImage()->GetScalarRange(range);
73         if (range[1]==0)
74         {
75                 range[1]=255;
76         }
77         
78         int minTot = floor (range[0]);
79         int maxTot = ceil (range[1]);
80         
81         int minVal = floor (_minValue);
82         int maxVal = floor (_maxValue);
83
84         vtkLookupTable* thresholdTable = GetThresholdTable();
85         thresholdTable->SetNumberOfTableValues(maxTot+1);
86         thresholdTable->SetTableRange(range); 
87         thresholdTable->SetAlphaRange(0, 1);
88         thresholdTable->SetValueRange(0, 1);
89         thresholdTable->SetSaturationRange(0, 0); 
90         thresholdTable->SetRampToLinear( );
91
92         //Assign a fake color for the upper image, and set the white as transparent
93         int i;
94         for(i = minTot; i <= maxTot; i++)
95         {
96                 if( i >= minVal && i <= maxVal )
97                 {
98                         thresholdTable->SetTableValue(i,_baseColorR,_baseColorG,_baseColorB, 1);
99                 }
100                 else if( i >= minTot && i < minVal )
101                 {
102                         thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent
103                 }
104                 else if( i > maxVal && i < maxTot )
105                 {
106                         thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent
107                 }
108                 else
109                 {
110                         thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent
111                 }
112         } // for
113         thresholdTable->Build( );
114
115 }
116
117
118 //----------------------------------------------------------------------------
119 void ThresholdImageView::SetBaseColor(double r, double g, double b)
120 {
121         _baseColorR = r;
122         _baseColorG = g;
123         _baseColorB = b;
124 }
125
126
127 // EOF
128