/*! 
*   \file  CSignature.h
*   \brief Declares class to hold signature of image.
*    
*   \details  
*   CSignature is a container of image-specific signature. 
*
*   \date      October 24, 2011
*   \copyright eBay Research Labs.
*/

#pragma once

// Include standard C++ headers.
#include <string>   
#include <ctime>

// Include openCV-specific headers.
#include <cv.h>

#define USEPATTERN 1

class CSignature
{
public:
        CSignature();
        ~CSignature();
        // Version.
        char         m_version;
	bool         m_void;
	int          m_matsudaHue;

        float        m_fracColor;	
        // Pattern.
        float        m_maxEdgeMag;


        // Color.
        cv::Mat      m_histColor; // Type = CV_32F
        cv::Mat      m_histOrient;     // CV_32F
        cv::Mat      m_fracEdgePixels; // CV_32F
        cv::Mat      m_FST;            // CV_32F

        // those are not used in serialization
        std::string m_itemIDs;

        void markAsValid() { m_void = false; }
        void markAsVoid() { m_void = true; }
	bool isVoid() const { return m_void; }
	static const std::string emptyString;
        void MakeDeepCopy(const CSignature &src);
};
