[dasher] Change box non-uniformity range from -400:400 to -80:80 - at least one



commit c53a6736ec593ca241e1b0899af9054bf5a552d4
Author: Patrick Welche <prlw1 cam ac uk>
Date:   Thu May 7 11:35:17 2009 +0100

    Change box non-uniformity range from -400:400 to -80:80 - at least one
    can set the non-uniformity back to zero now with sensible increments.
    Reported by David MacKay. (Also some whitespace changes)
---
 ChangeLog                        |    5 +
 Src/DasherCore/DasherButtons.cpp |  194 +++++++++++++++++++-------------------
 2 files changed, 102 insertions(+), 97 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index edc7f5d..294071f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-05-06  Patrick Welche  <prlw1 cam ac uk>
+
+	* DasherButtons.cpp: Change box non-uniformity range to something more
+	sensible. Reported by David MacKay. (Also some whitespace changes)
+
 2009-05-05  Patrick Welche  <prlw1 cam ac uk>
 
 	* dasher_main.cpp: Don't accept a uri from GtkFileChooser as
diff --git a/Src/DasherCore/DasherButtons.cpp b/Src/DasherCore/DasherButtons.cpp
index 0851f51..f55eafb 100644
--- a/Src/DasherCore/DasherButtons.cpp
+++ b/Src/DasherCore/DasherButtons.cpp
@@ -28,7 +28,7 @@ static SModuleSettings sSettings[] = {
   {LP_B, T_LONG, 2, 10, 1, 1, _("Number of boxes")},
   {LP_S, T_LONG, 0, 256, 1, 1, _("Safety margin")},
   /* TRANSLATORS: The boxes (zoom targets) in button mode can either be the same size, or different sizes - this is the extent to which the sizes are allowed to differ from each other. */
-  {LP_R, T_LONG, -400, 400, 1, 10, _("Box non-uniformity")},
+  {LP_R, T_LONG, -80, 80, 1, 10, _("Box non-uniformity")},
   /* TRANSLATORS: Intercept keyboard events for 'special' keys even when the Dasher window doesn't have keyboard focus.*/
   {BP_GLOBAL_KEYBOARD, T_BOOL, -1, -1, -1, -1, _("Global keyboard grab")}
 };
@@ -159,93 +159,93 @@ void CDasherButtons::SetupBoxes()
 
       double dMaxSize;
       if(dRatio == 1.0)
-	dMaxSize = iDasherY / static_cast<double>(iForwardBoxes);
+        dMaxSize = iDasherY / static_cast<double>(iForwardBoxes);
       else
-	dMaxSize = ((dRatio - 1)/(pow(dRatio, iForwardBoxes) - 1)) * iDasherY; 
+        dMaxSize = ((dRatio - 1)/(pow(dRatio, iForwardBoxes) - 1)) * iDasherY; 
       
       double dMin(0.0);
       double dMax;
       
       for(int i(0); i < m_iNumBoxes - 1; ++i) { // One button reserved for backoff
-	dMax = dMin + dMaxSize * pow(dRatio, i);
+        dMax = dMin + dMaxSize * pow(dRatio, i);
 
 //       m_pBoxes[i].iDisplayTop = (i * iDasherY) / (m_iNumBoxes - 1);
 //       m_pBoxes[i].iDisplayBottom = ((i+1) * iDasherY) / (m_iNumBoxes - 1);
-	
-	m_pBoxes[i].iDisplayTop = static_cast<int>(dMin);
-	m_pBoxes[i].iDisplayBottom = static_cast<int>(dMax);
-	
-	m_pBoxes[i].iTop = m_pBoxes[i].iDisplayTop - GetLongParameter(LP_S);
-	m_pBoxes[i].iBottom = m_pBoxes[i].iDisplayBottom + GetLongParameter(LP_S);
-	
-	dMin = dMax;
+
+        m_pBoxes[i].iDisplayTop = static_cast<int>(dMin);
+        m_pBoxes[i].iDisplayBottom = static_cast<int>(dMax);
+
+        m_pBoxes[i].iTop = m_pBoxes[i].iDisplayTop - GetLongParameter(LP_S);
+        m_pBoxes[i].iBottom = m_pBoxes[i].iDisplayBottom + GetLongParameter(LP_S);
+
+        dMin = dMax;
       }
 
     }
     else {      
       if(m_iNumBoxes == 2+1) { // Special case for two forwards buttons
-	dNorm = 1+dRatio;
+        dNorm = 1+dRatio;
 
-	m_pBoxes[0].iDisplayTop = 0;
-	m_pBoxes[0].iDisplayBottom = int( (1 / dNorm) * iDasherY );
-	
-	m_pBoxes[1].iDisplayTop = int( (1 / dNorm) * iDasherY );
-	m_pBoxes[1].iDisplayBottom = iDasherY;
+        m_pBoxes[0].iDisplayTop = 0;
+        m_pBoxes[0].iDisplayBottom = int( (1 / dNorm) * iDasherY );
+
+        m_pBoxes[1].iDisplayTop = int( (1 / dNorm) * iDasherY );
+        m_pBoxes[1].iDisplayBottom = iDasherY;
       }
       else {
-	int iForwardsButtons(m_iNumBoxes - 1);
-	bool bEven(iForwardsButtons % 2 == 0);
-
-	int iGeometricTerms;
-
-	if(bEven)
-	  iGeometricTerms = iForwardsButtons / 2;
-	else
-	  iGeometricTerms = (1+iForwardsButtons) / 2;
-
-	double dMaxSize;
-
-	if(dRatio == 1.0) {
-	  dMaxSize = iDasherY / iForwardsButtons;
-	}
-	else {
-	  if(bEven)
-	    dMaxSize = iDasherY * (dRatio - 1) / (2 * (pow(dRatio, iGeometricTerms) - 1));
-	  else
-	    dMaxSize = iDasherY * (dRatio - 1) / (2 * (pow(dRatio, iGeometricTerms) - 1) - (dRatio - 1));
-	}
-
-	double dMin;
-	double dMax;
-	
-	if(bEven)
-	  dMin = iDasherY / 2;
-	else
-	  dMin = (iDasherY - dMaxSize)/2;
-
-	int iUpBase;
-	int iDownBase;
-
-	if(bEven) {
-	  iUpBase = iForwardsButtons / 2;
-	  iDownBase = iUpBase - 1;
-	}
-	else {
-	  iUpBase = (iForwardsButtons - 1)/ 2;
-	  iDownBase = iUpBase;
-	}
-	
-	for(int i(0); i < iGeometricTerms; ++i) { // One button reserved for backoff
-	  dMax = dMin + dMaxSize * pow(dRatio, i);
-	  
-	  m_pBoxes[iUpBase + i].iDisplayTop = int(dMin);
-	  m_pBoxes[iUpBase + i].iDisplayBottom = int(dMax);
-
-	  m_pBoxes[iDownBase - i].iDisplayTop = int(iDasherY - dMax);
-	  m_pBoxes[iDownBase - i].iDisplayBottom = int(iDasherY - dMin);
-
-	  dMin = dMax;
-	}
+        int iForwardsButtons(m_iNumBoxes - 1);
+        bool bEven(iForwardsButtons % 2 == 0);
+
+        int iGeometricTerms;
+
+        if(bEven)
+          iGeometricTerms = iForwardsButtons / 2;
+        else
+          iGeometricTerms = (1+iForwardsButtons) / 2;
+
+        double dMaxSize;
+
+        if(dRatio == 1.0) {
+          dMaxSize = iDasherY / iForwardsButtons;
+        }
+        else {
+          if(bEven)
+            dMaxSize = iDasherY * (dRatio - 1) / (2 * (pow(dRatio, iGeometricTerms) - 1));
+          else
+            dMaxSize = iDasherY * (dRatio - 1) / (2 * (pow(dRatio, iGeometricTerms) - 1) - (dRatio - 1));
+        }
+
+        double dMin;
+        double dMax;
+
+        if(bEven)
+          dMin = iDasherY / 2;
+        else
+          dMin = (iDasherY - dMaxSize)/2;
+
+        int iUpBase;
+        int iDownBase;
+
+        if(bEven) {
+          iUpBase = iForwardsButtons / 2;
+          iDownBase = iUpBase - 1;
+        }
+        else {
+          iUpBase = (iForwardsButtons - 1)/ 2;
+          iDownBase = iUpBase;
+        }
+
+        for(int i(0); i < iGeometricTerms; ++i) { // One button reserved for backoff
+          dMax = dMin + dMaxSize * pow(dRatio, i);
+
+          m_pBoxes[iUpBase + i].iDisplayTop = int(dMin);
+          m_pBoxes[iUpBase + i].iDisplayBottom = int(dMax);
+
+          m_pBoxes[iDownBase - i].iDisplayTop = int(iDasherY - dMax);
+          m_pBoxes[iDownBase - i].iDisplayBottom = int(iDasherY - dMin);
+
+          dMin = dMax;
+        }
       }
     }
 
@@ -290,9 +290,9 @@ bool CDasherButtons::DecorateView(CDasherView *pView) {
       pView->Dasher2Screen(iDasherX, iDasherY, p[1].x, p[1].y);
 
       if(bFirst)
-	pScreen->Polyline(p, 2, 1, 1);
+        pScreen->Polyline(p, 2, 1, 1);
       else
-	pScreen->Polyline(p, 2, 1, 2);
+        pScreen->Polyline(p, 2, 1, 2);
 
       iDasherX = -100;
       iDasherY = 4096 - iPos;
@@ -305,9 +305,9 @@ bool CDasherButtons::DecorateView(CDasherView *pView) {
       pView->Dasher2Screen(iDasherX, iDasherY, p[1].x, p[1].y);
 
       if(bFirst)
-	pScreen->Polyline(p, 2, 1, 1);
+        pScreen->Polyline(p, 2, 1, 1);
       else
-	pScreen->Polyline(p, 2, 1, 2);
+        pScreen->Polyline(p, 2, 1, 2);
 
       iPos -= iTargetWidth;
       bFirst = false;
@@ -328,7 +328,7 @@ bool CDasherButtons::DecorateView(CDasherView *pView) {
   else {
     for(int i(0); i < m_iNumBoxes; ++i) {
       if(i != iActiveBox)
-	NewDrawGoTo(pView, m_pBoxes[i].iDisplayTop, m_pBoxes[i].iDisplayBottom, false);
+        NewDrawGoTo(pView, m_pBoxes[i].iDisplayTop, m_pBoxes[i].iDisplayBottom, false);
     }
     NewDrawGoTo(pView, m_pBoxes[iActiveBox].iDisplayTop, m_pBoxes[iActiveBox].iDisplayBottom, m_bMenu || m_bHighlight);
   }
@@ -348,14 +348,14 @@ void CDasherButtons::KeyDown(int iTime, int iId, CDasherView *pView, CDasherMode
       m_bDecorationChanged = true;
       ++iActiveBox;
       if(iActiveBox == m_iNumBoxes)
-	iActiveBox = 0;
+        iActiveBox = 0;
        break;
     case 2:
     case 3:
       m_bDecorationChanged = true;
       pModel->ScheduleZoom((m_pBoxes[iActiveBox].iBottom - m_pBoxes[iActiveBox].iTop)/2, (m_pBoxes[iActiveBox].iBottom + m_pBoxes[iActiveBox].iTop)/2);
       if(iActiveBox != m_iNumBoxes-1)
-	iActiveBox = 0;
+        iActiveBox = 0;
       break;
     }
   }
@@ -363,37 +363,37 @@ void CDasherButtons::KeyDown(int iTime, int iId, CDasherView *pView, CDasherMode
     if(m_iStyle == 3) {
       switch(iId) {
       case 2:
-	if(m_iLastBox == 1)
-	  pModel->ScheduleZoom((m_pBoxes[2].iBottom - m_pBoxes[2].iTop)/2, (m_pBoxes[2].iBottom + m_pBoxes[2].iTop)/2);
-	else
-	  pModel->ScheduleZoom((m_pBoxes[0].iBottom - m_pBoxes[0].iTop)/2, (m_pBoxes[0].iBottom + m_pBoxes[0].iTop)/2);
-	m_iLastBox = 1;
-	break; 
+        if(m_iLastBox == 1)
+          pModel->ScheduleZoom((m_pBoxes[2].iBottom - m_pBoxes[2].iTop)/2, (m_pBoxes[2].iBottom + m_pBoxes[2].iTop)/2);
+        else
+          pModel->ScheduleZoom((m_pBoxes[0].iBottom - m_pBoxes[0].iTop)/2, (m_pBoxes[0].iBottom + m_pBoxes[0].iTop)/2);
+        m_iLastBox = 1;
+        break; 
       case 3:
       case 4:
-	if(m_iLastBox == 2)
-	  pModel->ScheduleZoom((m_pBoxes[3].iBottom - m_pBoxes[3].iTop)/2, (m_pBoxes[3].iBottom + m_pBoxes[3].iTop)/2);
-	else
-	  pModel->ScheduleZoom((m_pBoxes[1].iBottom - m_pBoxes[1].iTop)/2, (m_pBoxes[1].iBottom + m_pBoxes[1].iTop)/2);
-	m_iLastBox = 2;
-	break;
+        if(m_iLastBox == 2)
+          pModel->ScheduleZoom((m_pBoxes[3].iBottom - m_pBoxes[3].iTop)/2, (m_pBoxes[3].iBottom + m_pBoxes[3].iTop)/2);
+        else
+          pModel->ScheduleZoom((m_pBoxes[1].iBottom - m_pBoxes[1].iTop)/2, (m_pBoxes[1].iBottom + m_pBoxes[1].iTop)/2);
+        m_iLastBox = 2;
+        break;
       case 1:
-	pModel->ScheduleZoom((m_pBoxes[4].iBottom - m_pBoxes[4].iTop)/2, (m_pBoxes[4].iBottom + m_pBoxes[4].iTop)/2);
-	break;
+        pModel->ScheduleZoom((m_pBoxes[4].iBottom - m_pBoxes[4].iTop)/2, (m_pBoxes[4].iBottom + m_pBoxes[4].iTop)/2);
+        break;
       }
     }
     else {
       if(iId == 100) // Ignore mouse events
-	return;
+        return;
       if(iId == 1)
-	iActiveBox = m_iNumBoxes - 1;
+        iActiveBox = m_iNumBoxes - 1;
       else if(iId <= m_iNumBoxes) 
-	iActiveBox = iId-2;
+        iActiveBox = iId-2;
       else
-	iActiveBox = m_iNumBoxes-2;
+        iActiveBox = m_iNumBoxes-2;
 
       m_iLastTime = iTime;
-	
+
       pModel->ScheduleZoom((m_pBoxes[iActiveBox].iBottom - m_pBoxes[iActiveBox].iTop)/2, (m_pBoxes[iActiveBox].iBottom + m_pBoxes[iActiveBox].iTop)/2);
     }
   }



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