comparison 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
comparison
equal deleted inserted replaced
15:7ff919f595d5 16:19885b43130e
1 /**
2 * Copyright: Copyright (c) 2009 Jacob Carlborg.
3 * Authors: Jacob Carlborg
4 * Version: Initial created: Sep 28, 2009
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
6 */
7 module dstep.qtkit.QTTime;
8
9 import dstep.coreaudio.CoreAudioTypes;
10 import dstep.coreservices.carboncore.MacTypes;
11 import dstep.foundation.Foundation;
12 import dstep.objc.bridge.Bridge;
13 import dstep.objc.objc;
14 import dstep.qtkit.QTKitDefines;
15
16 import bindings = dstep.qtkit.QTTime_bindings;
17
18 extern (C)
19 {
20 extern
21 {
22 const QTTime QTZeroTime;
23 const QTTime QTIndefiniteTime;
24 }
25 }
26
27 enum
28 {
29 kQTTimeIsIndefinite = 1 << 0
30 }
31
32 struct QTTime
33 {
34 long timeValue;
35 int timeScale;
36 int flags;
37 }
38
39 const TNSValueQTSMPTETimeExtensions = `
40
41 static NSValue valueWithSMPTETime (SMPTETime time)
42 {
43 return invokeObjcSelfClass!(NSValue, "valueWithSMPTETime:", SMPTETime)(time);
44 }
45
46 SMPTETime SMPTETimeValue ()
47 {
48 return invokeObjcSelf!(SMPTETime, "SMPTETimeValue");
49 }
50
51 //mixin ObjcBindClassMethod!(valueWithSMPTETime, "valueWithSMPTETime:");
52 //mixin ObjcBindMethod!(SMPTETimeValue, "SMPTETimeValue");
53
54 `;
55
56 const TNSQTTimeCoding = `
57
58 void encodeQTTime (QTTime time, NSString key)
59 {
60 return invokeObjcSelf!(void, "encodeQTTime:forKey:", QTTime, NSString)(time, key);
61 }
62
63 QTTime decodeQTTimeForKey (NSString key)
64 {
65 return invokeObjcSelf!(QTTime, "decodeQTTimeForKey:", NSString)(key);
66 }
67
68 //mixin ObjcBindMethod!(encodeQTTime, "encodeQTTime:forKey:");
69 //mixin ObjcBindMethod!(decodeQTTimeForKey, "decodeQTTimeForKey:");
70
71 `;
72
73 const TNSCoderQTSMPTETimeCoding = `
74
75 void encodeSMPTETime (SMPTETime time, NSString key)
76 {
77 return invokeObjcSelf!(void, "encodeSMPTETime:forKey:", SMPTETime, NSString)(time, key);
78 }
79
80 SMPTETime decodeSMPTETimeForKey (NSString key)
81 {
82 return invokeObjcSelf!(SMPTETime, "decodeSMPTETimeForKey:", NSString)(key);
83 }
84
85 //mixin ObjcBindMethod!(encodeSMPTETime, "encodeSMPTETime:forKey:");
86 //mixin ObjcBindMethod!(decodeSMPTETimeForKey, "decodeSMPTETimeForKey:");
87
88 `;
89
90 const TNSValueQTTimeExtensions = `
91
92 static NSValue valueWithQTTime (QTTime time)
93 {
94 return invokeObjcSelfClass!(NSValue, "valueWithQTTime:", QTTime)(time);
95 }
96
97 QTTime QTTimeValue ()
98 {
99 return invokeObjcSelf!(QTTime, "QTTimeValue");
100 }
101
102 //mixin ObjcBindClassMethod!(valueWithQTTime, "valueWithQTTime:");
103 //mixin ObjcBindMethod!(QTTimeValue, "QTTimeValue");
104
105 `;
106
107 NSString QTStringFromTime (QTTime time)
108 {
109 return Bridge.invokeObjcFunction!(NSString, bindings.QTStringFromTime, QTTime)(time);
110 }
111
112 QTTime QTTimeFromString (NSString string)
113 {
114 return Bridge.invokeObjcFunction!(QTTime, bindings.QTTimeFromString, NSString)(string);
115 }
116
117 NSString QTStringFromSMPTETime (SMPTETime time)
118 {
119 return Bridge.invokeObjcFunction!(NSString, bindings.QTStringFromSMPTETime, SMPTETime)(time);
120 }
121
122 extern (C)
123 {
124 QTTime QTMakeTimeWithTimeRecord (TimeRecord timeRecord);
125 QTTime QTMakeTimeWithTimeInterval (double timeInterval);
126 QTTime QTMakeTime (long timeValue, int timeScale);
127 QTTime QTMakeTimeScaled (QTTime time, int timeScale);
128 bool QTGetTimeRecord (QTTime time, TimeRecord* timeRecord);
129 bool QTGetTimeInterval (QTTime time, NSTimeInterval* timeInterval);
130 int QTTimeCompare (QTTime time, QTTime otherTime);
131 QTTime QTTimeIncrement (QTTime time, QTTime increment);
132 QTTime QTTimeDecrement (QTTime time, QTTime decrement);
133 bool QTTimeIsIndefinite (QTTime time);
134 }