Exemplo n.º 1
0
void ISceneManager2D::ReleaseAllBuffers()
{
	SAFE_COM_RELEASE(this->renderStateBlock);
	SAFE_COM_RELEASE(this->vertexBuffer);
	SAFE_COM_RELEASE(this->linePrimitiveVertexBuffer);
	SAFE_COM_RELEASE(this->pointPrimitiveVertexBuffer);
	SAFE_COM_RELEASE(this->indexBuffer);
}
Exemplo n.º 2
0
    //helper function to append a sub node child to a documentfragment with given name and value:
	HRESULT AddSubNodeToDocumentFragment(
		     IXMLDOMDocument* pDOM, 
		     const wchar_t* wszSubNodeName, 
		     const wchar_t* wszSubNodeValue,
		     IXMLDOMDocumentFragment* pdf	// Release is completed outside
		)
	{
		BSTR bstr = NULL;
		IXMLDOMElement* peSub = NULL;

        HRESULT hr = S_OK;
		do
		{
			bstr = SysAllocString(wszSubNodeName);
			HR_SUCCESSCALL( pDOM->createElement(bstr, &peSub), hr );
            SAFE_BSTR_RELEASE(bstr);
			
			bstr=SysAllocString(wszSubNodeValue);
			HR_SUCCESSCALL( peSub->put_text(bstr), hr );
			HR_SUCCESSCALL( AppendChildToParent(peSub, pdf), hr );
		}while(0);

        //release the com object
        SAFE_COM_RELEASE(peSub);
        //release the bstr
        SAFE_BSTR_RELEASE(bstr);

		return hr;
	}
Exemplo n.º 3
0
    //helper function to append a whitespace text node to a specified element
	HRESULT AddWhiteSpaceToNode(IXMLDOMDocument* pDom, BSTR bstrWs, IXMLDOMNode *pNode)
	{
		IXMLDOMText *pws=NULL;
		IXMLDOMNode *pBuf=NULL;

        HRESULT hr = S_OK;
		do
		{
			HR_SUCCESSCALL( pDom->createTextNode(bstrWs,&pws), hr );
			HR_SUCCESSCALL( pNode->appendChild(pws,&pBuf), hr );

		}while(0);

		SAFE_COM_RELEASE(pws);
		SAFE_COM_RELEASE(pBuf);

		return hr;
	}
Exemplo n.º 4
0
    //helper function to append a child to a parent node:
	HRESULT AppendChildToParent(IXMLDOMNode *pChild, IXMLDOMNode *pParent)
	{
		 IXMLDOMNode *pNode=NULL;
         if(  pParent->appendChild(pChild, &pNode) != S_OK )
              return E_FAIL;
         else {
			 SAFE_COM_RELEASE(pNode);
   			 return S_OK;
         }
    }
Exemplo n.º 5
0
    //put xml file element function
	HRESULT PutXMLFileHead(IXMLDOMDocument* pDOM, IXMLDOMElement** ppRoot)
	{
		  IXMLDOMProcessingInstruction *pi = NULL;
          HRESULT hr = S_OK;
		  do
		  {
			    //create a processing instruction element.
			    _bstr_t header = L"xml";
			    _bstr_t content = L"version='1.0' encoding='utf-8'";
			    HR_SUCCESSCALL( pDOM->createProcessingInstruction(header,content, &pi), hr );
                HR_SUCCESSCALL( AppendChildToParent(pi, pDOM), hr );

			    //create the root element.
			    _bstr_t root = L"VideoStrcuture";
			    HR_SUCCESSCALL( pDOM->createElement(root, ppRoot), hr );
			    HR_SUCCESSCALL( AppendChildToParent(*ppRoot, pDOM), hr );
		
		}while(0);

        //release the com object
		SAFE_COM_RELEASE(pi);

		return hr;
	}    
Exemplo n.º 6
0
	//add Id array to a document fragment node
	HRESULT AddIdsNode(
		    IXMLDOMDocument* pDOM, 
		    BSTR indentBstr,
		    const wchar_t* wszIdsNodeName, 
		    const wchar_t* wszIdsNodeAttribute,
		    const wchar_t* wszIdNode,
		    const std::vector<int>& ids, 
		    IXMLDOMDocumentFragment* pdf	// Release is completed outside
		)
	{
		VARIANT var;
		BSTR bstr = NULL;
		BSTR bstr_wst = SysAllocString(L"\t");
		IXMLDOMElement* pe = NULL;
		IXMLDOMDocumentFragment* pdfSub = NULL;
		IXMLDOMAttribute *pa = NULL;
		IXMLDOMAttribute *pa1 = NULL;

        HRESULT hr = S_OK;
		do
		{
			//create a Node to hold ids.
			bstr = SysAllocString(wszIdsNodeName);
			HR_SUCCESSCALL( pDOM->createElement(bstr, &pe), hr );
			SAFE_BSTR_RELEASE(bstr);

			//create a attribute for the <wszIdsNodeName> element, and
			//assign the element num as the attribute value.
			
			//get ids num string
			size_t idsNum = ids.size();
			const int radix = 10;
			const size_t sizeOfstr = 30;
			wchar_t wszIdsNumString[sizeOfstr] = {0};
			_ultow_s(static_cast<unsigned long>(idsNum), wszIdsNumString, sizeOfstr, radix);

			//put num string into attribute
			bstr = SysAllocString(wszIdsNodeAttribute);
			VariantInit(&var);
			V_BSTR(&var) = SysAllocString(wszIdsNumString);
			V_VT(&var) = VT_BSTR;

			HR_SUCCESSCALL( pDOM->createAttribute(bstr, &pa), hr );
			HR_SUCCESSCALL( pa->put_value(var), hr );
			HR_SUCCESSCALL( pe->setAttributeNode(pa, &pa1), hr );

			//create a document fragment to hold ids sub-elements.
			HR_SUCCESSCALL( pDOM->createDocumentFragment(&pdfSub), hr );

			//add ids to pdfSub
			for( size_t i=0; i < idsNum; ++i )
			{
				 int id = ids[i];
				 WCHAR wszIdString[sizeOfstr] = {0};
				 _itow_s(id, wszIdString, sizeOfstr, radix);

				 //add white space before <id>
				 HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, indentBstr, pdfSub), hr );
				 HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, bstr_wst, pdfSub), hr );
				 HR_SUCCESSCALL( AddSubNodeToDocumentFragment(pDOM, wszIdNode, wszIdString, pdfSub), hr );
			}

            //test whether it is successful in "add ids to pdfSub"
			HR_SUCCESSCALL( hr, hr );

			//add ids array to document fragment node
			HR_SUCCESSCALL( AppendChildToParent(pdfSub, pe), hr );
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, indentBstr, pe), hr );
			HR_SUCCESSCALL( AppendChildToParent(pe, pdf), hr );
			
		}while(0);

        //release the com objects
		SAFE_COM_RELEASE(pa1);
		SAFE_COM_RELEASE(pa);
		SAFE_COM_RELEASE(pdfSub);
		SAFE_COM_RELEASE(pe);

		//release the bstr and variant
        SAFE_BSTR_RELEASE(bstr);
        SAFE_BSTR_RELEASE(bstr_wst);
        VariantClear(&var);

		return hr;
	}
Exemplo n.º 7
0
    //add boundary to shot or sub shot fragment node
    HRESULT AddBoundaryNodeToDocumentFragment(
		   IXMLDOMDocument* pDOM, 
		   BSTR indentBstr,
		   IXMLDOMDocumentFragment* pdf,   // Release is completed outside
		   unsigned int bgnFrameId, unsigned int endFrameId, 
		   __int64 bgnFrameTime, __int64 endFrameTime)
	{
		BSTR bstr = NULL;
		BSTR bstr_wst = SysAllocString(L"\t");
		IXMLDOMElement* pe = NULL;
		IXMLDOMDocumentFragment* pdfSub = NULL;

        HRESULT hr = S_OK;
		do
		{
			//create a Node to hold boundary.
			bstr = SysAllocString(L"Boundary");
			HR_SUCCESSCALL( pDOM->createElement(bstr, &pe), hr );
			SAFE_BSTR_RELEASE(bstr);

			//create a document fragment to hold boundary's sub-elements.
			HR_SUCCESSCALL( pDOM->createDocumentFragment(&pdfSub), hr );

			//add sub elements to pdfSub

			//add white space before <BgnFrameId>
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, indentBstr, pdfSub), hr );
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, bstr_wst, pdfSub), hr );

			const int radix = 10;
			const size_t sizeOfstr = 30;
			wchar_t wszBgnFrmIdString[sizeOfstr] = {0};
			_itow_s(bgnFrameId, wszBgnFrmIdString, sizeOfstr, radix);
			HR_SUCCESSCALL( AddSubNodeToDocumentFragment(pDOM, L"BgnFrameId", wszBgnFrmIdString, pdfSub), hr );

			//<EndFrameId>
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, indentBstr, pdfSub), hr );
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, bstr_wst, pdfSub), hr );

			wchar_t wszEndFrmIdString[sizeOfstr] = {0};
			_itow_s(endFrameId, wszEndFrmIdString, sizeOfstr, radix);
			HR_SUCCESSCALL( AddSubNodeToDocumentFragment(pDOM, L"EndFrameId", wszEndFrmIdString, pdfSub), hr );

			//<BgnFrameTime>
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, indentBstr, pdfSub), hr );
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, bstr_wst, pdfSub), hr );

            //begintime
			wchar_t wszBgnFrmTimeString[sizeOfstr*2] = {0};
			_i64tow_s(bgnFrameTime, wszBgnFrmTimeString, sizeOfstr*2, 10);
			HR_SUCCESSCALL( AddSubNodeToDocumentFragment(pDOM, L"BgnFrameTime", wszBgnFrmTimeString, pdfSub), hr );

			//<EndFrameId>
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, indentBstr, pdfSub), hr );
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, bstr_wst, pdfSub), hr );

            //endtime
			wchar_t wszEndFrmTimeString[sizeOfstr*2] = {0};
			_i64tow_s(endFrameTime, wszEndFrmTimeString, sizeOfstr*2, 10);
			HR_SUCCESSCALL( AddSubNodeToDocumentFragment(pDOM, L"EndFrameTime", wszEndFrmTimeString, pdfSub), hr );

			//add Boundary to document fragment node
			HR_SUCCESSCALL( AppendChildToParent(pdfSub, pe), hr );
			HR_SUCCESSCALL( AddWhiteSpaceToNode(pDOM, indentBstr, pe), hr );
			HR_SUCCESSCALL( AppendChildToParent(pe, pdf), hr );
						
		}while(0);

		//release com object
		SAFE_COM_RELEASE(pdfSub);
		SAFE_COM_RELEASE(pe);
        //release bstr
        SAFE_BSTR_RELEASE(bstr);
        SAFE_BSTR_RELEASE(bstr_wst);
		
		return hr;
	}