read-plist word for cocoa.plists
parent
cad006719f
commit
42b3d01b94
|
@ -61,6 +61,7 @@ SYMBOL: super-sent-messages
|
|||
"NSOpenGLView"
|
||||
"NSOpenPanel"
|
||||
"NSPasteboard"
|
||||
"NSPropertyListSerialization"
|
||||
"NSResponder"
|
||||
"NSSavePanel"
|
||||
"NSScreen"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
USING: strings arrays hashtables assocs sequences
|
||||
cocoa.messages cocoa.classes cocoa.application cocoa kernel
|
||||
namespaces io.backend math cocoa.enumeration byte-arrays
|
||||
combinators alien.c-types ;
|
||||
combinators alien.c-types core-foundation ;
|
||||
IN: cocoa.plists
|
||||
|
||||
GENERIC: >plist ( value -- plist )
|
||||
|
@ -24,8 +24,8 @@ M: sequence >plist
|
|||
[ >plist ] map <NSArray> ;
|
||||
|
||||
: write-plist ( assoc path -- )
|
||||
>r >plist
|
||||
r> normalize-path <NSString> 0 -> writeToFile:atomically:
|
||||
[ >plist ] [ normalize-path <NSString> ] bi* 0
|
||||
-> writeToFile:atomically:
|
||||
[ "write-plist failed" throw ] unless ;
|
||||
|
||||
DEFER: plist>
|
||||
|
@ -57,3 +57,13 @@ DEFER: plist>
|
|||
{ [ dup NSDictionary -> isKindOfClass: c-bool> ] [ (plist-NSDictionary>) ] }
|
||||
[ ]
|
||||
} 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
|
||||
: 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: void* CFArrayGetValueAtIndex ( CFArrayRef array, CFIndex idx ) ;
|
||||
|
|
|
@ -119,17 +119,20 @@ SINGLETON: iokit-game-input-backend
|
|||
: hat-switch? ( {usage-page,usage} -- ? )
|
||||
{ 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] )
|
||||
IOHIDValueGetIntegerValue dup zero? [ drop f ] when ;
|
||||
! XXX calibration
|
||||
: axis-value ( value -- [-1,1] )
|
||||
kIOHIDValueScaleTypeCalibrated IOHIDValueGetScaledValue ;
|
||||
: slider-value ( value -- [0,1] )
|
||||
kIOHIDValueScaleTypeCalibrated IOHIDValueGetScaledValue
|
||||
1.0 + 0.5 * ;
|
||||
: pov-value ( value -- pov-direction )
|
||||
! XXX
|
||||
IOHIDValueGetIntegerValue ;
|
||||
IOHIDValueGetIntegerValue pov-values ?nth [ pov-neutral ] unless* ;
|
||||
|
||||
: record-controller ( controller-state value -- )
|
||||
dup IOHIDValueGetElement element-usage {
|
||||
|
@ -140,7 +143,7 @@ SINGLETON: iokit-game-input-backend
|
|||
{ [ dup rx-axis? ] [ drop axis-value >>rx drop ] }
|
||||
{ [ dup ry-axis? ] [ drop axis-value >>ry 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 ] }
|
||||
[ 3drop ]
|
||||
} cond ;
|
||||
|
|
|
@ -17,8 +17,8 @@ M: controller-state clone
|
|||
|
||||
SYMBOLS:
|
||||
pov-neutral
|
||||
pov-up pov-up-left pov-left pov-down-left
|
||||
pov-down pov-down-right pov-right pov-up-right ;
|
||||
pov-up pov-up-right pov-right pov-down-right
|
||||
pov-down pov-down-left pov-left pov-up-left ;
|
||||
|
||||
HOOK: get-controllers game-input-backend ( -- sequence )
|
||||
|
||||
|
|
Loading…
Reference in New Issue