read-plist word for cocoa.plists
parent
cad006719f
commit
42b3d01b94
|
@ -61,6 +61,7 @@ SYMBOL: super-sent-messages
|
||||||
"NSOpenGLView"
|
"NSOpenGLView"
|
||||||
"NSOpenPanel"
|
"NSOpenPanel"
|
||||||
"NSPasteboard"
|
"NSPasteboard"
|
||||||
|
"NSPropertyListSerialization"
|
||||||
"NSResponder"
|
"NSResponder"
|
||||||
"NSSavePanel"
|
"NSSavePanel"
|
||||||
"NSScreen"
|
"NSScreen"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
USING: strings arrays hashtables assocs sequences
|
USING: strings arrays hashtables assocs sequences
|
||||||
cocoa.messages cocoa.classes cocoa.application cocoa kernel
|
cocoa.messages cocoa.classes cocoa.application cocoa kernel
|
||||||
namespaces io.backend math cocoa.enumeration byte-arrays
|
namespaces io.backend math cocoa.enumeration byte-arrays
|
||||||
combinators alien.c-types ;
|
combinators alien.c-types core-foundation ;
|
||||||
IN: cocoa.plists
|
IN: cocoa.plists
|
||||||
|
|
||||||
GENERIC: >plist ( value -- plist )
|
GENERIC: >plist ( value -- plist )
|
||||||
|
@ -24,8 +24,8 @@ M: sequence >plist
|
||||||
[ >plist ] map <NSArray> ;
|
[ >plist ] map <NSArray> ;
|
||||||
|
|
||||||
: write-plist ( assoc path -- )
|
: write-plist ( assoc path -- )
|
||||||
>r >plist
|
[ >plist ] [ normalize-path <NSString> ] bi* 0
|
||||||
r> normalize-path <NSString> 0 -> writeToFile:atomically:
|
-> writeToFile:atomically:
|
||||||
[ "write-plist failed" throw ] unless ;
|
[ "write-plist failed" throw ] unless ;
|
||||||
|
|
||||||
DEFER: plist>
|
DEFER: plist>
|
||||||
|
@ -57,3 +57,13 @@ DEFER: plist>
|
||||||
{ [ dup NSDictionary -> isKindOfClass: c-bool> ] [ (plist-NSDictionary>) ] }
|
{ [ dup NSDictionary -> isKindOfClass: c-bool> ] [ (plist-NSDictionary>) ] }
|
||||||
[ ]
|
[ ]
|
||||||
} cond ;
|
} cond ;
|
||||||
|
|
||||||
|
: (read-plist) ( NSData -- id )
|
||||||
|
NSPropertyListSerialization swap kCFPropertyListImmutable f f <void*>
|
||||||
|
[ -> propertyListFromData:mutabilityOption:format:errorDescription: ] keep
|
||||||
|
*void* [ -> release "read-plist failed" throw ] when* ;
|
||||||
|
|
||||||
|
: read-plist ( path -- assoc )
|
||||||
|
normalize-path <NSString>
|
||||||
|
NSData swap -> dataWithContentsOfFile:
|
||||||
|
[ (read-plist) plist> ] [ "read-plist failed" throw ] if* ;
|
||||||
|
|
|
@ -43,6 +43,11 @@ TYPEDEF: int CFNumberType
|
||||||
: kCFNumberCGFloatType 16 ; inline
|
: kCFNumberCGFloatType 16 ; inline
|
||||||
: kCFNumberMaxType 16 ; inline
|
: kCFNumberMaxType 16 ; inline
|
||||||
|
|
||||||
|
TYPEDEF: int CFPropertyListMutabilityOptions
|
||||||
|
: kCFPropertyListImmutable 0 ; inline
|
||||||
|
: kCFPropertyListMutableContainers 1 ; inline
|
||||||
|
: kCFPropertyListMutableContainersAndLeaves 2 ; inline
|
||||||
|
|
||||||
FUNCTION: CFArrayRef CFArrayCreateMutable ( CFAllocatorRef allocator, CFIndex capacity, void* callbacks ) ;
|
FUNCTION: CFArrayRef CFArrayCreateMutable ( CFAllocatorRef allocator, CFIndex capacity, void* callbacks ) ;
|
||||||
|
|
||||||
FUNCTION: void* CFArrayGetValueAtIndex ( CFArrayRef array, CFIndex idx ) ;
|
FUNCTION: void* CFArrayGetValueAtIndex ( CFArrayRef array, CFIndex idx ) ;
|
||||||
|
|
|
@ -119,17 +119,20 @@ SINGLETON: iokit-game-input-backend
|
||||||
: hat-switch? ( {usage-page,usage} -- ? )
|
: hat-switch? ( {usage-page,usage} -- ? )
|
||||||
{ 1 HEX: 39 } = ;
|
{ 1 HEX: 39 } = ;
|
||||||
|
|
||||||
|
: pov-values
|
||||||
|
{
|
||||||
|
pov-up pov-up-right pov-right pov-down-right
|
||||||
|
pov-down pov-down-left pov-left pov-up-left
|
||||||
|
pov-neutral
|
||||||
|
} ;
|
||||||
|
|
||||||
: button-value ( value -- f/(0,1] )
|
: button-value ( value -- f/(0,1] )
|
||||||
IOHIDValueGetIntegerValue dup zero? [ drop f ] when ;
|
IOHIDValueGetIntegerValue dup zero? [ drop f ] when ;
|
||||||
! XXX calibration
|
! XXX calibration
|
||||||
: axis-value ( value -- [-1,1] )
|
: axis-value ( value -- [-1,1] )
|
||||||
kIOHIDValueScaleTypeCalibrated IOHIDValueGetScaledValue ;
|
kIOHIDValueScaleTypeCalibrated IOHIDValueGetScaledValue ;
|
||||||
: slider-value ( value -- [0,1] )
|
|
||||||
kIOHIDValueScaleTypeCalibrated IOHIDValueGetScaledValue
|
|
||||||
1.0 + 0.5 * ;
|
|
||||||
: pov-value ( value -- pov-direction )
|
: pov-value ( value -- pov-direction )
|
||||||
! XXX
|
IOHIDValueGetIntegerValue pov-values ?nth [ pov-neutral ] unless* ;
|
||||||
IOHIDValueGetIntegerValue ;
|
|
||||||
|
|
||||||
: record-controller ( controller-state value -- )
|
: record-controller ( controller-state value -- )
|
||||||
dup IOHIDValueGetElement element-usage {
|
dup IOHIDValueGetElement element-usage {
|
||||||
|
@ -140,7 +143,7 @@ SINGLETON: iokit-game-input-backend
|
||||||
{ [ dup rx-axis? ] [ drop axis-value >>rx drop ] }
|
{ [ dup rx-axis? ] [ drop axis-value >>rx drop ] }
|
||||||
{ [ dup ry-axis? ] [ drop axis-value >>ry drop ] }
|
{ [ dup ry-axis? ] [ drop axis-value >>ry drop ] }
|
||||||
{ [ dup rz-axis? ] [ drop axis-value >>rz drop ] }
|
{ [ dup rz-axis? ] [ drop axis-value >>rz drop ] }
|
||||||
{ [ dup slider? ] [ drop slider-value >>slider drop ] }
|
{ [ dup slider? ] [ drop axis-value >>slider drop ] }
|
||||||
{ [ dup hat-switch? ] [ drop pov-value >>pov drop ] }
|
{ [ dup hat-switch? ] [ drop pov-value >>pov drop ] }
|
||||||
[ 3drop ]
|
[ 3drop ]
|
||||||
} cond ;
|
} cond ;
|
||||||
|
|
|
@ -17,8 +17,8 @@ M: controller-state clone
|
||||||
|
|
||||||
SYMBOLS:
|
SYMBOLS:
|
||||||
pov-neutral
|
pov-neutral
|
||||||
pov-up pov-up-left pov-left pov-down-left
|
pov-up pov-up-right pov-right pov-down-right
|
||||||
pov-down pov-down-right pov-right pov-up-right ;
|
pov-down pov-down-left pov-left pov-up-left ;
|
||||||
|
|
||||||
HOOK: get-controllers game-input-backend ( -- sequence )
|
HOOK: get-controllers game-input-backend ( -- sequence )
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue