OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/themes/browser_theme_pack.h" | 5 #include "chrome/browser/themes/browser_theme_pack.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/memory/ref_counted_memory.h" | 9 #include "base/memory/ref_counted_memory.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 // The order must match as the index is used in determining the raw id. | 238 // The order must match as the index is used in determining the raw id. |
239 bool InputScalesValid(const base::StringPiece& input, | 239 bool InputScalesValid(const base::StringPiece& input, |
240 const std::vector<ui::ScaleFactor>& expected) { | 240 const std::vector<ui::ScaleFactor>& expected) { |
241 size_t scales_size = static_cast<size_t>(input.size() / sizeof(float)); | 241 size_t scales_size = static_cast<size_t>(input.size() / sizeof(float)); |
242 if (scales_size != expected.size()) | 242 if (scales_size != expected.size()) |
243 return false; | 243 return false; |
244 scoped_ptr<float[]> scales(new float[scales_size]); | 244 scoped_ptr<float[]> scales(new float[scales_size]); |
245 // Do a memcpy to avoid misaligned memory access. | 245 // Do a memcpy to avoid misaligned memory access. |
246 memcpy(scales.get(), input.data(), input.size()); | 246 memcpy(scales.get(), input.data(), input.size()); |
247 for (size_t index = 0; index < scales_size; ++index) { | 247 for (size_t index = 0; index < scales_size; ++index) { |
248 if (scales[index] != ui::GetImageScale(expected[index])) | 248 if (scales[index] != ui::GetScaleFactorScale(expected[index])) |
249 return false; | 249 return false; |
250 } | 250 } |
251 return true; | 251 return true; |
252 } | 252 } |
253 | 253 |
254 // Returns |scale_factors| as a string to be written to disk. | 254 // Returns |scale_factors| as a string to be written to disk. |
255 std::string GetScaleFactorsAsString( | 255 std::string GetScaleFactorsAsString( |
256 const std::vector<ui::ScaleFactor>& scale_factors) { | 256 const std::vector<ui::ScaleFactor>& scale_factors) { |
257 scoped_ptr<float[]> scales(new float[scale_factors.size()]); | 257 scoped_ptr<float[]> scales(new float[scale_factors.size()]); |
258 for (size_t i = 0; i < scale_factors.size(); ++i) | 258 for (size_t i = 0; i < scale_factors.size(); ++i) |
259 scales[i] = ui::GetImageScale(scale_factors[i]); | 259 scales[i] = ui::GetScaleFactorScale(scale_factors[i]); |
260 std::string out_string = std::string( | 260 std::string out_string = std::string( |
261 reinterpret_cast<const char*>(scales.get()), | 261 reinterpret_cast<const char*>(scales.get()), |
262 scale_factors.size() * sizeof(float)); | 262 scale_factors.size() * sizeof(float)); |
263 return out_string; | 263 return out_string; |
264 } | 264 } |
265 | 265 |
266 struct StringToIntTable { | 266 struct StringToIntTable { |
267 const char* key; | 267 const char* key; |
268 ThemeProperties::OverwritableByUserThemeProperty id; | 268 ThemeProperties::OverwritableByUserThemeProperty id; |
269 }; | 269 }; |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 *src_image, hsl_shift)); | 445 *src_image, hsl_shift)); |
446 } | 446 } |
447 | 447 |
448 // Computes a bitmap at one scale from a bitmap at a different scale. | 448 // Computes a bitmap at one scale from a bitmap at a different scale. |
449 SkBitmap CreateLowQualityResizedBitmap(const SkBitmap& source_bitmap, | 449 SkBitmap CreateLowQualityResizedBitmap(const SkBitmap& source_bitmap, |
450 ui::ScaleFactor source_scale_factor, | 450 ui::ScaleFactor source_scale_factor, |
451 ui::ScaleFactor desired_scale_factor) { | 451 ui::ScaleFactor desired_scale_factor) { |
452 gfx::Size scaled_size = gfx::ToCeiledSize( | 452 gfx::Size scaled_size = gfx::ToCeiledSize( |
453 gfx::ScaleSize(gfx::Size(source_bitmap.width(), | 453 gfx::ScaleSize(gfx::Size(source_bitmap.width(), |
454 source_bitmap.height()), | 454 source_bitmap.height()), |
455 ui::GetImageScale(desired_scale_factor) / | 455 ui::GetScaleFactorScale(desired_scale_factor) / |
456 ui::GetImageScale(source_scale_factor))); | 456 ui::GetScaleFactorScale(source_scale_factor))); |
457 SkBitmap scaled_bitmap; | 457 SkBitmap scaled_bitmap; |
458 scaled_bitmap.setConfig(SkBitmap::kARGB_8888_Config, | 458 scaled_bitmap.setConfig(SkBitmap::kARGB_8888_Config, |
459 scaled_size.width(), | 459 scaled_size.width(), |
460 scaled_size.height()); | 460 scaled_size.height()); |
461 if (!scaled_bitmap.allocPixels()) | 461 if (!scaled_bitmap.allocPixels()) |
462 SK_CRASH(); | 462 SK_CRASH(); |
463 scaled_bitmap.eraseARGB(0, 0, 0, 0); | 463 scaled_bitmap.eraseARGB(0, 0, 0, 0); |
464 SkCanvas canvas(scaled_bitmap); | 464 SkCanvas canvas(scaled_bitmap); |
465 SkRect scaled_bounds = RectToSkRect(gfx::Rect(scaled_size)); | 465 SkRect scaled_bounds = RectToSkRect(gfx::Rect(scaled_size)); |
466 // Note(oshima): The following scaling code doesn't work with | 466 // Note(oshima): The following scaling code doesn't work with |
467 // a mask image. | 467 // a mask image. |
468 canvas.drawBitmapRect(source_bitmap, NULL, scaled_bounds); | 468 canvas.drawBitmapRect(source_bitmap, NULL, scaled_bounds); |
469 return scaled_bitmap; | 469 return scaled_bitmap; |
470 } | 470 } |
471 | 471 |
472 // A ImageSkiaSource that scales 100P image to the target scale factor | 472 // A ImageSkiaSource that scales 100P image to the target scale factor |
473 // if the ImageSkiaRep for the target scale factor isn't available. | 473 // if the ImageSkiaRep for the target scale factor isn't available. |
474 class ThemeImageSource: public gfx::ImageSkiaSource { | 474 class ThemeImageSource: public gfx::ImageSkiaSource { |
475 public: | 475 public: |
476 explicit ThemeImageSource(const gfx::ImageSkia& source) : source_(source) { | 476 explicit ThemeImageSource(const gfx::ImageSkia& source) : source_(source) { |
477 } | 477 } |
478 virtual ~ThemeImageSource() {} | 478 virtual ~ThemeImageSource() {} |
479 | 479 |
480 virtual gfx::ImageSkiaRep GetImageForScale(float scale) OVERRIDE { | 480 virtual gfx::ImageSkiaRep GetImageForScale( |
481 if (source_.HasRepresentation(scale)) | 481 ui::ScaleFactor scale_factor) OVERRIDE { |
482 return source_.GetRepresentation(scale); | 482 if (source_.HasRepresentation(scale_factor)) |
483 const gfx::ImageSkiaRep& rep_100p = source_.GetRepresentation(1.0f); | 483 return source_.GetRepresentation(scale_factor); |
| 484 const gfx::ImageSkiaRep& rep_100p = |
| 485 source_.GetRepresentation(ui::SCALE_FACTOR_100P); |
484 SkBitmap scaled_bitmap = CreateLowQualityResizedBitmap( | 486 SkBitmap scaled_bitmap = CreateLowQualityResizedBitmap( |
485 rep_100p.sk_bitmap(), | 487 rep_100p.sk_bitmap(), |
486 ui::SCALE_FACTOR_100P, | 488 ui::SCALE_FACTOR_100P, |
487 ui::GetSupportedScaleFactor(scale)); | 489 scale_factor); |
488 return gfx::ImageSkiaRep(scaled_bitmap, scale); | 490 return gfx::ImageSkiaRep(scaled_bitmap, scale_factor); |
489 } | 491 } |
490 | 492 |
491 private: | 493 private: |
492 const gfx::ImageSkia source_; | 494 const gfx::ImageSkia source_; |
493 | 495 |
494 DISALLOW_COPY_AND_ASSIGN(ThemeImageSource); | 496 DISALLOW_COPY_AND_ASSIGN(ThemeImageSource); |
495 }; | 497 }; |
496 | 498 |
497 // An ImageSkiaSource that delays decoding PNG data into bitmaps until | 499 // An ImageSkiaSource that delays decoding PNG data into bitmaps until |
498 // needed. Missing data for a scale factor is computed by scaling data for an | 500 // needed. Missing data for a scale factor is computed by scaling data for an |
499 // available scale factor. Computed bitmaps are stored for future look up. | 501 // available scale factor. Computed bitmaps are stored for future look up. |
500 class ThemeImagePngSource : public gfx::ImageSkiaSource { | 502 class ThemeImagePngSource : public gfx::ImageSkiaSource { |
501 public: | 503 public: |
502 typedef std::map<ui::ScaleFactor, | 504 typedef std::map<ui::ScaleFactor, |
503 scoped_refptr<base::RefCountedMemory> > PngMap; | 505 scoped_refptr<base::RefCountedMemory> > PngMap; |
504 | 506 |
505 explicit ThemeImagePngSource(const PngMap& png_map) : png_map_(png_map) {} | 507 explicit ThemeImagePngSource(const PngMap& png_map) : png_map_(png_map) {} |
506 | 508 |
507 virtual ~ThemeImagePngSource() {} | 509 virtual ~ThemeImagePngSource() {} |
508 | 510 |
509 private: | 511 private: |
510 virtual gfx::ImageSkiaRep GetImageForScale(float scale) OVERRIDE { | 512 virtual gfx::ImageSkiaRep GetImageForScale( |
511 ui::ScaleFactor scale_factor = ui::GetSupportedScaleFactor(scale); | 513 ui::ScaleFactor scale_factor) OVERRIDE { |
512 // Look up the bitmap for |scale factor| in the bitmap map. If found | 514 // Look up the bitmap for |scale factor| in the bitmap map. If found |
513 // return it. | 515 // return it. |
514 BitmapMap::const_iterator exact_bitmap_it = bitmap_map_.find(scale_factor); | 516 BitmapMap::const_iterator exact_bitmap_it = bitmap_map_.find(scale_factor); |
515 if (exact_bitmap_it != bitmap_map_.end()) | 517 if (exact_bitmap_it != bitmap_map_.end()) |
516 return gfx::ImageSkiaRep(exact_bitmap_it->second, scale); | 518 return gfx::ImageSkiaRep(exact_bitmap_it->second, scale_factor); |
517 | 519 |
518 // Look up the raw PNG data for |scale_factor| in the png map. If found, | 520 // Look up the raw PNG data for |scale_factor| in the png map. If found, |
519 // decode it, store the result in the bitmap map and return it. | 521 // decode it, store the result in the bitmap map and return it. |
520 PngMap::const_iterator exact_png_it = png_map_.find(scale_factor); | 522 PngMap::const_iterator exact_png_it = png_map_.find(scale_factor); |
521 if (exact_png_it != png_map_.end()) { | 523 if (exact_png_it != png_map_.end()) { |
522 SkBitmap bitmap; | 524 SkBitmap bitmap; |
523 if (!gfx::PNGCodec::Decode(exact_png_it->second->front(), | 525 if (!gfx::PNGCodec::Decode(exact_png_it->second->front(), |
524 exact_png_it->second->size(), | 526 exact_png_it->second->size(), |
525 &bitmap)) { | 527 &bitmap)) { |
526 NOTREACHED(); | 528 NOTREACHED(); |
527 return gfx::ImageSkiaRep(); | 529 return gfx::ImageSkiaRep(); |
528 } | 530 } |
529 bitmap_map_[scale_factor] = bitmap; | 531 bitmap_map_[scale_factor] = bitmap; |
530 return gfx::ImageSkiaRep(bitmap, scale); | 532 return gfx::ImageSkiaRep(bitmap, scale_factor); |
531 } | 533 } |
532 | 534 |
533 // Find an available PNG for another scale factor. We want to use the | 535 // Find an available PNG for another scale factor. We want to use the |
534 // highest available scale factor. | 536 // highest available scale factor. |
535 PngMap::const_iterator available_png_it = png_map_.end(); | 537 PngMap::const_iterator available_png_it = png_map_.end(); |
536 for (PngMap::const_iterator png_it = png_map_.begin(); | 538 for (PngMap::const_iterator png_it = png_map_.begin(); |
537 png_it != png_map_.end(); ++png_it) { | 539 png_it != png_map_.end(); ++png_it) { |
538 if (available_png_it == png_map_.end() || | 540 if (available_png_it == png_map_.end() || |
539 ui::GetImageScale(png_it->first) > | 541 ui::GetScaleFactorScale(png_it->first) > |
540 ui::GetImageScale(available_png_it->first)) { | 542 ui::GetScaleFactorScale(available_png_it->first)) { |
541 available_png_it = png_it; | 543 available_png_it = png_it; |
542 } | 544 } |
543 } | 545 } |
544 if (available_png_it == png_map_.end()) | 546 if (available_png_it == png_map_.end()) |
545 return gfx::ImageSkiaRep(); | 547 return gfx::ImageSkiaRep(); |
546 ui::ScaleFactor available_scale_factor = available_png_it->first; | 548 ui::ScaleFactor available_scale_factor = available_png_it->first; |
547 | 549 |
548 // Look up the bitmap for |available_scale_factor| in the bitmap map. | 550 // Look up the bitmap for |available_scale_factor| in the bitmap map. |
549 // If not found, decode the corresponging png data, store the result | 551 // If not found, decode the corresponging png data, store the result |
550 // in the bitmap map. | 552 // in the bitmap map. |
(...skipping 11 matching lines...) Expand all Loading... |
562 available_bitmap_it = bitmap_map_.find(available_scale_factor); | 564 available_bitmap_it = bitmap_map_.find(available_scale_factor); |
563 } | 565 } |
564 | 566 |
565 // Scale the available bitmap to the desired scale factor, store the result | 567 // Scale the available bitmap to the desired scale factor, store the result |
566 // in the bitmap map and return it. | 568 // in the bitmap map and return it. |
567 SkBitmap scaled_bitmap = CreateLowQualityResizedBitmap( | 569 SkBitmap scaled_bitmap = CreateLowQualityResizedBitmap( |
568 available_bitmap_it->second, | 570 available_bitmap_it->second, |
569 available_scale_factor, | 571 available_scale_factor, |
570 scale_factor); | 572 scale_factor); |
571 bitmap_map_[scale_factor] = scaled_bitmap; | 573 bitmap_map_[scale_factor] = scaled_bitmap; |
572 return gfx::ImageSkiaRep(scaled_bitmap, scale); | 574 return gfx::ImageSkiaRep(scaled_bitmap, scale_factor); |
573 } | 575 } |
574 | 576 |
575 PngMap png_map_; | 577 PngMap png_map_; |
576 | 578 |
577 typedef std::map<ui::ScaleFactor, SkBitmap> BitmapMap; | 579 typedef std::map<ui::ScaleFactor, SkBitmap> BitmapMap; |
578 BitmapMap bitmap_map_; | 580 BitmapMap bitmap_map_; |
579 | 581 |
580 DISALLOW_COPY_AND_ASSIGN(ThemeImagePngSource); | 582 DISALLOW_COPY_AND_ASSIGN(ThemeImagePngSource); |
581 }; | 583 }; |
582 | 584 |
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1276 return false; | 1278 return false; |
1277 } | 1279 } |
1278 if (is_copyable) { | 1280 if (is_copyable) { |
1279 int raw_id = GetRawIDByPersistentID(prs_id, scale_factor); | 1281 int raw_id = GetRawIDByPersistentID(prs_id, scale_factor); |
1280 image_memory_[raw_id] = raw_data; | 1282 image_memory_[raw_id] = raw_data; |
1281 } else { | 1283 } else { |
1282 SkBitmap bitmap; | 1284 SkBitmap bitmap; |
1283 if (gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(), | 1285 if (gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(), |
1284 &bitmap)) { | 1286 &bitmap)) { |
1285 image_skia.AddRepresentation( | 1287 image_skia.AddRepresentation( |
1286 gfx::ImageSkiaRep(bitmap, | 1288 gfx::ImageSkiaRep(bitmap, scale_factor)); |
1287 ui::GetImageScale(scale_factor))); | |
1288 } else { | 1289 } else { |
1289 NOTREACHED() << "Unable to decode theme image resource " | 1290 NOTREACHED() << "Unable to decode theme image resource " |
1290 << it->first; | 1291 << it->first; |
1291 } | 1292 } |
1292 } | 1293 } |
1293 } | 1294 } |
1294 } | 1295 } |
1295 if (!is_copyable && !image_skia.isNull()) | 1296 if (!is_copyable && !image_skia.isNull()) |
1296 (*image_cache)[prs_id] = gfx::Image(image_skia); | 1297 (*image_cache)[prs_id] = gfx::Image(image_skia); |
1297 } | 1298 } |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1465 NOTREACHED() << "No image reps for resource " << it->first << "."; | 1466 NOTREACHED() << "No image reps for resource " << it->first << "."; |
1466 } | 1467 } |
1467 for (ImageSkiaReps::iterator rep_it = image_reps.begin(); | 1468 for (ImageSkiaReps::iterator rep_it = image_reps.begin(); |
1468 rep_it != image_reps.end(); ++rep_it) { | 1469 rep_it != image_reps.end(); ++rep_it) { |
1469 std::vector<unsigned char> bitmap_data; | 1470 std::vector<unsigned char> bitmap_data; |
1470 if (!gfx::PNGCodec::EncodeBGRASkBitmap(rep_it->sk_bitmap(), false, | 1471 if (!gfx::PNGCodec::EncodeBGRASkBitmap(rep_it->sk_bitmap(), false, |
1471 &bitmap_data)) { | 1472 &bitmap_data)) { |
1472 NOTREACHED() << "Image file for resource " << it->first | 1473 NOTREACHED() << "Image file for resource " << it->first |
1473 << " could not be encoded."; | 1474 << " could not be encoded."; |
1474 } | 1475 } |
1475 int raw_id = GetRawIDByPersistentID( | 1476 int raw_id = GetRawIDByPersistentID(it->first, rep_it->scale_factor()); |
1476 it->first, | |
1477 ui::GetSupportedScaleFactor(rep_it->scale())); | |
1478 (*reencoded_images)[raw_id] = | 1477 (*reencoded_images)[raw_id] = |
1479 base::RefCountedBytes::TakeVector(&bitmap_data); | 1478 base::RefCountedBytes::TakeVector(&bitmap_data); |
1480 } | 1479 } |
1481 } | 1480 } |
1482 } | 1481 } |
1483 | 1482 |
1484 void BrowserThemePack::MergeImageCaches( | 1483 void BrowserThemePack::MergeImageCaches( |
1485 const ImageCache& source, ImageCache* destination) const { | 1484 const ImageCache& source, ImageCache* destination) const { |
1486 for (ImageCache::const_iterator it = source.begin(); it != source.end(); | 1485 for (ImageCache::const_iterator it = source.begin(); it != source.end(); |
1487 ++it) { | 1486 ++it) { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 return -1; | 1526 return -1; |
1528 } | 1527 } |
1529 | 1528 |
1530 bool BrowserThemePack::GetScaleFactorFromManifestKey( | 1529 bool BrowserThemePack::GetScaleFactorFromManifestKey( |
1531 const std::string& key, | 1530 const std::string& key, |
1532 ui::ScaleFactor* scale_factor) const { | 1531 ui::ScaleFactor* scale_factor) const { |
1533 int percent = 0; | 1532 int percent = 0; |
1534 if (base::StringToInt(key, &percent)) { | 1533 if (base::StringToInt(key, &percent)) { |
1535 float scale = static_cast<float>(percent) / 100.0f; | 1534 float scale = static_cast<float>(percent) / 100.0f; |
1536 for (size_t i = 0; i < scale_factors_.size(); ++i) { | 1535 for (size_t i = 0; i < scale_factors_.size(); ++i) { |
1537 if (fabs(ui::GetImageScale(scale_factors_[i]) - scale) < 0.001) { | 1536 if (fabs(ui::GetScaleFactorScale(scale_factors_[i]) - scale) < 0.001) { |
1538 *scale_factor = scale_factors_[i]; | 1537 *scale_factor = scale_factors_[i]; |
1539 return true; | 1538 return true; |
1540 } | 1539 } |
1541 } | 1540 } |
1542 } | 1541 } |
1543 return false; | 1542 return false; |
1544 } | 1543 } |
1545 | 1544 |
1546 void BrowserThemePack::GenerateRawImageForAllSupportedScales(int prs_id) { | 1545 void BrowserThemePack::GenerateRawImageForAllSupportedScales(int prs_id) { |
1547 // Compute (by scaling) bitmaps for |prs_id| for any scale factors | 1546 // Compute (by scaling) bitmaps for |prs_id| for any scale factors |
(...skipping 16 matching lines...) Expand all Loading... |
1564 } | 1563 } |
1565 } | 1564 } |
1566 if (!image_missing) | 1565 if (!image_missing) |
1567 return; | 1566 return; |
1568 | 1567 |
1569 // Find available scale factor with highest scale. | 1568 // Find available scale factor with highest scale. |
1570 ui::ScaleFactor available_scale_factor = ui::SCALE_FACTOR_NONE; | 1569 ui::ScaleFactor available_scale_factor = ui::SCALE_FACTOR_NONE; |
1571 for (size_t i = 0; i < scale_factors_.size(); ++i) { | 1570 for (size_t i = 0; i < scale_factors_.size(); ++i) { |
1572 int raw_id = GetRawIDByPersistentID(prs_id, scale_factors_[i]); | 1571 int raw_id = GetRawIDByPersistentID(prs_id, scale_factors_[i]); |
1573 if ((available_scale_factor == ui::SCALE_FACTOR_NONE || | 1572 if ((available_scale_factor == ui::SCALE_FACTOR_NONE || |
1574 (ui::GetImageScale(scale_factors_[i]) > | 1573 (ui::GetScaleFactorScale(scale_factors_[i]) > |
1575 ui::GetImageScale(available_scale_factor))) && | 1574 ui::GetScaleFactorScale(available_scale_factor))) && |
1576 image_memory_.find(raw_id) != image_memory_.end()) { | 1575 image_memory_.find(raw_id) != image_memory_.end()) { |
1577 available_scale_factor = scale_factors_[i]; | 1576 available_scale_factor = scale_factors_[i]; |
1578 } | 1577 } |
1579 } | 1578 } |
1580 // If no scale factor is available, we're done. | 1579 // If no scale factor is available, we're done. |
1581 if (available_scale_factor == ui::SCALE_FACTOR_NONE) | 1580 if (available_scale_factor == ui::SCALE_FACTOR_NONE) |
1582 return; | 1581 return; |
1583 | 1582 |
1584 // Get bitmap for the available scale factor. | 1583 // Get bitmap for the available scale factor. |
1585 int available_raw_id = GetRawIDByPersistentID(prs_id, available_scale_factor); | 1584 int available_raw_id = GetRawIDByPersistentID(prs_id, available_scale_factor); |
(...skipping 21 matching lines...) Expand all Loading... |
1607 false, | 1606 false, |
1608 &bitmap_data)) { | 1607 &bitmap_data)) { |
1609 NOTREACHED() << "Unable to encode theme image for prs_id=" | 1608 NOTREACHED() << "Unable to encode theme image for prs_id=" |
1610 << prs_id << " for scale_factor=" << scale_factors_[i]; | 1609 << prs_id << " for scale_factor=" << scale_factors_[i]; |
1611 break; | 1610 break; |
1612 } | 1611 } |
1613 image_memory_[scaled_raw_id] = | 1612 image_memory_[scaled_raw_id] = |
1614 base::RefCountedBytes::TakeVector(&bitmap_data); | 1613 base::RefCountedBytes::TakeVector(&bitmap_data); |
1615 } | 1614 } |
1616 } | 1615 } |
OLD | NEW |