/** * @file XTPMarkupRenderTransform.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 "Common/XTPTypeId.h" #include "Common/XTPCasting.h" #include "Common/XTPFramework.h" #include "Common/XTPSystemHelpers.h" #include "Markup/XTPMarkupObject.h" #include "Markup/XTPMarkupBuilder.h" #include "Markup/Transform/XTPMarkupTransform.h" #include "Markup/Transform/XTPMarkupRenderTransform.h" #include "Markup/Transform/XTPMarkupRotateTransform.h" #include "Markup/Transform/XTPMarkupScaleTransform.h" #include "Markup/Transform/XTPMarkupTranslateTransform.h" #include "Markup/Transform/XTPMarkupSkewTransform.h" #include "Markup/Transform/XTPMarkupMatrixTransform.h" #include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ////////////////////////////////////////////////////////////////////////// // CXTPMarkupRenderTransform CXTPMarkupDependencyProperty* CXTPMarkupRenderTransform::m_pPropertyRotateTransform = NULL; CXTPMarkupDependencyProperty* CXTPMarkupRenderTransform::m_pPropertyScaleTransform = NULL; CXTPMarkupDependencyProperty* CXTPMarkupRenderTransform::m_pPropertyTranslateTransform = NULL; CXTPMarkupDependencyProperty* CXTPMarkupRenderTransform::m_pPropertySkewTransform = NULL; CXTPMarkupDependencyProperty* CXTPMarkupRenderTransform::m_pPropertyMatrixTransform = NULL; IMPLEMENT_MARKUPCLASS(L"RenderTransform", CXTPMarkupRenderTransform, CXTPMarkupObject); CXTPMarkupRenderTransform::CXTPMarkupRenderTransform() : CXTPMarkupObject(flagNoCom) , m_pContentProperty(NULL) , m_pTargetObject(NULL) , m_originX(0) , m_originY(0) { } CXTPMarkupRenderTransform::~CXTPMarkupRenderTransform() { } void CXTPMarkupRenderTransform::RegisterMarkupClass() { m_pPropertyRotateTransform = CXTPMarkupDependencyProperty::Register( L"RotateTransform", MARKUP_TYPE(CXTPMarkupRotateTransform), MARKUP_TYPE(CXTPMarkupRenderTransform), new CXTPMarkupPropertyMetadata(NULL, CXTPMarkupPropertyMetadata::flagAffectsRender)); m_pPropertyScaleTransform = CXTPMarkupDependencyProperty::Register( L"ScaleTransform", MARKUP_TYPE(CXTPMarkupScaleTransform), MARKUP_TYPE(CXTPMarkupRenderTransform), new CXTPMarkupPropertyMetadata(NULL, CXTPMarkupPropertyMetadata::flagAffectsRender)); m_pPropertyTranslateTransform = CXTPMarkupDependencyProperty::Register( L"TranslateTransform", MARKUP_TYPE(CXTPMarkupTranslateTransform), MARKUP_TYPE(CXTPMarkupRenderTransform), new CXTPMarkupPropertyMetadata(NULL, CXTPMarkupPropertyMetadata::flagAffectsRender)); m_pPropertySkewTransform = CXTPMarkupDependencyProperty::Register( L"SkewTransform", MARKUP_TYPE(CXTPMarkupSkewTransform), MARKUP_TYPE(CXTPMarkupRenderTransform), new CXTPMarkupPropertyMetadata(NULL, CXTPMarkupPropertyMetadata::flagAffectsRender)); m_pPropertyMatrixTransform = CXTPMarkupDependencyProperty::Register( L"MatrixTransform", MARKUP_TYPE(CXTPMarkupMatrixTransform), MARKUP_TYPE(CXTPMarkupRenderTransform), new CXTPMarkupPropertyMetadata(NULL, CXTPMarkupPropertyMetadata::flagAffectsRender)); } void CXTPMarkupRenderTransform::SetContentObject(CXTPMarkupBuilder* pBuilder, CXTPMarkupObject* pContent) { _ASSERTE(NULL != pBuilder); _ASSERTE(NULL != pContent); if (NULL != m_pContentProperty) { pBuilder->ThrowBuilderException( CXTPMarkupBuilder::FormatString(_T("'%ls' already has a child and cannot add ") _T("'%ls'. '%ls' can accept only one child."), (LPCTSTR)GetType()->m_lpszClassName, (LPCTSTR)pContent->GetType()->m_lpszClassName, (LPCTSTR)GetType()->m_lpszClassName)); } if (pContent->IsKindOf(MARKUP_TYPE(CXTPMarkupRotateTransform))) { SetValue(m_pPropertyRotateTransform, pContent); m_pContentProperty = m_pPropertyRotateTransform; MARKUP_ADDREF(pContent); } else if (pContent->IsKindOf(MARKUP_TYPE(CXTPMarkupScaleTransform))) { SetValue(m_pPropertyScaleTransform, pContent); m_pContentProperty = m_pPropertyScaleTransform; MARKUP_ADDREF(pContent); } else if (pContent->IsKindOf(MARKUP_TYPE(CXTPMarkupTranslateTransform))) { SetValue(m_pPropertyTranslateTransform, pContent); m_pContentProperty = m_pPropertyTranslateTransform; MARKUP_ADDREF(pContent); } else if (pContent->IsKindOf(MARKUP_TYPE(CXTPMarkupSkewTransform))) { SetValue(m_pPropertySkewTransform, pContent); m_pContentProperty = m_pPropertySkewTransform; MARKUP_ADDREF(pContent); } else if (pContent->IsKindOf(MARKUP_TYPE(CXTPMarkupMatrixTransform))) { SetValue(m_pPropertyMatrixTransform, pContent); m_pContentProperty = m_pPropertyMatrixTransform; MARKUP_ADDREF(pContent); } else { CXTPMarkupObject::SetContentObject(pBuilder, pContent); } } void CXTPMarkupRenderTransform::OnSetAsProperty(CXTPMarkupDependencyProperty* pProperty, CXTPMarkupObject* pTargetObject) { UNREFERENCED_PARAMETER(pProperty); _ASSERTE(NULL != pTargetObject); m_pTargetObject = pTargetObject; } CXTPMarkupTransform* CXTPMarkupRenderTransform::GetTransformObject() const { CXTPMarkupTransform* pTransform = NULL; if (NULL != m_pContentProperty) pTransform = MARKUP_STATICCAST(CXTPMarkupTransform, GetValue(m_pContentProperty)); return pTransform; }