Пример #1
0
ErrorCode HTMLIFrameElement::Load()
{
	ASSERT(0);
	return 0;
#if 0

	ASSERT(m_pFrameContent);

	sysstring src = get_src();

	if (src.Length())
	{
		TCHAR result[2048];
		{
			sysstring documentUrl = m_ownerDocument->get_url();

			DWORD resultLen = sizeof(result);
			InternetCombineUrl(W2A(documentUrl), W2A(src), result, &resultLen, 0);
		}

		CComBSTR url = A2W(result);

		return m_pFrameContent->LoadSRC(CComQIPtr<IHlinkSite>(m_ownerDocument), url);
	}
	else
		return S_FALSE;
#endif
}
Пример #2
0
ErrorCode SVGImageElement::Load()
{
	if (!m_bTriedLoaded)
	{
		m_bTriedLoaded = true;

		ASSERT(m_document == NULL);
		ASSERT(m_pSVGDocumentView == NULL);
		ASSERT(m_pImage == NULL);

		String src = href_attr()->m_animVal;//GetAnimVal()->m_value;//getStringValue();//m_animated->m_animVal->m_value;
		if (src)
		{
#if 0
			if (!wcsncmp(src, L"data:", 5))
			{
				// Try to load it as raster bitmap
				m_document.Release();
				m_pImage = g_Images.OpenImage(src);
			}
			else
#endif
			{
				WCHAR result[2048];
				{
					String documentUrl = m_ownerDocument->get_url();

					DWORD resultLen = sizeof(result);
					InternetCombineUrl(CStringw(documentUrl).c_str(), CStringw(src).c_str(), result, &resultLen, 0);
				}

				/*
				m_document.CoCreateInstance(CLSID_LSVGDocument);
				VARIANT_BOOL bSVGDocument;
				m_document->load(_variant_t(result), &bSVGDocument);
				if (!bSVGDocument)
					*/
				{
					// Try to load it as raster bitmap
				//	m_document.Release();
				//	m_pImage = g_Images.OpenImage(new StringW(string_copy(result)));

					Net::UrlBinding binding;
					_Ptr<IO::Stream> stream = binding.BindToObject(String(string_copy(result)), NULL);

					//Imaging::BitmapLoader loader;
				//	loader.Load(stream);

					m_pImage = new CImage;
					m_pImage->m_bitmap = Graphics::Bitmap::FromStream(stream);
				}

				return 0;
			}
		}
	}

	return Error;
}
Пример #3
0
ErrorCode SVGCursorElement::Load()
{
	ASSERT(0);
#if 0
	USES_CONVERSION;

	if (!m_bTriedLoaded)
	{
		m_bTriedLoaded = true;

//		ATLASSERT(m_document == NULL);
//		ATLASSERT(m_pSVGDocumentView == NULL);
		ASSERT(m_pImage == NULL);

		sysstring src = m_href->m_animated->m_animVal->m_value;
		if (src.length())
		{
			TCHAR result[2048];
			{
				sysstring documentUrl = m_ownerDocument->get_url();

				sysstring baseUrl = documentUrl;

				DWORD resultLen = sizeof(result);
				InternetCombineUrl(baseUrl, W2A(src), result, &resultLen, 0);
			}

			/*
			m_document.CoCreateInstance(CLSID_LSVGDocument);
			bool bSVGDocument;
			m_document->load(_bstr_t(result), &bSVGDocument);
			if (!bSVGDocument)
			*/
			{
				// Try to load it as raster bitmap
			//	m_document.Release();
				m_pImage = g_Images.OpenImage(result);
			}

			return S_OK;
		}
	}
#endif
	return Error;
}
Пример #4
0
HRESULT STDMETHODCALLTYPE WebViewProtocol::CombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl,
    DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult,
    DWORD dwReserved)
{
    if (pwzBaseUrl == NULL || pwzRelativeUrl == NULL || pwzResult == NULL || pcchResult == NULL)
        return E_POINTER;

    *pcchResult = cchResult;
    BOOL ret = InternetCombineUrl(pwzBaseUrl, pwzRelativeUrl, pwzResult, pcchResult, ICU_NO_ENCODE | ICU_NO_META);
    if (!ret)
    {
        DWORD err = GetLastError();
        if (err == ERROR_INSUFFICIENT_BUFFER)
            return S_FALSE; // Buffer too small
        else
            return E_FAIL;
    }

    return S_OK;
}
SVGElementDefElement* SVGExtensionDefsElement::GetElementDef(StringIn namespaceURI, StringIn name)
{
	ASSERT(0);
#if 0
	if (pVal == NULL) return E_POINTER;
	*pVal = NULL;

	CComBSTR namespaceAttr;
	getAttribute(L"namespace", &namespaceAttr);
	if (!cmpbstr(namespaceAttr, namespaceURI))
	{
		for (int i = 0; i < m_childNodes->m_items.GetSize(); i++)
		{
			CComQIPtr<ILSVGElementDefElement> elementDef = m_childNodes->m_items[i];
			if (elementDef)
			{
				CComBSTR nameAttr;
				elementDef->getAttribute(L"name", &nameAttr);

				if (!cmpbstr(nameAttr, name))
				{
					*pVal = elementDef;
					(*pVal)->AddRef();
					return S_OK;
				}
			}
		}
	}

#if 0
	{
		BSTR clsidstr;  getAttribute(L"classid", &clsidstr);
		if (!clsidstr) return;

	// TODO, allow white-space

		if (!wcsnicmp(clsidstr, L"clsid:", 6))
		{
			_bstr_t classid = _bstr_t(clsidstr + lstrlen("clsid:"));

			if (((BSTR)classid)[0] != L'{')	// }
			{
				classid = L"{" + classid + L"}";
			}

			CLSID	clsid;
			HRESULT hr = CLSIDFromString(classid, &clsid);

			m_factory.CoCreateInstance(clsid);
		}
	}
#endif

	CComBSTR href;
	getAttributeNS(L"http://www.w3.org/1999/xlink", L"href", &href);

	if (href.Length())
	{
		if (m_hrefDocument == NULL)	// Loading for first time
		{
			WCHAR url[4096];
			wcscpy(url, href);

			WCHAR* id = NULL;
			int i = href.Length()-1;
			while (i >= 0)
			{
				if (url[i] == L'#')
				{
					url[i] = 0;
					id = &url[i+1];
					break;
				}
				i--;
			}

			TCHAR result[2048];
			{
				CComBSTR documentUrl;
				m_ownerDocument->get_url(&documentUrl);

				DWORD resultLen = sizeof(result);
				InternetCombineUrl(_bstr_t(documentUrl), _bstr_t(url), result, &resultLen, 0);
			}

			m_hrefDocument.CoCreateInstance(CLSID_LDOMDocument);
			if (m_hrefDocument)
			{
				bool bsuccess;
				m_hrefDocument->load(_variant_t(result), &bsuccess);

				{
					CScriptSite* pScriptSite = CComQIPtr<CLDOMDocumentImplImpl>(m_hrefDocument)->m_pScriptSite;

					HRESULT hr;

					// Start running scripts
					hr = pScriptSite->m_activeScript->SetScriptState(SCRIPTSTATE_STARTED);
					ASSERT(SUCCEEDED(hr));

				// force the engine to connect any outbound interfaces to the 
				// host's objects
					hr = pScriptSite->m_activeScript->SetScriptState(SCRIPTSTATE_CONNECTED);
					ASSERT(SUCCEEDED(hr));
				}

				if (id)
				{
					CComPtr<ILDOMElement> element;
					m_hrefDocument->getElementById(id, &element);

					m_extensionDefsElement = CComQIPtr<ILSVGExtensionDefsElement>(element);
				}
			}
		}

		if (m_extensionDefsElement)
		{
			return static_cast<CLSVGExtensionDefsElement*>(m_extensionDefsElement.p)->GetElementDef(namespaceURI, name, pVal);
		}
	}
#endif
	return NULL;
}
Пример #6
0
void MovieTexture::CreateTexture(Graphics::RenderTarget* renderTarget)
{
	if (m_status == 0)
	{
		m_status = 1;

		if (m_url->get_size() > 0)
		{
			auto url0 = m_url->get1Value(0);

#if 0
			TCHAR fullurl[512];
			{
				DWORD resultLen = sizeof(fullurl);
				InternetCombineUrl(W2A(m_pScene->m_url), W2A(url0), fullurl, &resultLen, 0);
			}

			ErrorCode hr = LoadURL(_bstr_t(fullurl));
			if (SUCCEEDED(hr))
			{

			/*
			CComPtr<IStream> stream;
			ErrorCode hr = URLOpenBlockingStream(0, _bstr_t(fullurl), &stream, 0, 0);
			LDraw::Bitmap* pBitmap = new LDraw::Bitmap(stream);
			if (pBitmap->GetLastStatus() == LDraw::Ok)
			{
				LDraw::BitmapData bitmapData;
				if (pBitmap->LockBits(
					&LDraw::Rect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()),
					LDraw::ImageLockModeRead,
					PixelFormat32bppARGB, &bitmapData) == 0)
				{
				}
			}
				*/

				glGenTextures(1, &m_texName);
				ASSERT(glGetError() == GL_NO_ERROR);

				glBindTexture(GL_TEXTURE_2D, m_texName);
				ASSERT(glGetError() == GL_NO_ERROR);

				glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, (m_repeatS->m_value)? GL_REPEAT : GL_CLAMP);
				ASSERT(glGetError() == GL_NO_ERROR);

				glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, (m_repeatT->m_value)? GL_REPEAT : GL_CLAMP);
				ASSERT(glGetError() == GL_NO_ERROR);

				glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
				ASSERT(glGetError() == GL_NO_ERROR);
				glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
				ASSERT(glGetError() == GL_NO_ERROR);

				LVIDEOINFOHEADER2* vih = ((LVIDEOINFOHEADER2*)m_pVideoFilter->m_pInput->m_mt->pbFormat);

				int width = vih->bmiHeader.biWidth;
				int height = vih->bmiHeader.biHeight;

				m_texwidth = 1;
				while (m_texwidth < width) m_texwidth <<= 1;

				m_texheight = 1;
				while (m_texheight < height) m_texheight <<= 1;

				//BYTE* p = new BYTE[m_texwidth*m_texheight*3];

				glTexImage2D(GL_TEXTURE_2D, 0, 4, m_texwidth, m_texheight, 0/*border*/, GL_RGB, GL_UNSIGNED_BYTE, NULL/*bitmapData.Scan0*/);
				ASSERT(glGetError() == GL_NO_ERROR);

				//	pBitmap->UnlockBits(&bitmapData);

				//delete pBitmap;

				m_filterGraph->Run();
			}
#endif
		}
	}
}
Пример #7
0
char * HTParse (const char *aName, const char *relatedName, int wanted)
{
  int ret;
  char *result, *abs, *rel;
  DWORD len;
  BOOL bAgain = FALSE; 
  
#if 0
  if (aName && *aName) {
      abs = xmalloc(strlen(aName) + 2);
      strcpy(abs, aName);
      strcat(abs, "/");
  }
  else {
    /* FIXME: what does mean a null base url ? */
    abs = xstrdup("");
  }
#else
  abs = xstrdup(aName ? aName : "");
#endif
  rel = (relatedName ? relatedName : "");

  len = strlen(abs) + strlen(rel) + 45;
  result = xmalloc(len*sizeof(char));

#if 0
  fprintf(stderr, "HTParse called with aName = %s and relatedName = %s\n",
	  aName, relatedName);
#endif
  do {
    if (*rel) {
      ret = InternetCombineUrl(abs, rel, result, &len, ICU_BROWSER_MODE);
    }
    else {
      ret = InternetCanonicalizeUrl(abs, result, &len, ICU_BROWSER_MODE);
    }
    bAgain = FALSE;
    if (!ret) {
      switch (GetLastError()) {
      case ERROR_INSUFFICIENT_BUFFER:
#if 0
	fprintf(stderr, "InternetCombineUrl: buffer was not long enough (needed %d)\n", len+1);
#endif
	result = xrealloc(result, len+1);
	bAgain = TRUE;
	break;
      case ERROR_BAD_PATHNAME:
	fprintf(stderr, "InternetCombineUrl failed, one of the path names is bad:\n\t%s\n\t%s\n",
		aName, relatedName);
	break;
      case ERROR_INTERNET_INVALID_URL:
	fprintf(stderr, "InternetCombineUrl failed, url %s is malformed.\n", aName);
	break;
      case ERROR_INVALID_PARAMETER:
	fprintf(stderr, "InternetCombineUrl failed with `invalid parameter'.\n");
	break;	
      default:
	break;
      }
    }
  } while (bAgain);
  
  /* abs has always been malloc'ed */
  if (abs)
    free(abs);

  if (!ret) {
    /* FIXME: Try this poor thing ! */
    sprintf(result, "%s/%s", aName, relatedName);
  }
  
#if 0
  fprintf(stderr, "HTParse: result is %s\n", result);
#endif
  return result;    
}
Пример #8
0
void CASXMLSchemaModel::IncludeSchema(Element* mergeDocumentElement)
{
//	CComPtr<ILDOMDocument> ownerDocument;
//	mergeDocumentElement->get_ownerDocument(&ownerDocument);

	Node* child = mergeDocumentElement->get_firstChild();
	while (child != NULL)
	{
		Node* nextSibling = child->get_nextSibling();

		Element* element = dynamic_cast<Element*>(child);
		if (element)
		{
			String tagName = element->get_tagName();

			if (tagName == L"include")
			{
				ASSERT(0);
#if 0
				CComObject<CASXMLInclude>* pEl;
				CComObject<CASXMLInclude>::CreateInstance(&pEl);
				if (pEl)
				{
					pEl->AddRef();
					pEl->m_pSchema = this;
					pEl->m_element = element;

					CComObject<CASXMLSchemaModel>::CreateInstance(&pEl->m_asModel);
					if (pEl->m_asModel)
					{
						pEl->m_asModel->AddRef();

						m_globalElements->m_items.Add(pEl);

						CComBSTR schemaLocation;
						element->getAttribute(L"schemaLocation", &schemaLocation);

						TCHAR absSchemaLocation[2048];
						{
							CComBSTR documentUrl;
							ownerDocument->get_url(&documentUrl);

							_bstr_t baseUrl = documentUrl;

							DWORD resultLen = sizeof(absSchemaLocation);
							InternetCombineUrl(baseUrl, _bstr_t(schemaLocation), absSchemaLocation, &resultLen, 0);
						}

						bool bloadedSchema;
						pEl->m_asModel->m_xmlDocument.CoCreateInstance(CLSID_LDOMDocument);
						pEl->m_asModel->m_xmlDocument->load(_variant_t(absSchemaLocation), &bloadedSchema);
						if (bloadedSchema)
						{
							CComPtr<ILDOMElement> mergeDocumentElement;
							pEl->m_asModel->m_xmlDocument->get_documentElement(&mergeDocumentElement);
							if (mergeDocumentElement)
							{
								m_asModels->m_items.Add(pEl->m_asModel);

							//	AddDocument(schemadoc);
								IncludeSchema(mergeDocumentElement);	// Recurse
							}
							else
							{
								MessageBox(NULL, "Failed to include schema", "", MB_OK);
							}
						}
						else
						{
							MessageBox(NULL, "Failed to include schema", "", MB_OK);
						}
					}
				}
#endif
			}
			else
			{
				CDefinition/*CDefinition*/ * pDef = CreateDefinition(element);
				if (pDef)
				{
					pDef->BuildDefs(element);

					m_globalDefs.m_defs.Add(pDef);
					m_globalElements->m_items.Add(dynamic_cast<IASDeclaration*>(pDef));
				}
				//m_schemaElement->appendChild(element, NULL);
			}
		}

		child = nextSibling;
	}
}