Changeset 122587 in webkit
- Timestamp:
- Jul 13, 2012 8:53:24 AM (12 years ago)
- Location:
- trunk/Source/WebKit/blackberry
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/blackberry/Api/BackingStore.cpp
r121824 r122587 78 78 const int s_renderTimerTimeout = 1.0; 79 79 WebPage* BackingStorePrivate::s_currentBackingStoreOwner = 0; 80 Platform::Graphics::Buffer* BackingStorePrivate::s_overScrollImage = 0;81 std::string BackingStorePrivate::s_overScrollImagePath;82 Platform::IntSize BackingStorePrivate::s_overScrollImageSize;83 80 84 81 typedef std::pair<int, int> Divisor; … … 1220 1217 } 1221 1218 1222 bool BackingStorePrivate::ensureOverScrollImage()1223 {1224 std::string path = m_webPage->settings()->overScrollImagePath().utf8();1225 if (path == "")1226 return false;1227 1228 if (s_overScrollImage && path == s_overScrollImagePath)1229 return true;1230 1231 std::string imagePath = Platform::Client::get()->getApplicationLocalDirectory() + path;1232 1233 SkBitmap bitmap;1234 if (!SkImageDecoder::DecodeFile(imagePath.c_str(), &bitmap)) {1235 BlackBerry::Platform::log(BlackBerry::Platform::LogLevelCritical,1236 "BackingStorePrivate::ensureOverScrollImage could not decode overscroll image: %s", imagePath.c_str());1237 return false;1238 }1239 1240 destroyBuffer(s_overScrollImage);1241 s_overScrollImage = createBuffer(Platform::IntSize(bitmap.width(), bitmap.height()), Platform::Graphics::TemporaryBuffer);1242 1243 SkCanvas* canvas = Platform::Graphics::lockBufferDrawable(s_overScrollImage);1244 if (!canvas) {1245 destroyBuffer(s_overScrollImage);1246 s_overScrollImage = 0;1247 return false;1248 }1249 1250 SkPaint paint;1251 paint.setXfermodeMode(SkXfermode::kSrc_Mode);1252 paint.setFlags(SkPaint::kAntiAlias_Flag);1253 paint.setFilterBitmap(true);1254 1255 SkRect rect = SkRect::MakeXYWH(0, 0, bitmap.width(), bitmap.height());1256 canvas->save();1257 canvas->drawBitmapRect(bitmap, 0, rect, &paint);1258 canvas->restore();1259 1260 Platform::Graphics::releaseBufferDrawable(s_overScrollImage);1261 1262 s_overScrollImageSize = Platform::IntSize(bitmap.width(), bitmap.height());1263 s_overScrollImagePath = path;1264 1265 return true;1266 }1267 1268 1219 void BackingStorePrivate::paintDefaultBackground(const Platform::IntRect& contents, 1269 1220 const WebCore::TransformationMatrix& transformation, … … 1274 1225 Platform::IntRect contentsClipped = contents; 1275 1226 1276 1277 1227 // We have to paint the default background in the case of overzoom and 1278 1228 // make sure it is invalidated. 1279 Color color(m_webPage->settings()->overZoomColor());1280 1281 1229 Platform::IntRectRegion overScrollRegion 1282 1230 = Platform::IntRectRegion::subtractRegions(Platform::IntRect(contentsClipped), contentsRect); … … 1295 1243 } 1296 1244 1297 if (ensureOverScrollImage()) { 1298 // Tile the image on the window region. 1299 Platform::IntRect dstRect; 1300 for (int y = overScrollRect.y(); y < overScrollRect.y() + overScrollRect.height(); y += dstRect.height()) { 1301 for (int x = overScrollRect.x(); x < overScrollRect.x() + overScrollRect.width(); x += dstRect.width()) { 1302 Platform::IntRect imageRect = Platform::IntRect(Platform::IntPoint(x - (x % s_overScrollImageSize.width()), 1303 y - (y % s_overScrollImageSize.height())), s_overScrollImageSize); 1304 dstRect = imageRect; 1305 dstRect.intersect(overScrollRect); 1306 Platform::IntRect srcRect = Platform::IntRect(x - imageRect.x(), y - imageRect.y(), dstRect.width(), dstRect.height()); 1307 blitToWindow(dstRect, s_overScrollImage, srcRect, false, 255); 1308 } 1309 } 1310 } else 1245 if (m_webPage->settings()->isEnableDefaultOverScrollBackground()) { 1246 fillWindow(BlackBerry::Platform::Graphics::DefaultBackgroundPattern, 1247 overScrollRect, overScrollRect.location(), 1.0 /*contentsScale*/); 1248 } else { 1249 Color color(m_webPage->settings()->overScrollColor()); 1311 1250 clearWindow(overScrollRect, color.red(), color.green(), color.blue(), color.alpha()); 1251 } 1312 1252 } 1313 1253 } … … 1427 1367 blitCheckered = true; 1428 1368 #endif 1429 checkerWindow(dstRect, checkeredRects.at(i).location(), transformation.a()); 1369 fillWindow(BlackBerry::Platform::Graphics::CheckerboardPattern, 1370 dstRect, checkeredRects.at(i).location(), transformation.a()); 1430 1371 } 1431 1372 } … … 1486 1427 blitCheckered = true; 1487 1428 #endif 1488 checkerWindow(dirtyRectT, contentsOrigin, transformation.a()); 1429 fillWindow(BlackBerry::Platform::Graphics::CheckerboardPattern, 1430 dirtyRectT, contentsOrigin, transformation.a()); 1489 1431 } 1490 1432 … … 2508 2450 } 2509 2451 2510 void BackingStorePrivate::checkerWindow(const Platform::IntRect& dstRect, 2511 const Platform::IntPoint& contentsOrigin, 2512 double contentsScale) 2452 void BackingStorePrivate::fillWindow(Platform::Graphics::FillPattern pattern, 2453 const Platform::IntRect& dstRect, 2454 const Platform::IntPoint& contentsOrigin, 2455 double contentsScale) 2513 2456 { 2514 2457 ASSERT(BlackBerry::Platform::userInterfaceThreadMessageClient()->isCurrentThread()); … … 2520 2463 ASSERT(dstBuffer); 2521 2464 if (!dstBuffer) 2522 BlackBerry::Platform::log(BlackBerry::Platform::LogLevelWarn, "Empty window buffer, couldn't checkerWindow"); 2523 2524 Color color(m_webPage->settings()->backgroundColor()); 2525 unsigned char alpha = color.alpha(); 2526 BlackBerry::Platform::Graphics::checkerBuffer(dstBuffer, dstRect, contentsOrigin, contentsScale, alpha); 2465 BlackBerry::Platform::log(BlackBerry::Platform::LogLevelWarn, "Empty window buffer, couldn't fillWindow"); 2466 2467 BlackBerry::Platform::Graphics::fillBuffer(dstBuffer, pattern, dstRect, contentsOrigin, contentsScale); 2527 2468 } 2528 2469 -
trunk/Source/WebKit/blackberry/Api/BackingStore_p.h
r119718 r122587 308 308 309 309 void blitToWindow(const Platform::IntRect& dstRect, const BlackBerry::Platform::Graphics::Buffer* srcBuffer, const Platform::IntRect& srcRect, bool blend, unsigned char globalAlpha); 310 void checkerWindow(const Platform::IntRect& dstRect, const Platform::IntPoint& contentsOrigin, double contentsScale);310 void fillWindow(Platform::Graphics::FillPattern, const Platform::IntRect& dstRect, const Platform::IntPoint& contentsOrigin, double contentsScale); 311 311 312 312 void invalidateWindow(); … … 335 335 BlackBerry::Platform::IntSize surfaceSize() const; 336 336 BlackBerry::Platform::Graphics::Buffer* buffer() const; 337 338 bool ensureOverScrollImage();339 337 340 338 static WebPage* s_currentBackingStoreOwner; … … 379 377 #endif 380 378 381 static Platform::Graphics::Buffer* s_overScrollImage;382 static std::string s_overScrollImagePath;383 static Platform::IntSize s_overScrollImageSize;384 385 379 protected: 386 380 virtual ~BackingStorePrivate(); -
trunk/Source/WebKit/blackberry/Api/WebSettings.cpp
r121555 r122587 49 49 DEFINE_STATIC_LOCAL(String, BlackBerryLinksHandledExternallyEnabled, ("BlackBerryLinksHandledExternallyEnabled")); 50 50 DEFINE_STATIC_LOCAL(String, BlackBerryMaxPluginInstances, ("BlackBerryMaxPluginInstances")); 51 DEFINE_STATIC_LOCAL(String, BlackBerryOver ZoomColor, ("BlackBerryOverZoomColor"));52 DEFINE_STATIC_LOCAL(String, BlackBerry OverScrollImagePath, ("BlackBerryOverScrollImagePath"));51 DEFINE_STATIC_LOCAL(String, BlackBerryOverScrollColor, ("BlackBerryOverScrollColor")); 52 DEFINE_STATIC_LOCAL(String, BlackBerryEnableDefaultOverScrollBackground, ("BlackBerryEnableDefaultOverScrollBackground")); 53 53 DEFINE_STATIC_LOCAL(String, BlackBerryRenderAnimationsOnScrollOrZoomEnabled, ("BlackBerryRenderAnimationsOnScrollOrZoomEnabled")); 54 54 DEFINE_STATIC_LOCAL(String, BlackBerryScrollbarsEnabled, ("BlackBerryScrollbarsEnabled")); … … 165 165 settings->m_private->setDouble(BlackBerryInitialScale, -1); 166 166 settings->m_private->setUnsigned(BlackBerryMaxPluginInstances, 1); 167 settings->m_private->setUnsigned(BlackBerryOver ZoomColor, WebCore::Color::white);168 settings->m_private->set String(BlackBerryOverScrollImagePath, "");167 settings->m_private->setUnsigned(BlackBerryOverScrollColor, WebCore::Color::white); 168 settings->m_private->setBoolean(BlackBerryEnableDefaultOverScrollBackground, true); 169 169 settings->m_private->setBoolean(BlackBerryScrollbarsEnabled, true); 170 170 … … 708 708 } 709 709 710 unsigned WebSettings::over ZoomColor() const711 { 712 return m_private->getUnsigned(BlackBerryOver ZoomColor);713 } 714 715 void WebSettings::setOver ZoomColor(unsigned color)716 { 717 m_private->setUnsigned(BlackBerryOver ZoomColor, color);718 } 719 720 WebString WebSettings::overScrollImagePath() const721 { 722 return m_private->get String(BlackBerryOverScrollImagePath);723 } 724 725 void WebSettings::set OverScrollImagePath(const char* path)726 { 727 m_private->set String(BlackBerryOverScrollImagePath, path);710 unsigned WebSettings::overScrollColor() const 711 { 712 return m_private->getUnsigned(BlackBerryOverScrollColor); 713 } 714 715 void WebSettings::setOverScrollColor(unsigned color) 716 { 717 m_private->setUnsigned(BlackBerryOverScrollColor, color); 718 } 719 720 bool WebSettings::isEnableDefaultOverScrollBackground() const 721 { 722 return m_private->getBoolean(BlackBerryEnableDefaultOverScrollBackground); 723 } 724 725 void WebSettings::setEnableDefaultOverScrollBackground(bool enabled) 726 { 727 m_private->setBoolean(BlackBerryEnableDefaultOverScrollBackground, enabled); 728 728 } 729 729 -
trunk/Source/WebKit/blackberry/Api/WebSettings.h
r121555 r122587 199 199 void setShouldRenderAnimationsOnScrollOrZoom(bool enable); 200 200 201 unsigned over ZoomColor() const;202 void setOver ZoomColor(unsigned);203 204 WebString overScrollImagePath() const;205 void set OverScrollImagePath(const char*);201 unsigned overScrollColor() const; 202 void setOverScrollColor(unsigned); 203 204 bool isEnableDefaultOverScrollBackground() const; 205 void setEnableDefaultOverScrollBackground(bool); 206 206 207 207 unsigned backgroundColor() const; -
trunk/Source/WebKit/blackberry/ChangeLog
r122573 r122587 1 2012-07-13 Jakob Petsovits <jpetsovits@rim.com> 2 3 [BlackBerry] Use fillBuffer() instead of a user-defined background image. 4 https://bugs.webkit.org/show_bug.cgi?id=91180 5 RIM PR 171458 6 7 Reviewed by Rob Buis. 8 Internally reviewed by Andrew Lo. 9 10 By using Platform::Graphics::fillBuffer() to fill the 11 overscroll area, we save graphics memory for the buffer 12 that the background image was occupying. 13 14 Also adapt checkerboard drawing as it is now done using 15 fillBuffer() which replaces checkerBuffer(). 16 17 In the same go, use the opportunity of the WebSettings 18 API change to make it more consistent, renaming the 19 OverZoomColor setting to OverScrollColor. 20 21 * Api/BackingStore.cpp: 22 (WebKit): 23 (BlackBerry::WebKit::BackingStorePrivate::paintDefaultBackground): 24 (BlackBerry::WebKit::BackingStorePrivate::blitContents): 25 (BlackBerry::WebKit::BackingStorePrivate::fillWindow): 26 * Api/BackingStore_p.h: 27 (BackingStorePrivate): 28 * Api/WebSettings.cpp: 29 (WebKit): 30 (BlackBerry::WebKit::WebSettings::standardSettings): 31 (BlackBerry::WebKit::WebSettings::overScrollColor): 32 (BlackBerry::WebKit::WebSettings::setOverScrollColor): 33 (BlackBerry::WebKit::WebSettings::isEnableDefaultOverScrollBackground): 34 (BlackBerry::WebKit::WebSettings::setEnableDefaultOverScrollBackground): 35 * Api/WebSettings.h: 36 1 37 2012-07-13 Joshua Netterfield <jnetterfield@rim.com> 2 38
Note: See TracChangeset
for help on using the changeset viewer.