[dasher] OneDimensionalFilter: use input X coord, if non-zero, to reduce radius



commit c66716505c4c6054dab1498febcf26291c287965
Author: Alan Lawrence <acl33 inf phy cam ac uk>
Date:   Wed Nov 17 18:11:28 2010 +0000

    OneDimensionalFilter: use input X coord, if non-zero, to reduce radius

 Src/DasherCore/OneDimensionalFilter.cpp |   12 ++++++++++--
 Src/DasherCore/OneDimensionalFilter.h   |    5 +++++
 2 files changed, 15 insertions(+), 2 deletions(-)
---
diff --git a/Src/DasherCore/OneDimensionalFilter.cpp b/Src/DasherCore/OneDimensionalFilter.cpp
index 2f374fe..be80d6e 100644
--- a/Src/DasherCore/OneDimensionalFilter.cpp
+++ b/Src/DasherCore/OneDimensionalFilter.cpp
@@ -8,9 +8,14 @@ using namespace Dasher;
 }*/
 
 COneDimensionalFilter::COneDimensionalFilter(Dasher::CEventHandler * pEventHandler, CSettingsStore *pSettingsStore, CDasherInterfaceBase *pInterface, ModuleID_t iID, const char *szName)
-  : CDefaultFilter(pEventHandler, pSettingsStore, pInterface, iID, szName) {
+  : CDefaultFilter(pEventHandler, pSettingsStore, pInterface, iID, szName), forwardmax(GetLongParameter(LP_MAX_Y)/2.5) {
 }
 
+bool COneDimensionalFilter::Timer(int Time, CDasherView *pView, CDasherModel *pModel, Dasher::VECTOR_SYMBOL_PROB *pAdded, int *pNumDeleted, CExpansionPolicy **pol) {
+  myint iDasherMinX,iDasherMaxY,iDasherMinY;
+  pView->VisibleRegion(iDasherMinX, iDasherMinY, m_iDasherMaxX, iDasherMaxY);
+  return CDefaultFilter::Timer(Time,pView,pModel,pAdded,pNumDeleted,pol);
+}
 
 void COneDimensionalFilter::ApplyTransform(myint &iDasherX, myint &iDasherY) {
 
@@ -19,7 +24,7 @@ void COneDimensionalFilter::ApplyTransform(myint &iDasherX, myint &iDasherY) {
   // The distance between the Y coordinate and the centreline in pixels
   disty=(myint)GetLongParameter(LP_OY)-iDasherY;
   
-  circlesize=    (myint)GetLongParameter(LP_MAX_Y)/2.5;
+  circlesize=    forwardmax*(1.0-max(0.0,min(1.0,(double)iDasherX/m_iDasherMaxX)));
   yforwardrange= (myint)GetLongParameter(LP_MAX_Y)/3.2; // Was 1.6
   yfullrange=    yforwardrange*1.6;
   ybackrange=    yfullrange-yforwardrange;
@@ -67,3 +72,6 @@ void COneDimensionalFilter::ApplyTransform(myint &iDasherX, myint &iDasherY) {
   iDasherX = myint(x);
 }
 
+bool COneDimensionalFilter::GetSettings(SModuleSettings **pSettings, int *iCount) {
+  return false;
+}
\ No newline at end of file
diff --git a/Src/DasherCore/OneDimensionalFilter.h b/Src/DasherCore/OneDimensionalFilter.h
index 9422635..6d21e1c 100644
--- a/Src/DasherCore/OneDimensionalFilter.h
+++ b/Src/DasherCore/OneDimensionalFilter.h
@@ -10,8 +10,13 @@ class COneDimensionalFilter : public CDefaultFilter {
  public:
 //  COneDimensionalFilter(Dasher::CEventHandler * pEventHandler, CSettingsStore *pSettingsStore, CDasherInterfaceBase *pInterface, CDasherModel *m_pDasherModel);
   COneDimensionalFilter(Dasher::CEventHandler * pEventHandler, CSettingsStore *pSettingsStore, CDasherInterfaceBase *pInterface,  ModuleID_t iID = 4, const char *szName = _("One Dimensional Mode"));
+  bool Timer(int Time, CDasherView *m_pDasherView, CDasherModel *m_pDasherModel, Dasher::VECTOR_SYMBOL_PROB *pAdded, int *pNumDeleted, CExpansionPolicy **pol);
+  ///Override to remove DefaultFilters BP_REMAP_XTREME, BP_AUTOCALIBRATE, LP_OFFSET
+  bool GetSettings(SModuleSettings **pSettings, int *iCount);
  protected:
    virtual void ApplyTransform(myint &iDasherX, myint &iDasherY);
+   const myint forwardmax;
+   myint m_iDasherMaxX;
 };
 }
 /// @}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]