From beb3dd565f02c82eac938aae2d5061efc53a3211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Thu, 27 May 2021 13:47:21 +0200 Subject: [PATCH] Add tile entity --- android/gradle.properties | 4 +-- lib/entities/tile.dart | 30 +++++++++++++++++++ lib/screens/home.dart | 61 +++++++++++++++------------------------ 3 files changed, 56 insertions(+), 39 deletions(-) create mode 100644 lib/entities/tile.dart diff --git a/android/gradle.properties b/android/gradle.properties index 14eed39..aa51064 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.4 -app.versionCode=4 +app.versionName=0.0.5 +app.versionCode=5 diff --git a/lib/entities/tile.dart b/lib/entities/tile.dart new file mode 100644 index 0000000..9d80d4a --- /dev/null +++ b/lib/entities/tile.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; + +class Tile { + final Image image; + final double size; + final int currentCol; + final int currentRow; + final int originalCol; + final int originalRow; + + Tile( + @required this.image, + @required this.size, + @required this.currentCol, + @required this.currentRow, + @required this.originalCol, + @required this.originalRow, + ); + + Container widget() { + return Container( + child: Image( + image: this.image.image, + width: this.size, + height: this.size, + fit: BoxFit.fill + ) + ); + } +} diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 87da3b9..42432a2 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -5,14 +5,15 @@ import 'package:flutter/services.dart' show rootBundle; import 'package:image/image.dart' as imglib; import 'package:provider/provider.dart'; +import '../entities/tile.dart'; import '../provider/data.dart'; import '../utils/get_images_list.dart'; class Home extends StatelessWidget { static const String id = 'home'; - int _linesCount = 3; - int _columnsCount = 3; + int _linesCount = 4; + int _columnsCount = 4; double _selectorImageSize = 200; double _tipImageSize = 100; @@ -83,7 +84,7 @@ class Home extends StatelessWidget { ); } - Future<List<Image>> splitImageInTiles(Data myProvider) async { + Future<List<Tile>> splitImageInTiles(Data myProvider) async { String imageAsset = getImageAssetName(myProvider.image); Uint8List imageData = (await rootBundle.load(imageAsset)) .buffer @@ -94,35 +95,31 @@ class Home extends StatelessWidget { int width = (image.width / _linesCount).round(); int height = (image.height / _columnsCount).round(); - List<imglib.Image> parts = List<imglib.Image>(); + List<Tile> tiles = List<Tile>(); for (int i = 0; i < _linesCount; i++) { for (int j = 0; j < _columnsCount; j++) { - parts.add(imglib.copyCrop(image, x, y, width, height)); + tiles.add( + Tile( + Image.memory( + imglib.encodeJpg( + imglib.copyCrop(image, x, y, width, height) + ) + ), + _tileImageSize, + j, i, + j, i, + ) + ); + x += width; } x = 0; y += height; } - List<Image> tiles = List<Image>(); - for (var img in parts) { - tiles.add(Image.memory(imglib.encodeJpg(img))); - } - return tiles; } - Container _buildImageTileItem(Image tile) { - return Container( - child: Image( - image: tile.image, - width: _tileImageSize, - height: _tileImageSize, - fit: BoxFit.fill - ) - ); - } - Container _buildTilesetWidget(Data myProvider) { List tiles = myProvider.tiles; @@ -139,22 +136,12 @@ class Home extends StatelessWidget { width: 2, ), children: [ - TableRow(children: [ - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - ]), - TableRow(children: [ - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - ]), - TableRow(children: [ - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - Column(children: [_buildImageTileItem(tiles[tileIndex++])]), - ]), - ], + for (var row = 0; row < _linesCount; row++) + TableRow(children: [ + for (var col = 0; col < _columnsCount; col++) + Column(children: [tiles[tileIndex++].widget()]), + ]), + ] ); return Container( -- GitLab