CXTPMarkupObject* CXTPMarkupGridLength::ConvertFrom(CXTPMarkupBuilder* /*pBuilder*/, CXTPMarkupObject* pObject) const { 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(dValue, unitTypeStar); } if (!CXTPMarkupBuilder::ConvertDouble(lpszValue, dValue)) return NULL; return new CXTPMarkupGridLength(dValue); } return NULL; }
CXTPMarkupObject* CXTPMarkupKeyboardNavigation::ConvertKeyboardNavigationMode(CXTPMarkupBuilder* /*pBuilder*/, CXTPMarkupObject* pObject) { if (IsStringObject(pObject)) { LPCWSTR lpszValue = *((CXTPMarkupString*)pObject); int nLength = ((CXTPMarkupString*)pObject)->GetLength(); if (nLength == 8 && _wcsicmp(lpszValue, L"Continue") == 0) return CXTPMarkupEnum::CreateValue(xtpMarkupKeyboardNavigationContinue); if (nLength == 4 && _wcsicmp(lpszValue, L"Once") == 0) return CXTPMarkupEnum::CreateValue(xtpMarkupKeyboardNavigationOnce); if (nLength == 5 && _wcsicmp(lpszValue, L"Cycle") == 0) return CXTPMarkupEnum::CreateValue(xtpMarkupKeyboardNavigationCycle); if (nLength == 4 && _wcsicmp(lpszValue, L"None") == 0) return CXTPMarkupEnum::CreateValue(xtpMarkupKeyboardNavigationNone); if (nLength == 9 && _wcsicmp(lpszValue, L"Contained") == 0) return CXTPMarkupEnum::CreateValue(xtpMarkupKeyboardNavigationContained); if (nLength == 5 && _wcsicmp(lpszValue, L"Local") == 0) return CXTPMarkupEnum::CreateValue(xtpMarkupKeyboardNavigationLocal); } return NULL; }
CXTPMarkupObject* CXTPMarkupThickness::ConvertFrom(CXTPMarkupBuilder *pBuilder, CXTPMarkupObject* pObject) const { UNREFERENCED_PARAMETER(pBuilder); if (IsStringObject(pObject)) { LPCWSTR lpszValue = *((CXTPMarkupString*)pObject); int nLength = ((CXTPMarkupString*)pObject)->GetLength(); if (wcschr(lpszValue, L',') == NULL) { int nThickness = _wtoi(lpszValue); if ((nLength > 2) && _wcsicmp(lpszValue + nLength - 2, L"pt") == 0) { return new CXTPMarkupThickness(MulDiv(nThickness, 96, 72)); } if ((nLength > 2) && _wcsicmp(lpszValue + nLength - 2, L"in") == 0) { return new CXTPMarkupThickness(nThickness * 96); } if ((nLength > 2) && _wcsicmp(lpszValue + nLength - 2, L"cm") == 0) { return new CXTPMarkupThickness(int((double)nThickness * 37.79528)); } if ((nLength > 2) && _wcsicmp(lpszValue + nLength - 2, L"mm") == 0) { return new CXTPMarkupThickness(int((double)nThickness * 3.779528)); } return new CXTPMarkupThickness(nThickness); } else { if ((nLength > 2) && _wcsicmp(lpszValue + nLength - 2, L"pt") == 0) { int left = 0, top = 0, right = 0, bottom = 0; if ( WSCANF_S(lpszValue, L"%ipt, %ipt, %ipt, %ipt", &left, &top, &right, &bottom) != 4) return NULL; return new CXTPMarkupThickness(MulDiv(left, 96, 72), MulDiv(top, 96, 72), MulDiv(right, 96, 72), MulDiv(bottom, 96, 72)); } if ((nLength > 2) && _wcsicmp(lpszValue + nLength - 2, L"in") == 0) { int left = 0, top = 0, right = 0, bottom = 0; if ( WSCANF_S(lpszValue, L"%iin, %iin, %iin, %iin", &left, &top, &right, &bottom) != 4) return NULL; return new CXTPMarkupThickness(left * 96, top * 96, right * 96, bottom * 96); } if ((nLength > 2) && _wcsicmp(lpszValue + nLength - 2, L"cm") == 0) { int left = 0, top = 0, right = 0, bottom = 0; if ( WSCANF_S(lpszValue, L"%icm, %icm, %icm, %icm", &left, &top, &right, &bottom) != 4) return NULL; return new CXTPMarkupThickness(int((double)left * 37.79528), int((double)top * 37.79528), int((double)right * 37.79528), int((double)bottom * 37.79528)); } if ((nLength > 2) && _wcsicmp(lpszValue + nLength - 2, L"mm") == 0) { int left = 0, top = 0, right = 0, bottom = 0; if ( WSCANF_S(lpszValue, L"%imm, %imm, %imm, %imm", &left, &top, &right, &bottom) != 4) return NULL; return new CXTPMarkupThickness(int((double)left * 3.779528), int((double)top * 3.779528), int((double)right * 3.779528), int((double)bottom * 3.779528)); } int left = 0, top = 0, right = 0, bottom = 0; if ( WSCANF_S(lpszValue, L"%i, %i, %i, %i", &left, &top, &right, &bottom) != 4) return NULL; return new CXTPMarkupThickness(left, top, right, bottom); } } return NULL; }