Index: trunk/MagicSoft/Cosy/videodev/FilterLed.cc
===================================================================
--- trunk/MagicSoft/Cosy/videodev/FilterLed.cc	(revision 8875)
+++ trunk/MagicSoft/Cosy/videodev/FilterLed.cc	(revision 9439)
@@ -247,5 +247,6 @@
 
 int FilterLed::GetMeanPosition(const int x, const int y,
-                               const int box, float &mx, float &my, unsigned int &sum) const
+                               const int boxx, const int boxy,
+                               float &mx, float &my, unsigned int &sum) const
 {
     unsigned int sumx=0;
@@ -253,6 +254,6 @@
 
     sum=0;
-    for (int dx=x-box; dx<x+box+1; dx++)
-        for (int dy=y-box; dy<y+box+1; dy++)
+    for (int dx=x-boxx; dx<x+boxx+1; dx++)
+        for (int dy=y-boxy; dy<y+boxy+1; dy++)
         {
             const byte &m = fImg[dy*fW+dx];
@@ -269,23 +270,23 @@
 }
 
-int FilterLed::GetMeanPosition(const int x, const int y, const int box) const
+int FilterLed::GetMeanPosition(const int x, const int y, const int boxx, const int boxy) const
 {
     float mx, my;
     unsigned int sum;
-    return GetMeanPosition(x, y, box, mx, my, sum);
+    return GetMeanPosition(x, y, boxx, boxy, mx, my, sum);
 }
 
 int FilterLed::GetMeanPositionBox(const int x, const int y,
-                                  const int box, float &mx,
-                                  float &my, unsigned int &sum) const
+                                  const int boxx, const int boxy,
+                                  float &mx, float &my, unsigned int &sum) const
 {
     //-------------------------------
     // Improved algorithm:
     // 1. Look for the largest five-pixel-cross signal inside the box
-    int x0 = TMath::Max(x-box+1,   0);
-    int y0 = TMath::Max(y-box+1,   0);
-
-    int x1 = TMath::Min(x+box+1-1, fW);
-    int y1 = TMath::Min(y+box+1-1, fH);
+    int x0 = TMath::Max(x-boxx+1,   0);
+    int y0 = TMath::Max(y-boxy+1,   0);
+
+    int x1 = TMath::Min(x+boxx+1-1, fW);
+    int y1 = TMath::Min(y+boxy+1-1, fH);
 
     int maxx=0;
@@ -330,9 +331,9 @@
 
 int FilterLed::GetMeanPositionBox(const int x, const int y,
-                                  const int box) const
+                                  const int boxx, const int boxy) const
 {
     float mx, my;
     unsigned int sum;
-    return GetMeanPositionBox(x, y, box, mx, my, sum);
+    return GetMeanPositionBox(x, y, boxx, boxy, mx, my, sum);
 }
 
@@ -374,8 +375,8 @@
 void FilterLed::Execute(Leds &leds, int xc, int yc, double &bright) const
 {
-    const int x0 = TMath::Max(xc-fBox, 0);
-    const int y0 = TMath::Max(yc-fBox, 0);
-    const int x1 = TMath::Min(xc+fBox, fW);
-    const int y1 = TMath::Min(yc+fBox, fH);
+    const int x0 = TMath::Max(xc-fBoxX, 0);
+    const int y0 = TMath::Max(yc-fBoxY, 0);
+    const int x1 = TMath::Min(xc+fBoxX, fW);
+    const int y1 = TMath::Min(yc+fBoxY, fH);
 
     const int wx = x1-x0;
@@ -432,8 +433,8 @@
     // Define inner box in which to search the signal
     //
-    const int x0 = TMath::Max(xc-fBox, 0);
-    const int y0 = TMath::Max(yc-fBox, 0);
-    const int x1 = TMath::Min(xc+fBox, fW);
-    const int y1 = TMath::Min(yc+fBox, fH);
+    const int x0 = TMath::Max(xc-fBoxX, 0);
+    const int y0 = TMath::Max(yc-fBoxY, 0);
+    const int x1 = TMath::Min(xc+fBoxX, fW);
+    const int y1 = TMath::Min(yc+fBoxY, fH);
 
     //
@@ -444,8 +445,8 @@
     const double sqrt2 = sqrt(2.);
 
-    const int xa = TMath::Max(xc-(int)rint(fBox*sqrt2), 0);
-    const int ya = TMath::Max(yc-(int)rint(fBox*sqrt2), 0);
-    const int xb = TMath::Min(xc+(int)rint(fBox*sqrt2), fW);
-    const int yb = TMath::Min(yc+(int)rint(fBox*sqrt2), fH);
+    const int xa = TMath::Max(xc-TMath::Nint(fBoxX*sqrt2), 0);
+    const int ya = TMath::Max(yc-TMath::Nint(fBoxY*sqrt2), 0);
+    const int xb = TMath::Min(xc+TMath::Nint(fBoxX*sqrt2), fW);
+    const int yb = TMath::Min(yc+TMath::Nint(fBoxY*sqrt2), fH);
 
     //
@@ -518,5 +519,6 @@
     float mx, my;
     unsigned int mag;
-    int pos = box ? GetMeanPositionBox(xc, yc, fBox-1, mx, my, mag) : GetMeanPosition(xc, yc, fBox-1, mx, my, mag);
+    int pos = box ? GetMeanPositionBox(xc, yc, fBoxX-1, fBoxY-1, mx, my, mag)
+        : GetMeanPosition(xc, yc, fBoxX-1, fBoxY-1, mx, my, mag);
 
     if (pos<0 || pos>=fW*fH || fImg[pos]<sum+fCut*sdev)
Index: trunk/MagicSoft/Cosy/videodev/FilterLed.h
===================================================================
--- trunk/MagicSoft/Cosy/videodev/FilterLed.h	(revision 8875)
+++ trunk/MagicSoft/Cosy/videodev/FilterLed.h	(revision 9439)
@@ -17,5 +17,6 @@
     int fW;
     int fH;
-    int fBox;
+    int fBoxX;
+    int fBoxY;
     float fCut;
 
@@ -24,12 +25,12 @@
 
     void GetMinMax(const int offset, byte *min, byte *max) const;
-    int  GetMeanPosition(const int x, const int y, const int box) const;
-    int  GetMeanPosition(const int x, const int y, const int box, 
+    int  GetMeanPosition(const int x, const int y, const int boxx, const int boxy) const;
+    int  GetMeanPosition(const int x, const int y, const int boxx, const int boxy,
 			 float &mx, float &my, unsigned int &sum) const;
 
     int  GetMeanPositionBox(const int x, const int y,
-                            const int box) const;
+                            const int boxx, const int boxy) const;
     int  GetMeanPositionBox(const int x, const int y,
-                            const int box, float &mx, float &my,
+                            const int boxx, const int boxy, float &mx, float &my,
                             unsigned int &sum) const;
 
@@ -40,15 +41,16 @@
 public:
     FilterLed(byte *img, int w, int h, double cut=2.5)
-      : fImg(img), fW(w), fH(h), fBox(w>h?w:h), fCut(cut)
+      : fImg(img), fW(w), fH(h), fBoxX(w), fBoxY(h), fCut(cut)
     {
     }
 
-    FilterLed(byte *img, int w, int h, int box, double cut=2.5)
-      : fImg(img), fW(w), fH(h), fBox(box), fCut(cut)
+    FilterLed(byte *img, int w, int h, int boxx, int boxy, double cut=2.5)
+      : fImg(img), fW(w), fH(h), fBoxX(boxx), fBoxY(boxy), fCut(cut)
     {
     }
     virtual ~FilterLed() { }
 
-    void SetBox(int box)   { fBox = box; }
+    void SetBox(int box)   { fBoxX = fBoxY = box; }
+    void SetBox(int boxx, int boxy)   { fBoxX = boxx; fBoxY = boxy; }
     void SetCut(float cut) { fCut = cut; } 
     void FindStar(Leds &leds, int xc, int yc, bool circle=false) const;
