/** * @file XTPMarkupTheme.cpp * * @copyright * (c) 1998-2025 Codejock Software, All Rights Reserved. * * This source file is the property of Codejock Software and must not be * redistributed by any means without the explicit written permission of * Codejock Software. * * The use of this source code is governed by the terms and conditions specified * in the Toolkit Pro license agreement. Codejock Software grants you, as a * single software developer, the limited right to use this software on one * computer only. * * Contact Information: * support@codejock.com * http://www.codejock.com * */ #include "StdAfx.h" #include "GraphicLibrary/unzip/unzip.h" #include "GraphicLibrary/GdiPlus/XTPGdiPlus.h" #include "Common/XTPTypeId.h" #include "Common/XTPCasting.h" #include "Common/XTPFramework.h" #include "Common/XTPMarkupTheme.h" #include "Common/XTPSystemHelpers.h" #include "Common/XTPSynchro.h" #include "Common/XTPGdiObjects.h" #include "Common/XTPMarkupRender.h" #include "Markup/XTPMarkupObject.h" #include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif CXTPMarkupThemePart::CXTPMarkupThemePart() : m_pMarkupUIElement(NULL) { } CXTPMarkupThemePart::~CXTPMarkupThemePart() { if (NULL != m_pMarkupUIElement) XTPMarkupReleaseElement(m_pMarkupUIElement); } BOOL CXTPMarkupThemePart::LoadPart(HZIP hZip, LPCTSTR pszFileName, CXTPMarkupContext* pMarkupContext) { ZRESULT zResult; ZIPENTRY zipEntry; int iIndex; if (NULL != m_pMarkupUIElement) { XTPMarkupReleaseElement(m_pMarkupUIElement); m_pMarkupUIElement = NULL; } zResult = ::FindZipItem(hZip, pszFileName, true, &iIndex, &zipEntry); if (ZR_OK != zResult) return FALSE; char* pszBuffer = new char[XTPToUIntChecked(zipEntry.unc_size + 1)]; ZeroMemory(pszBuffer, sizeof(char) * (zipEntry.unc_size + 1)); zResult = ::UnzipItem(hZip, iIndex, pszBuffer, XTPToUIntChecked(zipEntry.unc_size)); if (XTP_ASSERT_CHECK(ZR_OK == zResult)) { CString sXaml = pszBuffer; m_pMarkupUIElement = XTPMarkupParseText(pMarkupContext, sXaml); _ASSERTE(NULL != m_pMarkupUIElement); } SAFE_DELETE_AR(pszBuffer); return (ZR_OK == zResult); } void CXTPMarkupThemePart::RenderMarkup(CDC* pDC, CRect rc) { if (NULL != m_pMarkupUIElement) { _ASSERTE(pDC); XTPMarkupRenderElement(m_pMarkupUIElement, pDC->GetSafeHdc(), rc); } } CSize CXTPMarkupThemePart::Measure(int cx, int cy) { if (NULL == m_pMarkupUIElement) return CSize(0, 0); return XTPMarkupMeasureElement(m_pMarkupUIElement, cx, cy); }