| Summary: | [iOS] Subsampled JPEG images do not draw correctly via the canvas APIs | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Dean Jackson <dino> | ||||
| Component: | New Bugs | Assignee: | Dean Jackson <dino> | ||||
| Status: | RESOLVED FIXED | ||||||
| Severity: | Normal | CC: | bunhere, cdumez, commit-queue, gyuyoung.kim, kondapallykalyan, roger_fong, sergio | ||||
| Priority: | P2 | ||||||
| Version: | 528+ (Nightly build) | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Attachments: |
|
||||||
|
Description
Dean Jackson
2014-07-01 14:43:07 PDT
Created attachment 234200 [details]
Patch
Comment on attachment 234200 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=234200&action=review > Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:206 > + if (m_originalSize.width() && m_originalSize.height()) > + scaledSrcRect.scale(m_size.width() / static_cast<float>(m_originalSize.width()), m_size.height() / static_cast<float>(m_originalSize.height())); Don't we have a subsampling scale (m_scale) for each frame already? > Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:340 > + scaleHint = std::min<float>(1.0f, std::max(m_image->size().width() / originalSize.width(), m_image->size().width() / originalSize.height())); Image knows the scale already? Comment on attachment 234200 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=234200&action=review >> Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:206 >> + scaledSrcRect.scale(m_size.width() / static_cast<float>(m_originalSize.width()), m_size.height() / static_cast<float>(m_originalSize.height())); > > Don't we have a subsampling scale (m_scale) for each frame already? No, we might not have any frames yet. Later in this method we call frameAtIndex to generate the frame for the subsample. >> Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:340 >> + scaleHint = std::min<float>(1.0f, std::max(m_image->size().width() / originalSize.width(), m_image->size().width() / originalSize.height())); > > Image knows the scale already? Same as above, and even if it did, I would have to make the frames public just for this. I changed FrameData::m_scale to m_subsamplingScale though. Comment on attachment 234200 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=234200&action=review > Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:202 > + FloatRect scaledSrcRect = srcRect; <channeling ben> scaled into what coordinate space Committed r170675: <http://trac.webkit.org/changeset/170675> |