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.
217 lines
10 KiB
C
217 lines
10 KiB
C
2 years ago
|
// XTPMarkupRender.h: API interface for the markup.
|
||
|
//
|
||
|
// 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(__XTPMARKUPRENDER_H__)
|
||
|
#define __XTPMARKUPRENDER_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
class CXTPMarkupContext;
|
||
|
class CXTPMarkupUIElement;
|
||
|
|
||
|
const UINT XTP_WM_MARKUPREDRAW = (WM_USER + 9820);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupCreateContext is part of Markup API that creates new CXTPMarkupContext object
|
||
|
// Parameters:
|
||
|
// hWnd - Window handle to link context with
|
||
|
// Remarks:
|
||
|
// XTPMarkupCreateContext creates new CXTPMarkupContext that holds common properties of Markup Elements like default font, default text color, current selected element, etc.
|
||
|
// Example:
|
||
|
// <code>
|
||
|
// CXTPMarkupContext* pContext = XTPMarkupCreateContext();
|
||
|
// CXTPMarkupUIElement* pElement = XTPMarkupParseText(pContext, "<Ellipse Fill='Red' Width='100' Height='100'/>");
|
||
|
// CSize sz = XTPMarkupMeasureElement(pElement);
|
||
|
// XTPMarkupRenderElement(pElement, pDC->GetSafeHdc(), CRect(CPoint(0), sz));
|
||
|
// XTPMarkupReleaseElement(pElement);
|
||
|
// XTPMarkupReleaseContext(pContext);
|
||
|
// </code>
|
||
|
// Returns:
|
||
|
// Returns new CXTPMarkupContext object pointer
|
||
|
// See Also: XTPMarkupReleaseContext, XTPMarkupParseText, XTPMarkupReleaseElement
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS CXTPMarkupContext* AFX_CDECL XTPMarkupCreateContext(HWND hWnd = NULL);
|
||
|
_XTP_EXT_CLASS void AFX_CDECL XTPMarkupAssignHandle(CXTPMarkupContext* pContext, HWND hWnd);
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupReleaseContext is part of Markup API that destroys CXTPMarkupContext object
|
||
|
// Parameters:
|
||
|
// pContext - Pointer to CXTPMarkupContext that will be released
|
||
|
// Example:
|
||
|
// See Example for XTPMarkupCreateContext function
|
||
|
// See Also: XTPMarkupCreateContext
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS void AFX_CDECL XTPMarkupReleaseContext(CXTPMarkupContext*& pContext);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupParseText is part of Markup API that creates new Markup elements using Markup string
|
||
|
// Parameters:
|
||
|
// pContext - Pointer to CXTPMarkupContext. All new elements will be part of this context.
|
||
|
// lpszMarkup - String to parse
|
||
|
// Example:
|
||
|
// See Example for XTPMarkupCreateContext function
|
||
|
// See Also: XTPMarkupCreateContext, XTPMarkupReleaseElement, XTPMarkupMeasureElement, XTPMarkupRenderElement
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS CXTPMarkupUIElement* AFX_CDECL XTPMarkupParseText(CXTPMarkupContext* pContext, LPCSTR lpszMarkup);
|
||
|
_XTP_EXT_CLASS CXTPMarkupUIElement* AFX_CDECL XTPMarkupParseText(CXTPMarkupContext* pContext, LPCWSTR lpszMarkup);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupReleaseElement is part of Markup API that destroys CXTPMarkupUIElement object
|
||
|
// Parameters:
|
||
|
// pElement - Pointer to CXTPMarkupUIElement that will be released
|
||
|
// Example:
|
||
|
// See Example for XTPMarkupCreateContext function
|
||
|
// See Also: XTPMarkupCreateContext, XTPMarkupParseText, XTPMarkupMeasureElement, XTPMarkupRenderElement
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS void AFX_CDECL XTPMarkupReleaseElement(CXTPMarkupUIElement*& pElement);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupMeasureElement is part of Markup API that calculates dimensions of Markup element
|
||
|
// Parameters:
|
||
|
// pElement - Pointer to CXTPMarkupUIElement that size need to calculate
|
||
|
// cxAvail - Available width
|
||
|
// cyAvail - Available height
|
||
|
// Example:
|
||
|
// See Example for XTPMarkupCreateContext function
|
||
|
// Returns:
|
||
|
// Returns the dimensions of the CXTPMarkupUIElement
|
||
|
// See Also: XTPMarkupCreateContext, XTPMarkupParseText, XTPMarkupRenderElement
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS CSize AFX_CDECL XTPMarkupMeasureElement(CXTPMarkupUIElement* pElement, int cxAvail = INT_MAX, int cyAvail = INT_MAX);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupRenderElement is part of Markup API that draws Markup element to device context
|
||
|
// Parameters:
|
||
|
// pElement - CXTPMarkupUIElement object to draw
|
||
|
// hDC - Handle to the device context
|
||
|
// rc - Pointer to a RECT structure that contains the rectangle in which the element is to be formatted
|
||
|
// Example:
|
||
|
// See Example for XTPMarkupCreateContext function
|
||
|
// See Also: XTPMarkupCreateContext, XTPMarkupParseText, XTPMarkupMeasureElement
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS void AFX_CDECL XTPMarkupRenderElement(CXTPMarkupUIElement* pElement, HDC hDC, LPCRECT rc);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupSetDefaultFont is part of Markup API. Call it to set default font and text color for Markup elements
|
||
|
// Parameters:
|
||
|
// hFont - Handle to default font
|
||
|
// clrText - Default text color
|
||
|
// Example:
|
||
|
// <code>
|
||
|
// CXTPMarkupContext* pContext = XTPMarkupCreateContext();
|
||
|
// CXTPMarkupUIElement* pElement = XTPMarkupParseText(pContext, "<TextBlock Text='Hello, world'/>");
|
||
|
// XTPMarkupSetDefaultFont(pContext, 0, RGB(255, 0, 0));
|
||
|
// CSize sz = XTPMarkupMeasureElement(pElement);
|
||
|
// XTPMarkupRenderElement(pElement, pDC->GetSafeHdc(), CRect(CPoint(0), sz));
|
||
|
// XTPMarkupReleaseElement(pElement);
|
||
|
// XTPMarkupReleaseContext(pContext);
|
||
|
// </code>
|
||
|
// See Also: XTPMarkupCreateContext, XTPMarkupParseText, XTPMarkupMeasureElement
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS void AFX_CDECL XTPMarkupSetDefaultFont(CXTPMarkupContext* pContext, HFONT hFont, COLORREF clrText);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupRelayMessage is part of Markup API. It used to notify Markup element about events of associated window.
|
||
|
// Parameters:
|
||
|
// pElement - Pointer to Markup element that need to notify
|
||
|
// message - Specifies the message to be sent.
|
||
|
// wParam - Specifies additional message-dependent information
|
||
|
// lParam - Specifies additional message-dependent information
|
||
|
// pResult - The return value of WindowProc. Depends on the message
|
||
|
// Returns:
|
||
|
// Nonzero if message was handled; otherwise 0.
|
||
|
// See Also: XTPMarkupCreateContext
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS BOOL AFX_CDECL XTPMarkupRelayMessage(CXTPMarkupUIElement* pElement, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
|
||
|
_XTP_EXT_CLASS BOOL AFX_CDECL XTPMarkupRelayMessage(CXTPMarkupContext* pContext, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XTPMarkupElementContext is part of Markup API that returns Markup contrext of Markup element
|
||
|
// Parameters:
|
||
|
// pElement - Pointer to Markup element that context need to know
|
||
|
// Returns:
|
||
|
// Pointer of associated CXTPMarkupContext
|
||
|
// See Also: XTPMarkupCreateContext
|
||
|
//-----------------------------------------------------------------------
|
||
|
_XTP_EXT_CLASS CXTPMarkupContext* AFX_CDECL XTPMarkupElementContext(CXTPMarkupUIElement* pElement);
|
||
|
|
||
|
_XTP_EXT_CLASS void AFX_CDECL XTPMarkupDrawText(CXTPMarkupContext* pContext, HDC hDC, LPCTSTR lpszText, LPRECT lpRect, UINT nFormat);
|
||
|
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
#ifndef _XTP_INCLUDE_MARKUP
|
||
|
|
||
|
AFX_INLINE CXTPMarkupContext* AFX_CDECL XTPMarkupCreateContext(HWND /*hWnd*/) {
|
||
|
return NULL;
|
||
|
}
|
||
|
AFX_INLINE void AFX_CDECL XTPMarkupReleaseContext(CXTPMarkupContext*& /*pContext*/) {
|
||
|
}
|
||
|
AFX_INLINE void AFX_CDECL XTPMarkupReleaseElement(CXTPMarkupUIElement*& /*pElement*/) {
|
||
|
}
|
||
|
AFX_INLINE CXTPMarkupUIElement* AFX_CDECL XTPMarkupParseText(CXTPMarkupContext* /*pContext*/, LPCSTR /*lpszMarkup*/) {
|
||
|
return NULL;
|
||
|
}
|
||
|
AFX_INLINE CXTPMarkupUIElement* AFX_CDECL XTPMarkupParseText(CXTPMarkupContext* /*pContext*/, LPCWSTR /*lpszMarkup*/) {
|
||
|
return NULL;
|
||
|
}
|
||
|
AFX_INLINE CXTPMarkupContext* AFX_CDECL XTPMarkupElementContext(CXTPMarkupUIElement* /*pElement*/) {
|
||
|
return NULL;
|
||
|
}
|
||
|
AFX_INLINE CSize AFX_CDECL XTPMarkupMeasureElement(CXTPMarkupUIElement* /*pElement*/, int /*cxAvail = INT_MAX*/, int /*cyAvail = INT_MAX*/) {
|
||
|
return CSize(0, 0);
|
||
|
}
|
||
|
AFX_INLINE void AFX_CDECL XTPMarkupRenderElement(CXTPMarkupUIElement* /*pElement*/, HDC /*hDC*/, LPCRECT /*lpRect*/) {
|
||
|
}
|
||
|
AFX_INLINE void AFX_CDECL XTPMarkupSetDefaultFont(CXTPMarkupContext* /*pContext*/, HFONT /*hFont*/, COLORREF /*clrText*/) {
|
||
|
}
|
||
|
AFX_INLINE BOOL AFX_CDECL XTPMarkupRelayMessage(CXTPMarkupUIElement* /*pElement*/, UINT /*message*/, WPARAM /*wParam*/, LPARAM /*lParam*/, LRESULT* /*pResult*/) {
|
||
|
return FALSE;
|
||
|
}
|
||
|
AFX_INLINE BOOL AFX_CDECL XTPMarkupRelayMessage(CXTPMarkupContext* /*pContext*/, UINT /*message*/, WPARAM /*wParam*/, LPARAM /*lParam*/, LRESULT* /*pResult*/) {
|
||
|
return FALSE;
|
||
|
}
|
||
|
AFX_INLINE void AFX_CDECL XTPMarkupAssignHandle(CXTPMarkupContext* /*pContext*/, HWND /*hWnd*/) {
|
||
|
|
||
|
}
|
||
|
AFX_INLINE void AFX_CDECL XTPMarkupDrawText(CXTPMarkupContext* /*pContext*/, HDC hDC, LPCTSTR lpszText, LPRECT lpRect, UINT nFormat) {
|
||
|
::DrawText(hDC, lpszText, (int) _tcslen(lpszText), lpRect, nFormat);
|
||
|
}
|
||
|
|
||
|
#endif // _XTP_INCLUDE_MARKUP
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
|
||
|
#endif // !defined(__XTPMARKUPRENDER_H__)
|