From a9ca8295abdac6e70a36aa0b7144dbefa13e15d0 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Tue, 22 Dec 2020 14:03:55 +0100 Subject: [PATCH 01/13] Added imageFormatGroup to initialize --- .../camera/camera_platform_interface/CHANGELOG.md | 4 ++++ .../lib/src/method_channel/method_channel_camera.dart | 3 ++- .../lib/src/platform_interface/camera_platform.dart | 6 +++++- .../camera/camera_platform_interface/pubspec.yaml | 2 +- .../method_channel/method_channel_camera_test.dart | 11 +++++++++-- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/camera/camera_platform_interface/CHANGELOG.md b/packages/camera/camera_platform_interface/CHANGELOG.md index ea9821e841f9..efb1733697be 100644 --- a/packages/camera/camera_platform_interface/CHANGELOG.md +++ b/packages/camera/camera_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.0 + +- Introduces option to set ImageFormat when initializing + ## 1.0.4 - Added the torch option to the FlashMode enum, which when implemented indicates the flash light should be turned on continuously. diff --git a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart index 3bf996fedb19..f79b25e4aa32 100644 --- a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart +++ b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart @@ -75,7 +75,7 @@ class MethodChannelCamera extends CameraPlatform { } @override - Future initializeCamera(int cameraId) { + Future initializeCamera(int cameraId, {int imageFormatGroup}) { _channels.putIfAbsent(cameraId, () { final channel = MethodChannel('flutter.io/cameraPlugin/camera$cameraId'); channel.setMethodCallHandler( @@ -93,6 +93,7 @@ class MethodChannelCamera extends CameraPlatform { 'initialize', { 'cameraId': cameraId, + 'imageFormatGroup': imageFormatGroup, }, ); diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index 6f96079dc55c..a3fd61d401e7 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -52,7 +52,11 @@ abstract class CameraPlatform extends PlatformInterface { } /// Initializes the camera on the device. - Future initializeCamera(int cameraId) { + /// + /// [imageFormatGroup] is used to specify the image formatting used. + /// On Android this defaults to ImageFormat.YUV_420_888 and applies only to the imageStream. + /// On iOS this defaults to kCVPixelFormatType_32BGRA + Future initializeCamera(int cameraId, {int imageFormatGroup}) { throw UnimplementedError('initializeCamera() is not implemented.'); } diff --git a/packages/camera/camera_platform_interface/pubspec.yaml b/packages/camera/camera_platform_interface/pubspec.yaml index 8cb643e84ca6..b6933314d41d 100644 --- a/packages/camera/camera_platform_interface/pubspec.yaml +++ b/packages/camera/camera_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the camera plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.4 +version: 1.1.0 dependencies: flutter: diff --git a/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart b/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart index c461b1fd583c..bb24ea7cae2f 100644 --- a/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart +++ b/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart @@ -24,7 +24,10 @@ void main() { MethodChannelMock cameraMockChannel = MethodChannelMock( channelName: 'plugins.flutter.io/camera', methods: { - 'create': {'cameraId': 1} + 'create': { + 'cameraId': 1, + 'imageFormatGroup': null, + } }); final camera = MethodChannelCamera(); @@ -107,7 +110,10 @@ void main() { MethodChannelMock cameraMockChannel = MethodChannelMock( channelName: 'plugins.flutter.io/camera', methods: { - 'create': {'cameraId': 1}, + 'create': { + 'cameraId': 1, + 'imageFormatGroup': null, + }, 'initialize': null }); final camera = MethodChannelCamera(); @@ -130,6 +136,7 @@ void main() { 'initialize', arguments: { 'cameraId': 1, + 'imageFormatGroup': null, }, ), ]); From ec6aa454ddaa3ece25a54205f909b672ed49a6a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl?= <32639467+danielroek@users.noreply.github.com> Date: Tue, 22 Dec 2020 15:15:57 +0100 Subject: [PATCH 02/13] Apply suggestions from code review Co-authored-by: Maurits van Beusekom --- packages/camera/camera_platform_interface/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_platform_interface/CHANGELOG.md b/packages/camera/camera_platform_interface/CHANGELOG.md index efb1733697be..add01384e967 100644 --- a/packages/camera/camera_platform_interface/CHANGELOG.md +++ b/packages/camera/camera_platform_interface/CHANGELOG.md @@ -1,6 +1,6 @@ ## 1.1.0 -- Introduces option to set ImageFormat when initializing +- Introduces an option to set the image format when initializing. ## 1.0.4 From 56f77eccb558b37a2ac976fe7c26af0c473a38d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl?= <32639467+danielroek@users.noreply.github.com> Date: Tue, 22 Dec 2020 15:16:43 +0100 Subject: [PATCH 03/13] Added period to sentence --- .../lib/src/platform_interface/camera_platform.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index a3fd61d401e7..ce57d9ce03cf 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -55,7 +55,7 @@ abstract class CameraPlatform extends PlatformInterface { /// /// [imageFormatGroup] is used to specify the image formatting used. /// On Android this defaults to ImageFormat.YUV_420_888 and applies only to the imageStream. - /// On iOS this defaults to kCVPixelFormatType_32BGRA + /// On iOS this defaults to kCVPixelFormatType_32BGRA. Future initializeCamera(int cameraId, {int imageFormatGroup}) { throw UnimplementedError('initializeCamera() is not implemented.'); } From ecea347a6cefe292759ddc48162034f56e250002 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 13:48:36 +0100 Subject: [PATCH 04/13] Moved ImageFormatGroup to platform_interface; Added extension to convert ImageFormatGroup to name; Changed int to ImageFormatGroup for initializeCamera --- .../method_channel/method_channel_camera.dart | 5 +- .../platform_interface/camera_platform.dart | 3 +- .../lib/src/types/image_format_group.dart | 51 +++++++++++++++++++ .../camera_platform_interface/pubspec.yaml | 2 +- 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart diff --git a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart index f79b25e4aa32..8a8bb5339b85 100644 --- a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart +++ b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart @@ -5,6 +5,7 @@ import 'dart:async'; import 'package:camera_platform_interface/camera_platform_interface.dart'; +import 'package:camera_platform_interface/src/types/image_format_group.dart'; import 'package:camera_platform_interface/src/utils/utils.dart'; import 'package:cross_file/cross_file.dart'; import 'package:flutter/services.dart'; @@ -75,7 +76,7 @@ class MethodChannelCamera extends CameraPlatform { } @override - Future initializeCamera(int cameraId, {int imageFormatGroup}) { + Future initializeCamera(int cameraId, {ImageFormatGroup imageFormatGroup}) { _channels.putIfAbsent(cameraId, () { final channel = MethodChannel('flutter.io/cameraPlugin/camera$cameraId'); channel.setMethodCallHandler( @@ -93,7 +94,7 @@ class MethodChannelCamera extends CameraPlatform { 'initialize', { 'cameraId': cameraId, - 'imageFormatGroup': imageFormatGroup, + 'imageFormatGroup': imageFormatGroup.name(), }, ); diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index ce57d9ce03cf..6ec977047902 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -6,6 +6,7 @@ import 'dart:async'; import 'package:camera_platform_interface/camera_platform_interface.dart'; import 'package:camera_platform_interface/src/method_channel/method_channel_camera.dart'; +import 'package:camera_platform_interface/src/types/image_format_group.dart'; import 'package:cross_file/cross_file.dart'; import 'package:flutter/widgets.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; @@ -56,7 +57,7 @@ abstract class CameraPlatform extends PlatformInterface { /// [imageFormatGroup] is used to specify the image formatting used. /// On Android this defaults to ImageFormat.YUV_420_888 and applies only to the imageStream. /// On iOS this defaults to kCVPixelFormatType_32BGRA. - Future initializeCamera(int cameraId, {int imageFormatGroup}) { + Future initializeCamera(int cameraId, {ImageFormatGroup imageFormatGroup}) { throw UnimplementedError('initializeCamera() is not implemented.'); } diff --git a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart new file mode 100644 index 000000000000..48a0fa0be834 --- /dev/null +++ b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart @@ -0,0 +1,51 @@ +// TODO:(bmparr) Turn [ImageFormatGroup] to a class with int values. + +/// Group of image formats that are comparable across Android and iOS platforms. +enum ImageFormatGroup { + /// The image format does not fit into any specific group. + unknown, + + /// Multi-plane YUV 420 format. + /// + /// This format is a generic YCbCr format, capable of describing any 4:2:0 + /// chroma-subsampled planar or semiplanar buffer (but not fully interleaved), + /// with 8 bits per color sample. + /// + /// On Android, this is `android.graphics.ImageFormat.YUV_420_888`. See + /// https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888 + /// + /// On iOS, this is `kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange`. See + /// https://developer.apple.com/documentation/corevideo/1563591-pixel_format_identifiers/kcvpixelformattype_420ypcbcr8biplanarvideorange?language=objc + yuv420, + + /// 32-bit BGRA. + /// + /// On iOS, this is `kCVPixelFormatType_32BGRA`. See + /// https://developer.apple.com/documentation/corevideo/1563591-pixel_format_identifiers/kcvpixelformattype_32bgra?language=objc + bgra8888, + + /// 32-big RGB image encoded into JPEG bytes. + /// + /// On Android, this is `android.graphics.ImageFormat.JPEG`. See + /// https://developer.android.com/reference/android/graphics/ImageFormat#JPEG + jpeg, +} + +/// Extension on [ImageFormatGroup] to stringify the enum +extension ImageFormatGroupName on ImageFormatGroup { + /// returns a String value for [ImageFormatGroup] + String name() { + switch (this) { + case ImageFormatGroup.jpeg: + return 'JPEG'; + case ImageFormatGroup.yuv420: + return 'YUV420'; + case ImageFormatGroup.bgra8888: + return 'BGRA888'; + case ImageFormatGroup.unknown: + return 'UNKNOWN'; + default: + return 'UNKNOWN'; + } + } +} diff --git a/packages/camera/camera_platform_interface/pubspec.yaml b/packages/camera/camera_platform_interface/pubspec.yaml index b6933314d41d..0821fd39b5c1 100644 --- a/packages/camera/camera_platform_interface/pubspec.yaml +++ b/packages/camera/camera_platform_interface/pubspec.yaml @@ -21,5 +21,5 @@ dev_dependencies: pedantic: ^1.8.0 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.7.0 <3.0.0" flutter: ">=1.22.0" From ac23632ce3f0b01c7f19bafdeb2e23b6b3c5ad84 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 13:50:19 +0100 Subject: [PATCH 05/13] Fixed test --- .../test/method_channel/method_channel_camera_test.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart b/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart index bb24ea7cae2f..3763da4df8da 100644 --- a/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart +++ b/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart @@ -26,7 +26,7 @@ void main() { methods: { 'create': { 'cameraId': 1, - 'imageFormatGroup': null, + 'imageFormatGroup': 'UNKNOWN', } }); final camera = MethodChannelCamera(); @@ -112,7 +112,7 @@ void main() { methods: { 'create': { 'cameraId': 1, - 'imageFormatGroup': null, + 'imageFormatGroup': 'UNKNOWN', }, 'initialize': null }); @@ -136,7 +136,7 @@ void main() { 'initialize', arguments: { 'cameraId': 1, - 'imageFormatGroup': null, + 'imageFormatGroup': 'UNKNOWN', }, ), ]); From 4eea926c6beeffd32e716ef202d3b35feabc7115 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 13:58:42 +0100 Subject: [PATCH 06/13] Separated Android and iOS in name extension --- .../lib/src/types/image_format_group.dart | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart index 48a0fa0be834..b6f9e2b0e3c5 100644 --- a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart +++ b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart @@ -1,4 +1,4 @@ -// TODO:(bmparr) Turn [ImageFormatGroup] to a class with int values. +import 'package:flutter/foundation.dart'; /// Group of image formats that are comparable across Android and iOS platforms. enum ImageFormatGroup { @@ -35,17 +35,30 @@ enum ImageFormatGroup { extension ImageFormatGroupName on ImageFormatGroup { /// returns a String value for [ImageFormatGroup] String name() { - switch (this) { - case ImageFormatGroup.jpeg: - return 'JPEG'; - case ImageFormatGroup.yuv420: - return 'YUV420'; - case ImageFormatGroup.bgra8888: - return 'BGRA888'; - case ImageFormatGroup.unknown: - return 'UNKNOWN'; - default: - return 'UNKNOWN'; + if (defaultTargetPlatform == TargetPlatform.android) { + switch (this) { + case ImageFormatGroup.jpeg: + return 'JPEG'; + case ImageFormatGroup.yuv420: + return 'YUV420'; + case ImageFormatGroup.bgra8888: + case ImageFormatGroup.unknown: + default: + return 'UNKNOWN'; + } + } else if (defaultTargetPlatform == TargetPlatform.iOS) { + switch (this) { + case ImageFormatGroup.bgra8888: + return 'BGRA888'; + case ImageFormatGroup.yuv420: + return 'YUV420'; + case ImageFormatGroup.jpeg: + case ImageFormatGroup.unknown: + default: + return 'UNKNOWN'; + } } + // unsupported platform + return 'UNKNOWN'; } } From 9a86d26f32627f46f29799850e344c716d6d6d2d Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 14:00:37 +0100 Subject: [PATCH 07/13] Clarified returns on name extension --- .../lib/src/types/image_format_group.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart index b6f9e2b0e3c5..06bd111bc6d2 100644 --- a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart +++ b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart @@ -34,6 +34,8 @@ enum ImageFormatGroup { /// Extension on [ImageFormatGroup] to stringify the enum extension ImageFormatGroupName on ImageFormatGroup { /// returns a String value for [ImageFormatGroup] + /// returns 'UNKNOWN' if platform is not supported + /// or if [ImageFormatGroup] is not supported for the platform String name() { if (defaultTargetPlatform == TargetPlatform.android) { switch (this) { From cf6345cd35e9aa16d875af040f993692b6687947 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 14:40:14 +0100 Subject: [PATCH 08/13] Export image_format_group.dart in types.dart --- .../camera/camera_platform_interface/lib/src/types/types.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/camera/camera_platform_interface/lib/src/types/types.dart b/packages/camera/camera_platform_interface/lib/src/types/types.dart index 3a89a1021e95..62c9f65319f2 100644 --- a/packages/camera/camera_platform_interface/lib/src/types/types.dart +++ b/packages/camera/camera_platform_interface/lib/src/types/types.dart @@ -6,3 +6,4 @@ export 'camera_description.dart'; export 'resolution_preset.dart'; export 'camera_exception.dart'; export 'flash_mode.dart'; +export 'image_format_group.dart'; \ No newline at end of file From 81799a7cd60d89c42058f08c2334a3d50458f365 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 15:21:21 +0100 Subject: [PATCH 09/13] Changed enum values to lowercase --- .../lib/src/types/image_format_group.dart | 16 ++++++++-------- .../method_channel_camera_test.dart | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart index 06bd111bc6d2..59e47064f3a4 100644 --- a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart +++ b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart @@ -34,33 +34,33 @@ enum ImageFormatGroup { /// Extension on [ImageFormatGroup] to stringify the enum extension ImageFormatGroupName on ImageFormatGroup { /// returns a String value for [ImageFormatGroup] - /// returns 'UNKNOWN' if platform is not supported + /// returns 'unknown' if platform is not supported /// or if [ImageFormatGroup] is not supported for the platform String name() { if (defaultTargetPlatform == TargetPlatform.android) { switch (this) { case ImageFormatGroup.jpeg: - return 'JPEG'; + return 'jpeg'; case ImageFormatGroup.yuv420: - return 'YUV420'; + return 'yuv420'; case ImageFormatGroup.bgra8888: case ImageFormatGroup.unknown: default: - return 'UNKNOWN'; + return 'unknown'; } } else if (defaultTargetPlatform == TargetPlatform.iOS) { switch (this) { case ImageFormatGroup.bgra8888: - return 'BGRA888'; + return 'bgra8888'; case ImageFormatGroup.yuv420: - return 'YUV420'; + return 'yuv420'; case ImageFormatGroup.jpeg: case ImageFormatGroup.unknown: default: - return 'UNKNOWN'; + return 'unknown'; } } // unsupported platform - return 'UNKNOWN'; + return 'unknown'; } } diff --git a/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart b/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart index 3763da4df8da..5aa44d544508 100644 --- a/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart +++ b/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart @@ -26,7 +26,7 @@ void main() { methods: { 'create': { 'cameraId': 1, - 'imageFormatGroup': 'UNKNOWN', + 'imageFormatGroup': 'unknown', } }); final camera = MethodChannelCamera(); @@ -112,7 +112,7 @@ void main() { methods: { 'create': { 'cameraId': 1, - 'imageFormatGroup': 'UNKNOWN', + 'imageFormatGroup': 'unknown', }, 'initialize': null }); @@ -136,7 +136,7 @@ void main() { 'initialize', arguments: { 'cameraId': 1, - 'imageFormatGroup': 'UNKNOWN', + 'imageFormatGroup': 'unknown', }, ), ]); From ab15e89a7a0dc6ab0a4db0ab690eb089eabc3447 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 15:35:31 +0100 Subject: [PATCH 10/13] Added ImageFormatGroup test --- .../test/types/image_group_test.dart | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 packages/camera/camera_platform_interface/test/types/image_group_test.dart diff --git a/packages/camera/camera_platform_interface/test/types/image_group_test.dart b/packages/camera/camera_platform_interface/test/types/image_group_test.dart new file mode 100644 index 000000000000..6c72498506a6 --- /dev/null +++ b/packages/camera/camera_platform_interface/test/types/image_group_test.dart @@ -0,0 +1,22 @@ +import 'dart:io'; + +import 'package:camera_platform_interface/src/types/types.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('$ImageFormatGroup tests', () { + test('ImageFormatGroupName extension returns correct values', () { + debugDefaultTargetPlatformOverride = TargetPlatform.android; + expect(ImageFormatGroup.jpeg.name(), 'jpeg'); + expect(ImageFormatGroup.yuv420.name(), 'yuv420'); + expect(ImageFormatGroup.bgra8888.name(), 'unknown'); + expect(ImageFormatGroup.unknown.name(), 'unknown'); + debugDefaultTargetPlatformOverride = TargetPlatform.iOS; + expect(ImageFormatGroup.bgra8888.name(), 'bgra8888'); + expect(ImageFormatGroup.yuv420.name(), 'yuv420'); + expect(ImageFormatGroup.jpeg.name(), 'unknown'); + expect(ImageFormatGroup.unknown.name(), 'unknown'); + }); + }); +} \ No newline at end of file From 098fd76211fb6b05fb5122cf41b0981e12d7a050 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 15:36:21 +0100 Subject: [PATCH 11/13] Fixed formatting --- .../test/types/image_group_test.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/camera/camera_platform_interface/test/types/image_group_test.dart b/packages/camera/camera_platform_interface/test/types/image_group_test.dart index 6c72498506a6..7c8a45a3f70a 100644 --- a/packages/camera/camera_platform_interface/test/types/image_group_test.dart +++ b/packages/camera/camera_platform_interface/test/types/image_group_test.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:camera_platform_interface/src/types/types.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -19,4 +17,4 @@ void main() { expect(ImageFormatGroup.unknown.name(), 'unknown'); }); }); -} \ No newline at end of file +} From f8d9e4c1171ee40a74bc7fcaa81829d6fb55214e Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 16:00:25 +0100 Subject: [PATCH 12/13] Removed target platform switch. --- .../lib/src/types/image_format_group.dart | 38 ++++++------------- .../test/types/image_group_test.dart | 9 +---- 2 files changed, 12 insertions(+), 35 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart index 59e47064f3a4..df1837a856c5 100644 --- a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart +++ b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart @@ -1,5 +1,3 @@ -import 'package:flutter/foundation.dart'; - /// Group of image formats that are comparable across Android and iOS platforms. enum ImageFormatGroup { /// The image format does not fit into any specific group. @@ -37,30 +35,16 @@ extension ImageFormatGroupName on ImageFormatGroup { /// returns 'unknown' if platform is not supported /// or if [ImageFormatGroup] is not supported for the platform String name() { - if (defaultTargetPlatform == TargetPlatform.android) { - switch (this) { - case ImageFormatGroup.jpeg: - return 'jpeg'; - case ImageFormatGroup.yuv420: - return 'yuv420'; - case ImageFormatGroup.bgra8888: - case ImageFormatGroup.unknown: - default: - return 'unknown'; - } - } else if (defaultTargetPlatform == TargetPlatform.iOS) { - switch (this) { - case ImageFormatGroup.bgra8888: - return 'bgra8888'; - case ImageFormatGroup.yuv420: - return 'yuv420'; - case ImageFormatGroup.jpeg: - case ImageFormatGroup.unknown: - default: - return 'unknown'; - } + switch (this) { + case ImageFormatGroup.bgra8888: + return 'bgra8888'; + case ImageFormatGroup.yuv420: + return 'yuv420'; + case ImageFormatGroup.jpeg: + return 'jpeg'; + case ImageFormatGroup.unknown: + default: + return 'unknown'; } - // unsupported platform - return 'unknown'; } -} +} \ No newline at end of file diff --git a/packages/camera/camera_platform_interface/test/types/image_group_test.dart b/packages/camera/camera_platform_interface/test/types/image_group_test.dart index 7c8a45a3f70a..c49b2f03a7a0 100644 --- a/packages/camera/camera_platform_interface/test/types/image_group_test.dart +++ b/packages/camera/camera_platform_interface/test/types/image_group_test.dart @@ -1,19 +1,12 @@ import 'package:camera_platform_interface/src/types/types.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { group('$ImageFormatGroup tests', () { test('ImageFormatGroupName extension returns correct values', () { - debugDefaultTargetPlatformOverride = TargetPlatform.android; - expect(ImageFormatGroup.jpeg.name(), 'jpeg'); - expect(ImageFormatGroup.yuv420.name(), 'yuv420'); - expect(ImageFormatGroup.bgra8888.name(), 'unknown'); - expect(ImageFormatGroup.unknown.name(), 'unknown'); - debugDefaultTargetPlatformOverride = TargetPlatform.iOS; expect(ImageFormatGroup.bgra8888.name(), 'bgra8888'); expect(ImageFormatGroup.yuv420.name(), 'yuv420'); - expect(ImageFormatGroup.jpeg.name(), 'unknown'); + expect(ImageFormatGroup.jpeg.name(), 'jpeg'); expect(ImageFormatGroup.unknown.name(), 'unknown'); }); }); From 8936a7f1d3123865e3790815bd626c42ae4f3615 Mon Sep 17 00:00:00 2001 From: "daniel.roek" Date: Wed, 23 Dec 2020 16:27:54 +0100 Subject: [PATCH 13/13] Fixed formatting --- .../lib/src/method_channel/method_channel_camera.dart | 3 ++- .../lib/src/platform_interface/camera_platform.dart | 3 ++- .../lib/src/types/image_format_group.dart | 2 +- .../camera/camera_platform_interface/lib/src/types/types.dart | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart index 8a8bb5339b85..4f92ca62dbb1 100644 --- a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart +++ b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart @@ -76,7 +76,8 @@ class MethodChannelCamera extends CameraPlatform { } @override - Future initializeCamera(int cameraId, {ImageFormatGroup imageFormatGroup}) { + Future initializeCamera(int cameraId, + {ImageFormatGroup imageFormatGroup}) { _channels.putIfAbsent(cameraId, () { final channel = MethodChannel('flutter.io/cameraPlugin/camera$cameraId'); channel.setMethodCallHandler( diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index 6ec977047902..3b1ae7932149 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -57,7 +57,8 @@ abstract class CameraPlatform extends PlatformInterface { /// [imageFormatGroup] is used to specify the image formatting used. /// On Android this defaults to ImageFormat.YUV_420_888 and applies only to the imageStream. /// On iOS this defaults to kCVPixelFormatType_32BGRA. - Future initializeCamera(int cameraId, {ImageFormatGroup imageFormatGroup}) { + Future initializeCamera(int cameraId, + {ImageFormatGroup imageFormatGroup}) { throw UnimplementedError('initializeCamera() is not implemented.'); } diff --git a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart index df1837a856c5..3d2c0180fe65 100644 --- a/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart +++ b/packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart @@ -47,4 +47,4 @@ extension ImageFormatGroupName on ImageFormatGroup { return 'unknown'; } } -} \ No newline at end of file +} diff --git a/packages/camera/camera_platform_interface/lib/src/types/types.dart b/packages/camera/camera_platform_interface/lib/src/types/types.dart index 62c9f65319f2..024ba10efe39 100644 --- a/packages/camera/camera_platform_interface/lib/src/types/types.dart +++ b/packages/camera/camera_platform_interface/lib/src/types/types.dart @@ -6,4 +6,4 @@ export 'camera_description.dart'; export 'resolution_preset.dart'; export 'camera_exception.dart'; export 'flash_mode.dart'; -export 'image_format_group.dart'; \ No newline at end of file +export 'image_format_group.dart';