David PHAM-VAN

Move printing library files

@@ -14,48 +14,15 @@ @@ -14,48 +14,15 @@
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 16
  17 +library printing;
  18 +
17 import 'dart:async'; 19 import 'dart:async';
18 import 'dart:typed_data'; 20 import 'dart:typed_data';
19 -import 'dart:ui'; 21 +import 'dart:ui' as ui;
20 22
21 import 'package:flutter/services.dart'; 23 import 'package:flutter/services.dart';
22 import 'package:flutter/widgets.dart'; 24 import 'package:flutter/widgets.dart';
23 import 'package:pdf/pdf.dart'; 25 import 'package:pdf/pdf.dart';
24 26
25 -class Printing {  
26 - static const MethodChannel _channel = MethodChannel('printing');  
27 -  
28 - static Future<Null> printPdf({PdfDocument document, List<int> bytes}) async {  
29 - assert(document != null || bytes != null);  
30 - assert(!(document == null && bytes == null));  
31 -  
32 - if (document != null) bytes = document.save();  
33 -  
34 - final Map<String, dynamic> params = <String, dynamic>{  
35 - 'doc': Uint8List.fromList(bytes),  
36 - };  
37 -  
38 - await _channel.invokeMethod('printPdf', params);  
39 - }  
40 -  
41 - static Future<Null> sharePdf(  
42 - {PdfDocument document, List<int> bytes, Rect bounds}) async {  
43 - assert(document != null || bytes != null);  
44 - assert(!(document == null && bytes == null));  
45 -  
46 - if (document != null) bytes = document.save();  
47 -  
48 - if (bounds == null) {  
49 - bounds = Rect.fromCircle(center: Offset.zero, radius: 10.0);  
50 - }  
51 -  
52 - final Map<String, dynamic> params = <String, dynamic>{  
53 - 'doc': Uint8List.fromList(bytes),  
54 - 'x': bounds.left,  
55 - 'y': bounds.top,  
56 - 'w': bounds.width,  
57 - 'h': bounds.height,  
58 - };  
59 - await _channel.invokeMethod('sharePdf', params);  
60 - }  
61 -} 27 +part 'src/asset_utils.dart';
  28 +part 'src/printing.dart';
  1 +/*
  2 + * Copyright (C) 2017, David PHAM-VAN <dev.nfet.net@gmail.com>
  3 + *
  4 + * Licensed under the Apache License, Version 2.0 (the "License");
  5 + * you may not use this file except in compliance with the License.
  6 + * You may obtain a copy of the License at
  7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
  10 + * Unless required by applicable law or agreed to in writing, software
  11 + * distributed under the License is distributed on an "AS IS" BASIS,
  12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + * See the License for the specific language governing permissions and
  14 + * limitations under the License.
  15 + */
  16 +
  17 +part of printing;
  18 +
  19 +Future<PdfImage> pdfImageFromImage(
  20 + {@required PdfDocument pdf, @required ui.Image image}) async {
  21 + var bytes = await image.toByteData(format: ui.ImageByteFormat.rawRgba);
  22 +
  23 + return PdfImage(pdf,
  24 + image: bytes.buffer.asUint8List(),
  25 + width: image.width,
  26 + height: image.height);
  27 +}
  28 +
  29 +Future<PdfImage> pdfImageFromImageProvider(
  30 + {@required PdfDocument pdf,
  31 + @required ImageProvider image,
  32 + ImageConfiguration configuration,
  33 + ImageErrorListener onError}) async {
  34 + final Completer<PdfImage> completer = Completer<PdfImage>();
  35 + final ImageStream stream =
  36 + image.resolve(configuration ?? ImageConfiguration.empty);
  37 +
  38 + void listener(ImageInfo image, bool sync) async {
  39 + final result = await pdfImageFromImage(pdf: pdf, image: image.image);
  40 + if (!completer.isCompleted) completer.complete(result);
  41 + stream.removeListener(listener);
  42 + }
  43 +
  44 + void errorListener(dynamic exception, StackTrace stackTrace) {
  45 + if (!completer.isCompleted) completer.complete(null);
  46 + if (onError != null) {
  47 + onError(exception, stackTrace);
  48 + } else {
  49 + FlutterError.reportError(FlutterErrorDetails(
  50 + context: 'image failed to load',
  51 + library: 'printing',
  52 + exception: exception,
  53 + stack: stackTrace,
  54 + silent: true,
  55 + ));
  56 + }
  57 + }
  58 +
  59 + stream.addListener(listener, onError: errorListener);
  60 + return completer.future;
  61 +}
  1 +/*
  2 + * Copyright (C) 2017, David PHAM-VAN <dev.nfet.net@gmail.com>
  3 + *
  4 + * Licensed under the Apache License, Version 2.0 (the "License");
  5 + * you may not use this file except in compliance with the License.
  6 + * You may obtain a copy of the License at
  7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
  10 + * Unless required by applicable law or agreed to in writing, software
  11 + * distributed under the License is distributed on an "AS IS" BASIS,
  12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + * See the License for the specific language governing permissions and
  14 + * limitations under the License.
  15 + */
  16 +
  17 +part of printing;
  18 +
  19 +class Printing {
  20 + static const MethodChannel _channel = MethodChannel('printing');
  21 +
  22 + static Future<Null> printPdf({PdfDocument document, List<int> bytes}) async {
  23 + assert(document != null || bytes != null);
  24 + assert(!(document == null && bytes == null));
  25 +
  26 + if (document != null) bytes = document.save();
  27 +
  28 + final Map<String, dynamic> params = <String, dynamic>{
  29 + 'doc': Uint8List.fromList(bytes),
  30 + };
  31 +
  32 + await _channel.invokeMethod('printPdf', params);
  33 + }
  34 +
  35 + static Future<Null> sharePdf(
  36 + {PdfDocument document, List<int> bytes, Rect bounds}) async {
  37 + assert(document != null || bytes != null);
  38 + assert(!(document == null && bytes == null));
  39 +
  40 + if (document != null) bytes = document.save();
  41 +
  42 + if (bounds == null) {
  43 + bounds = Rect.fromCircle(center: Offset.zero, radius: 10.0);
  44 + }
  45 +
  46 + final Map<String, dynamic> params = <String, dynamic>{
  47 + 'doc': Uint8List.fromList(bytes),
  48 + 'x': bounds.left,
  49 + 'y': bounds.top,
  50 + 'w': bounds.width,
  51 + 'h': bounds.height,
  52 + };
  53 + await _channel.invokeMethod('sharePdf', params);
  54 + }
  55 +}