Mercurial > projects > dstep
view 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 source
/** * 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); }