// XTPTrackPaintManager.h: interface for the CXTPTrackPaintManager class.
//
// This file is a part of the XTREME REPORTCONTROL MFC class library.
// (c)1998-2011 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////

//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPTRACKPAINTMANAGER_H__)
#define __XTPTRACKPAINTMANAGER_H__
//}}AFX_CODEJOCK_PRIVATE

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "../XTPReportPaintManager.h"

//-----------------------------------------------------------------------
// Summary:
//     This class represents a track control paint manager.This class does
//     painting of various elements of the track control.
//-----------------------------------------------------------------------
class _XTP_EXT_CLASS CXTPTrackPaintManager : public CXTPReportPaintManager
{
public:
	//-----------------------------------------------------------------------
	// Summary:
	//     Creates a CXTPTrackPaintManager object.
	//-----------------------------------------------------------------------
	CXTPTrackPaintManager();

	//-----------------------------------------------------------------------
	// Summary:
	//     CXTPTrackPaintManager destructor, does the cleanups.
	//-----------------------------------------------------------------------
	~CXTPTrackPaintManager();

public:

	//-----------------------------------------------------------------------
	// Summary:
	//      Initializes all drawings defaults (fonts, colors, etc.).Most of
	//      them are system defaults.
	//-----------------------------------------------------------------------
	void RefreshMetrics();

public:
	//-----------------------------------------------------------------------
	// Summary:
	//      Call this function to draw the track header.
	// Parameters:
	//      pDC - Pointer to the device context.
	// Remarks:
	//      It a virtual function, so the derived classes can give their
	//      specific implementations.
	//-----------------------------------------------------------------------
	virtual void DrawTrackHeader(CDC* pDC);

	//-----------------------------------------------------------------------
	// Summary:
	//      Call this function to draw the markers.
	// Parameters:
	//      pDC - Pointer to the device context.
	// Remarks:
	//      It a virtual function, so the derived classes can give their
	//      specific implementations.
	//-----------------------------------------------------------------------
	virtual void DrawMarkers(CDC* pDC);

	//-----------------------------------------------------------------------
	// Summary:
	//      Call this function to draw the time line.
	// Parameters:
	//      pDC - Pointer to the device context.
	// Remarks:
	//      It a virtual function, so the derived classes can give their
	//      specific implementations.
	//-----------------------------------------------------------------------
	virtual void DrawTimeLine(CDC* pDC);

	//-----------------------------------------------------------------------
	// Summary:
	//      Call this function to format the time, relative to a time line
	//      position.
	// Parameters:
	//      nPosition - A point in the time line.
	// Returns:
	//      A CString which contains the formatted time.
	// Remarks:
	//      It a virtual function, so the derived classes can give their
	//      specific implementations.
	//-----------------------------------------------------------------------
	virtual CString FormatTime(int nPosition);

public:
	COLORREF m_clrWorkArea;             //The color of the work area.
	COLORREF m_clrTrackHeader;          //The track header color.
	COLORREF m_clrTrackTimeArea;        //The track time area color.

	COLORREF m_clrTimeHeaderDarkDark;   //The header deep dark color.
	COLORREF m_clrTimeHeaderDark;       //The header dark color.
	COLORREF m_clrTimeSliderBackground; //The slider background color.
	COLORREF m_clrTimeHeaderDivider;    //The header divider color.

	COLORREF m_clrScrollBarLight;       //The scroll bar light color.
	COLORREF m_clrScrollBarDark;        //The scroll bar dark color.

	COLORREF m_clrSelectedArea;         //The color of the selected area.


	COLORREF m_clrMarker;               //The color of the marker.

	int m_nTimeLineStep;
	BOOL m_bTimeLineStepAuto;

#ifdef _XTP_ACTIVEX
//{{AFX_CODEJOCK_PRIVATE

	DECLARE_DISPATCH_MAP()
	DECLARE_INTERFACE_MAP()

	DECLARE_OLETYPELIB_EX(CXTPTrackPaintManager);

#define DECLARE_PROPERTY_UN(theProperty, theType)\
	afx_msg theType OleGet##theProperty();\
	afx_msg void OleSet##theProperty(theType);

	DECLARE_PROPERTY_UN(WorkArea, COLORREF);
	DECLARE_PROPERTY_UN(TrackHeader, COLORREF);
	DECLARE_PROPERTY_UN(TrackTimeArea, COLORREF);
	DECLARE_PROPERTY_UN(TimeHeaderDarkDark, COLORREF);
	DECLARE_PROPERTY_UN(TimeHeaderDark, COLORREF);
	DECLARE_PROPERTY_UN(TimeSliderBackground, COLORREF);
	DECLARE_PROPERTY_UN(TimeHeaderDivider, COLORREF);
	DECLARE_PROPERTY_UN(ScrollBarLight, COLORREF);
	DECLARE_PROPERTY_UN(ScrollBarDark, COLORREF);
	DECLARE_PROPERTY_UN(Marker, COLORREF);
	DECLARE_PROPERTY_UN(SelectedArea, COLORREF);

	void OleSetTimeLineStep(int nStep);
	int OleGetTimeLineStep();
	BOOL m_bCustomTimeLineLabel;

//}}AFX_CODEJOCK_PRIVATE
#endif
};

#endif //#if !defined(__XTPTRACKPAINTMANAGER_H__)
