blob: 148960183bd2bfed7a4dac73cad5a9a4004384f1 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextEditingDelta.h"
@implementation FlutterTextEditingDelta
- (instancetype)initTextEditingDelta:(NSString*)textBeforeChange
replacedRange:(NSRange)range
updatedText:(NSString*)text {
self = [super init];
if (self) {
NSInteger start = range.location;
NSInteger end = range.location + range.length;
[self setDeltas:textBeforeChange newText:text deltaStart:start deltaEnd:end];
}
return self;
}
- (instancetype)initWithNonText:(NSString*)text {
self = [super init];
if (self) {
[self setDeltas:text newText:@"" deltaStart:-1 deltaEnd:-1];
}
return self;
}
- (void)setDeltas:(NSString*)oldText
newText:(NSString*)newTxt
deltaStart:(NSInteger)newStart
deltaEnd:(NSInteger)newEnd {
_oldText = [oldText retain];
_deltaText = [newTxt retain];
_deltaStart = newStart;
_deltaEnd = newEnd;
}
- (void)dealloc {
[_oldText release];
[_deltaText release];
[super dealloc];
}
+ (instancetype)textEditingDelta:(NSString*)textBeforeChange
replacedRange:(NSRange)range
updatedText:(NSString*)text {
return [[[FlutterTextEditingDelta alloc] initTextEditingDelta:textBeforeChange
replacedRange:range
updatedText:text] autorelease];
}
+ (instancetype)deltaWithNonText:(NSString*)text {
return [[[FlutterTextEditingDelta alloc] initWithNonText:text] autorelease];
}
@end