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 |