| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2010 Mozilla Corporation. All rights reserved. | 3 * Copyright (C) 2010 Mozilla Corporation. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| 11 * notice, this list of conditions and the following disclaimer in the | 11 * notice, this list of conditions and the following disclaimer in the |
| 12 * documentation and/or other materials provided with the distribution. | 12 * documentation and/or other materials provided with the distribution. |
| 13 * | 13 * |
| 14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY | 14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
| 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR | 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
| 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 25 */ | 25 */ |
| 26 | 26 |
| 27 #include "config.h" | 27 #include "config.h" |
| 28 #include "core/platform/graphics/GraphicsContext3D.h" | 28 #include "core/platform/graphics/GraphicsContext3D.h" |
| 29 | 29 |
| 30 #include "core/html/ImageData.h" | |
| 31 #include "core/platform/graphics/ImageObserver.h" | 30 #include "core/platform/graphics/ImageObserver.h" |
| 32 #include "core/platform/graphics/cpu/arm/GraphicsContext3DNEON.h" | 31 #include "core/platform/graphics/cpu/arm/GraphicsContext3DNEON.h" |
| 33 #include "core/platform/image-decoders/ImageDecoder.h" | 32 #include "core/platform/image-decoders/ImageDecoder.h" |
| 34 | 33 |
| 35 namespace WebCore { | 34 namespace WebCore { |
| 36 | 35 |
| 37 namespace { | 36 namespace { |
| 38 | 37 |
| 39 GraphicsContext3D::DataFormat getDataFormat(GC3Denum destinationFormat, GC3Denum
destinationType) | 38 GraphicsContext3D::DataFormat getDataFormat(GC3Denum destinationFormat, GC3Denum
destinationType) |
| 40 { | 39 { |
| (...skipping 1442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1483 data.resize(packedSize); | 1482 data.resize(packedSize); |
| 1484 | 1483 |
| 1485 if (!packPixels(reinterpret_cast<const uint8_t*>(pixels), sourceFormat, widt
h, height, sourceUnpackAlignment, format, type, alphaOp, data.data(), flipY)) | 1484 if (!packPixels(reinterpret_cast<const uint8_t*>(pixels), sourceFormat, widt
h, height, sourceUnpackAlignment, format, type, alphaOp, data.data(), flipY)) |
| 1486 return false; | 1485 return false; |
| 1487 if (ImageObserver *observer = image->imageObserver()) | 1486 if (ImageObserver *observer = image->imageObserver()) |
| 1488 observer->didDraw(image); | 1487 observer->didDraw(image); |
| 1489 return true; | 1488 return true; |
| 1490 } | 1489 } |
| 1491 | 1490 |
| 1492 bool GraphicsContext3D::extractImageData( | 1491 bool GraphicsContext3D::extractImageData( |
| 1493 ImageData* imageData, | 1492 const uint8_t* imageData, |
| 1493 const IntSize& imageDataSize, |
| 1494 GC3Denum format, | 1494 GC3Denum format, |
| 1495 GC3Denum type, | 1495 GC3Denum type, |
| 1496 bool flipY, | 1496 bool flipY, |
| 1497 bool premultiplyAlpha, | 1497 bool premultiplyAlpha, |
| 1498 Vector<uint8_t>& data) | 1498 Vector<uint8_t>& data) |
| 1499 { | 1499 { |
| 1500 if (!imageData) | 1500 if (!imageData) |
| 1501 return false; | 1501 return false; |
| 1502 int width = imageData->width(); | 1502 int width = imageDataSize.width(); |
| 1503 int height = imageData->height(); | 1503 int height = imageDataSize.height(); |
| 1504 | 1504 |
| 1505 unsigned packedSize; | 1505 unsigned packedSize; |
| 1506 // Output data is tightly packed (alignment == 1). | 1506 // Output data is tightly packed (alignment == 1). |
| 1507 if (computeImageSizeInBytes(format, type, width, height, 1, &packedSize, 0)
!= GraphicsContext3D::NO_ERROR) | 1507 if (computeImageSizeInBytes(format, type, width, height, 1, &packedSize, 0)
!= GraphicsContext3D::NO_ERROR) |
| 1508 return false; | 1508 return false; |
| 1509 data.resize(packedSize); | 1509 data.resize(packedSize); |
| 1510 | 1510 |
| 1511 if (!packPixels(imageData->data()->data(), DataFormatRGBA8, width, height, 0
, format, type, premultiplyAlpha ? AlphaDoPremultiply : AlphaDoNothing, data.dat
a(), flipY)) | 1511 if (!packPixels(imageData, DataFormatRGBA8, width, height, 0, format, type,
premultiplyAlpha ? AlphaDoPremultiply : AlphaDoNothing, data.data(), flipY)) |
| 1512 return false; | 1512 return false; |
| 1513 | 1513 |
| 1514 return true; | 1514 return true; |
| 1515 } | 1515 } |
| 1516 | 1516 |
| 1517 bool GraphicsContext3D::extractTextureData( | 1517 bool GraphicsContext3D::extractTextureData( |
| 1518 unsigned width, | 1518 unsigned width, |
| 1519 unsigned height, | 1519 unsigned height, |
| 1520 GC3Denum format, GC3Denum type, | 1520 GC3Denum format, GC3Denum type, |
| 1521 unsigned unpackAlignment, | 1521 unsigned unpackAlignment, |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1579 | 1579 |
| 1580 FormatConverter converter(width, height, sourceData, destinationData, srcStr
ide, dstStride); | 1580 FormatConverter converter(width, height, sourceData, destinationData, srcStr
ide, dstStride); |
| 1581 converter.convert(sourceDataFormat, dstDataFormat, alphaOp); | 1581 converter.convert(sourceDataFormat, dstDataFormat, alphaOp); |
| 1582 if (!converter.Success()) | 1582 if (!converter.Success()) |
| 1583 return false; | 1583 return false; |
| 1584 return true; | 1584 return true; |
| 1585 } | 1585 } |
| 1586 | 1586 |
| 1587 } // namespace WebCore | 1587 } // namespace WebCore |
| 1588 | 1588 |
| OLD | NEW |