| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2008, Google Inc. All rights reserved. | 2 * Copyright (c) 2008, Google Inc. All rights reserved. |
| 3 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> | 3 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> |
| 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions are | 7 * modification, are permitted provided that the following conditions are |
| 8 * met: | 8 * met: |
| 9 * | 9 * |
| 10 * * Redistributions of source code must retain the above copyright | 10 * * Redistributions of source code must retain the above copyright |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 return false; | 177 return false; |
| 178 blink::WebGraphicsContext3D* context3D = provider->context3d(); | 178 blink::WebGraphicsContext3D* context3D = provider->context3d(); |
| 179 Platform3DObject tex = m_surface->getBackingTexture(); | 179 Platform3DObject tex = m_surface->getBackingTexture(); |
| 180 if (!context3D || !tex) | 180 if (!context3D || !tex) |
| 181 return false; | 181 return false; |
| 182 m_surface->invalidateCachedBitmap(); | 182 m_surface->invalidateCachedBitmap(); |
| 183 return drawingBuffer->copyToPlatformTexture(context3D, tex, GL_RGBA, | 183 return drawingBuffer->copyToPlatformTexture(context3D, tex, GL_RGBA, |
| 184 GL_UNSIGNED_BYTE, 0, true, false); | 184 GL_UNSIGNED_BYTE, 0, true, false); |
| 185 } | 185 } |
| 186 | 186 |
| 187 void ImageBuffer::draw(GraphicsContext* context, const FloatRect& destRect, cons
t FloatRect& srcRect, | 187 void ImageBuffer::draw(GraphicsContext* context, const FloatRect& destRect, cons
t FloatRect& srcRect, CompositeOperator op, blink::WebBlendMode blendMode, Inter
polationQuality interpolationQuality) |
| 188 CompositeOperator op, blink::WebBlendMode blendMode, bool useLowQualityScale
) | |
| 189 { | 188 { |
| 190 if (!isValid()) | 189 if (!isValid()) |
| 191 return; | 190 return; |
| 192 | 191 |
| 193 SkBitmap bitmap = m_surface->bitmap(); | 192 SkBitmap bitmap = m_surface->bitmap(); |
| 194 // For ImageBufferSurface that enables cachedBitmap, Use the cached Bitmap f
or CPU side usage | 193 // For ImageBufferSurface that enables cachedBitmap, Use the cached Bitmap f
or CPU side usage |
| 195 // if it is available, otherwise generate and use it. | 194 // if it is available, otherwise generate and use it. |
| 196 if (!context->isAccelerated() && m_surface->isAccelerated() && m_surface->ca
chedBitmapEnabled() && m_surface->isValid()) { | 195 if (!context->isAccelerated() && m_surface->isAccelerated() && m_surface->ca
chedBitmapEnabled() && m_surface->isValid()) { |
| 197 m_surface->updateCachedBitmapIfNeeded(); | 196 m_surface->updateCachedBitmapIfNeeded(); |
| 198 bitmap = m_surface->cachedBitmap(); | 197 bitmap = m_surface->cachedBitmap(); |
| 199 } | 198 } |
| 200 | 199 |
| 201 RefPtr<Image> image = BitmapImage::create(NativeImageSkia::create(drawNeedsC
opy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap)); | 200 RefPtr<Image> image = BitmapImage::create(NativeImageSkia::create(drawNeedsC
opy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap)); |
| 202 | 201 |
| 203 context->drawImage(image.get(), destRect, srcRect, op, blendMode, DoNotRespe
ctImageOrientation, useLowQualityScale); | 202 context->drawImage(image.get(), destRect, srcRect, op, blendMode, DoNotRespe
ctImageOrientation, interpolationQuality); |
| 204 } | 203 } |
| 205 | 204 |
| 206 void ImageBuffer::flush() | 205 void ImageBuffer::flush() |
| 207 { | 206 { |
| 208 if (m_surface->canvas()) { | 207 if (m_surface->canvas()) { |
| 209 m_surface->canvas()->flush(); | 208 m_surface->canvas()->flush(); |
| 210 } | 209 } |
| 211 } | 210 } |
| 212 | 211 |
| 213 void ImageBuffer::drawPattern(GraphicsContext* context, const FloatRect& srcRect
, const FloatSize& scale, | 212 void ImageBuffer::drawPattern(GraphicsContext* context, const FloatRect& srcRect
, const FloatSize& scale, |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 if (!encodeImage(imageData, mimeType, quality, &encodedImage)) | 382 if (!encodeImage(imageData, mimeType, quality, &encodedImage)) |
| 384 return "data:,"; | 383 return "data:,"; |
| 385 | 384 |
| 386 Vector<char> base64Data; | 385 Vector<char> base64Data; |
| 387 base64Encode(encodedImage, base64Data); | 386 base64Encode(encodedImage, base64Data); |
| 388 | 387 |
| 389 return "data:" + mimeType + ";base64," + base64Data; | 388 return "data:" + mimeType + ";base64," + base64Data; |
| 390 } | 389 } |
| 391 | 390 |
| 392 } // namespace WebCore | 391 } // namespace WebCore |
| OLD | NEW |