Mercurial > projects > dstep
diff dstep/qtkit/QTTime.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/qtkit/QTTime.d Sun Jan 03 22:06:11 2010 +0100 @@ -0,0 +1,134 @@ +/** + * Copyright: Copyright (c) 2009 Jacob Carlborg. + * Authors: Jacob Carlborg + * Version: Initial created: Sep 28, 2009 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) + */ +module dstep.qtkit.QTTime; + +import dstep.coreaudio.CoreAudioTypes; +import dstep.coreservices.carboncore.MacTypes; +import dstep.foundation.Foundation; +import dstep.objc.bridge.Bridge; +import dstep.objc.objc; +import dstep.qtkit.QTKitDefines; + +import bindings = dstep.qtkit.QTTime_bindings; + +extern (C) +{ + extern + { + const QTTime QTZeroTime; + const QTTime QTIndefiniteTime; + } +} + +enum +{ + kQTTimeIsIndefinite = 1 << 0 +} + +struct QTTime +{ + long timeValue; + int timeScale; + int flags; +} + +const TNSValueQTSMPTETimeExtensions = ` + + static NSValue valueWithSMPTETime (SMPTETime time) + { + return invokeObjcSelfClass!(NSValue, "valueWithSMPTETime:", SMPTETime)(time); + } + + SMPTETime SMPTETimeValue () + { + return invokeObjcSelf!(SMPTETime, "SMPTETimeValue"); + } + + //mixin ObjcBindClassMethod!(valueWithSMPTETime, "valueWithSMPTETime:"); + //mixin ObjcBindMethod!(SMPTETimeValue, "SMPTETimeValue"); + +`; + +const TNSQTTimeCoding = ` + + void encodeQTTime (QTTime time, NSString key) + { + return invokeObjcSelf!(void, "encodeQTTime:forKey:", QTTime, NSString)(time, key); + } + + QTTime decodeQTTimeForKey (NSString key) + { + return invokeObjcSelf!(QTTime, "decodeQTTimeForKey:", NSString)(key); + } + + //mixin ObjcBindMethod!(encodeQTTime, "encodeQTTime:forKey:"); + //mixin ObjcBindMethod!(decodeQTTimeForKey, "decodeQTTimeForKey:"); + +`; + +const TNSCoderQTSMPTETimeCoding = ` + + void encodeSMPTETime (SMPTETime time, NSString key) + { + return invokeObjcSelf!(void, "encodeSMPTETime:forKey:", SMPTETime, NSString)(time, key); + } + + SMPTETime decodeSMPTETimeForKey (NSString key) + { + return invokeObjcSelf!(SMPTETime, "decodeSMPTETimeForKey:", NSString)(key); + } + + //mixin ObjcBindMethod!(encodeSMPTETime, "encodeSMPTETime:forKey:"); + //mixin ObjcBindMethod!(decodeSMPTETimeForKey, "decodeSMPTETimeForKey:"); + +`; + +const TNSValueQTTimeExtensions = ` + + static NSValue valueWithQTTime (QTTime time) + { + return invokeObjcSelfClass!(NSValue, "valueWithQTTime:", QTTime)(time); + } + + QTTime QTTimeValue () + { + return invokeObjcSelf!(QTTime, "QTTimeValue"); + } + + //mixin ObjcBindClassMethod!(valueWithQTTime, "valueWithQTTime:"); + //mixin ObjcBindMethod!(QTTimeValue, "QTTimeValue"); + +`; + +NSString QTStringFromTime (QTTime time) +{ + return Bridge.invokeObjcFunction!(NSString, bindings.QTStringFromTime, QTTime)(time); +} + +QTTime QTTimeFromString (NSString string) +{ + return Bridge.invokeObjcFunction!(QTTime, bindings.QTTimeFromString, NSString)(string); +} + +NSString QTStringFromSMPTETime (SMPTETime time) +{ + return Bridge.invokeObjcFunction!(NSString, bindings.QTStringFromSMPTETime, SMPTETime)(time); +} + +extern (C) +{ + QTTime QTMakeTimeWithTimeRecord (TimeRecord timeRecord); + QTTime QTMakeTimeWithTimeInterval (double timeInterval); + QTTime QTMakeTime (long timeValue, int timeScale); + QTTime QTMakeTimeScaled (QTTime time, int timeScale); + bool QTGetTimeRecord (QTTime time, TimeRecord* timeRecord); + bool QTGetTimeInterval (QTTime time, NSTimeInterval* timeInterval); + int QTTimeCompare (QTTime time, QTTime otherTime); + QTTime QTTimeIncrement (QTTime time, QTTime increment); + QTTime QTTimeDecrement (QTTime time, QTTime decrement); + bool QTTimeIsIndefinite (QTTime time); +} \ No newline at end of file