#include "wtf/text/Base64.h"
#include "wtf/text/WTFString.h"
-using namespace std;
-
namespace blink {
PassOwnPtr<ImageBuffer> ImageBuffer::create(PassOwnPtr<ImageBufferSurface> surface)
bool ImageBuffer::copyToPlatformTexture(WebGraphicsContext3D* context, Platform3DObject texture, GLenum internalFormat, GLenum destType, GLint level, bool premultiplyAlpha, bool flipY)
{
- if (!m_surface->isAccelerated() || !platformLayer() || !isSurfaceValid())
+ if (!m_surface->isAccelerated() || !getBackingTexture() || !isSurfaceValid())
return false;
if (!Extensions3DUtil::canUseCopyTextureCHROMIUM(internalFormat, destType, level))
if (!provider)
return false;
WebGraphicsContext3D* sharedContext = provider->context3d();
- if (!sharedContext || !sharedContext->makeContextCurrent())
+ if (!sharedContext)
return false;
OwnPtr<WebExternalTextureMailbox> mailbox = adoptPtr(new WebExternalTextureMailbox);
mailbox->syncPoint = sharedContext->insertSyncPoint();
- if (!context->makeContextCurrent())
- return false;
-
context->waitSyncPoint(mailbox->syncPoint);
Platform3DObject sourceTexture = context->createAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox->name);
return m_surface->getBackingTexture();
}
+void ImageBuffer::didModifyBackingTexture()
+{
+ m_surface->didModifyBackingTexture();
+}
+
bool ImageBuffer::copyRenderingResultsFromDrawingBuffer(DrawingBuffer* drawingBuffer, bool fromFrontBuffer)
{
if (!drawingBuffer)
return false;
m_surface->invalidateCachedBitmap();
- return drawingBuffer->copyToPlatformTexture(context3D, tex, GL_RGBA,
+ bool result = drawingBuffer->copyToPlatformTexture(context3D, tex, GL_RGBA,
GL_UNSIGNED_BYTE, 0, true, false, fromFrontBuffer);
+
+ if (result) {
+ m_surface->didModifyBackingTexture();
+ }
+
+ return result;
}
void ImageBuffer::draw(GraphicsContext* context, const FloatRect& destRect, const FloatRect* srcPtr, CompositeOperator op, WebBlendMode blendMode)
Vector<char> encodedImage;
if (!isSurfaceValid() || !encodeImage(m_surface->bitmap(), mimeType, quality, &encodedImage))
return "data:,";
- Vector<char> base64Data;
- base64Encode(encodedImage, base64Data);
- return "data:" + mimeType + ";base64," + base64Data;
+ return "data:" + mimeType + ";base64," + base64Encode(encodedImage);
}
String ImageDataToDataURL(const ImageDataBuffer& imageData, const String& mimeType, const double* quality)
if (!encodeImage(imageData, mimeType, quality, &encodedImage))
return "data:,";
- Vector<char> base64Data;
- base64Encode(encodedImage, base64Data);
-
- return "data:" + mimeType + ";base64," + base64Data;
+ return "data:" + mimeType + ";base64," + base64Encode(encodedImage);
}
} // namespace blink