diff --git a/GLLara.xcodeproj/project.pbxproj b/GLLara.xcodeproj/project.pbxproj index 7440100..955e650 100644 --- a/GLLara.xcodeproj/project.pbxproj +++ b/GLLara.xcodeproj/project.pbxproj @@ -22,7 +22,7 @@ 5214471116DE22E1003E260F /* GLLara.help in Resources */ = {isa = PBXBuildFile; fileRef = 5214471016DE22E0003E260F /* GLLara.help */; }; 52152CEF16B66951001AE54C /* GLLDDSFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52152CEE16B66951001AE54C /* GLLDDSFile.swift */; }; 52232EAE1EFC57D4007FE9AD /* XYAlignedSquare.obj in Resources */ = {isa = PBXBuildFile; fileRef = 52232EAD1EFC57D4007FE9AD /* XYAlignedSquare.obj */; }; - 5224C8EE15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5224C8ED15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.m */; }; + 5224C8EE15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5224C8ED15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.swift */; }; 5224C8F015FABC92002A6C76 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5224C8EF15FABC92002A6C76 /* Accelerate.framework */; }; 5227833F1C0A6074002E43FD /* GLLNoSelectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 522783411C0A6074002E43FD /* GLLNoSelectionView.xib */; }; 522783421C0A6079002E43FD /* GLLPoseExportViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 522783441C0A6079002E43FD /* GLLPoseExportViewController.xib */; }; @@ -411,8 +411,7 @@ 5214471016DE22E0003E260F /* GLLara.help */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GLLara.help; sourceTree = ""; }; 52152CEE16B66951001AE54C /* GLLDDSFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GLLDDSFile.swift; sourceTree = ""; }; 52232EAD1EFC57D4007FE9AD /* XYAlignedSquare.obj */ = {isa = PBXFileReference; lastKnownFileType = text; name = XYAlignedSquare.obj; path = Shaders/XYAlignedSquare.obj; sourceTree = ""; }; - 5224C8EC15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLLAngleRangeValueTransformer.h; sourceTree = ""; }; - 5224C8ED15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLLAngleRangeValueTransformer.m; sourceTree = ""; }; + 5224C8ED15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GLLAngleRangeValueTransformer.swift; sourceTree = ""; }; 5224C8EF15FABC92002A6C76 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 522783661C0A60E6002E43FD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 522783671C0A60E6002E43FD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/GLLRenderWindowController.xib; sourceTree = ""; }; @@ -1443,8 +1442,7 @@ 52D6A09515F8B0F7002A0BB4 /* GLLMeshViewController.m */, 522783591C0A609B002E43FD /* GLLMeshView.xib */, 522783561C0A6096002E43FD /* GLLLightView.xib */, - 5224C8EC15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.h */, - 5224C8ED15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.m */, + 5224C8ED15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.swift */, 52C9F60B15FF1752003272E1 /* GLLItemViewController.h */, 52C9F60C15FF1752003272E1 /* GLLItemViewController.m */, 522783531C0A6091002E43FD /* GLLItemView.xib */, @@ -1879,7 +1877,7 @@ 52D6A09715F8B0F7002A0BB4 /* GLLMeshViewController.m in Sources */, 52CDFEA82874161400BC4298 /* GLLVertexAttrib.swift in Sources */, 52BB217D15F972AB00937450 /* GLLSceneModel.xcdatamodeld in Sources */, - 5224C8EE15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.m in Sources */, + 5224C8EE15FA8FB0002A6C76 /* GLLAngleRangeValueTransformer.swift in Sources */, 5274448228031C0C00E5A3FD /* GLLModelDrawData.swift in Sources */, 52BB21C815FC732A00937450 /* GLLRenderParameter.m in Sources */, 521102EF2899C430001BE4BC /* GLLItemBoneExtensions.swift in Sources */, diff --git a/GLLara/GLLAngleRangeValueTransformer.h b/GLLara/GLLAngleRangeValueTransformer.h deleted file mode 100644 index f6318dc..0000000 --- a/GLLara/GLLAngleRangeValueTransformer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// GLLAngleRangeValueTransformer.h -// GLLara -// -// Created by Torsten Kammer on 07.09.12. -// Copyright (c) 2012 Torsten Kammer. All rights reserved. -// - -#import - -/* - * Exactly what it says on the tin. - * The idea is that rotations are stored from 0…2pi here, but for sliders, you really want -pi…+pi instead. This transformer solves that issue. - */ -@interface GLLAngleRangeValueTransformer : NSValueTransformer - -@end diff --git a/GLLara/GLLAngleRangeValueTransformer.m b/GLLara/GLLAngleRangeValueTransformer.m deleted file mode 100644 index 51a96d0..0000000 --- a/GLLara/GLLAngleRangeValueTransformer.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// GLLAngleRangeValueTransformer.m -// GLLara -// -// Created by Torsten Kammer on 07.09.12. -// Copyright (c) 2012 Torsten Kammer. All rights reserved. -// - -#import "GLLAngleRangeValueTransformer.h" - -@implementation GLLAngleRangeValueTransformer - -+ (BOOL)allowsReverseTransformation -{ - return YES; -} - -+ (Class)transformedValueClass -{ - return [NSNumber class]; -} - -- (id)reverseTransformedValue:(id)value -{ - if ([value doubleValue] < 0.0) - return @([value doubleValue] + M_PI*2); - else - return value; -} - -- (id)transformedValue:(id)value -{ - if ([value doubleValue] > M_PI) - return @([value doubleValue] - M_PI*2); - else - return value; -} - -@end diff --git a/GLLara/GLLAngleRangeValueTransformer.swift b/GLLara/GLLAngleRangeValueTransformer.swift new file mode 100644 index 0000000..517faa3 --- /dev/null +++ b/GLLara/GLLAngleRangeValueTransformer.swift @@ -0,0 +1,38 @@ +// +// GLLAngleRangeValueTransformer.m +// GLLara +// +// Created by Torsten Kammer on 07.09.12. +// Copyright (c) 2012 Torsten Kammer. All rights reserved. +// +import Foundation + +/* + * Exactly what it says on the tin. + * The idea is that rotations are stored from 0…2pi here, but for sliders, you really want -pi…+pi instead. This transformer solves that issue. + */ +@objc class GLLAngleRangeValueTransformer: ValueTransformer { + @objc override class func allowsReverseTransformation() -> Bool { + return true + } + @objc override class func transformedValueClass() -> AnyClass { + return NSNumber.self + } + + override func transformedValue(_ value: Any?) -> Any? { + let double = (value as! NSNumber).doubleValue + if double > Double.pi { + return double - Double.pi * 2 + } else { + return double + } + } + + override func reverseTransformedValue(_ value: Any?) -> Any? { + let double = (value as! NSNumber).doubleValue + if double < 0.0 { + return double + Double.pi * 2 + } else { + return double + } } +} diff --git a/GLLara/GLLDocument.m b/GLLara/GLLDocument.m index 1b6b23a..7297436 100644 --- a/GLLara/GLLDocument.m +++ b/GLLara/GLLDocument.m @@ -10,7 +10,6 @@ #import -#import "GLLAngleRangeValueTransformer.h" #import "GLLCamera.h" #import "GLLDocumentWindowController.h" #import "GLLItem.h"