diff foosdk/sdk/foobar2000/helpers-mac/fooDecibelFormatter.m @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foosdk/sdk/foobar2000/helpers-mac/fooDecibelFormatter.m	Mon Jan 05 02:15:46 2026 -0500
@@ -0,0 +1,58 @@
+#import "fooDecibelFormatter.h"
+
+@implementation fooDecibelFormatter
+
+- (NSString*) formatNumber: (id) obj {
+    
+    double v = [ obj doubleValue ];
+    
+    if ( self.showSignAlways ) {
+        if (v == 0) return [NSString stringWithUTF8String: "\xc2\xb1" "0"];
+        if ( v > 0 ) {
+            if (v == (double) (int) v) return [NSString stringWithFormat: @"+%i", (int)v];
+            else return [NSString stringWithFormat: @"+%.02f", v];
+        }
+    }
+    
+    if (v == (double) (int) v) return [NSString stringWithFormat: @"%i", (int)v];
+    else return [NSString stringWithFormat: @"%.02f", v];
+}
+
+- (NSString *)stringForObjectValue:(id)obj {
+    return [NSString stringWithFormat: @"%@ dB", [self formatNumber: obj]];
+}
+
+- (NSAttributedString *)attributedStringForObjectValue:(id)obj withDefaultAttributes:(NSDictionary *)attrs {
+    return nil;
+}
+
+- (NSString *)editingStringForObjectValue:(id)obj {
+    return [self stringForObjectValue: obj];
+    // return [self formatNumber: obj];
+}
+
+- (BOOL)getObjectValue:(out __autoreleasing id *)obj forString:(NSString *)string errorDescription:(out NSString *__autoreleasing *)error {
+    if (error) *error = nil;
+
+    {
+        NSMutableCharacterSet * trimMe = [NSMutableCharacterSet whitespaceAndNewlineCharacterSet];
+        [trimMe addCharactersInString: [NSString stringWithUTF8String: "+\xc2\xb1" ]];
+        string = [ string.lowercaseString stringByTrimmingCharactersInSet: trimMe ];
+    }
+    
+    if ( [string hasSuffix: @"db"]) {
+        string = [ [string substringToIndex: string.length-2] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet] ];
+    }
+    
+    double v = string.doubleValue;
+    if (self.minValue) {
+        if (v < self.minValue.doubleValue) v = self.minValue.doubleValue;
+    }
+    if (self.maxValue) {
+        if (v > self.maxValue.doubleValue) v = self.maxValue.doubleValue;
+    }
+    *obj = [NSNumber numberWithDouble: v];
+    return YES;
+}
+
+@end