]> git.donarmstrong.com Git - mothur.git/blobdiff - collectorscurvedata.h
changes while testing
[mothur.git] / collectorscurvedata.h
index 480bc362bcea7bf2c39a0f4edf75492b4a86b846..d32a9e06480c72e5a00e5eaac5a123f407d759c0 100644 (file)
@@ -1,13 +1,11 @@
 #ifndef COLLECTORSCURVEDATA_H
 #define COLLECTORSCURVEDATA_H
 
-#include "mothur.h"
 #include "sabundvector.hpp"
 #include "sharedrabundvector.h"
 #include "display.h"
 #include "observable.h"
 
-using namespace std;
 
 /***********************************************************************/
 
@@ -42,15 +40,26 @@ class SharedCollectorsCurveData : public Observable {
 public:
        SharedCollectorsCurveData() { }; //: shared1(0), shared2(0)
        
-       void registerDisplay(Display* o)                {       displays.insert(o);                             };
+       void registerDisplay(Display* o)                {       displays.insert(o);                     };
        void removeDisplay(Display* o)                  {       displays.erase(o);      delete o;       };
        void SharedDataChanged()                                {       notifyDisplays();                               };
-       void updateSharedData(vector<SharedRAbundVector*> s, int numSeqs, int numGroupComb)     {       shared = s; NumSeqs = numSeqs; NumGroupComb = numGroupComb; SharedDataChanged();        };
+       void updateSharedData(vector<SharedRAbundVector*> s, int numSeqs, int numGroupComb, bool p)     {       pairs = p; shared = s; NumSeqs = numSeqs; NumGroupComb = numGroupComb; SharedDataChanged();     };
        
        void notifyDisplays(){  
                for(set<Display*>::iterator pos=displays.begin();pos!=displays.end();pos++){
-                       if ( ((*pos)->isCalcMultiple() == true) || ( ((*pos)->isCalcMultiple() == false) && (shared.size() == 2) ) ) {
+                       
+                       if ((*pos)->calcNeedsAll() == true) {
                                (*pos)->update(shared, NumSeqs, NumGroupComb);
+                       }else{
+                               
+                               if ( ((*pos)->isCalcMultiple() == true) && ((*pos)->getAll() == true) && (!pairs) ) {
+                                       (*pos)->update(shared, NumSeqs, NumGroupComb);
+                               }else {
+                                       vector<SharedRAbundVector*> temp; temp.push_back(shared[0]); temp.push_back(shared[1]);
+                                       shared = temp; 
+                                       
+                                       (*pos)->update(shared, NumSeqs, NumGroupComb);
+                               }
                        }
                }       
        };
@@ -60,6 +69,7 @@ private:
        vector<Display*> multiDisplays;
        vector<SharedRAbundVector*> shared;
        int NumSeqs, NumGroupComb;
+       bool pairs;
 };
 
 /***********************************************************************/