mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
105 lines
3.6 KiB
Dart
105 lines
3.6 KiB
Dart
// Copyright 2013 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.
|
|
|
|
// @dart = 2.6
|
|
import 'dart:async';
|
|
import 'dart:io';
|
|
import 'dart:typed_data';
|
|
import 'dart:ui';
|
|
|
|
import 'package:path/path.dart' as path;
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
test('basic image descriptor - encoded - greyscale', () async {
|
|
final Uint8List bytes = await readFile('2x2.png');
|
|
final ImmutableBuffer buffer = await ImmutableBuffer.fromUint8List(bytes);
|
|
final ImageDescriptor descriptor = await ImageDescriptor.encoded(buffer);
|
|
|
|
expect(descriptor.width, 2);
|
|
expect(descriptor.height, 2);
|
|
expect(descriptor.bytesPerPixel, 1);
|
|
|
|
final Codec codec = await descriptor.instantiateCodec();
|
|
expect(codec.frameCount, 1);
|
|
});
|
|
|
|
test('basic image descriptor - encoded - square', () async {
|
|
final Uint8List bytes = await readFile('square.png');
|
|
final ImmutableBuffer buffer = await ImmutableBuffer.fromUint8List(bytes);
|
|
final ImageDescriptor descriptor = await ImageDescriptor.encoded(buffer);
|
|
|
|
expect(descriptor.width, 10);
|
|
expect(descriptor.height, 10);
|
|
expect(descriptor.bytesPerPixel, 4);
|
|
|
|
final Codec codec = await descriptor.instantiateCodec();
|
|
expect(codec.frameCount, 1);
|
|
});
|
|
|
|
test('basic image descriptor - encoded - animated', () async {
|
|
final Uint8List bytes = await _getSkiaResource('test640x479.gif').readAsBytes();
|
|
final ImmutableBuffer buffer = await ImmutableBuffer.fromUint8List(bytes);
|
|
final ImageDescriptor descriptor = await ImageDescriptor.encoded(buffer);
|
|
|
|
expect(descriptor.width, 640);
|
|
expect(descriptor.height, 479);
|
|
expect(descriptor.bytesPerPixel, 4);
|
|
|
|
final Codec codec = await descriptor.instantiateCodec();
|
|
expect(codec.frameCount, 4);
|
|
expect(codec.repetitionCount, -1);
|
|
});
|
|
|
|
test('basic image descriptor - raw', () async {
|
|
final Uint8List bytes = Uint8List.fromList(List<int>.filled(16, 0xFFABCDEF));
|
|
final ImmutableBuffer buffer = await ImmutableBuffer.fromUint8List(bytes);
|
|
final ImageDescriptor descriptor = ImageDescriptor.raw(
|
|
buffer,
|
|
width: 4,
|
|
height: 4,
|
|
rowBytes: 4 * 4,
|
|
pixelFormat: PixelFormat.rgba8888,
|
|
);
|
|
|
|
expect(descriptor.width, 4);
|
|
expect(descriptor.height, 4);
|
|
expect(descriptor.bytesPerPixel, 4);
|
|
|
|
final Codec codec = await descriptor.instantiateCodec();
|
|
expect(codec.frameCount, 1);
|
|
});
|
|
|
|
test('HEIC image', () async {
|
|
final Uint8List bytes = await readFile('grill_chicken.heic');
|
|
final ImmutableBuffer buffer = await ImmutableBuffer.fromUint8List(bytes);
|
|
final ImageDescriptor descriptor = await ImageDescriptor.encoded(buffer);
|
|
|
|
expect(descriptor.width, 300);
|
|
expect(descriptor.height, 400);
|
|
expect(descriptor.bytesPerPixel, 4);
|
|
|
|
final Codec codec = await descriptor.instantiateCodec();
|
|
expect(codec.frameCount, 1);
|
|
}, skip: !(Platform.isIOS || Platform.isMacOS || Platform.isWindows));
|
|
}
|
|
|
|
Future<Uint8List> readFile(String fileName, ) async {
|
|
final File file =
|
|
File(path.join('flutter', 'testing', 'resources', fileName));
|
|
return await file.readAsBytes();
|
|
}
|
|
|
|
/// Returns a File handle to a file in the skia/resources directory.
|
|
File _getSkiaResource(String fileName) {
|
|
// As Platform.script is not working for flutter_tester
|
|
// (https://github.com/flutter/flutter/issues/12847), this is currently
|
|
// assuming the curent working directory is engine/src.
|
|
// This is fragile and should be changed once the Platform.script issue is
|
|
// resolved.
|
|
final String assetPath =
|
|
path.join('third_party', 'skia', 'resources', 'images', fileName);
|
|
return File(assetPath);
|
|
}
|