Example #1
0
// virtual
HRESULT CXMLKeyFrameValuesDlg::SetPathNodeValue(BSTR path, BSTR value)
{
	//CComPtr<IESelectedAnimationElement> selectedElement;

	long ncount;
	m_viewGroup->GetSelectedCount(&ncount);

	for (int i = 0; i < ncount; i++)
	{
		CComPtr<IESelectedElement> selectedElement;
		m_viewGroup->GetSelectedElementN(i, &selectedElement);

		CComPtr<IEElement> eElement;
		selectedElement->get_eElement(&eElement);

		CComPtr<ILDOMElement> domElement;
		eElement->get_domElement(&domElement);

	//	::SetPathNodeValue(domElement, path, value);

		CComQIPtr<IESelectedAnimationElement> selectedAnimationElement = selectedElement;

		//if (wcscmp(attributeName, 
		if (selectedAnimationElement)//TRUE)	// TODO
		{
			//CComQIPtr<ILSMILAnimationTarget> animationTarget = animationTarget;

			CComQIPtr<ILAnimateXXX> animateXXX = domElement;

			long ncount;
			selectedAnimationElement->GetSelectedKeyTimesCount(&ncount);

			for (int i = 0; i < ncount; i++)
			{
				long keyFrame;
				selectedAnimationElement->GetKeyTimeSelected(i, &keyFrame);

				CComPtr<ILSMILAttributeValue> attributeValue;
				animateXXX->GetValue(keyFrame, &attributeValue);

				attributeValue->setStringValue(value);
			}
		}
	}

	return S_OK;
}
Example #2
0
HRESULT CXMLKeyFrameValuesDlg::GetPathNodeValue(BSTR path, BSTR* pVal)
{
#if 0
	CComPtr<IESelectedAnimationElement> selectedElement;

	long ncount;
	selectedElement->GetSelectedKeyTimesCount(&ncount);

	CComBSTR value;

	for (int i = 0; i < ncount; i++)
	{
		long keyFrame;
		selectedElement->GetKeyTimeSelected(i, &keyFrame);

		ILSMILAnimationTarget* animationTarget;

		CComPtr<ILAnimateXXXElement> animateXXX;

		//CComPtr<ILSMILXMLAttr> attr;
		//animationTarget->animatableXMLAttrItemByName(L"", &attribute);

		CComPtr<ILSMILAttributeValue> attributeValue;
		animateXXX->GetValue(keyFrame, &attributeValue);

		CComBSTR value2;
		attributeValue->getStringValue(&value2);

		if (i == 0)
		{
			value = value2;
		}
		else if (wcscmp(value, value2))
		{
			value.Empty();
			break;
		}
	}
#endif

	long ncount;
	m_viewGroup->GetSelectedCount(&ncount);

	for (int i = 0; i < ncount; i++)
	{
		CComPtr<IESelectedElement> selectedElement;
		m_viewGroup->GetSelectedElementN(i, &selectedElement);

		CComPtr<IEElement> eElement;
		selectedElement->get_eElement(&eElement);

		CComPtr<ILDOMElement> domElement;
		eElement->get_domElement(&domElement);

		CComBSTR attributeName;
		domElement->getAttribute(L"attributeName", &attributeName);

		CComQIPtr<IESelectedAnimationElement> selectedAnimationElement = selectedElement;

		//if (wcscmp(attributeName, 
		if (selectedAnimationElement)//TRUE)	// TODO
		{
			//CComQIPtr<ILSMILAnimationTarget> animationTarget = animationTarget;

			CComQIPtr<ILAnimateXXX> animateXXX = domElement;

			long ncount;
			selectedAnimationElement->GetSelectedKeyTimesCount(&ncount);

			CComBSTR value;

			for (int i = 0; i < ncount; i++)
			{
				long keyFrame;
				selectedAnimationElement->GetKeyTimeSelected(i, &keyFrame);

				//CComPtr<ILSMILXMLAttr> attr;
				//animationTarget->animatableXMLAttrItemByName(L"", &attribute);

				CComPtr<ILSMILAttributeValue> attributeValue;
				animateXXX->GetValue(keyFrame, &attributeValue);

				CComBSTR value2;
				if (attributeValue)
					attributeValue->getStringValue(&value2);

				if (i == 0)
				{
					value = value2;
				}
				else if (cmpbstr(value, value2))
				{
					value.Empty();
					break;
				}
			}

			*pVal = value.Detach();
			return S_OK;
		}

/*
		CComBSTR value2;
		::GetPathNodeValue(domElement, path, &value2);

		if (i == 0)
		{
			value = value2;
		}
		else if (wcscmp(value, value2))
		{
			value.Empty();
			break;
		}
		*/
	}


	return S_OK;
}