This commit is contained in:
kodjomoustapha 2024-06-13 16:16:42 +01:00
parent 0fd9936cc9
commit 3fbbf7cf49
21 changed files with 141 additions and 98 deletions

2
.github/FUNDING.yml vendored
View file

@ -1,7 +1,7 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: kodjodevf
patreon: #
open_collective: # Replace with a single Open Collective username
ko_fi: #
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel

View file

@ -2,7 +2,7 @@ import 'package:extended_image/extended_image.dart';
import 'package:flutter/material.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/modules/manga/reader/image_view_center.dart';
import 'package:mangayomi/modules/manga/reader/image_view_paged.dart';
import 'package:mangayomi/modules/manga/reader/reader_view.dart';
import 'package:mangayomi/modules/manga/reader/widgets/circular_progress_indicator_animate_rotate.dart';
import 'package:mangayomi/modules/more/settings/reader/reader_screen.dart';
@ -124,7 +124,7 @@ class _DoubleColummViewState extends State<DoubleColummView>
children: [
if (widget.datas[0] != null)
Flexible(
child: ImageViewCenter(
child: ImageViewPaged(
data: widget.datas[0]!,
loadStateChanged: (state) {
if (state.extendedImageLoadState ==
@ -202,7 +202,7 @@ class _DoubleColummViewState extends State<DoubleColummView>
// if (widget.datas[1] != null) const SizedBox(width: 10),
if (widget.datas[1] != null)
Flexible(
child: ImageViewCenter(
child: ImageViewPaged(
data: widget.datas[1]!,
loadStateChanged: (state) {
if (state.extendedImageLoadState ==

View file

@ -1,7 +1,7 @@
import 'package:extended_image/extended_image.dart';
import 'package:flutter/material.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/modules/manga/reader/image_view_center.dart';
import 'package:mangayomi/modules/manga/reader/image_view_paged.dart';
import 'package:mangayomi/modules/manga/reader/reader_view.dart';
import 'package:mangayomi/modules/manga/reader/widgets/circular_progress_indicator_animate_rotate.dart';
import 'package:mangayomi/modules/more/settings/reader/reader_screen.dart';
@ -35,7 +35,7 @@ class DoubleColummVerticalView extends StatelessWidget {
children: [
if (datas[0] != null)
Flexible(
child: ImageViewCenter(
child: ImageViewPaged(
data: datas[0]!,
loadStateChanged: (state) {
if (state.extendedImageLoadState == LoadState.loading) {
@ -106,7 +106,7 @@ class DoubleColummVerticalView extends StatelessWidget {
// if (datas[1] != null) const SizedBox(width: 10),
if (datas[1] != null)
Flexible(
child: ImageViewCenter(
child: ImageViewPaged(
data: datas[1]!,
loadStateChanged: (state) {
if (state.extendedImageLoadState == LoadState.loading) {

View file

@ -7,14 +7,14 @@ import 'package:mangayomi/modules/manga/reader/widgets/color_filter_widget.dart'
import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart';
import 'package:mangayomi/utils/extensions/others.dart';
class ImageViewCenter extends ConsumerWidget {
class ImageViewPaged extends ConsumerWidget {
final UChapDataPreload data;
final Function(UChapDataPreload data) onLongPressData;
final Widget? Function(ExtendedImageState state) loadStateChanged;
final Function(ExtendedImageGestureState state)? onDoubleTap;
final GestureConfig Function(ExtendedImageState state)?
initGestureConfigHandler;
const ImageViewCenter({
const ImageViewPaged({
super.key,
required this.data,
required this.onLongPressData,
@ -25,10 +25,6 @@ class ImageViewCenter extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
return _imageView(ref);
}
Widget _imageView(WidgetRef ref) {
final scaleType = ref.watch(scaleTypeStateProvider);
final image = data.getImageProvider(ref);
return GestureDetector(

View file

@ -26,18 +26,11 @@ class ImageViewVertical extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
return _imageView(context, ref);
}
Widget _imageView(BuildContext context, WidgetRef ref) {
final image = data.getImageProvider(ref);
final scaleType = ref.watch(scaleTypeStateProvider);
final l10n = l10nLocalizations(context)!;
final imageWidget = ExtendedImage(
image: image,
image: data.getImageProvider(ref),
filterQuality: FilterQuality.medium,
handleLoadingProgress: true,
fit: getBoxFit(scaleType),
fit: getBoxFit(ref.watch(scaleTypeStateProvider)),
enableMemoryCache: true,
enableLoadState: true,
loadStateChanged: (state) {
@ -66,7 +59,7 @@ class ImageViewVertical extends ConsumerWidget {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(l10n.image_loading_error,
Text(context.l10n.image_loading_error,
style: TextStyle(color: Colors.white.withOpacity(0.7))),
Padding(
padding: const EdgeInsets.all(8.0),
@ -87,7 +80,7 @@ class ImageViewVertical extends ConsumerWidget {
padding: const EdgeInsets.symmetric(
vertical: 8, horizontal: 16),
child: Text(
l10n.retry,
context.l10n.retry,
),
),
)),

View file

@ -1,7 +1,7 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:mangayomi/modules/manga/reader/reader_view.dart';
import 'package:mangayomi/src/rust/api/imagecrop.dart';
import 'package:mangayomi/src/rust/api/image.dart';
import 'package:mangayomi/utils/extensions/others.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'crop_borders_provider.g.dart';
@ -18,7 +18,7 @@ Future<Uint8List?> cropBorders(CropBordersRef ref,
return null;
}
return await startCropping(image: imageBytes);
return processCropImage(image: imageBytes);
}
return null;
}

View file

@ -31,7 +31,7 @@ import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
import 'package:mangayomi/utils/extensions/others.dart';
import 'package:mangayomi/utils/global_style.dart';
import 'package:mangayomi/utils/headers.dart';
import 'package:mangayomi/modules/manga/reader/image_view_center.dart';
import 'package:mangayomi/modules/manga/reader/image_view_paged.dart';
import 'package:mangayomi/modules/manga/reader/image_view_vertical.dart';
import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart';
import 'package:mangayomi/modules/manga/reader/widgets/circular_progress_indicator_animate_rotate.dart';
@ -653,7 +653,7 @@ class _MangaChapterPageGalleryState
},
itemBuilder:
(BuildContext context, int index) {
return ImageViewCenter(
return ImageViewPaged(
data: _uChapDataPreload[index],
loadStateChanged: (state) {
if (state.extendedImageLoadState ==

View file

@ -61,7 +61,7 @@ class _ChapterListWidgetState extends State<ChapterListWidget> {
@override
Widget build(BuildContext context) {
return Scrollbar(
interactive: true,
interactive: true,
thickness: 12,
radius: const Radius.circular(10),
controller: controller,
@ -111,8 +111,10 @@ class _ChapterListTileState extends State<ChapterListTile> {
selectedColor:
chapter.isRead! ? Colors.white.withOpacity(0.3) : Colors.white,
onTap: () async {
Navigator.pop(context);
pushReplacementMangaReaderView(context: context, chapter: chapter);
if (!widget.currentChap) {
Navigator.pop(context);
pushReplacementMangaReaderView(context: context, chapter: chapter);
}
},
title: Text(
chapter.name!,

View file

@ -1,12 +1,12 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.37.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.39.
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
import '../frb_generated.dart';
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
// The functions `crop_image` are not `pub`, thus are ignored.
// These functions are ignored because they are not marked as `pub`: `crop_image`
Future<Uint8List> startCropping({required List<int> image}) =>
RustLib.instance.api.crateApiImagecropStartCropping(image: image);
Uint8List processCropImage({required List<int> image}) =>
RustLib.instance.api.crateApiImageProcessCropImage(image: image);

View file

@ -1,11 +1,12 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.37.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.39.
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
import 'api/imagecrop.dart';
import 'api/image.dart';
import 'dart:async';
import 'dart:convert';
import 'frb_generated.dart';
import 'frb_generated.io.dart' if (dart.library.html) 'frb_generated.web.dart';
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
@ -51,10 +52,10 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
kDefaultExternalLibraryLoaderConfig;
@override
String get codegenVersion => '2.0.0-dev.37';
String get codegenVersion => '2.0.0-dev.39';
@override
int get rustContentHash => -560186126;
int get rustContentHash => -287789500;
static const kDefaultExternalLibraryLoaderConfig =
ExternalLibraryLoaderConfig(
@ -65,7 +66,7 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
}
abstract class RustLibApi extends BaseApi {
Future<Uint8List> crateApiImagecropStartCropping({required List<int> image});
Uint8List crateApiImageProcessCropImage({required List<int> image});
}
class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
@ -77,27 +78,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
});
@override
Future<Uint8List> crateApiImagecropStartCropping({required List<int> image}) {
return handler.executeNormal(NormalTask(
callFfi: (port_) {
Uint8List crateApiImageProcessCropImage({required List<int> image}) {
return handler.executeSync(SyncTask(
callFfi: () {
final serializer = SseSerializer(generalizedFrbRustBinding);
sse_encode_list_prim_u_8_loose(image, serializer);
pdeCallFfi(generalizedFrbRustBinding, serializer,
funcId: 1, port: port_);
return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 1)!;
},
codec: SseCodec(
decodeSuccessData: sse_decode_list_prim_u_8_strict,
decodeErrorData: null,
),
constMeta: kCrateApiImagecropStartCroppingConstMeta,
constMeta: kCrateApiImageProcessCropImageConstMeta,
argValues: [image],
apiImpl: this,
));
}
TaskConstMeta get kCrateApiImagecropStartCroppingConstMeta =>
TaskConstMeta get kCrateApiImageProcessCropImageConstMeta =>
const TaskConstMeta(
debugName: "start_cropping",
debugName: "process_crop_image",
argNames: ["image"],
);

View file

@ -1,9 +1,9 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.37.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.39.
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
import 'api/imagecrop.dart';
import 'api/image.dart';
import 'dart:async';
import 'dart:convert';
import 'dart:ffi' as ffi;

View file

@ -1,12 +1,12 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.37.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.39.
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
// Static analysis wrongly picks the IO variant, thus ignore this
// ignore_for_file: argument_type_not_assignable
import 'api/imagecrop.dart';
import 'api/image.dart';
import 'dart:async';
import 'dart:convert';
import 'frb_generated.dart';
@ -81,10 +81,4 @@ external RustLibWasmModule get wasmModule;
@JS()
@anonymous
class RustLibWasmModule implements WasmModule {
@override
external Object /* Promise */ call([String? moduleName]);
@override
external RustLibWasmModule bind(dynamic thisArg, String moduleName);
}
extension type RustLibWasmModule._(JSObject _) implements JSObject {}

View file

@ -528,10 +528,10 @@ packages:
dependency: "direct main"
description:
name: flutter_rust_bridge
sha256: d8a8419099180408b224235e2e2aa386b67ebfd59cc65610d618bb06fb640954
sha256: ee0d9798156ba523ca24bfb690efd15614f823685df270447c480dd5923d9a0b
url: "https://pub.dev"
source: hosted
version: "2.0.0-dev.37"
version: "2.0.0-dev.39"
flutter_test:
dependency: "direct dev"
description: flutter

View file

@ -79,7 +79,7 @@ dependencies:
highlight: ^0.7.0
json_view: ^0.4.2
super_sliver_list: ^0.4.1
flutter_rust_bridge: ^2.0.0-dev.37
flutter_rust_bridge: ^2.0.0-dev.39
rust_lib_mangayomi:
path: rust_builder
@ -88,6 +88,7 @@ dependency_overrides:
ffi: ^2.1.2
flex_seed_scheme: ^2.0.0
analyzer: ">=5.2.0 <7.0.0"
html: ^0.15.4
dev_dependencies:
flutter_test:

75
rust/Cargo.lock generated
View file

@ -34,9 +34,9 @@ checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
[[package]]
name = "allo-isolate"
version = "0.1.24"
version = "0.1.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2f5a5fd28223e6f3cafb7d9cd685f51eafdd71d33ca1229f8316925d5957240"
checksum = "97b6d794345b06592d0ebeed8e477e41b71e5a0a49df4fc0e4184d5938b99509"
dependencies = [
"anyhow",
"atomic",
@ -158,6 +158,15 @@ version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e"
[[package]]
name = "block-buffer"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
dependencies = [
"generic-array",
]
[[package]]
name = "build-target"
version = "0.4.0"
@ -276,6 +285,16 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
[[package]]
name = "crypto-common"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
"typenum",
]
[[package]]
name = "dart-sys-fork"
version = "4.1.1"
@ -306,6 +325,16 @@ dependencies = [
"syn",
]
[[package]]
name = "digest"
version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer",
"crypto-common",
]
[[package]]
name = "either"
version = "1.12.0"
@ -374,9 +403,9 @@ dependencies = [
[[package]]
name = "flutter_rust_bridge"
version = "2.0.0-dev.37"
version = "2.0.0-dev.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7bc10f01bad9c10018ecd7c998b35d37e6856ffc62b735ef796c617e2006bf00"
checksum = "92c9a3d358c2df51ac5ab05440334a63d7e2ce3229ca05d285769498bfe7fb8d"
dependencies = [
"allo-isolate",
"android_logger",
@ -401,11 +430,13 @@ dependencies = [
[[package]]
name = "flutter_rust_bridge_macros"
version = "2.0.0-dev.37"
version = "2.0.0-dev.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "728da530efd18249b5adda2b932a69f92c1d861c18d93dd8b6b9d6df0a2a7d27"
checksum = "7c73c8b391f3c0aed00493871aee6541c03d117d553fa5c121f126dfbbad5157"
dependencies = [
"hex",
"md-5",
"proc-macro2",
"quote",
"syn",
]
@ -499,6 +530,16 @@ dependencies = [
"slab",
]
[[package]]
name = "generic-array"
version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [
"typenum",
"version_check",
]
[[package]]
name = "getrandom"
version = "0.2.14"
@ -717,6 +758,16 @@ dependencies = [
"rayon",
]
[[package]]
name = "md-5"
version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
dependencies = [
"cfg-if",
"digest",
]
[[package]]
name = "memchr"
version = "2.6.4"
@ -1283,6 +1334,12 @@ dependencies = [
"winnow",
]
[[package]]
name = "typenum"
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]]
name = "unicode-ident"
version = "1.0.12"
@ -1306,6 +1363,12 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"

View file

@ -7,5 +7,5 @@ edition = "2021"
crate-type = ["cdylib", "staticlib"]
[dependencies]
flutter_rust_bridge = "=2.0.0-dev.37"
flutter_rust_bridge = "=2.0.0-dev.39"
image = "0.25.0"

View file

@ -1,3 +1,4 @@
use flutter_rust_bridge::frb;
use image::{DynamicImage, GenericImageView, Pixel};
use std::io::Cursor;
@ -56,12 +57,11 @@ fn crop_image(image: Vec<u8>) -> DynamicImage {
return decoded_image;
}
let cropped_image = decoded_image.crop(left, top, right - left + 1, bottom - top + 1);
return cropped_image;
return decoded_image.crop(left, top, right - left + 1, bottom - top + 1);
}
pub async fn start_cropping(image: Vec<u8>) -> Vec<u8> {
#[frb(sync)]
pub fn process_crop_image(image: Vec<u8>) -> Vec<u8> {
let res = crop_image(image);
let mut image_data: Vec<u8> = Vec::new();
res.write_to(&mut Cursor::new(&mut image_data), image::ImageFormat::Png)

View file

@ -2,4 +2,4 @@
// Do not put code in `mod.rs`, but put in e.g. `simple.rs`.
//
pub mod imagecrop;
pub mod image;

View file

@ -1,11 +1,11 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.37.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.39.
// Section: imports
use super::*;
use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt};
use flutter_rust_bridge::for_generated::transform_result_dco;
use flutter_rust_bridge::for_generated::{transform_result_dco, Lockable};
use flutter_rust_bridge::{Handler, IntoIntoDart};
// Section: boilerplate

View file

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.37.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.39.
#![allow(
non_camel_case_types,
@ -22,7 +22,7 @@
// Section: imports
use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt};
use flutter_rust_bridge::for_generated::transform_result_dco;
use flutter_rust_bridge::for_generated::{transform_result_dco, Lockable};
use flutter_rust_bridge::{Handler, IntoIntoDart};
// Section: boilerplate
@ -32,8 +32,8 @@ flutter_rust_bridge::frb_generated_boilerplate!(
default_rust_opaque = RustOpaqueMoi,
default_rust_auto_opaque = RustAutoOpaqueMoi,
);
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.0.0-dev.37";
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -560186126;
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.0.0-dev.39";
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -287789500;
// Section: executor
@ -41,17 +41,16 @@ flutter_rust_bridge::frb_generated_default_handler!();
// Section: wire_funcs
fn wire__crate__api__imagecrop__start_cropping_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
fn wire__crate__api__image__process_crop_image_impl(
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "start_cropping",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
debug_name: "process_crop_image",
port: None,
mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync,
},
move || {
let message = unsafe {
@ -65,14 +64,9 @@ fn wire__crate__api__imagecrop__start_cropping_impl(
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_image = <Vec<u8>>::sse_decode(&mut deserializer);
deserializer.end();
move |context| async move {
transform_result_sse(
(move || async move {
Result::<_, ()>::Ok(crate::api::imagecrop::start_cropping(api_image).await)
})()
.await,
)
}
transform_result_sse((move || {
Result::<_, ()>::Ok(crate::api::image::process_crop_image(api_image))
})())
},
)
}
@ -126,7 +120,6 @@ fn pde_ffi_dispatcher_primary_impl(
) {
// Codec=Pde (Serialization + dispatch), see doc to use other codecs
match func_id {
1 => wire__crate__api__imagecrop__start_cropping_impl(port, ptr, rust_vec_len, data_len),
_ => unreachable!(),
}
}
@ -139,6 +132,7 @@ fn pde_ffi_dispatcher_sync_impl(
) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse {
// Codec=Pde (Serialization + dispatch), see doc to use other codecs
match func_id {
1 => wire__crate__api__image__process_crop_image_impl(ptr, rust_vec_len, data_len),
_ => unreachable!(),
}
}

View file

@ -1,13 +1,13 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.37.
// Generated by `flutter_rust_bridge`@ 2.0.0-dev.39.
// Section: imports
use super::*;
use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt};
use flutter_rust_bridge::for_generated::transform_result_dco;
use flutter_rust_bridge::for_generated::wasm_bindgen;
use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*;
use flutter_rust_bridge::for_generated::{transform_result_dco, Lockable};
use flutter_rust_bridge::{Handler, IntoIntoDart};
// Section: boilerplate