PolycodeWebView.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "PolycodeWebView.h"
  2. PolycodeWebView::PolycodeWebView(unsigned int width, unsigned int height, String url) {
  3. this->width = width;
  4. this->height = height;
  5. char *testData = (char*)malloc(width*height*4);
  6. renderTexture = CoreServices::getInstance()->getMaterialManager()->createTexture(width, height, (char*)testData, false, Image::IMAGE_RGBA);
  7. delete testData;
  8. webCore = new Awesomium::WebCore();
  9. webView = webCore->createWebView(width, height);
  10. webView->loadURL(url.c_str());
  11. webView->focus();
  12. }
  13. PolycodeWebView::~PolycodeWebView() {
  14. webView->destroy();
  15. delete webCore;
  16. delete renderTexture;
  17. }
  18. void PolycodeWebView::Update() {
  19. webCore->update();
  20. if(webView->isDirty()) {
  21. const Awesomium::RenderBuffer* renderBuffer = webView->render();
  22. if(renderBuffer) {
  23. char *dest = (char*)malloc(width*height*4);
  24. renderBuffer->copyTo((unsigned char*)dest, width * 4, 4, true, true);
  25. Image *newImage = new Image(dest, width, height, Image::IMAGE_RGBA);
  26. renderTexture->setImageData(newImage);
  27. renderTexture->recreateFromImageData();
  28. delete newImage;
  29. delete dest;
  30. }
  31. }
  32. }
  33. Texture *PolycodeWebView::getRenderTexture() {
  34. return renderTexture;
  35. }