UI preview of selected element
Summary: This is a prototype for view preview within Flipper for iOS (Android next). If enabled, a preview of the selected element is rendered in the attribute inspector. Changelog: Add view preview/snapshot for the Layout plugin on iOS. Reviewed By: antonk52 Differential Revision: D34990372 fbshipit-source-id: 1984514fbf59041ad236008a8db10569c5fc5f94
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c662f3679d
commit
aed7e7e6f2
@@ -155,6 +155,16 @@ NSObject* flattenLayoutEditorMessage(NSObject* field);
|
||||
},
|
||||
responder);
|
||||
}];
|
||||
|
||||
[connection receive:@"getSnapshot"
|
||||
withBlock:^(NSDictionary* params, id<FlipperResponder> responder) {
|
||||
FlipperPerformBlockOnMainThread(
|
||||
^{
|
||||
[weakSelf onCallGetSnapshot:params[@"id"]
|
||||
withResponder:responder];
|
||||
},
|
||||
responder);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)didDisconnect {
|
||||
@@ -320,6 +330,46 @@ NSObject* flattenLayoutEditorMessage(NSObject* field) {
|
||||
return;
|
||||
}
|
||||
|
||||
- (void)onCallGetSnapshot:(NSString*)objectId
|
||||
withResponder:(id<FlipperResponder>)responder {
|
||||
if (objectId == nil || [objectId isKindOfClass:[NSNull class]]) {
|
||||
[responder error:@{@"error" : @"unable to get snapshot for object"}];
|
||||
return;
|
||||
}
|
||||
|
||||
id object = [_trackedObjects objectForKey:objectId];
|
||||
if (object == nil) {
|
||||
[responder error:@{@"error" : @"unable to get snapshot for object"}];
|
||||
return;
|
||||
}
|
||||
|
||||
id lastHighlightedObject = nil;
|
||||
id lastHighlightedDescriptor = nil;
|
||||
if (_lastHighlightedNode != nil) {
|
||||
lastHighlightedObject = [_trackedObjects objectForKey:_lastHighlightedNode];
|
||||
if (lastHighlightedObject != nil) {
|
||||
lastHighlightedDescriptor = [self->_descriptorMapper
|
||||
descriptorForClass:[lastHighlightedObject class]];
|
||||
[lastHighlightedDescriptor setHighlighted:NO
|
||||
forNode:lastHighlightedObject];
|
||||
}
|
||||
}
|
||||
|
||||
SKNodeDescriptor* descriptor =
|
||||
[self->_descriptorMapper descriptorForClass:[object class]];
|
||||
UIImage* snapshot = [descriptor getSnapshot:YES forNode:object];
|
||||
NSData* snapshotData = UIImagePNGRepresentation(snapshot);
|
||||
NSString* snapshotBase64 = [snapshotData
|
||||
base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
|
||||
|
||||
if (lastHighlightedDescriptor != nil) {
|
||||
[lastHighlightedDescriptor setHighlighted:YES
|
||||
forNode:lastHighlightedObject];
|
||||
}
|
||||
|
||||
[responder success:@{@"snapshot" : snapshotBase64, @"id" : objectId}];
|
||||
}
|
||||
|
||||
- (void)onCallSetHighlighted:(NSString*)objectId
|
||||
withResponder:(id<FlipperResponder>)responder {
|
||||
if (_lastHighlightedNode != nil) {
|
||||
|
||||
Reference in New Issue
Block a user