annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #import "fooDecibelFormatter.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 @implementation fooDecibelFormatter
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 - (NSString*) formatNumber: (id) obj {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 double v = [ obj doubleValue ];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 if ( self.showSignAlways ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 if (v == 0) return [NSString stringWithUTF8String: "\xc2\xb1" "0"];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 if ( v > 0 ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 if (v == (double) (int) v) return [NSString stringWithFormat: @"+%i", (int)v];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 else return [NSString stringWithFormat: @"+%.02f", v];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 if (v == (double) (int) v) return [NSString stringWithFormat: @"%i", (int)v];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 else return [NSString stringWithFormat: @"%.02f", v];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 - (NSString *)stringForObjectValue:(id)obj {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 return [NSString stringWithFormat: @"%@ dB", [self formatNumber: obj]];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 - (NSAttributedString *)attributedStringForObjectValue:(id)obj withDefaultAttributes:(NSDictionary *)attrs {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 return nil;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 - (NSString *)editingStringForObjectValue:(id)obj {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 return [self stringForObjectValue: obj];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 // return [self formatNumber: obj];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 - (BOOL)getObjectValue:(out __autoreleasing id *)obj forString:(NSString *)string errorDescription:(out NSString *__autoreleasing *)error {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 if (error) *error = nil;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 NSMutableCharacterSet * trimMe = [NSMutableCharacterSet whitespaceAndNewlineCharacterSet];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 [trimMe addCharactersInString: [NSString stringWithUTF8String: "+\xc2\xb1" ]];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 string = [ string.lowercaseString stringByTrimmingCharactersInSet: trimMe ];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 if ( [string hasSuffix: @"db"]) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 string = [ [string substringToIndex: string.length-2] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet] ];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 double v = string.doubleValue;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 if (self.minValue) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 if (v < self.minValue.doubleValue) v = self.minValue.doubleValue;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 if (self.maxValue) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 if (v > self.maxValue.doubleValue) v = self.maxValue.doubleValue;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 *obj = [NSNumber numberWithDouble: v];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 return YES;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 @end