]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/baseFilterManualPaint.h
#3166 creaMaracasVisu Feature New Normal - Manual Paint optimization
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / baseFilterManualPaint.h
index bdb76a4df51871292a97d724b5083440f48cbb68..21d38c5f503bcf70d035fc7aa0e407c2052da28c 100644 (file)
 #include "imageModificationManager.h"
 
 
+#define GETVALUE_MANUALPAINT(VALUE,POINTER,SCALARTYPE)                                                                                 \
+       if              (SCALARTYPE==VTK_DOUBLE)                { VALUE=(double)*((double*)POINTER);            }       \
+       else if (SCALARTYPE==VTK_FLOAT)                 { VALUE=(double)*((float*)POINTER);                     }       \
+       else if (SCALARTYPE==VTK_CHAR)                  { VALUE=(double)*((char*)POINTER);                      }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_CHAR) { VALUE=(double)*((unsigned char*)POINTER);     }       \
+       else if (SCALARTYPE==VTK_INT)                   { VALUE=(double)*((int*)POINTER);                       }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_INT)  { VALUE=(double)*((unsigned int*)POINTER);      }       \
+       else if (SCALARTYPE==VTK_LONG)                  { VALUE=(double)*((long*)POINTER);                      }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_LONG) { VALUE=(double)*((unsigned long*)POINTER);     }       \
+       else if (SCALARTYPE==VTK_SHORT)                 { VALUE=(double)*((short*)POINTER);                     }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_SHORT){ VALUE=(double)*((unsigned short*)POINTER);}   \
+       else { printf("EED GETVALUE_MANUALPAINT   error\n"); }
+
+#define GETVALUE2_MANUALPAINT(VALUE,POINTER,SCALARTYPE,INDEX)                                                                          \
+       if              (SCALARTYPE==VTK_DOUBLE)                { VALUE=(double)((double*)POINTER)[INDEX];                      }       \
+       else if (SCALARTYPE==VTK_FLOAT)                 { VALUE=(double)((float*)POINTER)[INDEX];                       }       \
+       else if (SCALARTYPE==VTK_CHAR)                  { VALUE=(double)((char*)POINTER)[INDEX];                        }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_CHAR) { VALUE=(double)((unsigned char*)POINTER)[INDEX];       }       \
+       else if (SCALARTYPE==VTK_INT)                   { VALUE=(double)((int*)POINTER)[INDEX];                         }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_INT)  { VALUE=(double)((unsigned int*)POINTER)[INDEX];        }       \
+       else if (SCALARTYPE==VTK_LONG)                  { VALUE=(double)((long*)POINTER)[INDEX];                        }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_LONG) { VALUE=(double)((unsigned long*)POINTER)[INDEX];       }       \
+       else if (SCALARTYPE==VTK_SHORT)                 { VALUE=(double)((short*)POINTER)[INDEX];                       }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_SHORT){ VALUE=(double)((unsigned short*)POINTER)[INDEX];      }       \
+       else { printf("EED GETVALUE2_MANUALPAINT   error\n"); }
+
+#define SETVALUE2_MANUALPAINT(VALUE,POINTER,SCALARTYPE,INDEX)                                                                                          \
+       if              (SCALARTYPE==VTK_DOUBLE)                { ((double*)POINTER)[INDEX]                     = (double)VALUE;                }       \
+       else if (SCALARTYPE==VTK_FLOAT)                 { ((float*)POINTER)[INDEX]                      = (float)VALUE;                 }       \
+       else if (SCALARTYPE==VTK_CHAR)                  { ((char*)POINTER)[INDEX]                       = (char)VALUE;                  }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_CHAR) { ((unsigned char*)POINTER)[INDEX]      = (unsigned char)VALUE; }       \
+       else if (SCALARTYPE==VTK_INT)                   { ((int*)POINTER)[INDEX]                        = (int)VALUE;                   }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_INT)  { ((unsigned int*)POINTER)[INDEX]       = (unsigned int)VALUE;  }       \
+       else if (SCALARTYPE==VTK_LONG)                  { ((long*)POINTER)[INDEX]                       = (long)VALUE;                  }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_LONG) { ((unsigned long*)POINTER)[INDEX]      = (unsigned long)VALUE; }       \
+       else if (SCALARTYPE==VTK_SHORT)                 { ((short*)POINTER)[INDEX]                      = (short)VALUE;                 }       \
+       else if (SCALARTYPE==VTK_UNSIGNED_SHORT){ ((unsigned short*)POINTER)[INDEX] = (unsigned short)VALUE;}   \
+       else { printf("EED SETVALUE2_MANUALPAINT   error\n"); }
+
+
+#define DEFINEPOINTERIMAGE_MANUALPAINT(VALUE,SCALARSIZE,POINTERIMAGE,SCALARTYPE,IMAGE)         \
+       double  VALUE                   = 0;                                                                                                                    \
+       int     SCALARSIZE              = IMAGE->GetScalarSize();                                                                               \
+       char    *POINTERIMAGE   = (char*)(IMAGE->GetScalarPointer());                                                   \
+       int             SCALARTYPE              = IMAGE->GetScalarType();                               
+
+
+
+
 class baseFilterManualPaint {
 
 public:
@@ -79,6 +128,9 @@ protected:
        int                     _maxY;
        int                     _minZ;
        int                     _maxZ;
+       long int                _OneColumn;
+       long int                _OneLine;
+       long int                _OnePlane;
        bool                    _2D3D;
        double                  _graylevel;
     int                        _RangeMin;