You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
317 lines
12 KiB
C++
317 lines
12 KiB
C++
// XTPChartTextPainter.h
|
|
//
|
|
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
|
|
// (c)1998-2012 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(__XTPCHARTROTATEDTEXTPAINTE_H__)
|
|
#define __XTPCHARTROTATEDTEXTPAINTE_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
class CXTPChartDeviceContext;
|
|
class CXTPChartDeviceCommand;
|
|
class CXTPChartFont;
|
|
class CXTPMarkupUIElement;
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This enumeration defines the various text rotations used in the XTP chart.
|
|
// Remarks:
|
|
//===========================================================================
|
|
enum XTPChartTextRotation
|
|
{
|
|
xtpChartTextLeftTop, //Left top.
|
|
xtpChartTextCenterTop, //Center top.
|
|
xtpChartTextRightTop, //Right top.
|
|
xtpChartTextLeftCenter, //Left center.
|
|
xtpChartTextCenterCenter,//Center center.
|
|
xtpChartTextRightCenter, //Right center.
|
|
xtpChartTextLeftBottom, //Left bottom.
|
|
xtpChartTextCenterBottom,//Center bottom.
|
|
xtpChartTextRightBottom //Right bottom.
|
|
};
|
|
|
|
class CXTPChartTextElement;
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This abstract class represents a text painter which is used for drawing
|
|
// various text elements in the chart.
|
|
// Remarks:
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPChartTextPainterBase
|
|
{
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPChartTextPainterBase object.
|
|
// Parameters:
|
|
// text - The text to be rendered.
|
|
// size - The measurements required to render the text.
|
|
// pTextProvider - The element which owns the text.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartTextPainterBase(CXTPChartDeviceContext* pDC, const CXTPChartString& text, CXTPChartTextElement* pTextProvider);
|
|
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPChartTextPainterBase object, handle cleanup.
|
|
//-------------------------------------------------------------------------
|
|
virtual ~CXTPChartTextPainterBase();
|
|
|
|
public:
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the rounded bounds of the text.
|
|
// Returns:
|
|
// A CRect object specifying the rounded bounds.
|
|
//-------------------------------------------------------------------------
|
|
CRect GetRoundedBounds();
|
|
|
|
CXTPChartSizeF GetSize() const;
|
|
|
|
protected:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to calculate the bounds of the text.
|
|
// Returns:
|
|
// A CXTPChartRectF object specifying the rounded bounds.
|
|
// Remarks:
|
|
// This is a pure virtual function, so give meaningful implementation
|
|
// to this function in derived classes.
|
|
//-------------------------------------------------------------------------
|
|
virtual CXTPChartRectF CalculateBounds() = 0;
|
|
|
|
protected:
|
|
CXTPChartString m_strText; //The text to be painted
|
|
CXTPChartSizeF m_szTextSize; //The measurements of the text.
|
|
CXTPChartTextElement* m_pTextProvider; //The chart element which owns the text.
|
|
int m_nHeight; //The height of the text.
|
|
int m_nWidth; //The width of the text.
|
|
|
|
CRect m_rcRoundedBounds; //The rounded bounds of the text.
|
|
CXTPChartRectF m_rcBounds; //The bounds of the text.
|
|
CXTPMarkupUIElement* m_pMarkupUIElement;
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This class represents a text painter which is used for drawing various
|
|
// text elements in the chart.This is a kind of CXTPChartTextPainterBase.
|
|
// Remarks:
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPChartTextPainter : public CXTPChartTextPainterBase
|
|
{
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPChartTextPainterBase object.
|
|
// Parameters:
|
|
// text - The text to be rendered.
|
|
// size - The measurements required to render the text.
|
|
// pTextProvider - The element which owns the text.
|
|
// location - The location of the text.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartTextPainter(CXTPChartDeviceContext* pDC, const CXTPChartString& text, CXTPChartTextElement* pTextProvider);
|
|
|
|
void SetLocation(const CXTPChartPointF& location);
|
|
|
|
public:
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// This function create a CXTPChartDeviceCommand object, this object
|
|
// represents the rendering of a text.
|
|
// Parameters:
|
|
// pDC - Pointer to a CXTPChartDeviceContext object.
|
|
// color - The color of the text.
|
|
// Returns:
|
|
// Returns CXTPChartDeviceCommand object, this object handles
|
|
// the rendering of an element in the chart.Here it handles
|
|
// the drawing of a text.
|
|
// Remarks:
|
|
// See Also:
|
|
//-------------------------------------------------------------------------
|
|
CXTPChartDeviceCommand* CreateDeviceCommand(CXTPChartDeviceContext* pDC, const CXTPChartColor& color);
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to calculate the bounds of the text.
|
|
// Returns:
|
|
// A CXTPChartRectF object specifying the bounds.
|
|
// Remarks:
|
|
//-------------------------------------------------------------------------
|
|
CXTPChartRectF CalculateBounds();
|
|
|
|
protected:
|
|
CXTPChartPointF m_ptLocation; //The location of the text.
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This abstract base class represents a rotated text painter which is used
|
|
// for drawing various rotated text elements in the chart.This is a kind
|
|
// of CXTPChartTextPainterBase.
|
|
// Remarks:
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPChartRotatedTextPainterBase : public CXTPChartTextPainterBase
|
|
{
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPChartRotatedTextPainterBase object.
|
|
// Parameters:
|
|
// text - The text to be rendered.
|
|
// size - The measurements required to render the text.
|
|
// pTextProvider - The element which owns the text.
|
|
// ptBase - The base point of the text.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartRotatedTextPainterBase(CXTPChartDeviceContext* pDC, const CXTPChartString& text, CXTPChartTextElement* pTextProvider, CPoint ptBase = CPoint(0, 0));
|
|
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// This function create a CXTPChartDeviceCommand object, this object
|
|
// represents the rendering of a rotated text.
|
|
// Parameters:
|
|
// pDC - Pointer to a CXTPChartDeviceContext object.
|
|
// Returns:
|
|
// Returns CXTPChartDeviceCommand object, this object handles
|
|
// the rendering of an element in the chart.Here it handles
|
|
// the drawing of a rotated text.
|
|
// Remarks:
|
|
// See Also:
|
|
//-------------------------------------------------------------------------
|
|
CXTPChartDeviceCommand* CreateDeviceCommand(CXTPChartDeviceContext* pDC, const CXTPChartColor& color);
|
|
|
|
public:
|
|
void SetBasePoint(CPoint pt);
|
|
|
|
protected:
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to calculate the bounds of the text.
|
|
// Returns:
|
|
// A CXTPChartRectF object specifying the bounds.
|
|
// Remarks:
|
|
//-------------------------------------------------------------------------
|
|
CXTPChartRectF CalculateBounds();
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to calculate the bounds of the text.
|
|
// Returns:
|
|
// A CXTPChartRectF object specifying the bounds.
|
|
// Remarks:
|
|
//-------------------------------------------------------------------------
|
|
CRect GetInitialTextRect();
|
|
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to calculate the left top point of the text.
|
|
// Returns:
|
|
// A CXTPChartRectF object specifying the bounds.
|
|
// Remarks:
|
|
// This is a pure virtual function, so give meaningful implementation
|
|
// to this function in derived classes.
|
|
//-------------------------------------------------------------------------
|
|
virtual CPoint CalculateLeftTopPoint() = 0;
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Use this function to calculate the rotation of the text.
|
|
// Returns:
|
|
// An enumerated value, XTPChartTextRotation specifying the text rotation type.
|
|
// Remarks:
|
|
// This is a pure virtual function, so give meaningful implementation
|
|
// to this function in derived classes.
|
|
//-------------------------------------------------------------------------
|
|
virtual XTPChartTextRotation CalculateRotation() = 0;
|
|
|
|
void CalculatePoints(XTPChartTextRotation rotation, CRect rect, float angle, float points[4][2]);
|
|
|
|
protected:
|
|
CPoint m_ptBasePoint; //The base point of the text.
|
|
float m_fAngle; //The angle of text rotation.
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This abstract base class renders a rotated text near a line which is used
|
|
// for drawing various rotated text elements near lines in the chart.This
|
|
// is a kind of CXTPChartTextPainterBase.
|
|
// Remarks:
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPChartRotatedTextPainterNearLine : public CXTPChartRotatedTextPainterBase
|
|
{
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPChartRotatedTextPainterNearLine object.
|
|
// Parameters:
|
|
// text - The text to be rendered.
|
|
// size - The measurements required to render the text.
|
|
// pTextProvider - The element which owns the text.
|
|
// ptBase - The base point of the text.
|
|
// position - An enumerated value specifying the near text position.
|
|
// fAngle - The angle of rotation.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartRotatedTextPainterNearLine(CXTPChartDeviceContext* pDC, const CXTPChartString& text, CXTPChartTextElement* pTextProvider, CPoint ptBase, XTPChartNearTextPosition position, float fAngle);
|
|
|
|
public:
|
|
|
|
|
|
protected:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Use this function to calculate the left top point of the text.
|
|
// Returns:
|
|
// A CPoint object specifying the left top.
|
|
// Remarks:
|
|
//-------------------------------------------------------------------------
|
|
CPoint CalculateLeftTopPoint();
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Use this function to calculate the rotation of the text.
|
|
// Returns:
|
|
// An enumerated value, XTPChartTextRotation specifying the text rotation type.
|
|
//-------------------------------------------------------------------------
|
|
XTPChartTextRotation CalculateRotation();
|
|
|
|
protected:
|
|
XTPChartNearTextPosition m_nNearPosition; //The near text position.
|
|
};
|
|
|
|
AFX_INLINE CXTPChartSizeF CXTPChartTextPainterBase::GetSize() const {
|
|
return m_szTextSize;
|
|
}
|
|
|
|
#endif //#if !defined(__XTPCHARTROTATEDTEXTPAINTE_H__)
|