| // 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. | |
| import 'dart:typed_data'; | |
| import 'dart:ui'; | |
| import 'package:litetest/litetest.dart'; | |
| import 'canvas_test.dart' show createImage, testCanvas; | |
| void main() { | |
| bool assertsEnabled = false; | |
| assert(() { | |
| assertsEnabled = true; | |
| return true; | |
| }()); | |
| test('Construct an ImageShader', () async { | |
| final Image image = await createImage(50, 50); | |
| final ImageShader shader = ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16)); | |
| final Paint paint = Paint()..shader = shader; | |
| const Rect rect = Rect.fromLTRB(0, 0, 100, 100); | |
| testCanvas((Canvas canvas) => canvas.drawRect(rect, paint)); | |
| if (assertsEnabled) { | |
| expect(shader.debugDisposed, false); | |
| } | |
| shader.dispose(); | |
| if (assertsEnabled) { | |
| expect(shader.debugDisposed, true); | |
| } | |
| image.dispose(); | |
| }); | |
| test('ImageShader with disposed image', () async { | |
| final Image image = await createImage(50, 50); | |
| image.dispose(); | |
| if (assertsEnabled) { | |
| expectAssertion(() => ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16))); | |
| } else { | |
| throwsException(() => ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16))); | |
| } | |
| }); | |
| test('Disposed image shader in a paint', () async { | |
| final Image image = await createImage(50, 50); | |
| final ImageShader shader = ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16)); | |
| shader.dispose(); | |
| if (assertsEnabled) { | |
| expectAssertion(() => Paint()..shader = shader); | |
| return; | |
| } | |
| final Paint paint = Paint()..shader = shader; | |
| const Rect rect = Rect.fromLTRB(0, 0, 100, 100); | |
| testCanvas((Canvas canvas) => canvas.drawRect(rect, paint)); | |
| image.dispose(); | |
| }); | |
| test('Construct an ImageShader - GPU image', () async { | |
| final PictureRecorder recorder = PictureRecorder(); | |
| final Canvas canvas = Canvas(recorder); | |
| canvas.drawPaint(Paint()..color = const Color(0xFFABCDEF)); | |
| final Picture picture = recorder.endRecording(); | |
| final Image image = picture.toImageSync(50, 50); | |
| picture.dispose(); | |
| final ImageShader shader = ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16)); | |
| final Paint paint = Paint()..shader=shader; | |
| const Rect rect = Rect.fromLTRB(0, 0, 100, 100); | |
| testCanvas((Canvas canvas) => canvas.drawRect(rect, paint)); | |
| if (assertsEnabled) { | |
| expect(shader.debugDisposed, false); | |
| } | |
| shader.dispose(); | |
| if (assertsEnabled) { | |
| expect(shader.debugDisposed, true); | |
| } | |
| image.dispose(); | |
| }); | |
| } |