]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/imageUndoRedo/imageModificationManager.cxx
DFCH: ManualPaint + ImageUndoRedo. undo 90% (with memory management but it doesn...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / imageUndoRedo / imageModificationManager.cxx
index bdbed3737e5d79dd2714fb5421a5a41284d73cbd..4857a7d1e7f3960e2a0d9626f3f495202cb96e01 100644 (file)
@@ -11,7 +11,6 @@ ImageMManager::ImageMManager() {
 
 }
 ImageMManager::ImageMManager(ImageMManager* manager) {
-       this->m_PixelMap = manager->GetModificationMap();
        this->m_RegionStruct = manager->GetModifiedRegion();
 }
 ImageMManager::~ImageMManager() {
@@ -28,40 +27,46 @@ void ImageMManager::CleanModifiedRegion() {
        this->m_RegionStruct.maxY = min;
        this->m_RegionStruct.minZ = max;
        this->m_RegionStruct.maxZ = min;
-       this->m_PixelMap.clear();
+       this->m_ValidRegion = false;
 
 } //DFCH
 void ImageMManager::CalculateMinMaxRegion(const int& i, const int& j,
                const int& k) {
-       if (i <= this->m_RegionStruct.minX) {
-               this->m_RegionStruct.minX = i;
+       if (i >= 0 && j >= 0 && k >= 0) {
+               if (i <= this->m_RegionStruct.minX) {
+                       this->m_RegionStruct.minX = i;
+               } //fi
+               if (i > this->m_RegionStruct.maxX) {
+                       this->m_RegionStruct.maxX = i;
+               } //esle
+               if (j <= this->m_RegionStruct.minY) {
+                       this->m_RegionStruct.minY = j;
+               } //fi
+               if (j > this->m_RegionStruct.maxY) {
+                       this->m_RegionStruct.maxY = j;
+               } //esle
+               if (k <= this->m_RegionStruct.minZ) {
+                       this->m_RegionStruct.minZ = k;
+               } //fi
+               if (k > this->m_RegionStruct.maxZ) {
+                       this->m_RegionStruct.maxZ = k;
+               } //esle
+               this->m_ValidRegion = true;
        } //fi
-       if (i > this->m_RegionStruct.maxX) {
-               this->m_RegionStruct.maxX = i;
-       } //esle
-       if (j <= this->m_RegionStruct.minY) {
-               this->m_RegionStruct.minY = j;
-       } //fi
-       if (j > this->m_RegionStruct.maxY) {
-               this->m_RegionStruct.maxY = j;
-       } //esle
-       if (k <= this->m_RegionStruct.minZ) {
-               this->m_RegionStruct.minZ = k;
-       } //fi
-       if (k > this->m_RegionStruct.maxZ) {
-               this->m_RegionStruct.maxZ = k;
+       else {
+               this->m_ValidRegion = false;
        } //esle
 } //DFCH
 
 void ImageMManager::AddModifiedPixel(const int& i, const int& j, const int& k) {
-       this->m_PixelMap[i][j][k] = true;
+       //this->m_PixelMap[i][j][k] = true;
        this->CalculateMinMaxRegion(i, j, k);
 } //DFCH
 
-RegionStructUR ImageMManager::GetModifiedRegion() {
-       return (this->m_RegionStruct);
+bool ImageMManager::ValidateRegion() {
+       return (m_ValidRegion);
 }
 
-ImageMManager::PixelModMap ImageMManager::GetModificationMap() {
-       return (this->m_PixelMap);
+RegionStructUR ImageMManager::GetModifiedRegion() {
+       return (this->m_RegionStruct);
 }