2011-08-03 11:12:08 -07:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#ifndef nsDomGamepad_h
|
|
|
|
#define nsDomGamepad_h
|
|
|
|
|
2013-04-09 05:43:25 -07:00
|
|
|
#include "mozilla/ErrorResult.h"
|
2011-08-03 11:12:08 -07:00
|
|
|
#include "mozilla/StandardInteger.h"
|
2013-04-09 05:43:25 -07:00
|
|
|
#include "nsCOMPtr.h"
|
2011-08-03 11:12:08 -07:00
|
|
|
#include "nsIDOMGamepad.h"
|
|
|
|
#include "nsString.h"
|
|
|
|
#include "nsTArray.h"
|
2013-04-09 05:43:25 -07:00
|
|
|
#include "nsWrapperCache.h"
|
2011-08-03 11:12:08 -07:00
|
|
|
|
|
|
|
class nsDOMGamepad : public nsIDOMGamepad
|
2013-04-09 05:43:25 -07:00
|
|
|
, public nsWrapperCache
|
2011-08-03 11:12:08 -07:00
|
|
|
{
|
|
|
|
public:
|
2013-04-09 05:43:25 -07:00
|
|
|
nsDOMGamepad(nsISupports* aParent,
|
|
|
|
const nsAString& aID, uint32_t aIndex,
|
2011-08-03 11:12:08 -07:00
|
|
|
uint32_t aNumButtons, uint32_t aNumAxes);
|
2013-04-09 05:43:25 -07:00
|
|
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
|
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsDOMGamepad)
|
2011-08-03 11:12:08 -07:00
|
|
|
|
|
|
|
nsDOMGamepad();
|
|
|
|
void SetConnected(bool aConnected);
|
|
|
|
void SetButton(uint32_t aButton, double aValue);
|
|
|
|
void SetAxis(uint32_t aAxis, double aValue);
|
|
|
|
void SetIndex(uint32_t aIndex);
|
|
|
|
|
|
|
|
// Make the state of this gamepad equivalent to other.
|
|
|
|
void SyncState(nsDOMGamepad* other);
|
|
|
|
|
2013-04-09 05:43:25 -07:00
|
|
|
// Return a new nsDOMGamepad containing the same data as this object,
|
|
|
|
// parented to aParent.
|
|
|
|
already_AddRefed<nsDOMGamepad> Clone(nsISupports* aParent);
|
|
|
|
|
|
|
|
nsISupports* GetParentObject() const
|
|
|
|
{
|
|
|
|
return mParent;
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual JSObject*
|
|
|
|
WrapObject(JSContext* aCx, JSObject* aScope) MOZ_OVERRIDE;
|
|
|
|
|
|
|
|
void GetId(nsAString& aID) const
|
|
|
|
{
|
|
|
|
aID = mID;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool Connected() const
|
|
|
|
{
|
|
|
|
return mConnected;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t Index() const
|
|
|
|
{
|
|
|
|
return mIndex;
|
|
|
|
}
|
|
|
|
|
|
|
|
already_AddRefed<nsIVariant> GetButtons(mozilla::ErrorResult& aRv)
|
|
|
|
{
|
|
|
|
nsCOMPtr<nsIVariant> buttons;
|
|
|
|
aRv = GetButtons(getter_AddRefs(buttons));
|
|
|
|
return buttons.forget();
|
|
|
|
}
|
|
|
|
|
|
|
|
already_AddRefed<nsIVariant> GetAxes(mozilla::ErrorResult& aRv)
|
|
|
|
{
|
|
|
|
nsCOMPtr<nsIVariant> axes;
|
|
|
|
aRv = GetAxes(getter_AddRefs(axes));
|
|
|
|
return axes.forget();
|
|
|
|
}
|
2011-08-03 11:12:08 -07:00
|
|
|
|
|
|
|
private:
|
|
|
|
virtual ~nsDOMGamepad() {}
|
|
|
|
|
2013-04-09 05:43:25 -07:00
|
|
|
nsresult GetButtons(nsIVariant** aButtons);
|
|
|
|
nsresult GetAxes(nsIVariant** aAxes);
|
|
|
|
|
2011-08-03 11:12:08 -07:00
|
|
|
protected:
|
2013-04-09 05:43:25 -07:00
|
|
|
nsCOMPtr<nsISupports> mParent;
|
2011-08-03 11:12:08 -07:00
|
|
|
nsString mID;
|
|
|
|
uint32_t mIndex;
|
|
|
|
|
|
|
|
// true if this gamepad is currently connected.
|
|
|
|
bool mConnected;
|
|
|
|
|
|
|
|
// Current state of buttons, axes.
|
|
|
|
nsTArray<double> mButtons;
|
|
|
|
nsTArray<double> mAxes;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // nsDomGamepad_h
|