| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include "platform/RuntimeEnabledFeatures.h" | 24 #include "platform/RuntimeEnabledFeatures.h" |
| 25 #include "platform/graphics/BitmapImageMetrics.h" | 25 #include "platform/graphics/BitmapImageMetrics.h" |
| 26 #include "platform/image-decoders/FastSharedBufferReader.h" | 26 #include "platform/image-decoders/FastSharedBufferReader.h" |
| 27 #include "platform/image-decoders/bmp/BMPImageDecoder.h" | 27 #include "platform/image-decoders/bmp/BMPImageDecoder.h" |
| 28 #include "platform/image-decoders/gif/GIFImageDecoder.h" | 28 #include "platform/image-decoders/gif/GIFImageDecoder.h" |
| 29 #include "platform/image-decoders/ico/ICOImageDecoder.h" | 29 #include "platform/image-decoders/ico/ICOImageDecoder.h" |
| 30 #include "platform/image-decoders/jpeg/JPEGImageDecoder.h" | 30 #include "platform/image-decoders/jpeg/JPEGImageDecoder.h" |
| 31 #include "platform/image-decoders/png/PNGImageDecoder.h" | 31 #include "platform/image-decoders/png/PNGImageDecoder.h" |
| 32 #include "platform/image-decoders/webp/WEBPImageDecoder.h" | 32 #include "platform/image-decoders/webp/WEBPImageDecoder.h" |
| 33 #include "wtf/PtrUtil.h" | 33 #include "wtf/PtrUtil.h" |
| 34 #include "wtf/SpinLock.h" |
| 34 #include <memory> | 35 #include <memory> |
| 35 | 36 |
| 36 namespace blink { | 37 namespace blink { |
| 37 | 38 |
| 38 inline bool matchesJPEGSignature(const char* contents) { | 39 inline bool matchesJPEGSignature(const char* contents) { |
| 39 return !memcmp(contents, "\xFF\xD8\xFF", 3); | 40 return !memcmp(contents, "\xFF\xD8\xFF", 3); |
| 40 } | 41 } |
| 41 | 42 |
| 42 inline bool matchesPNGSignature(const char* contents) { | 43 inline bool matchesPNGSignature(const char* contents) { |
| 43 return !memcmp(contents, "\x89PNG\r\n\x1A\n", 8); | 44 return !memcmp(contents, "\x89PNG\r\n\x1A\n", 8); |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 } | 506 } |
| 506 | 507 |
| 507 size_t ImagePlanes::rowBytes(int i) const { | 508 size_t ImagePlanes::rowBytes(int i) const { |
| 508 ASSERT((i >= 0) && i < 3); | 509 ASSERT((i >= 0) && i < 3); |
| 509 return m_rowBytes[i]; | 510 return m_rowBytes[i]; |
| 510 } | 511 } |
| 511 | 512 |
| 512 namespace { | 513 namespace { |
| 513 | 514 |
| 514 // The output device color space is global and shared across multiple threads. | 515 // The output device color space is global and shared across multiple threads. |
| 515 SpinLock gTargetColorSpaceLock; | 516 WTF::SpinLock gTargetColorSpaceLock; |
| 516 SkColorSpace* gTargetColorSpace = nullptr; | 517 SkColorSpace* gTargetColorSpace = nullptr; |
| 517 | 518 |
| 518 } // namespace | 519 } // namespace |
| 519 | 520 |
| 520 // static | 521 // static |
| 521 void ImageDecoder::setGlobalTargetColorProfile(const WebVector<char>& profile) { | 522 void ImageDecoder::setGlobalTargetColorProfile(const WebVector<char>& profile) { |
| 522 if (profile.isEmpty()) | 523 if (profile.isEmpty()) |
| 523 return; | 524 return; |
| 524 | 525 |
| 525 // Take a lock around initializing and accessing the global device color | 526 // Take a lock around initializing and accessing the global device color |
| 526 // profile. | 527 // profile. |
| 527 SpinLock::Guard guard(gTargetColorSpaceLock); | 528 WTF::SpinLock::Guard guard(gTargetColorSpaceLock); |
| 528 | 529 |
| 529 // Layout tests expect that only the first call will take effect. | 530 // Layout tests expect that only the first call will take effect. |
| 530 if (gTargetColorSpace) | 531 if (gTargetColorSpace) |
| 531 return; | 532 return; |
| 532 | 533 |
| 533 gTargetColorSpace = | 534 gTargetColorSpace = |
| 534 SkColorSpace::MakeICC(profile.data(), profile.size()).release(); | 535 SkColorSpace::MakeICC(profile.data(), profile.size()).release(); |
| 535 | 536 |
| 536 // UMA statistics. | 537 // UMA statistics. |
| 537 BitmapImageMetrics::countOutputGamma(gTargetColorSpace); | 538 BitmapImageMetrics::countOutputGamma(gTargetColorSpace); |
| 538 } | 539 } |
| 539 | 540 |
| 540 // static | 541 // static |
| 541 sk_sp<SkColorSpace> ImageDecoder::globalTargetColorSpace() { | 542 sk_sp<SkColorSpace> ImageDecoder::globalTargetColorSpace() { |
| 542 // Take a lock around initializing and accessing the global device color | 543 // Take a lock around initializing and accessing the global device color |
| 543 // profile. | 544 // profile. |
| 544 SpinLock::Guard guard(gTargetColorSpaceLock); | 545 WTF::SpinLock::Guard guard(gTargetColorSpaceLock); |
| 545 | 546 |
| 546 // Initialize the output device profile to sRGB if it has not yet been | 547 // Initialize the output device profile to sRGB if it has not yet been |
| 547 // initialized. | 548 // initialized. |
| 548 if (!gTargetColorSpace) { | 549 if (!gTargetColorSpace) { |
| 549 gTargetColorSpace = | 550 gTargetColorSpace = |
| 550 SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named).release(); | 551 SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named).release(); |
| 551 } | 552 } |
| 552 | 553 |
| 553 gTargetColorSpace->ref(); | 554 gTargetColorSpace->ref(); |
| 554 return sk_sp<SkColorSpace>(gTargetColorSpace); | 555 return sk_sp<SkColorSpace>(gTargetColorSpace); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 603 m_targetColorSpace.get())) { | 604 m_targetColorSpace.get())) { |
| 604 return nullptr; | 605 return nullptr; |
| 605 } | 606 } |
| 606 | 607 |
| 607 m_sourceToTargetColorTransform = SkColorSpaceXform::New( | 608 m_sourceToTargetColorTransform = SkColorSpaceXform::New( |
| 608 m_embeddedColorSpace.get(), m_targetColorSpace.get()); | 609 m_embeddedColorSpace.get(), m_targetColorSpace.get()); |
| 609 return m_sourceToTargetColorTransform.get(); | 610 return m_sourceToTargetColorTransform.get(); |
| 610 } | 611 } |
| 611 | 612 |
| 612 } // namespace blink | 613 } // namespace blink |
| OLD | NEW |