Index: /trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/videospot.cpp
===================================================================
--- /trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/videospot.cpp	(revision 4495)
+++ /trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/videospot.cpp	(revision 4496)
@@ -18,4 +18,5 @@
 #include "videospot.h"
 #include "stdlib.h"
+#include "math.h"
 
 VideoSpot::VideoSpot()
@@ -27,10 +28,29 @@
 }
 
-VideoSpot::VideoSpot( int p_iX, int p_iY )
+VideoSpot::VideoSpot( double p_dX, double p_dY, int p_iNumPixel )
 {
-	m_iNumPixel = 10;
-	m_iXSum = p_iX;
-	m_iYSum = p_iY;
-	m_iWSum = 1;
+	m_iNumPixel = p_iNumPixel;
+	m_iXSum = (int) rint(p_dX * 100.);
+	m_iYSum = (int) rint(p_dY * 100.);
+	m_iWSum = 100;
+}
+
+VideoSpot::VideoSpot( const VideoSpot& p_Spot )
+{
+	m_iNumPixel = p_Spot.m_iNumPixel;
+	m_iXSum = p_Spot.m_iXSum;
+	m_iYSum = p_Spot.m_iYSum;
+	m_iWSum = p_Spot.m_iWSum;
+}
+
+VideoSpot& VideoSpot::operator=( const VideoSpot& p_Spot )
+{
+  if (this == &p_Spot) return *this;   // Gracefully handle self assignment
+
+	this->m_iNumPixel = p_Spot.m_iNumPixel;
+	this->m_iXSum = p_Spot.m_iXSum;
+	this->m_iYSum = p_Spot.m_iYSum;
+	this->m_iWSum = p_Spot.m_iWSum;
+	return *this;
 }
 
@@ -42,7 +62,7 @@
 bool VideoSpot::contains( int p_iX, int p_iY )
 {
-	if( ( abs( p_iX - getX() ) < 10 )
+	if( ( fabs( p_iX - getX() ) < 10. )
 			&&
-			( abs( p_iY - getY() ) < 10 ) )
+			( fabs( p_iY - getY() ) < 10. ) )
 		return true;
 	else
@@ -53,7 +73,7 @@
 bool VideoSpot::contains2( int p_iX, int p_iY )
 {
-	if( ( abs( p_iX - getX() ) < 25 )
+	if( ( fabs( p_iX - getX() ) < 25. )
 			&&
-			( abs( p_iY - getY() ) < 25 ) )
+			( fabs( p_iY - getY() ) < 25. ) )
 		return true;
 	else
@@ -64,22 +84,20 @@
 void VideoSpot::append( int p_iX, int p_iY, int p_iWeight )
 {
-//	if( contains( p_iX , p_iY  ) )
-//		m_glPixels.append( new VideoPixel( p_iX, p_iY, p_iWeight ) );
-		m_iXSum += p_iX * p_iWeight;
-		m_iYSum += p_iY * p_iWeight;
-		m_iWSum += p_iWeight;
-		m_iNumPixel++;
+	m_iXSum += p_iX * p_iWeight;
+	m_iYSum += p_iY * p_iWeight;
+	m_iWSum += p_iWeight;
+	m_iNumPixel++;
 }
 
 /** No descriptions */
-int VideoSpot::getX()
+double VideoSpot::getX()
 {
-	return ( m_iXSum / m_iWSum );
+	return ( (double) m_iXSum / (double) m_iWSum );
 }
 
 /** No descriptions */
-int VideoSpot::getY()
+double VideoSpot::getY()
 {
-	return ( m_iYSum / m_iWSum );
+	return ( (double) m_iYSum / (double) m_iWSum );
 }
 /** No descriptions */
Index: /trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/videospot.h
===================================================================
--- /trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/videospot.h	(revision 4495)
+++ /trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/videospot.h	(revision 4496)
@@ -29,5 +29,9 @@
 public:
 	VideoSpot();
-	VideoSpot(  int p_iX, int p_iY  );
+	VideoSpot(  double p_iX, double p_iY, int p_iNumPixel  );
+
+  VideoSpot( const VideoSpot& p_Spot );
+  VideoSpot& operator=( const VideoSpot& p_Spot );
+
 	virtual ~VideoSpot();
   /** No descriptions */
@@ -38,12 +42,12 @@
   virtual void append( int p_iX, int p_iY, int p_iWeight );
   /** No descriptions */
-  virtual int getX();
+  virtual double getX();
   /** No descriptions */
-  virtual int getY();
+  virtual double getY();
+  /** No descriptions */
+  virtual int getNumPixel() { return m_iNumPixel; }
   /** No descriptions */
   virtual bool isValid();
-public: // Public attributes
-  /**  */
-//  QList<VideoPixel> m_qlPixels;
+
 private: // Private attributes
   /**  */
@@ -51,5 +55,4 @@
   /**  */
   int m_iYSum;
-public: // Public attributes
   /**  */
   int m_iNumPixel;
