This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.3 KiB
61 lines
1.3 KiB
/** |
|
* Copyright (c) 2015-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
*/ |
|
|
|
#import "RCTDiffClampAnimatedNode.h" |
|
|
|
#import <React/RCTLog.h> |
|
|
|
@implementation RCTDiffClampAnimatedNode |
|
{ |
|
NSNumber *_inputNodeTag; |
|
CGFloat _min; |
|
CGFloat _max; |
|
CGFloat _lastValue; |
|
} |
|
|
|
- (instancetype)initWithTag:(NSNumber *)tag |
|
config:(NSDictionary<NSString *, id> *)config |
|
{ |
|
if (self = [super initWithTag:tag config:config]) { |
|
_inputNodeTag = config[@"input"]; |
|
_min = [config[@"min"] floatValue]; |
|
_max = [config[@"max"] floatValue]; |
|
} |
|
|
|
return self; |
|
} |
|
|
|
- (void)onAttachedToNode:(RCTAnimatedNode *)parent |
|
{ |
|
[super onAttachedToNode:parent]; |
|
|
|
self.value = _lastValue = [self inputNodeValue]; |
|
} |
|
|
|
- (void)performUpdate |
|
{ |
|
[super performUpdate]; |
|
|
|
CGFloat value = [self inputNodeValue]; |
|
|
|
CGFloat diff = value - _lastValue; |
|
_lastValue = value; |
|
self.value = MIN(MAX(self.value + diff, _min), _max); |
|
} |
|
|
|
- (CGFloat)inputNodeValue |
|
{ |
|
RCTValueAnimatedNode *inputNode = (RCTValueAnimatedNode *)[self.parentNodes objectForKey:_inputNodeTag]; |
|
if (![inputNode isKindOfClass:[RCTValueAnimatedNode class]]) { |
|
RCTLogError(@"Illegal node ID set as an input for Animated.DiffClamp node"); |
|
return 0; |
|
} |
|
|
|
return inputNode.value; |
|
} |
|
|
|
@end
|
|
|