XTPMarkupShape.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:6k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPMarkupShape.h: interface for the CXTPMarkupShape class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #if !defined(__XTPMARKUPSHAPE_H__)
  21. #define __XTPMARKUPSHAPE_H__
  22. #if _MSC_VER > 1000
  23. #pragma once
  24. #endif // _MSC_VER > 1000
  25. class CXTPMarkupBrush;
  26. #include "XTPMarkupFrameworkElement.h"
  27. enum XTPMarkupStretch
  28. {
  29. xtpMarkupStretchNone,
  30. xtpMarkupStretchFill,
  31. xtpMarkupStretchUniform,
  32. xtpMarkupStretchUniformToFill
  33. };
  34. class _XTP_EXT_CLASS CXTPMarkupShape : public CXTPMarkupFrameworkElement
  35. {
  36. DECLARE_MARKUPCLASS(CXTPMarkupShape)
  37. protected:
  38. CXTPMarkupShape();
  39. ~CXTPMarkupShape();
  40. public:
  41. void SetFill(CXTPMarkupBrush* brush);
  42. CXTPMarkupBrush* GetFill() const;
  43. void SetStroke(CXTPMarkupBrush* brush);
  44. CXTPMarkupBrush* GetStroke() const;
  45. void SetStrokeThickness(int nThickness);
  46. int GetStrokeThickness() const;
  47. XTPMarkupStretch GetStretch() const;
  48. public:
  49. static CXTPMarkupDependencyProperty* m_pStrokeProperty;
  50. static CXTPMarkupDependencyProperty* m_pFillProperty;
  51. static CXTPMarkupDependencyProperty* m_pStrokeThicknessProperty;
  52. static CXTPMarkupDependencyProperty* m_pStretchProperty;
  53. };
  54. class _XTP_EXT_CLASS CXTPMarkupPointCollection : public CXTPMarkupObject
  55. {
  56. DECLARE_MARKUPCLASS(CXTPMarkupPointCollection)
  57. public:
  58. typedef CArray<POINT, POINT&> CPointArray;
  59. public:
  60. CXTPMarkupPointCollection();
  61. CXTPMarkupPointCollection(CPointArray& arr);
  62. public:
  63. CRect GetBounds() const;
  64. const CPointArray& GetPoints() const;
  65. protected:
  66. CXTPMarkupObject* CXTPMarkupPointCollection::ConvertFrom(CXTPMarkupObject* pObject) const;
  67. static BOOL AFX_CDECL ConvertFromString(LPCWSTR lpszValue, CPointArray& arr);
  68. static BOOL AFX_CDECL GetNextValue(LPCWSTR& lpszValue, int& nValue);
  69. protected:
  70. CPointArray m_arrPoints;
  71. CRect m_rcBounds;
  72. };
  73. class _XTP_EXT_CLASS CXTPMarkupPolygon : public CXTPMarkupShape
  74. {
  75. DECLARE_MARKUPCLASS(CXTPMarkupPolygon)
  76. protected:
  77. CXTPMarkupPolygon();
  78. ~CXTPMarkupPolygon();
  79. public:
  80. void SetPoints(CXTPMarkupPointCollection* pPoints);
  81. CXTPMarkupPointCollection* GetPoints() const;
  82. protected:
  83. CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
  84. void OnRender(CXTPMarkupDrawingContext* pDC);
  85. public:
  86. static CXTPMarkupDependencyProperty* m_pPointsProperty;
  87. };
  88. class _XTP_EXT_CLASS CXTPMarkupPolyline : public CXTPMarkupShape
  89. {
  90. DECLARE_MARKUPCLASS(CXTPMarkupPolyline)
  91. protected:
  92. CXTPMarkupPolyline();
  93. ~CXTPMarkupPolyline();
  94. public:
  95. void SetPoints(CXTPMarkupPointCollection* pPoints);
  96. CXTPMarkupPointCollection* GetPoints() const;
  97. protected:
  98. CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
  99. void OnRender(CXTPMarkupDrawingContext* pDC);
  100. public:
  101. static CXTPMarkupDependencyProperty* m_pPointsProperty;
  102. };
  103. class _XTP_EXT_CLASS CXTPMarkupRectangle : public CXTPMarkupShape
  104. {
  105. DECLARE_MARKUPCLASS(CXTPMarkupRectangle)
  106. protected:
  107. CXTPMarkupRectangle();
  108. ~CXTPMarkupRectangle();
  109. protected:
  110. CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
  111. void OnRender(CXTPMarkupDrawingContext* pDC);
  112. public:
  113. };
  114. class _XTP_EXT_CLASS CXTPMarkupEllipse : public CXTPMarkupShape
  115. {
  116. DECLARE_MARKUPCLASS(CXTPMarkupEllipse)
  117. protected:
  118. CXTPMarkupEllipse();
  119. ~CXTPMarkupEllipse();
  120. protected:
  121. virtual CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
  122. virtual void OnRender(CXTPMarkupDrawingContext* pDC);
  123. virtual CXTPMarkupInputElement* InputHitTestOverride(CPoint point) const;
  124. public:
  125. };
  126. class _XTP_EXT_CLASS CXTPMarkupLine : public CXTPMarkupShape
  127. {
  128. DECLARE_MARKUPCLASS(CXTPMarkupLine)
  129. protected:
  130. CXTPMarkupLine();
  131. ~CXTPMarkupLine();
  132. public:
  133. int GetX1() const;
  134. int GetX2() const;
  135. int GetY1() const;
  136. int GetY2() const;
  137. protected:
  138. virtual CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
  139. virtual void OnRender(CXTPMarkupDrawingContext* pDC);
  140. virtual CXTPMarkupInputElement* InputHitTestOverride(CPoint point) const;
  141. public:
  142. static CXTPMarkupDependencyProperty* m_pX1Property;
  143. static CXTPMarkupDependencyProperty* m_pY1Property;
  144. static CXTPMarkupDependencyProperty* m_pX2Property;
  145. static CXTPMarkupDependencyProperty* m_pY2Property;
  146. };
  147. AFX_INLINE CRect CXTPMarkupPointCollection::GetBounds() const {
  148. return m_rcBounds;
  149. }
  150. AFX_INLINE const CXTPMarkupPointCollection::CPointArray& CXTPMarkupPointCollection::GetPoints() const {
  151. return m_arrPoints;
  152. }
  153. AFX_INLINE void CXTPMarkupShape::SetStrokeThickness(int nThickness) {
  154. SetValue(m_pStrokeThicknessProperty, new CXTPMarkupInt(nThickness));
  155. }
  156. AFX_INLINE int CXTPMarkupShape::GetStrokeThickness() const {
  157. CXTPMarkupInt* pValue =  MARKUP_STATICCAST(CXTPMarkupInt, GetValue(m_pStrokeThicknessProperty));
  158. return pValue != NULL ? (int)*pValue : 1;
  159. }
  160. AFX_INLINE XTPMarkupStretch CXTPMarkupShape::GetStretch() const {
  161. CXTPMarkupEnum* pValue =  MARKUP_STATICCAST(CXTPMarkupEnum, GetValue(m_pStretchProperty));
  162. return pValue != NULL ? (XTPMarkupStretch)(int)*pValue : xtpMarkupStretchNone;
  163. }
  164. #endif // !defined(__XTPMARKUPSHAPE_H__)