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 |
(...skipping 21 matching lines...) Expand all Loading... |
32 #include "platform/graphics/ImageObserver.h" | 32 #include "platform/graphics/ImageObserver.h" |
33 | 33 |
34 namespace WebCore { | 34 namespace WebCore { |
35 | 35 |
36 namespace { | 36 namespace { |
37 | 37 |
38 GraphicsContext3D::DataFormat getDataFormat(GC3Denum destinationFormat, GC3Denum
destinationType) | 38 GraphicsContext3D::DataFormat getDataFormat(GC3Denum destinationFormat, GC3Denum
destinationType) |
39 { | 39 { |
40 GraphicsContext3D::DataFormat dstFormat = GraphicsContext3D::DataFormatRGBA8
; | 40 GraphicsContext3D::DataFormat dstFormat = GraphicsContext3D::DataFormatRGBA8
; |
41 switch (destinationType) { | 41 switch (destinationType) { |
42 case GraphicsContext3D::UNSIGNED_BYTE: | 42 case GL_UNSIGNED_BYTE: |
43 switch (destinationFormat) { | 43 switch (destinationFormat) { |
44 case GraphicsContext3D::RGB: | 44 case GL_RGB: |
45 dstFormat = GraphicsContext3D::DataFormatRGB8; | 45 dstFormat = GraphicsContext3D::DataFormatRGB8; |
46 break; | 46 break; |
47 case GraphicsContext3D::RGBA: | 47 case GL_RGBA: |
48 dstFormat = GraphicsContext3D::DataFormatRGBA8; | 48 dstFormat = GraphicsContext3D::DataFormatRGBA8; |
49 break; | 49 break; |
50 case GraphicsContext3D::ALPHA: | 50 case GL_ALPHA: |
51 dstFormat = GraphicsContext3D::DataFormatA8; | 51 dstFormat = GraphicsContext3D::DataFormatA8; |
52 break; | 52 break; |
53 case GraphicsContext3D::LUMINANCE: | 53 case GL_LUMINANCE: |
54 dstFormat = GraphicsContext3D::DataFormatR8; | 54 dstFormat = GraphicsContext3D::DataFormatR8; |
55 break; | 55 break; |
56 case GraphicsContext3D::LUMINANCE_ALPHA: | 56 case GL_LUMINANCE_ALPHA: |
57 dstFormat = GraphicsContext3D::DataFormatRA8; | 57 dstFormat = GraphicsContext3D::DataFormatRA8; |
58 break; | 58 break; |
59 default: | 59 default: |
60 ASSERT_NOT_REACHED(); | 60 ASSERT_NOT_REACHED(); |
61 } | 61 } |
62 break; | 62 break; |
63 case GraphicsContext3D::UNSIGNED_SHORT_4_4_4_4: | 63 case GL_UNSIGNED_SHORT_4_4_4_4: |
64 dstFormat = GraphicsContext3D::DataFormatRGBA4444; | 64 dstFormat = GraphicsContext3D::DataFormatRGBA4444; |
65 break; | 65 break; |
66 case GraphicsContext3D::UNSIGNED_SHORT_5_5_5_1: | 66 case GL_UNSIGNED_SHORT_5_5_5_1: |
67 dstFormat = GraphicsContext3D::DataFormatRGBA5551; | 67 dstFormat = GraphicsContext3D::DataFormatRGBA5551; |
68 break; | 68 break; |
69 case GraphicsContext3D::UNSIGNED_SHORT_5_6_5: | 69 case GL_UNSIGNED_SHORT_5_6_5: |
70 dstFormat = GraphicsContext3D::DataFormatRGB565; | 70 dstFormat = GraphicsContext3D::DataFormatRGB565; |
71 break; | 71 break; |
72 case GraphicsContext3D::HALF_FLOAT_OES: // OES_texture_half_float | 72 case GL_HALF_FLOAT_OES: // OES_texture_half_float |
73 switch (destinationFormat) { | 73 switch (destinationFormat) { |
74 case GraphicsContext3D::RGB: | 74 case GL_RGB: |
75 dstFormat = GraphicsContext3D::DataFormatRGB16F; | 75 dstFormat = GraphicsContext3D::DataFormatRGB16F; |
76 break; | 76 break; |
77 case GraphicsContext3D::RGBA: | 77 case GL_RGBA: |
78 dstFormat = GraphicsContext3D::DataFormatRGBA16F; | 78 dstFormat = GraphicsContext3D::DataFormatRGBA16F; |
79 break; | 79 break; |
80 case GraphicsContext3D::ALPHA: | 80 case GL_ALPHA: |
81 dstFormat = GraphicsContext3D::DataFormatA16F; | 81 dstFormat = GraphicsContext3D::DataFormatA16F; |
82 break; | 82 break; |
83 case GraphicsContext3D::LUMINANCE: | 83 case GL_LUMINANCE: |
84 dstFormat = GraphicsContext3D::DataFormatR16F; | 84 dstFormat = GraphicsContext3D::DataFormatR16F; |
85 break; | 85 break; |
86 case GraphicsContext3D::LUMINANCE_ALPHA: | 86 case GL_LUMINANCE_ALPHA: |
87 dstFormat = GraphicsContext3D::DataFormatRA16F; | 87 dstFormat = GraphicsContext3D::DataFormatRA16F; |
88 break; | 88 break; |
89 default: | 89 default: |
90 ASSERT_NOT_REACHED(); | 90 ASSERT_NOT_REACHED(); |
91 } | 91 } |
92 break; | 92 break; |
93 case GraphicsContext3D::FLOAT: // OES_texture_float | 93 case GL_FLOAT: // OES_texture_float |
94 switch (destinationFormat) { | 94 switch (destinationFormat) { |
95 case GraphicsContext3D::RGB: | 95 case GL_RGB: |
96 dstFormat = GraphicsContext3D::DataFormatRGB32F; | 96 dstFormat = GraphicsContext3D::DataFormatRGB32F; |
97 break; | 97 break; |
98 case GraphicsContext3D::RGBA: | 98 case GL_RGBA: |
99 dstFormat = GraphicsContext3D::DataFormatRGBA32F; | 99 dstFormat = GraphicsContext3D::DataFormatRGBA32F; |
100 break; | 100 break; |
101 case GraphicsContext3D::ALPHA: | 101 case GL_ALPHA: |
102 dstFormat = GraphicsContext3D::DataFormatA32F; | 102 dstFormat = GraphicsContext3D::DataFormatA32F; |
103 break; | 103 break; |
104 case GraphicsContext3D::LUMINANCE: | 104 case GL_LUMINANCE: |
105 dstFormat = GraphicsContext3D::DataFormatR32F; | 105 dstFormat = GraphicsContext3D::DataFormatR32F; |
106 break; | 106 break; |
107 case GraphicsContext3D::LUMINANCE_ALPHA: | 107 case GL_LUMINANCE_ALPHA: |
108 dstFormat = GraphicsContext3D::DataFormatRA32F; | 108 dstFormat = GraphicsContext3D::DataFormatRA32F; |
109 break; | 109 break; |
110 default: | 110 default: |
111 ASSERT_NOT_REACHED(); | 111 ASSERT_NOT_REACHED(); |
112 } | 112 } |
113 break; | 113 break; |
114 default: | 114 default: |
115 ASSERT_NOT_REACHED(); | 115 ASSERT_NOT_REACHED(); |
116 } | 116 } |
117 return dstFormat; | 117 return dstFormat; |
(...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1470 unsigned width, | 1470 unsigned width, |
1471 unsigned height, | 1471 unsigned height, |
1472 unsigned sourceUnpackAlignment, | 1472 unsigned sourceUnpackAlignment, |
1473 Vector<uint8_t>& data) | 1473 Vector<uint8_t>& data) |
1474 { | 1474 { |
1475 if (!pixels) | 1475 if (!pixels) |
1476 return false; | 1476 return false; |
1477 | 1477 |
1478 unsigned packedSize; | 1478 unsigned packedSize; |
1479 // Output data is tightly packed (alignment == 1). | 1479 // Output data is tightly packed (alignment == 1). |
1480 if (computeImageSizeInBytes(format, type, width, height, 1, &packedSize, 0)
!= GraphicsContext3D::NO_ERROR) | 1480 if (computeImageSizeInBytes(format, type, width, height, 1, &packedSize, 0)
!= GL_NO_ERROR) |
1481 return false; | 1481 return false; |
1482 data.resize(packedSize); | 1482 data.resize(packedSize); |
1483 | 1483 |
1484 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)) |
1485 return false; | 1485 return false; |
1486 if (ImageObserver *observer = image->imageObserver()) | 1486 if (ImageObserver *observer = image->imageObserver()) |
1487 observer->didDraw(image); | 1487 observer->didDraw(image); |
1488 return true; | 1488 return true; |
1489 } | 1489 } |
1490 | 1490 |
1491 bool GraphicsContext3D::extractImageData( | 1491 bool GraphicsContext3D::extractImageData( |
1492 const uint8_t* imageData, | 1492 const uint8_t* imageData, |
1493 const IntSize& imageDataSize, | 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 = imageDataSize.width(); | 1502 int width = imageDataSize.width(); |
1503 int height = imageDataSize.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)
!= GL_NO_ERROR) |
1508 return false; | 1508 return false; |
1509 data.resize(packedSize); | 1509 data.resize(packedSize); |
1510 | 1510 |
1511 if (!packPixels(imageData, DataFormatRGBA8, width, height, 0, format, type,
premultiplyAlpha ? AlphaDoPremultiply : AlphaDoNothing, data.data(), 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( |
(...skipping 61 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 |