17
17
* You should have received a copy of the GNU Library General Public
18
18
* License along with this library; if not, write to the
19
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20
* Boston, MA 02111-1307, USA.
22
* $Id: totemNarrowSpacePlugin.cpp 5159 2008-02-21 01:51:36Z hadess $
19
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20
* Boston, MA 02110-1301 USA.
25
#include <mozilla-config.h>
30
#include <nsIProgrammingLanguage.h>
31
#include <nsISupportsImpl.h>
35
#define GNOME_ENABLE_DEBUG 1
36
/* define GNOME_ENABLE_DEBUG for more debug spew */
39
#include "totemDebug.h"
40
#include "totemClassInfo.h"
25
#include "totemPlugin.h"
42
26
#include "totemNarrowSpacePlugin.h"
44
/* 2e390ee1-f0e3-423c-9764-f5ab50a40c06 */
45
static const nsCID kClassID =
46
{ 0x2e390ee1, 0xf0e3, 0x423c, \
47
{ 0x97, 0x64, 0xf5, 0xab, 0x50, 0xa4, 0x0c, 0x06 } };
49
static const char kClassDescription[] = "totemNarrowSpacePlugin";
50
#define QUICKTIME_VERSION "7.2.0"
51
static const char kPluginDescription[] = "QuickTime Plug-in "QUICKTIME_VERSION;
53
static const totemPluginMimeEntry kMimeTypes[] = {
54
{ "video/quicktime", "mov", NULL },
55
{ "video/mp4", "mp4", NULL },
56
{ "image/x-macpaint", "pntg", NULL },
57
{ "image/x-quicktime", "pict, pict1, pict2", "image/x-pict" },
58
{ "video/x-m4v", "m4v", NULL },
28
static const char *methodNames[] = {
31
"GetComponentVersion",
32
"GetControllerVisible",
40
"GetIsQuickTimeRegistered",
44
"GetLoopIsPalindrome",
60
"GetQuickTimeConnectionSpeed",
61
"GetQuickTimeLanguage",
62
"GetQuickTimeVersion",
65
"GetResetPropertiesOnReload",
66
"GetSpriteTrackVariable",
84
"SetControllerVisible",
93
"SetLoopIsPalindrome",
104
"SetResetPropertiesOnReload",
105
"SetSpriteTrackVariable",
62
totemScriptablePlugin::operator new (size_t aSize) CPP_THROW_NEW
64
void *object = ::operator new (aSize);
66
memset (object, 0, aSize);
72
totemScriptablePlugin::totemScriptablePlugin (totemPlugin *aPlugin)
73
: mPluginState(eState_Waiting),
76
D ("%s ctor [%p]", kClassDescription, (void*) this);
79
totemScriptablePlugin::~totemScriptablePlugin ()
81
D ("%s dtor [%p]", kClassDescription, (void*) this);
85
totemScriptablePlugin::PluginDescription ()
87
return (char*) kPluginDescription;
91
totemScriptablePlugin::PluginLongDescription ()
93
return (char*) totem_plugin_get_long_description();
97
totemScriptablePlugin::PluginMimeTypes (const totemPluginMimeEntry **_entries,
100
*_entries = kMimeTypes;
101
*_count = G_N_ELEMENTS (kMimeTypes);
104
/* Interface implementations */
106
NS_IMPL_ISUPPORTS2 (totemScriptablePlugin,
107
totemINarrowSpacePlayer,
112
TOTEM_CLASSINFO_BEGIN (totemScriptablePlugin,
116
TOTEM_CLASSINFO_ENTRY (0, totemINarrowSpacePlayer)
119
/* totemINarrowSpacePlayer */
121
#define TOTEM_SCRIPTABLE_INTERFACE "totemINarrowSpacePlayer"
123
/* boolean GetAutoPlay (); */
125
totemScriptablePlugin::GetAutoPlay(PRBool *_retval)
127
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
129
*_retval = mAutoPlay;
133
/* void SetAutoPlay (in boolean enabled); */
135
totemScriptablePlugin::SetAutoPlay(PRBool enabled)
137
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
139
mAutoPlay = enabled != PR_FALSE;
143
/* ACString GetBgColor (); */
145
totemScriptablePlugin::GetBgColor(nsACString & _retval)
147
TOTEM_SCRIPTABLE_LOG_ACCESS ();
149
_retval.Assign (mBackgroundColour);
153
/* void SetBgColor (in ACString colour); */
155
totemScriptablePlugin::SetBgColor(const nsACString & colour)
157
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
159
mBackgroundColour = colour;
163
/* ACString GetComponentVersion (in ACString type, in ACString subtype, in ACString vendor); */
165
totemScriptablePlugin::GetComponentVersion (const nsACString & type,
166
const nsACString & subtype,
167
const nsACString & vendor,
168
nsACString & _retval)
170
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED ();
171
D ("GetComponentVersion [%s, %s, %s]",
172
nsCString(type).get(),
173
nsCString(subtype).get(),
174
nsCString(vendor).get());
176
_retval.Assign ("1.0");
180
/* boolean GetControllerVisible (); */
182
totemScriptablePlugin::GetControllerVisible(PRBool *_retval)
184
TOTEM_SCRIPTABLE_LOG_ACCESS ();
185
*_retval = mControllerVisible;
189
/* void SetControllerVisible (in boolean enabled); */
191
totemScriptablePlugin::SetControllerVisible(PRBool enabled)
193
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
195
mControllerVisible = enabled != PR_FALSE;
199
/* unsigned long GetDuration (); */
201
totemScriptablePlugin::GetDuration(PRUint32 *_retval)
203
TOTEM_SCRIPTABLE_LOG_ACCESS ();
205
NS_ENSURE_STATE (IsValid());
206
*_retval = mPlugin->mDuration;
210
/* unsigned long GetEndTime (); */
212
totemScriptablePlugin::GetEndTime(PRUint32 *_retval)
214
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
220
/* void SetEndTime (in unsigned long time); */
222
totemScriptablePlugin::SetEndTime(PRUint32 time)
224
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
229
/* float GetFieldOfView (); */
231
totemScriptablePlugin::GetFieldOfView (float *_retval)
233
TOTEM_SCRIPTABLE_LOG_ACCESS ();
234
return NS_ERROR_NOT_AVAILABLE;
237
/* void SetFieldOfView (in float angle); */
239
totemScriptablePlugin::SetFieldOfView(float angle)
241
TOTEM_SCRIPTABLE_LOG_ACCESS ();
242
return NS_ERROR_NOT_AVAILABLE;
245
/* void GoPreviousNode (); */
247
totemScriptablePlugin::GoPreviousNode()
249
TOTEM_SCRIPTABLE_LOG_ACCESS ();
250
return NS_ERROR_NOT_AVAILABLE;
253
/* AUTF8String GetHotspotTarget (in unsigned long id); */
255
totemScriptablePlugin::GetHotspotTarget(PRUint32 id, nsACString & _retval)
257
TOTEM_SCRIPTABLE_LOG_ACCESS ();
258
return NS_ERROR_NOT_AVAILABLE;
261
/* void SetHotspotTarget (in unsigned long id, in AUTF8String target); */
263
totemScriptablePlugin::SetHotspotTarget(PRUint32 id, const nsACString & target)
265
TOTEM_SCRIPTABLE_LOG_ACCESS ();
266
return NS_ERROR_NOT_AVAILABLE;
269
/* AUTF8String GetHotspotUrl (in unsigned long id); */
271
totemScriptablePlugin::GetHotspotUrl(PRUint32 id, nsACString & _retval)
273
TOTEM_SCRIPTABLE_LOG_ACCESS ();
274
return NS_ERROR_NOT_AVAILABLE;
277
/* void SetHotspotUrl (in unsigned long id, in AUTF8String url); */
279
totemScriptablePlugin::SetHotspotUrl(PRUint32 id, const nsACString & url)
281
TOTEM_SCRIPTABLE_LOG_ACCESS ();
282
return NS_ERROR_NOT_AVAILABLE;
285
/* AUTF8String GetHREF (); */
287
totemScriptablePlugin::GetHREF(nsACString & _retval)
289
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
294
/* void SetHREF (in AUTF8String href); */
296
totemScriptablePlugin::SetHREF(const nsACString & href)
298
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
303
/* boolean GetIsLooping (); */
305
totemScriptablePlugin::GetIsLooping(PRBool *_retval)
307
TOTEM_SCRIPTABLE_LOG_ACCESS ();
309
*_retval = mIsLooping;
313
/* void SetIsLooping (in boolean enabled); */
315
totemScriptablePlugin::SetIsLooping(PRBool enabled)
317
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
319
mIsLooping = enabled != PR_FALSE;
323
/* boolean GetIsQuickTimeRegistered (); */
325
totemScriptablePlugin::GetIsQuickTimeRegistered(PRBool *_retval)
327
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
333
/* boolean GetIsVRMovie (); */
335
totemScriptablePlugin::GetIsVRMovie(PRBool *_retval)
337
TOTEM_SCRIPTABLE_LOG_ACCESS ();
343
/* boolean GetKioskMode (); */
345
totemScriptablePlugin::GetKioskMode(PRBool *_retval)
347
TOTEM_SCRIPTABLE_LOG_ACCESS ();
349
*_retval = mKioskMode;
353
/* void SetKioskMode (in boolean enabled); */
355
totemScriptablePlugin::SetKioskMode(PRBool enabled)
357
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
359
mKioskMode = enabled != PR_FALSE;
363
/* ACString GetLanguage (); */
365
totemScriptablePlugin::GetLanguage(nsACString & _retval)
367
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
369
_retval.Assign ("English");
373
/* void SetLanguage (in ACString language); */
375
totemScriptablePlugin::SetLanguage(const nsACString & language)
377
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
382
/* boolean GetLoopIsPalindrome (); */
384
totemScriptablePlugin::GetLoopIsPalindrome(PRBool *_retval)
386
TOTEM_SCRIPTABLE_LOG_ACCESS ();
388
*_retval = mLoopIsPalindrome;
392
/* void SetLoopIsPalindrome (in boolean enabled); */
394
totemScriptablePlugin::SetLoopIsPalindrome(PRBool enabled)
396
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
398
mLoopIsPalindrome = enabled != PR_FALSE;
402
/* ACString GetMatrix (); */
404
totemScriptablePlugin::GetMatrix(nsACString & _retval)
406
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
408
_retval.Assign (mMatrix);
412
/* void SetMatrix (in ACString matrix); */
414
totemScriptablePlugin::SetMatrix(const nsACString & matrix)
416
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
422
/* unsigned long GetMaxBytesLoaded (); */
424
totemScriptablePlugin::GetMaxBytesLoaded(PRUint32 *_retval)
426
TOTEM_SCRIPTABLE_LOG_ACCESS ();
428
NS_ENSURE_STATE (IsValid());
429
*_retval = mPlugin->mBytesStreamed;
433
/* unsigned long GetMaxTimeLoaded (); */
435
totemScriptablePlugin::GetMaxTimeLoaded(PRUint32 *_retval)
437
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
442
/* ACString GetMIMEType (); */
444
totemScriptablePlugin::GetMIMEType(nsACString & _retval)
446
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
448
_retval.Assign ("video/quicktime");
452
/* unsigned long GetMovieID (); */
454
totemScriptablePlugin::GetMovieID(PRUint32 *_retval)
456
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
461
/* void SetMovieID (in unsigned long id); */
463
totemScriptablePlugin::SetMovieID(PRUint32 id)
465
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
470
/* AUTF8String GetMovieName (); */
472
totemScriptablePlugin::GetMovieName(nsACString & _retval)
474
TOTEM_SCRIPTABLE_LOG_ACCESS ();
476
_retval.Assign (mMovieName);
480
/* void SetMovieName (in AUTF8String name); */
482
totemScriptablePlugin::SetMovieName(const nsACString & name)
484
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
490
/* unsigned long GetMovieSize (); */
492
totemScriptablePlugin::GetMovieSize(PRUint32 *_retval)
494
TOTEM_SCRIPTABLE_LOG_ACCESS ();
496
NS_ENSURE_STATE (IsValid());
497
*_retval = mPlugin->mBytesLength;
501
/* boolean GetMute (); */
503
totemScriptablePlugin::GetMute(PRBool *_retval)
505
TOTEM_SCRIPTABLE_LOG_ACCESS ();
511
/* void SetMute (in boolean enabled); */
513
totemScriptablePlugin::SetMute(PRBool enabled)
515
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
517
mMute = enabled != PR_FALSE;
521
/* unsigned long GetNodeCount (); */
523
totemScriptablePlugin::GetNodeCount(PRUint32 *_retval)
525
TOTEM_SCRIPTABLE_LOG_ACCESS ();
527
return NS_ERROR_NOT_AVAILABLE;
530
/* unsigned long GetNodeID (); */
532
totemScriptablePlugin::GetNodeID(PRUint32 *_retval)
534
TOTEM_SCRIPTABLE_LOG_ACCESS ();
536
return NS_ERROR_NOT_AVAILABLE;
539
/* void SetNodeID (in unsigned long id); */
541
totemScriptablePlugin::SetNodeID(PRUint32 id)
543
TOTEM_SCRIPTABLE_LOG_ACCESS ();
545
return NS_ERROR_NOT_AVAILABLE;
548
/* float GetPanAngle (); */
550
totemScriptablePlugin::GetPanAngle(float *_retval)
552
TOTEM_SCRIPTABLE_LOG_ACCESS ();
554
return NS_ERROR_NOT_AVAILABLE;
557
/* void SetPanAngle (in float angle); */
559
totemScriptablePlugin::SetPanAngle(float angle)
561
TOTEM_SCRIPTABLE_LOG_ACCESS ();
563
return NS_ERROR_NOT_AVAILABLE;
568
totemScriptablePlugin::Play ()
570
TOTEM_SCRIPTABLE_LOG_ACCESS ();
572
NS_ENSURE_STATE (IsValid ());
574
return mPlugin->DoCommand (TOTEM_COMMAND_PLAY);
577
/* boolean GetPlayEveryFrame (); */
579
totemScriptablePlugin::GetPlayEveryFrame(PRBool *_retval)
581
TOTEM_SCRIPTABLE_LOG_ACCESS ();
583
*_retval = mPlayEveryFrame;
587
/* void SetPlayEveryFrame (in boolean enabled); */
589
totemScriptablePlugin::SetPlayEveryFrame(PRBool enabled)
591
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
593
mPlayEveryFrame = enabled != PR_FALSE;
597
/* ACString GetPluginStatus (); */
599
totemScriptablePlugin::GetPluginStatus(nsACString & _retval)
601
static const char *kState[] = {
609
if (mPluginState != eState_Error) {
610
_retval.Assign (kState[mPluginState]);
613
_retval.Assign ("Error:<1>");
618
/* ACString GetPluginVersion (); */
620
totemScriptablePlugin::GetPluginVersion(nsACString & _retval)
622
_retval.Assign (QUICKTIME_VERSION);
626
/* AUTF8String GetQTNEXTUrl (in unsigned long index); */
628
totemScriptablePlugin::GetQTNEXTUrl (PRUint32 index,
629
nsACString & _retval)
631
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
636
/* void SetQTNEXTUrl (in unsigned long index, in AUTF8String url); */
638
totemScriptablePlugin::SetQTNEXTUrl (PRUint32 index,
639
const nsACString & url)
641
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
646
/* unsigned long GetQuickTimeConnectionSpeed (); */
648
totemScriptablePlugin::GetQuickTimeConnectionSpeed(PRUint32 *_retval)
650
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
652
*_retval = 300000; /* FIXME */
656
/* ACString GetQuickTimeLanguage (); */
658
totemScriptablePlugin::GetQuickTimeLanguage(nsACString & _retval)
660
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
662
_retval.Assign ("English"); /* FIXME */
666
/* ACString GetQuickTimeVersion (); */
668
totemScriptablePlugin::GetQuickTimeVersion(nsACString & _retval)
670
_retval.Assign (QUICKTIME_VERSION);
674
/* float GetRate (); */
676
totemScriptablePlugin::GetRate(float *_retval)
678
TOTEM_SCRIPTABLE_LOG_ACCESS ();
680
NS_ENSURE_STATE (IsValid());
682
if (mPlugin->mState == TOTEM_STATE_PLAYING) {
690
/* void SetRate (in float rate); */
692
totemScriptablePlugin::SetRate(float rate)
694
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
696
/* mRate = rate; FIXME */
700
/* void SetRectangle (in ACString rectangle); */
702
totemScriptablePlugin::SetRectangle(const nsACString & rectangle)
704
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
706
mRectangle = rectangle;
710
/* ACString GetRectangle (); */
712
totemScriptablePlugin::GetRectangle(nsACString & _retval)
714
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
716
_retval.Assign (mRectangle);
720
/* boolean GetResetPropertiesOnReload (); */
722
totemScriptablePlugin::GetResetPropertiesOnReload(PRBool *_retval)
724
TOTEM_SCRIPTABLE_LOG_ACCESS ();
726
*_retval = mResetPropertiesOnReload;
730
/* void SetResetPropertiesOnReload (in boolean enabled); */
732
totemScriptablePlugin::SetResetPropertiesOnReload(PRBool enabled)
734
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
736
mResetPropertiesOnReload = enabled != PR_FALSE;
740
/* void Rewind (); */
742
totemScriptablePlugin::Rewind ()
744
TOTEM_SCRIPTABLE_LOG_ACCESS ();
746
NS_ENSURE_STATE (IsValid ());
748
return mPlugin->DoCommand (TOTEM_COMMAND_PAUSE);
751
/* void ShowDefaultView (); */
753
totemScriptablePlugin::ShowDefaultView()
755
TOTEM_SCRIPTABLE_LOG_ACCESS ();
760
/* ACString GetSpriteTrackVariable (in unsigned long track, in unsigned long index); */
762
totemScriptablePlugin::GetSpriteTrackVariable (PRUint32 track,
764
nsACString & _retval)
766
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
771
/* void SetSpriteTrackVariable (in unsigned long track, in unsigned long index, in ACString value); */
773
totemScriptablePlugin::SetSpriteTrackVariable (PRUint32 track,
775
const nsACString & value)
777
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
782
/* void SetStartTime (in unsigned long time); */
784
totemScriptablePlugin::SetStartTime(PRUint32 time)
786
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
791
/* unsigned long GetStartTime (); */
793
totemScriptablePlugin::GetStartTime (PRUint32 *_retval)
795
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
797
*_retval = 0; /* FIXME */
801
/* void Step (in long steps); */
803
totemScriptablePlugin::Step(PRInt32 steps)
805
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
812
totemScriptablePlugin::Stop ()
814
TOTEM_SCRIPTABLE_LOG_ACCESS ();
816
NS_ENSURE_STATE (IsValid ());
818
return mPlugin->DoCommand (TOTEM_COMMAND_PAUSE);
821
/* AUTF8String GetTarget (); */
823
totemScriptablePlugin::GetTarget(nsACString & _retval)
825
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
830
/* void SetTarget (in AUTF8String target); */
832
totemScriptablePlugin::SetTarget(const nsACString & target)
834
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
839
/* float GetTiltAngle (); */
841
totemScriptablePlugin::GetTiltAngle(float *_retval)
843
TOTEM_SCRIPTABLE_LOG_ACCESS ();
845
return NS_ERROR_NOT_AVAILABLE;
848
/* void SetTiltAngle (in float angle); */
850
totemScriptablePlugin::SetTiltAngle(float angle)
852
TOTEM_SCRIPTABLE_LOG_ACCESS ();
854
return NS_ERROR_NOT_AVAILABLE;
857
/* unsigned long GetTime (); */
859
totemScriptablePlugin::GetTime(PRUint32 *_retval)
861
TOTEM_SCRIPTABLE_LOG_ACCESS ();
863
*_retval = mPlugin->mTime;
867
/* void SetTime (in unsigned long time); */
869
totemScriptablePlugin::SetTime(PRUint32 time)
871
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
876
/* unsigned long GetTimeScale (); */
878
totemScriptablePlugin::GetTimeScale(PRUint32 *_retval)
880
TOTEM_SCRIPTABLE_LOG_ACCESS ();
886
/* unsigned long GetTrackCount (); */
888
totemScriptablePlugin::GetTrackCount(PRUint32 *_retval)
890
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
896
/* boolean GetTrackEnabled (in unsigned long index); */
898
totemScriptablePlugin::GetTrackEnabled (PRUint32 index,
901
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
907
/* void SetTrackEnabled (in unsigned long index, in boolean enabled); */
909
totemScriptablePlugin::SetTrackEnabled (PRUint32 index,
912
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
917
/* AUTF8String GetTrackName (in unsigned long index); */
919
totemScriptablePlugin::GetTrackName (PRUint32 index,
920
nsACString & _retval)
922
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
927
/* AUTF8String GetTrackType (in unsigned long index); */
929
totemScriptablePlugin::GetTrackType (PRUint32 index,
930
nsACString & _retval)
932
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
937
/* AUTF8String GetURL (); */
939
totemScriptablePlugin::GetURL (nsACString & _retval)
941
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
946
/* void SetURL (in AUTF8String url); */
948
totemScriptablePlugin::SetURL (const nsACString & url)
950
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
955
/* AUTF8String GetUserData (in AUTF8String identifier); */
957
totemScriptablePlugin::GetUserData (const nsACString & identifier,
958
nsACString & _retval)
960
TOTEM_SCRIPTABLE_WARN_UNIMPLEMENTED();
965
/* unsigned long GetVolume (); */
967
totemScriptablePlugin::GetVolume(PRUint32 *_retval)
969
TOTEM_SCRIPTABLE_LOG_ACCESS ();
971
NS_ENSURE_STATE (IsValid ());
973
*_retval = mPlugin->mVolume * 100.0;
977
/* void SetVolume (in unsigned long volume); */
979
totemScriptablePlugin::SetVolume(PRUint32 aVolume)
981
TOTEM_SCRIPTABLE_LOG_ACCESS ();
983
NS_ENSURE_STATE (IsValid ());
985
nsresult rv = mPlugin->SetVolume ((double) aVolume / 100);
987
/* Volume passed in is 0 through to 100 */
988
mPlugin->mVolume = (double) aVolume / 100;
118
TOTEM_IMPLEMENT_NPCLASS (totemNarrowSpacePlayer,
120
methodNames, G_N_ELEMENTS (methodNames),
123
totemNarrowSpacePlayer::totemNarrowSpacePlayer (NPP aNPP)
124
: totemNPObject (aNPP),
125
mPluginState (eState_Waiting)
130
totemNarrowSpacePlayer::~totemNarrowSpacePlayer ()
136
totemNarrowSpacePlayer::InvokeByIndex (int aIndex,
137
const NPVariant *argv,
141
TOTEM_LOG_INVOKE (aIndex, totemNarrowSpacePlayer);
143
switch (Methods (aIndex)) {
146
Plugin()->Command (TOTEM_COMMAND_PLAY);
147
return VoidVariant (_result);
151
Plugin()->Command (TOTEM_COMMAND_STOP);
152
return VoidVariant (_result);
155
/* void Rewind (); */
156
Plugin()->Command (TOTEM_COMMAND_PAUSE);
157
return VoidVariant (_result);
159
case eGetMaxBytesLoaded:
160
/* unsigned long GetMaxBytesLoaded (); */
161
return Int32Variant (_result, Plugin()->BytesStreamed());
164
/* unsigned long GetMovieSize (); */
165
return Int32Variant (_result, Plugin()->BytesLength());
168
/* boolean GetAutoPlay (); */
169
return BoolVariant (_result, Plugin()->AutoPlay());
171
case eGetControllerVisible:
172
/* boolean GetControllerVisible (); */
173
return BoolVariant (_result, Plugin()->IsControllerVisible());
176
/* boolean GetIsLooping (); */
177
return BoolVariant (_result, Plugin()->IsLooping());
180
/* boolean GetKioskMode (); */
181
return BoolVariant (_result, Plugin()->IsKioskMode());
183
case eGetLoopIsPalindrome:
184
/* boolean GetLoopIsPalindrome (); */
185
return BoolVariant (_result, Plugin()->IsLoopPalindrome());
188
/* boolean GetMute (); */
189
return BoolVariant (_result, Plugin()->IsMute());
191
case eGetPlayEveryFrame:
192
/* boolean GetPlayEveryFrame (); */
193
return BoolVariant (_result, Plugin()->PlayEveryFrame());
196
/* void SetAutoPlay (in boolean autoPlay); */
198
if (!GetBoolFromArguments (argv, argc, 0, enabled))
201
Plugin()->SetAutoPlay (enabled);
202
return VoidVariant (_result);
205
case eSetControllerVisible: {
206
/* void SetControllerVisible (in boolean visible); */
208
if (!GetBoolFromArguments (argv, argc, 0, enabled))
211
Plugin()->SetControllerVisible (enabled);
212
return VoidVariant (_result);
215
case eSetIsLooping: {
216
/* void SetIsLooping (in boolean loop); */
218
if (!GetBoolFromArguments (argv, argc, 0, enabled))
221
Plugin()->SetLooping (enabled);
222
return VoidVariant (_result);
225
case eSetKioskMode: {
226
/* void SetKioskMode (in boolean kioskMode); */
228
if (!GetBoolFromArguments (argv, argc, 0, enabled))
231
Plugin()->SetKioskMode (enabled);
232
return VoidVariant (_result);
235
case eSetLoopIsPalindrome: {
236
/* void SetLoopIsPalindrome (in boolean loop); */
238
if (!GetBoolFromArguments (argv, argc, 0, enabled))
241
Plugin()->SetLoopIsPalindrome (enabled);
242
return VoidVariant (_result);
246
/* void SetMute (in boolean mute); */
248
if (!GetBoolFromArguments (argv, argc, 0, enabled))
251
Plugin()->SetMute (enabled);
252
return VoidVariant (_result);
255
case eSetPlayEveryFrame: {
256
/* void SetPlayEveryFrame (in boolean playAll); */
258
if (!GetBoolFromArguments (argv, argc, 0, enabled))
261
Plugin()->SetPlayEveryFrame (enabled);
262
return VoidVariant (_result);
266
/* unsigned long GetVolume (); */
267
return Int32Variant (_result, Plugin()->Volume() * 255.0);
270
/* void SetVolume (in unsigned long volume); */
272
if (!GetInt32FromArguments (argv, argc, 0, volume))
275
Plugin()->SetVolume ((double) CLAMP (volume, 0, 255) / 255.0);
276
return VoidVariant (_result);
280
/* ACString GetBgColor (); */
281
const char *color = Plugin()->BackgroundColor();
283
return StringVariant (_result, color);
285
return StringVariant (_result, "#000000");
289
/* void SetBgColor (in ACString color); */
291
if (!GetStringFromArguments (argv, argc, 0, color))
294
Plugin()->SetBackgroundColor (color);
295
return VoidVariant (_result);
299
/* unsigned long GetDuration (); */
300
return Int32Variant (_result, Plugin()->Duration());
303
/* unsigned long GetStartTime (); */
304
TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
305
return Int32Variant (_result, 0); /* FIXME */
308
/* unsigned long GetTime (); */
309
return Int32Variant (_result, Plugin()->Time());
312
/* unsigned long GetEndTime (); */
313
TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
314
return Int32Variant (_result, 0);
317
/* unsigned long GetTimeScale (); */
318
return Int32Variant (_result, 1000); /* FIXME? */
321
/* float GetRate (); */
322
return DoubleVariant (_result, Plugin()->Rate());
325
/* void SetRate (in float rate); */
327
if (!GetDoubleFromArguments (argv, argc, 0, rate))
330
Plugin()->SetRate (rate);
331
return VoidVariant (_result);
335
/* ACString GetLanguage (); */
336
TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
337
return StringVariant (_result, "English");
339
case eGetComponentVersion:
340
/* ACString GetComponentVersion (in ACString type, in ACString subType, in ACString manufacturer); */
341
TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
342
return StringVariant (_result, "1.0");
344
case eGetIsQuickTimeRegistered:
345
/* boolean GetIsQuickTimeRegistered (); */
346
TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
348
/* boolean GetIsVRMovie (); */
349
return BoolVariant (_result, false);
352
/* ACString GetMIMEType (); */
353
return StringVariant (_result, "video/quicktime");
356
/* ACString GetMatrix (); */
357
return StringVariant (_result, Plugin()->Matrix());
360
/* void SetMatrix (in ACString matrix); */
362
if (!GetStringFromArguments (argv, argc, 0, matrix))
365
Plugin()->SetMatrix (matrix);
366
return VoidVariant (_result);
370
/* AUTF8String GetMovieName (); */
371
return StringVariant (_result, Plugin()->MovieName());
373
case eSetMovieName: {
374
/* void SetMovieName (in AUTF8String movieName); */
376
if (!GetStringFromArguments (argv, argc, 0, name))
379
Plugin()->SetMovieName (name);
380
return VoidVariant (_result);
384
/* ACString GetRectangle (); */
385
return StringVariant (_result, Plugin()->Rectangle());
387
case eSetRectangle: {
388
/* void SetRectangle (in ACString rect); */
389
const char *rectangle;
390
if (!GetStringFromArguments (argv, argc, 0, rectangle))
393
Plugin()->SetRectangle (rectangle);
394
return VoidVariant (_result);
397
case eGetPluginStatus: {
398
/* ACString GetPluginStatus (); */
399
static const char *kState[] = {
401
NULL, /* "Error:<%d>", */
407
if (mPluginState == eState_Error)
408
return StringVariant (_result, "Error:<1>");
410
return StringVariant (_result, kState[mPluginState]);
414
/* unsigned long GetTrackCount (); */
415
TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
416
return Int32Variant (_result, 1);
418
case eGetTrackEnabled:
419
/* boolean GetTrackEnabled (in unsigned long index); */
420
TOTEM_WARN_1_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
421
return BoolVariant (_result, true);
423
case eGetPluginVersion:
424
/* ACString GetPluginVersion (); */
425
case eGetQuickTimeVersion:
426
/* ACString GetQuickTimeVersion (); */
427
return StringVariant (_result, TOTEM_NARROWSPACE_VERSION);
429
case eGetQuickTimeConnectionSpeed:
430
/* unsigned long GetQuickTimeConnectionSpeed (); */
431
return Int32Variant (_result, Plugin()->Bandwidth());
433
case eGetResetPropertiesOnReload:
434
/* boolean GetResetPropertiesOnReload (); */
435
return BoolVariant (_result, Plugin()->ResetPropertiesOnReload());
437
case eSetResetPropertiesOnReload: {
438
/* void SetResetPropertiesOnReload (in boolean reset); */
440
if (!GetBoolFromArguments (argv, argc, 0, enabled))
443
Plugin()->SetResetPropertiesOnReload (enabled);
444
return VoidVariant (_result);
447
case eGetMaxTimeLoaded:
448
/* unsigned long GetMaxTimeLoaded (); */
450
/* unsigned long GetMovieID (); */
452
/* unsigned long GetNodeCount (); */
454
/* unsigned long GetNodeID (); */
455
TOTEM_WARN_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
456
return Int32Variant (_result, 0);
458
case eGetFieldOfView:
459
/* float GetFieldOfView (); */
461
/* float GetPanAngle (); */
463
/* float GetTiltAngle (); */
464
TOTEM_WARN_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
465
return DoubleVariant (_result, 0.0);
468
/* AUTF8String GetTrackName (in unsigned long index); */
470
/* ACString GetTrackType (in unsigned long index); */
471
case eGetHotpotTarget:
472
/* AUTF8String GetHotspotTarget (in unsigned long hotspotID); */
474
/* AUTF8String GetHotspotUrl (in unsigned long hotspotID); */
476
/* AUTF8String GetHREF (); */
478
/* AUTF8String GetQTNEXTUrl (in unsigned long index); */
479
case eGetQuickTimeLanguage:
480
/* ACString GetQuickTimeLanguage (); */
481
case eGetSpriteTrackVariable:
482
/* ACString GetSpriteTrackVariable (in unsigned long trackIndex, in unsigned long variableIndex); */
484
/* AUTF8String GetTarget (); */
486
/* AUTF8String GetURL (); */
488
/* AUTF8String GetUserData (in ACString type); */
489
TOTEM_WARN_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
490
return StringVariant (_result, "");
492
case eGoPreviousNode:
493
/* void GoPreviousNode (); */
495
/* void SetEndTime (in unsigned long time); */
496
case eSetFieldOfView:
497
/* void SetFieldOfView (in float fov); */
498
case eSetHotpotTarget:
499
/* void SetHotspotTarget (in unsigned long hotspotID, in AUTF8String target); */
501
/* void SetHotspotUrl (in unsigned long hotspotID, in AUTF8String url); */
503
/* void SetHREF (in AUTF8String url); */
505
/* void SetLanguage (in ACString language); */
507
/* void SetMovieID (in unsigned long movieID); */
509
/* void SetNodeID (in unsigned long id); */
511
/* void SetPanAngle (in float angle); */
513
/* void SetQTNEXTUrl (in unsigned long index, in AUTF8String url); */
514
case eSetSpriteTrackVariable:
515
/* void SetSpriteTrackVariable (in unsigned long trackIndex, in unsigned long variableIndex, in ACString value); */
517
/* void SetStartTime (in unsigned long time); */
519
/* void SetTarget (in AUTF8String target); */
521
/* void SetTiltAngle (in float angle); */
523
/* void SetTime (in unsigned long time); */
524
case eSetTrackEnabled:
525
/* void SetTrackEnabled (in unsigned long index, in boolean enabled); */
527
/* void SetURL (in AUTF8String url); */
529
/* void Step (in long count); */
530
case eShowDefaultView:
531
/* void ShowDefaultView (); */
532
TOTEM_WARN_INVOKE_UNIMPLEMENTED (aIndex, totemNarrowSpacePlayer);
533
return VoidVariant (_result);