/** * @file XTPMarkupGridLength.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 #include "Markup/XTPMarkupObject.h" #include "Markup/XTPMarkupContext.h" #include "Markup/XTPMarkupString.h" #include "Markup/Controls/XTPMarkupGridLength.h" #include "Markup/XTPMarkupBuilder.h" #include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" #ifdef _DEBUG # undef THIS_FILE static char THIS_FILE[] = __FILE__; # define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////////// // CXTPMarkupGridLength IMPLEMENT_MARKUPCLASS(NULL, CXTPMarkupGridLength, CXTPMarkupObject); void CXTPMarkupGridLength::RegisterMarkupClass() { } CXTPMarkupGridLength::CXTPMarkupGridLength(double nValue, CXTPMarkupGridLength::GridUnitType type) : CXTPMarkupObject(flagNoCom) { m_nValue = nValue; m_type = type; } CXTPMarkupObject* CXTPMarkupGridLength::ConvertFrom(CXTPMarkupBuilder* pBuilder, CXTPMarkupObject* pObject) const { _ASSERTE(NULL != pBuilder); _ASSERTE(NULL != pObject); if (IsStringObject(pObject)) { LPCWSTR lpszValue = *((CXTPMarkupString*)pObject); int nLength = ((CXTPMarkupString*)pObject)->GetLength(); if (nLength < 1) return NULL; if (nLength == 4 && _wcsicmp(lpszValue, L"Auto") == 0) { return new CXTPMarkupGridLength(1, unitTypeAuto); } double dValue = 0; if (lpszValue[nLength - 1] == '*') { if (nLength == 1) return new CXTPMarkupGridLength(1, unitTypeStar); if (!CXTPMarkupBuilder::ConvertDouble(lpszValue, dValue, '*')) return NULL; return new CXTPMarkupGridLength(pBuilder->GetMarkupContext()->ScaleX(dValue), unitTypeStar); } if (!CXTPMarkupBuilder::ConvertDouble(lpszValue, dValue)) return NULL; return new CXTPMarkupGridLength(pBuilder->GetMarkupContext()->ScaleX(dValue)); } return NULL; }