]> git.donarmstrong.com Git - mothur.git/blobdiff - collectorscurvedata.h
sffinfo bug with flow grams right index when clipQualRight=0
[mothur.git] / collectorscurvedata.h
index af81c39269b46aa69cf4083f22807e0815fdb449..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;
 
 /***********************************************************************/
 
@@ -40,24 +38,38 @@ private:
 class SharedCollectorsCurveData : public Observable {
        
 public:
-       SharedCollectorsCurveData() : shared1(0), shared2(0) {};
+       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(SharedRAbundVector* rv, SharedRAbundVector* rv2, int numSeqs, int numGroupComb)   {       shared1 = rv; shared2 = rv2; NumSeqs = numSeqs; NumGroupComb = numGroupComb; SharedDataChanged();       };
-
+       void SharedDataChanged()                                {       notifyDisplays();                               };
+       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++){
-                       (*pos)->update(shared1, shared2, NumSeqs, NumGroupComb);
+                       
+                       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);
+                               }
+                       }
                }       
        };
        
 private:
        set<Display*> displays;
-       SharedRAbundVector* shared1;
-       SharedRAbundVector* shared2;
+       vector<Display*> multiDisplays;
+       vector<SharedRAbundVector*> shared;
        int NumSeqs, NumGroupComb;
+       bool pairs;
 };
 
 /***********************************************************************/