Unverified Commit 33f5ac66 authored by ColdPaleLight's avatar ColdPaleLight Committed by GitHub

ImageInfo adds a new getter named sizeBytes to decouple ImageCache and ui.Image (#86555)

parent df399f9a
......@@ -411,7 +411,7 @@ class ImageCache {
void listener(ImageInfo? info, bool syncCall) {
int? sizeBytes;
if (info != null) {
sizeBytes = info.image.height * info.image.width * 4;
sizeBytes = info.sizeBytes;
info.dispose();
}
final _CachedImage image = _CachedImage(
......
......@@ -98,6 +98,9 @@ class ImageInfo {
/// the image.
final ui.Image image;
/// The size of raw image pixels in bytes.
int get sizeBytes => image.height * image.width * 4;
/// The linear scale factor for drawing this image at its intended size.
///
/// The scale factor applies to the width and the height.
......
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:ui' as ui show Image;
import 'package:flutter/painting.dart';
import 'package:flutter_test/flutter_test.dart';
Future<void> main() async {
final ui.Image smallImage = await createTestImage(width: 10, height: 20);
final ui.Image middleImage = await createTestImage(width: 20, height: 100);
final ui.Image bigImage = await createTestImage(width: 100, height: 200);
test('ImageInfo sizeBytes', () {
ImageInfo imageInfo = ImageInfo(image: smallImage);
expect(imageInfo.sizeBytes, equals(800));
imageInfo = ImageInfo(image: middleImage);
expect(imageInfo.sizeBytes, equals(8000));
imageInfo = ImageInfo(image: bigImage);
expect(imageInfo.sizeBytes, equals(80000));
});
}
......@@ -43,6 +43,9 @@ class TestImageInfo implements ImageInfo {
image.dispose();
}
@override
int get sizeBytes => image.height * image.width * 4;
@override
int get hashCode => hashValues(value, image, scale, debugLabel);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment