#import "JcPrinterPlugin.h" #if !TARGET_IPHONE_SIMULATOR #import #endif @implementation JcPrinterPlugin + (void)registerWithRegistrar:(NSObject*)registrar { FlutterMethodChannel* channel = [FlutterMethodChannel methodChannelWithName:@"jc_printer" binaryMessenger:[registrar messenger]]; JcPrinterPlugin* instance = [[JcPrinterPlugin alloc] init]; [registrar addMethodCallDelegate:instance channel:channel]; FlutterEventChannel* eventChannel = [FlutterEventChannel eventChannelWithName:@"printer_stream" binaryMessenger:[registrar messenger]]; [eventChannel setStreamHandler:instance]; } - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { // NSLog(@"arguments is :%@", call.arguments); #if !TARGET_IPHONE_SIMULATOR [self printingCount]; [self errorInfo]; if ([@"getPlatformVersion" isEqualToString:call.method]) { result([@"iOS " stringByAppendingString:[[UIDevice currentDevice] systemVersion]]); } else if ([@"connect" isEqualToString:call.method]) { [self connect:call.arguments]; result(nil); } else if ([@"disconnect" isEqualToString:call.method]) { [self disconnect]; result(nil); } else if ([@"setTotalPrints" isEqualToString:call.method]) { [self setTotalPrints:call.arguments]; result(nil); } else if ([@"initDrawingBoard" isEqualToString:call.method]) { [self initDrawingBoard:call.arguments result:result]; } else if ([@"drawLabelImage" isEqualToString:call.method]) { [self drawLabelImage:call.arguments result:result]; } else if ([@"drawLabelText" isEqualToString:call.method]) { [self drawLabelText:call.arguments result:result]; } else if ([@"drawLabelBarcode" isEqualToString:call.method]) { [self drawLabelBarcode:call.arguments result:result]; } else if ([@"getLabelData" isEqualToString:call.method]) { [self getLabelData:result]; } else if ([@"startJob" isEqualToString:call.method]) { [self startJob:call.arguments result:result]; } else if ([@"endJob" isEqualToString:call.method]) { [self endJob:result]; } else if ([@"commit" isEqualToString:call.method]) { [self commit:call.arguments result:result]; } else { result(FlutterMethodNotImplemented); } #else result(nil); #endif } #if !TARGET_IPHONE_SIMULATOR - (void) disconnect { [JCAPI closePrinter]; } - (void) setTotalPrints:(NSString *)args { NSInteger page = [args integerValue]; [JCAPI setTotalQuantityOfPrints:page]; } - (void)initDrawingBoard:(NSDictionary *)args result:(FlutterResult)result { NSNumber *width = args[@"width"]; NSNumber *height = args[@"height"]; NSNumber *horizontalShift = args[@"horizontalShift"]; NSNumber *verticalShift = args[@"verticalShift"]; NSNumber *rotate = args[@"rotate"]; NSString *font = args[@"font"]; [JCAPI initDrawingBoard:width.floatValue withHeight:height.floatValue withHorizontalShift:horizontalShift.floatValue withVerticalShift:verticalShift.floatValue rotate:rotate.intValue font:font]; result(nil); } - (void)drawLabelImage:(NSDictionary *)args result:(FlutterResult)result { NSNumber *x = args[@"x"]; NSNumber *y = args[@"y"]; NSNumber *width = args[@"width"]; NSNumber *height = args[@"height"]; NSNumber *rotate = args[@"rotate"]; NSNumber *type = args[@"type"]; NSNumber *threshold = args[@"threshold"]; NSString *base64 = args[@"base64"]; BOOL isSuccess = [JCAPI DrawLableImage:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withImageData:base64 withRotate:rotate.intValue withImageProcessingType:type.intValue withImageProcessingValue:threshold.floatValue]; result(@(isSuccess)); } - (void)drawLabelText:(NSDictionary *)args result:(FlutterResult)result { NSNumber *x = args[@"x"]; NSNumber *y = args[@"y"]; NSNumber *width = args[@"width"]; NSNumber *height = args[@"height"]; NSNumber *fontSize = args[@"fontSize"]; NSNumber *rotate = args[@"rotate"]; NSNumber *textAlignHorizontal = args[@"textAlignHorizontal"]; NSNumber *textAlignVertical = args[@"textAlignVertical"]; NSNumber *lineMode = args[@"lineMode"]; NSNumber *letterSpacing = args[@"letterSpacing"]; NSNumber *lineSpacing = args[@"lineSpacing"]; NSString *content = args[@"content"]; BOOL isSuccess = [JCAPI drawLableText:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withString:content withFontFamily:@"" withFontSize:fontSize.floatValue withRotate:rotate.intValue withTextAlignHorizonral:textAlignHorizontal.intValue withTextAlignVertical:textAlignVertical.intValue withLineMode:lineMode.intValue withLetterSpacing:letterSpacing.floatValue withLineSpacing:lineSpacing.floatValue withFontStyle:@[@0,@0,@0,@0]]; result(@(isSuccess)); } - (void)drawLabelBarcode:(NSDictionary *)args result:(FlutterResult)result { NSNumber *x = args[@"x"]; NSNumber *y = args[@"y"]; NSNumber *width = args[@"width"]; NSNumber *height = args[@"height"]; NSNumber *fontSize = args[@"fontSize"]; NSNumber *rotate = args[@"rotate"]; NSNumber *codeType = args[@"codeType"]; NSNumber *textPosition = args[@"textPosition"]; NSNumber *textHeight = args[@"textHeight"]; NSString *text = args[@"text"]; BOOL isSuccess = [JCAPI drawLableBarCode:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withString:text withFontSize:fontSize.floatValue withRotate:rotate.intValue withCodeType:codeType.intValue withTextHeight:textHeight.floatValue withTextPosition:textPosition.intValue]; result(@(isSuccess)); } - (void)getLabelData:(FlutterResult)result { NSString *data = [JCAPI GenerateLableJson]; result(data); } - (void)startJob:(NSDictionary *)args result:(FlutterResult)result { NSNumber *blackRules = args[@"blackRules"]; NSNumber *paperStyle = args[@"paperStyle"]; [JCAPI startJob:blackRules.intValue withPaperStyle:paperStyle.intValue withCompletion:^(BOOL isSuccess) { result(@(isSuccess)); }]; } - (void)commit:(NSDictionary *)args result:(FlutterResult)result { NSString *data = args[@"data"]; NSNumber *count = args[@"count"]; [JCAPI commit:data withOnePageNumbers:count.intValue withComplete:^(BOOL isSuccess) { result(@(isSuccess)); }]; } - (void)endJob:(FlutterResult)result { [JCAPI endPrint:^(BOOL isSuccess) { result(@(isSuccess)); }]; } #endif #pragma mark - FlutterStreamHandler - (FlutterError *)onListenWithArguments:(id)arguments eventSink:(FlutterEventSink)events { self.eventSink = events; return nil; } - (FlutterError *)onCancelWithArguments:(id)arguments { return nil; } #if !TARGET_IPHONE_SIMULATOR - (void)connect:(NSString *)name { [JCAPI openPrinter:name completion:^(BOOL isSuccess) { NSDictionary *params = @{ @"type": @"connectState", @"result": @(isSuccess), }; !self.eventSink ? : self.eventSink(params); }]; } -(void)errorInfo { [JCAPI getPrintingErrorInfo:^(NSString *printInfo) { NSDictionary *params = @{ @"type": @"errorInfo", @"result": printInfo, }; !self.eventSink ? : self.eventSink(params); }]; } - (void)printingCount { [JCAPI getPrintingCountInfo:^(NSDictionary *printDicInfo) { NSDictionary *params = @{ @"type": @"printingCount", @"result": printDicInfo, }; !self.eventSink ? : self.eventSink(params); }]; } #endif @end