diff --git a/interface/src/AvatarBookmarks.h b/interface/src/AvatarBookmarks.h index 7e2f64379e..228d78333a 100644 --- a/interface/src/AvatarBookmarks.h +++ b/interface/src/AvatarBookmarks.h @@ -15,6 +15,10 @@ #include <DependencyManager.h> #include "Bookmarks.h" +/**jsdoc + * This API helps manage adding and deleting Avatar bookmarks + */ + class AvatarBookmarks: public Bookmarks, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY @@ -23,6 +27,15 @@ public: AvatarBookmarks(); void setupMenus(Menu* menubar, MenuWrapper* menu) override; +/**jsdoc + * Add the current Avatar to your Avatar Bookmarks + * @function AvatarBookmarks.addBookMark + */ + +/**jsdoc + * @function AvatarBookmarks.deleteBookMark + */ + public slots: void addBookmark(); diff --git a/interface/src/Bookmarks.h b/interface/src/Bookmarks.h index dd47a286bf..99e5911591 100644 --- a/interface/src/Bookmarks.h +++ b/interface/src/Bookmarks.h @@ -1,4 +1,4 @@ -// + // // Bookmarks.h // interface/src // @@ -48,6 +48,10 @@ protected: bool _isMenuSorted; protected slots: + /**jsdoc + * Delete + * @function AvatarBookmarks.deleteBookmark + */ void deleteBookmark(); private: diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index a12f809efe..fa87a6c61b 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -9,6 +9,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +/**jsdoc + * The LOD class manages your Level of Detail functions within interface + * @namespace LODManager + */ + #ifndef hifi_LODManager_h #define hifi_LODManager_h @@ -39,28 +44,125 @@ class LODManager : public QObject, public Dependency { SINGLETON_DEPENDENCY public: + + /**jsdoc + * @function LODManager.setAutomaticLODAdjust + * @param {boolean} value + */ + Q_INVOKABLE void setAutomaticLODAdjust(bool value) { _automaticLODAdjust = value; } + + /**jsdoc + * @function LODManager.getAutomaticLODAdjust + * @returns {boolean} + */ + Q_INVOKABLE bool getAutomaticLODAdjust() const { return _automaticLODAdjust; } + /**jsdoc + * @function LODManager.setDesktopLODDecreaseFPS + * @param {float} value + */ + Q_INVOKABLE void setDesktopLODDecreaseFPS(float value); + + /**jsdoc + * @function LODManager.getDesktopLODDecreaseFPS + * @returns {number} + */ + Q_INVOKABLE float getDesktopLODDecreaseFPS() const; + + /**jsdoc + * @function LODManager.getDesktopLODIncreaseFPS + * @returns {number} + */ + Q_INVOKABLE float getDesktopLODIncreaseFPS() const; + /**jsdoc + * @function LODManager.setHMDLODDecreaseFPS + * @param {number} value + */ + Q_INVOKABLE void setHMDLODDecreaseFPS(float value); + + /**jsdoc + * @function LODManager.getHMDLODDecreaseFPS + * @returns {number} + */ + Q_INVOKABLE float getHMDLODDecreaseFPS() const; + + /**jsdoc + * @function LODManager.getHMDLODIncreaseFPS + * @returns {number} + */ + Q_INVOKABLE float getHMDLODIncreaseFPS() const; // User Tweakable LOD Items + /**jsdoc + * @function LODManager.getLODFeedbackText + * @returns {string} + */ + Q_INVOKABLE QString getLODFeedbackText(); + + /**jsdoc + * @function LODManager.setOctreeSizeScale + * @param {number} sizeScale + */ + Q_INVOKABLE void setOctreeSizeScale(float sizeScale); + + /**jsdoc + * @function LODManager.getOctreeSizeScale + * @returns {number} + */ + Q_INVOKABLE float getOctreeSizeScale() const { return _octreeSizeScale; } + /**jsdoc + * @function LODManager.setBoundaryLevelAdjust + * @param {number} boundaryLevelAdjust + */ + Q_INVOKABLE void setBoundaryLevelAdjust(int boundaryLevelAdjust); + + /**jsdoc + * @function LODManager.getBoundaryLevelAdjust + * @returns {number} + */ + Q_INVOKABLE int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; } + /**jsdoc + * @function LODManager.getLODDecreaseFPS + * @returns {number} + */ + Q_INVOKABLE float getLODDecreaseFPS() const; + + /**jsdoc + * @function LODManager.getLODIncreaseFPS + * @returns {number} + */ + Q_INVOKABLE float getLODIncreaseFPS() const; + /**jsdoc + * @namespace LODManager + * @property presentTime {number} + * @property engineRunTime {number} + * @property gpuTime {number} + * @property avgRenderTime {number} + * @property fps {number} + * @property lodLevel {number} + * @property lodDecreaseFPS {number} + * @property lodIncreaseFPS {number} + */ + Q_PROPERTY(float presentTime READ getPresentTime) Q_PROPERTY(float engineRunTime READ getEngineRunTime) Q_PROPERTY(float gpuTime READ getGPUTime) @@ -88,7 +190,19 @@ public: float getLODLevel() const; signals: + + /**jsdoc + * @function LODManager.LODIncreased + * @returns {Signal} + */ + void LODIncreased(); + + /**jsdoc + * @function LODManager.LODDecreased + * @returns {Signal} + */ + void LODDecreased(); private: diff --git a/interface/src/audio/AudioScope.h b/interface/src/audio/AudioScope.h index e99b8378e3..4fde25ecb8 100644 --- a/interface/src/audio/AudioScope.h +++ b/interface/src/audio/AudioScope.h @@ -25,6 +25,17 @@ class AudioScope : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY + /**jsdoc + * The AudioScope API helps control the Audio Scope features in Interface + * @namespace AudioScope + * @property {int} scopeInput + * @property {int} scopeOutputLeft + * @property {int} scopeOutputRight + * @property {int} triggerInput + * @property {int} triggerOutputLeft + * @property {int} triggerOutputRight + */ + Q_PROPERTY(QVector<int> scopeInput READ getScopeInput) Q_PROPERTY(QVector<int> scopeOutputLeft READ getScopeOutputLeft) Q_PROPERTY(QVector<int> scopeOutputRight READ getScopeOutputRight) @@ -40,42 +51,192 @@ public: void reallocateScope(int frames); public slots: + + /**jsdoc + * @function AudioScope.toggle + */ + void toggle() { setVisible(!_isEnabled); } + + /**jsdoc + * @function AudioScope.setVisible + * @param {boolean} visible + */ + void setVisible(bool visible); + + /**jsdoc + * @function AudioScope.getVisible + * @param {boolean} visible + * @returns {boolean} + */ + bool getVisible() const { return _isEnabled; } + /**jsdoc + * @function AudioScope.togglePause + */ + void togglePause() { setPause(!_isPaused); } + + /**jsdoc + * @function AudioScope.setPause + * @param {boolean} + */ + void setPause(bool paused) { _isPaused = paused; emit pauseChanged(); } + + /**jsdoc + * @function AudioScope.getPause + * @returns {boolean} + */ + bool getPause() { return _isPaused; } + /**jsdoc + * @function AudioScope.toggleTrigger + */ + void toggleTrigger() { _autoTrigger = !_autoTrigger; } + + /**jsdoc + * @function AudioScope.getAutoTrigger + * @returns {boolean} + */ + bool getAutoTrigger() { return _autoTrigger; } + + /**jsdoc + * @function AudioScope.setAutoTrigger + * @param {boolean} autoTrigger + */ + void setAutoTrigger(bool autoTrigger) { _isTriggered = false; _autoTrigger = autoTrigger; } + /**jsdoc + * @function AudioScope.setTriggerValues + * @param {number} x + * @param {number} y + */ + void setTriggerValues(int x, int y) { _triggerValues.x = x; _triggerValues.y = y; } + + /**jsdoc + * @function AudioScope.setTriggered + * @param {boolean} triggered + */ + void setTriggered(bool triggered) { _isTriggered = triggered; } + + /**jsdoc + * @function AudioScope.getTriggered + * @returns {boolean} + */ + bool getTriggered() { return _isTriggered; } + /**jsdoc + * @function AudioScope.getFramesPerSecond + * @returns {number} + */ + float getFramesPerSecond(); + + /**jsdoc + * @function AudioScope.getFramesPerScope + * @returns {number} + */ + int getFramesPerScope() { return _framesPerScope; } + /**jsdoc + * @function AudioScope.selectAudioScopeFiveFrames + */ + void selectAudioScopeFiveFrames(); + + /**jsdoc + * @function AudioScope.selectAudioScopeTwentyFrames + */ + void selectAudioScopeTwentyFrames(); + + /**jsdoc + * @function AudioScope.selectAudioScopeFiftyFrames + */ + void selectAudioScopeFiftyFrames(); + /**jsdoc + * @function AudioScope.getScopeInput + * @returns {number} + */ + QVector<int> getScopeInput() { return _scopeInputData; }; + + /**jsdoc + * @function AudioScope.getScopeOutputLeft + * @returns {number} + */ + QVector<int> getScopeOutputLeft() { return _scopeOutputLeftData; }; + + /**jsdoc + * @function AudioScope.getScopeOutputRight + * @returns {number} + */ + QVector<int> getScopeOutputRight() { return _scopeOutputRightData; }; + /**jsdoc + * @function AudioScope.getTriggerInput + * @returns {number} + */ + QVector<int> getTriggerInput() { return _triggerInputData; }; + + /**jsdoc + * @function AudioScope.getTriggerOutputLeft + * @returns {number} + */ + QVector<int> getTriggerOutputLeft() { return _triggerOutputLeftData; }; + + /**jsdoc + * @function AudioScope.getTriggerOutputRight + * @returns {number} + */ + QVector<int> getTriggerOutputRight() { return _triggerOutputRightData; }; + /**jsdoc + * @function AudioScope.setLocalEcho + * @parm {boolean} serverEcho + */ + void setLocalEcho(bool serverEcho); + + /**jsdoc + * @function AudioScope.setServerEcho + * @parm {boolean} serverEcho + */ + void setServerEcho(bool serverEcho); signals: + + /**jsdoc + * @function AudioScope.pauseChanged + * @returns {Signal} + */ + void pauseChanged(); + + /**jsdoc + * @function AudioScope.triggered + * @returns {Signal} + */ + void triggered(); protected: diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index fc93bbbfe3..192f183f30 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -27,12 +27,86 @@ #include "AvatarMotionState.h" #include "MyAvatar.h" +/**jsdoc + * The AvatarManager API has properties and methods which manage Avatars within the same domain. + * @namespace AvatarManager + */ class AvatarManager : public AvatarHashMap { Q_OBJECT SINGLETON_DEPENDENCY public: + + // JSDOCS Copied over from AvatarHashMap (see AvatarHashMap.h for reason) + + /**jsdoc + * @function AvatarManager.getAvatarIdentifiers + */ + + /**jsdoc + * @function AvatarManager.getAvatarsInRange + * @param {Vec3} position + * @param {float} rangeMeters + * @returns {string[]} + */ + + /**jsdoc + * @function AvatarManager.getAvatar + * @param {string} avatarID + * @returns {ScriptAvatarData} + */ + + /**jsdoc + * @function AvatarManager.avatarAddedEvent + * @param {string} sessionUUID + * @returns {Signal} + */ + + /**jsdoc + * @function AvatarManager.avatarRemovedEvent + * @param {string} sessionUUID + * @returns {Signal} + */ + + /**jsdoc + * @function AvatarManager.avatarSessionChangedEvent + * @param {string} sessionUUID + * @param {string} oldUUID + * @returns {Signal} + */ + + /**jsdoc + * @function AvatarManager.isAvatarInRange + * @param {string} position + * @param {string} range + * @returns {boolean} + */ + + /**jsdoc + * @function AvatarManager.sessionUUIDChanged + * @param {string} sessionUUID + * @param {string} oldUUID + */ + + /**jsdoc + * @function AvatarManager.processAvatarDataPacket + * @param {} message + * @param {} sendingNode + */ + + /**jsdoc + * @function AvatarManager.processAvatarIdentityPacket + * @param {} message + * @param {} sendingNode + */ + + /**jsdoc + * @function AvatarManager.processKillAvatar + * @param {} message + * @param {} sendingNode + */ + /// Registers the script types associated with the avatar manager. static void registerMetaTypes(QScriptEngine* engine); @@ -43,6 +117,12 @@ public: std::shared_ptr<MyAvatar> getMyAvatar() { return _myAvatar; } glm::vec3 getMyAvatarPosition() const { return _myAvatar->getWorldPosition(); } + /**jsdoc + * @function AvatarManager.getAvatar + * @param {string} avatarID + * @returns {} + */ + // Null/Default-constructed QUuids will return MyAvatar Q_INVOKABLE virtual ScriptAvatarData* getAvatar(QUuid avatarID) override { return new ScriptAvatar(getAvatarBySessionID(avatarID)); } @@ -66,24 +146,82 @@ public: void handleChangedMotionStates(const VectorOfMotionStates& motionStates); void handleCollisionEvents(const CollisionEvents& collisionEvents); + /**jsdoc + * @function AvatarManager.getAvatarDataRate + * @param {string} sessionID + * @param {string} [rateName=""] + * @returns {number} + */ + Q_INVOKABLE float getAvatarDataRate(const QUuid& sessionID, const QString& rateName = QString("")) const; + + /**jsdoc + * @function AvatarManager.getAvatarUpdateRate + * @param {string} sessionID + * @param {string} [rateName=""] + * @returns {number} + */ + Q_INVOKABLE float getAvatarUpdateRate(const QUuid& sessionID, const QString& rateName = QString("")) const; + + /**jsdoc + * @function AvatarManager.getAvatarSimulationRate + * @param {string} sessionID + * @param {string} [rateName=""] + * @returns {number} + */ + Q_INVOKABLE float getAvatarSimulationRate(const QUuid& sessionID, const QString& rateName = QString("")) const; + /**jsdoc + * @function AvatarManager.findRayIntersection + * @param {PickRay} ray + * @param {} avatarIdsToInclude + * @param {} avatarIdsToDiscard + * @returns {RayToAvatarIntersectionResult} + */ + Q_INVOKABLE RayToAvatarIntersectionResult findRayIntersection(const PickRay& ray, const QScriptValue& avatarIdsToInclude = QScriptValue(), const QScriptValue& avatarIdsToDiscard = QScriptValue()); + /**jsdoc + * @function AvatarManager.findRayIntersectionVector + * @param {PickRay} ray + * @param {} avatarsToInclude + * @param {} avatarIdsToDiscard + * @returns {RayToAvatarIntersectionResult} + */ + Q_INVOKABLE RayToAvatarIntersectionResult findRayIntersectionVector(const PickRay& ray, const QVector<EntityItemID>& avatarsToInclude, const QVector<EntityItemID>& avatarsToDiscard); // TODO: remove this HACK once we settle on optimal default sort coefficients + /**jsdoc + * @function AvatarManager.getAvatarSortCoefficient + * @param {string} name + * @returns {number} + */ + Q_INVOKABLE float getAvatarSortCoefficient(const QString& name); + + /**jsdoc + * @function AvatarManager.setAvatarSortCoefficient + * @param {string} name + * @param {string} value + */ + Q_INVOKABLE void setAvatarSortCoefficient(const QString& name, const QScriptValue& value); float getMyAvatarSendRate() const { return _myAvatarSendRate.rate(); } public slots: + + /**jsdoc + * @function AvatarManager.updateAvatarRenderStatus + * @param {boolean} shouldRenderAvatars + */ + void updateAvatarRenderStatus(bool shouldRenderAvatars); private: diff --git a/interface/src/devices/DdeFaceTracker.h b/interface/src/devices/DdeFaceTracker.h index dfb9c6d638..37ebf9159d 100644 --- a/interface/src/devices/DdeFaceTracker.h +++ b/interface/src/devices/DdeFaceTracker.h @@ -26,6 +26,11 @@ #include <trackers/FaceTracker.h> +/**jsdoc + * The FaceTracker API helps manage facial tracking hardware. + * @namespace FaceTracker + */ + class DdeFaceTracker : public FaceTracker, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY @@ -57,7 +62,18 @@ public: void setEyeClosingThreshold(float eyeClosingThreshold); public slots: + + /**jsdoc + * @function FaceTracker.setEnabled + * @param {boolean} enabled + */ + void setEnabled(bool enabled) override; + + /**jsdoc + * @function FaceTracker.calibrate + */ + void calibrate(); private slots: diff --git a/interface/src/scripting/AccountServicesScriptingInterface.h b/interface/src/scripting/AccountServicesScriptingInterface.h index cfa51697af..65c083b8e4 100644 --- a/interface/src/scripting/AccountServicesScriptingInterface.h +++ b/interface/src/scripting/AccountServicesScriptingInterface.h @@ -34,7 +34,17 @@ void DownloadInfoResultFromScriptValue(const QScriptValue& object, DownloadInfoR class AccountServicesScriptingInterface : public QObject { Q_OBJECT - + + /**jsdoc + * The AccountServices API contains helper functions related to user connectivity + * + * @namespace AccountServices + * @property {string} username + * @property {boolean} loggedIn + * @property {string} findableBy + * @property {string} metaverseServerURL + */ + Q_PROPERTY(QString username READ getUsername NOTIFY myUsernameChanged) Q_PROPERTY(bool loggedIn READ loggedIn NOTIFY loggedInChanged) Q_PROPERTY(QString findableBy READ getFindableBy WRITE setFindableBy NOTIFY findableByChanged) @@ -48,11 +58,38 @@ public: QUrl getMetaverseServerURL() { return DependencyManager::get<AccountManager>()->getMetaverseServerURL(); } public slots: + + /**jsdoc + * @function AccountServices.getDownloadInfo + * @returns {DownloadInfoResult} + */ + DownloadInfoResult getDownloadInfo(); + + /**jsdoc + * @function AccountServices.updateDownloadInfo + */ + void updateDownloadInfo(); + /**jsdoc + * @function AccountServices.isLoggedIn + * @returns {boolean} + */ + bool isLoggedIn(); + + /**jsdoc + * @function AccountServices.checkAndSignalForAccessToken + * @returns {boolean} + */ + bool checkAndSignalForAccessToken(); + + /**jsdoc + * @function AccountServices.logOut + */ + void logOut(); private slots: @@ -66,11 +103,52 @@ private slots: void onUsernameChanged(const QString& username); signals: + + /**jsdoc + * @function AccountServices.connected + * @returns {Signal} + */ + void connected(); + + /**jsdoc + * @function AccountServices.disconnected + * @params {string} reason + * @returns {Signal} + */ + void disconnected(const QString& reason); + + /**jsdoc + * @function AccountServices.myUsernameChanged + * @params {string} username + * @returns {Signal} + */ + void myUsernameChanged(const QString& username); + + /**jsdoc + * @function AccountServices.downloadInfoChanged + * @params {} info + * @returns {Signal} + */ + void downloadInfoChanged(DownloadInfoResult info); + + /**jsdoc + * @function AccountServices.findableByChanged + * @params {string} discoverabilityMode + * @returns {Signal} + */ + void findableByChanged(const QString& discoverabilityMode); + + /**jsdoc + * @function AccountServices.loggedInChanged + * @params {boolean} loggedIn + * @returns {Signal} + */ + void loggedInChanged(bool loggedIn); private: diff --git a/interface/src/scripting/Audio.h b/interface/src/scripting/Audio.h index b4e63b80c5..b7cd3067be 100644 --- a/interface/src/scripting/Audio.h +++ b/interface/src/scripting/Audio.h @@ -25,6 +25,18 @@ class Audio : public AudioScriptingInterface, protected ReadWriteLockable { Q_OBJECT SINGLETON_DEPENDENCY + /**jsdoc + * The Audio API features tools to help control audio contexts and settings. + * + * @namespace Audio + * @property {boolean} muted + * @property {boolean} noiseReduction + * @property {boolean} inputVolume + * @property {boolean} inputLevel + * @property {string} context + * @property {} devices + */ + Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) Q_PROPERTY(bool noiseReduction READ noiseReductionEnabled WRITE enableNoiseReduction NOTIFY noiseReductionChanged) Q_PROPERTY(float inputVolume READ getInputVolume WRITE setInputVolume NOTIFY inputVolumeChanged) @@ -49,24 +61,111 @@ public: void showMicMeter(bool show); + /**jsdoc + * @function Audio.setInputDevice + * @param {} device + * @param {boolean} isHMD + */ + Q_INVOKABLE void setInputDevice(const QAudioDeviceInfo& device, bool isHMD); + + /**jsdoc + * @function Audio.setOutputDevice + * @param {} device + * @param {boolean} isHMD + */ + Q_INVOKABLE void setOutputDevice(const QAudioDeviceInfo& device, bool isHMD); + + /**jsdoc + * @function Audio.setReverb + * @param {boolean} enable + */ + Q_INVOKABLE void setReverb(bool enable); + + /**jsdoc + * @function Audio.setReverbOptions + * @param {} options + */ + Q_INVOKABLE void setReverbOptions(const AudioEffectOptions* options); + + /**jsdoc + * @function Audio.setReverbOptions + * @param {string} filename + */ Q_INVOKABLE bool startRecording(const QString& filename); + + /**jsdoc + * @function Audio.stopRecording + */ + Q_INVOKABLE void stopRecording(); + + /**jsdoc + * @function Audio.getRecording + */ + Q_INVOKABLE bool getRecording(); signals: + + /**jsdoc + * @function Audio.nop + * @returns {Signal} + */ + void nop(); + + /**jsdoc + * @function Audio.nop + * @param {bool} isMuted + * @returns {Signal} + */ + void mutedChanged(bool isMuted); + + /**jsdoc + * @function Audio.noiseReductionChanged + * @param {bool} isEnabled + * @returns {Signal} + */ + void noiseReductionChanged(bool isEnabled); + + /**jsdoc + * @function Audio.inputVolumeChanged + * @param {float} volume + * @returns {Signal} + */ + void inputVolumeChanged(float volume); + + /**jsdoc + * @function Audio.inputLevelChanged + * @param {float} level + * @returns {Signal} + */ + void inputLevelChanged(float level); + + /**jsdoc + * @function Audio.contextChanged + * @param {string} context + * @returns {Signal} + */ + void contextChanged(const QString& context); public slots: + + /**jsdoc + * @function Audio.onContextChanged + * @returns {Signal} + */ + void onContextChanged(); private slots: diff --git a/interface/src/scripting/GooglePolyScriptingInterface.h b/interface/src/scripting/GooglePolyScriptingInterface.h index fdd3597bec..55d2236ec1 100644 --- a/interface/src/scripting/GooglePolyScriptingInterface.h +++ b/interface/src/scripting/GooglePolyScriptingInterface.h @@ -15,6 +15,11 @@ #include <QObject> #include <DependencyManager.h> +/**jsdoc + * The GooglePoly API allows you to interact with Google Poly models direct from inside High Fidelity. + * @namespace GooglePoly + */ + class GooglePolyScriptingInterface : public QObject, public Dependency { Q_OBJECT @@ -22,15 +27,84 @@ public: GooglePolyScriptingInterface(); public slots: + + /**jsdoc + * @function GooglePoly.setAPIKey + * @param {string} key + */ + void setAPIKey(const QString& key); + /**jsdoc + * @function GooglePoly.getAssetList + * @param {string} keyword + * @param {string} category + * @param {string} format + * @returns {string} + */ + QString getAssetList(const QString& keyword, const QString& category, const QString& format); + + /**jsdoc + * @function GooglePoly.getFBX + * @param {string} keyword + * @param {string} category + * @returns {string} + */ + QString getFBX(const QString& keyword, const QString& category); + + /**jsdoc + * @function GooglePoly.getOBJ + * @param {string} keyword + * @param {string} category + * @returns {string} + */ + QString getOBJ(const QString& keyword, const QString& category); - QString getBlocks(const QString& keyword, const QString& categoryy); + + /**jsdoc + * @function GooglePoly.getBlocks + * @param {string} keyword + * @param {string} category + * @returns {string} + */ + + QString getBlocks(const QString& keyword, const QString& category); + + /**jsdoc + * @function GooglePoly.getGLTF + * @param {string} keyword + * @param {string} category + * @returns {string} + */ + QString getGLTF(const QString& keyword, const QString& category); + + /**jsdoc + * @function GooglePoly.getGLTF2 + * @param {string} keyword + * @param {string} category + * @returns {string} + */ + QString getGLTF2(const QString& keyword, const QString& category); + + /**jsdoc + * @function GooglePoly.getTilt + * @param {string} keyword + * @param {string} category + * @returns {string} + */ + QString getTilt(const QString& keyword, const QString& category); + + /**jsdoc + * @function GooglePoly.getModelInfo + * @param {string} input + * @returns {string} + */ + QString getModelInfo(const QString& input); private: diff --git a/interface/src/ui/AvatarInputs.h b/interface/src/ui/AvatarInputs.h index 47f520a639..c34542735e 100644 --- a/interface/src/ui/AvatarInputs.h +++ b/interface/src/ui/AvatarInputs.h @@ -23,6 +23,15 @@ class AvatarInputs : public QObject { Q_OBJECT HIFI_QML_DECL + /**jsdoc + * API to help manage your Avatar's input + * @namespace AvatarInputs + * @param {boolean} cameraEnabled + * @param {boolean} cameraMuted + * @param {boolean} isHMD + * @param {boolean} showAudioTools + */ + AI_PROPERTY(bool, cameraEnabled, false) AI_PROPERTY(bool, cameraMuted, false) AI_PROPERTY(bool, isHMD, false) @@ -31,22 +40,70 @@ class AvatarInputs : public QObject { public: static AvatarInputs* getInstance(); + + /**jsdoc + * @function AvatarInputs.loudnessToAudioLevel + * @param {number} loudness + * @returns {number} + */ + Q_INVOKABLE float loudnessToAudioLevel(float loudness); AvatarInputs(QObject* parent = nullptr); void update(); bool showAudioTools() const { return _showAudioTools; } public slots: + + /**jsdoc + * @function AvatarInputs.setShowAudioTools + * @param {boolean} showAudioTools + */ + void setShowAudioTools(bool showAudioTools); signals: + + /**jsdoc + * @function AvatarInputs.cameraEnabledChanged + * @returns {Signal} + */ + void cameraEnabledChanged(); + + /**jsdoc + * @function AvatarInputs.cameraMutedChanged + * @returns {Signal} + */ + void cameraMutedChanged(); + + /**jsdoc + * @function AvatarInputs.isHMDChanged + * @returns {Signal} + */ + void isHMDChanged(); + + /**jsdoc + * @function AvatarInputs.showAudioToolsChanged + * @param {boolean} show + * @returns {Signal} + */ + void showAudioToolsChanged(bool show); protected: + + /**jsdoc + * @function AvatarInputs.resetSensors + */ + Q_INVOKABLE void resetSensors(); + + /**jsdoc + * @function AvatarInputs.toggleCameraMute + */ + Q_INVOKABLE void toggleCameraMute(); private: diff --git a/libraries/animation/src/AnimationCache.h b/libraries/animation/src/AnimationCache.h index 490bb7dcd8..d93c69e6fb 100644 --- a/libraries/animation/src/AnimationCache.h +++ b/libraries/animation/src/AnimationCache.h @@ -20,6 +20,11 @@ #include <FBXReader.h> #include <ResourceCache.h> +/**jsdoc + * API to manage Animation Cache resources + * @namespace AnimationCache + */ + class Animation; typedef QSharedPointer<Animation> AnimationPointer; @@ -29,19 +34,80 @@ class AnimationCache : public ResourceCache, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY +public: + // Copied over from ResourceCache (see ResourceCache.h for reason) + /**jsdoc * @namespace AnimationCache - * @augments ResourceCache + * @property numTotal {number} total number of total resources + * @property numCached {number} total number of cached resource + * @property sizeTotal {number} size in bytes of all resources + * @property sizeCached {number} size in bytes of all cached resources */ -public: + /**jsdoc + * Returns the total number of resources + * @function AnimationCache.getNumTotalResources + * @returns {number} + */ + + /**jsdoc + * Returns the total size in bytes of all resources + * @function AnimationCache.getSizeTotalResources + * @returns {number} + */ + + /**jsdoc + * Returns the total number of cached resources + * @function AnimationCache.getNumCachedResources + * @returns {number} + */ + + /**jsdoc + * Returns the total size in bytes of cached resources + * @function AnimationCache.getSizeCachedResources + * @returns {number} + */ + + /**jsdoc + * Returns list of all resource urls + * @function AnimationCache.getResourceList + * @returns {string[]} + */ + + /**jsdoc + * Asynchronously loads a resource from the spedified URL and returns it. + * @param url {string} url of resource to load + * @param fallback {string} fallback URL if load of the desired url fails + * @function AnimationCache.getResource + * @returns {Resource} + */ + + /**jsdoc + * Prefetches a resource. + * @param url {string} url of resource to load + * @function AnimationCache.prefetch + * @returns {Resource} + */ + + /**jsdoc + * @param {number} deltaSize + * @function AnimationCache.updateTotalSize + * @returns {Resource} + */ + + /**jsdoc + * @function AnimationCache.dirty + * @returns {Signal} + */ /**jsdoc * Returns animation resource for particular animation * @function AnimationCache.getAnimation * @param url {string} url to load - * @return {Resource} animation + * @returns {Resource} animation */ + Q_INVOKABLE AnimationPointer getAnimation(const QString& url) { return getAnimation(QUrl(url)); } Q_INVOKABLE AnimationPointer getAnimation(const QUrl& url); diff --git a/libraries/audio-client/src/AudioIOStats.h b/libraries/audio-client/src/AudioIOStats.h index da668da1ac..dd97f1fe9e 100644 --- a/libraries/audio-client/src/AudioIOStats.h +++ b/libraries/audio-client/src/AudioIOStats.h @@ -38,6 +38,49 @@ class MixedProcessedAudioStream; class AudioStreamStatsInterface : public QObject { Q_OBJECT + + /**jsdoc + * Audio stats from the Audio Mixer + * @namespace AudioStats.mixerStream + * @param {number} lossRate + * @param {number} lossCount + * @param {number} lossRateWindow + * @param {number} lossCountWindow + * @param {number} framesDesired + * @param {number} framesAvailable + * @param {number} framesAvailableAvg + * @param {number} unplayedMsMax + * @param {number} starveCount + * @param {number} lastStarveDurationCount + * @param {number} dropCount + * @param {number} overflowCount + * @param {number} timegapMsMax + * @param {number} timegapMsAvg + * @param {number} timegapMsMaxWindow + * @param {number} timegapMsAvgWindow + */ + + /**jsdoc + * Audio stats from the Client Mixer + * @namespace AudioStats.clientMixer + * @param {number} lossRate + * @param {number} lossCount + * @param {number} lossRateWindow + * @param {number} lossCountWindow + * @param {number} framesDesired + * @param {number} framesAvailable + * @param {number} framesAvailableAvg + * @param {number} unplayedMsMax + * @param {number} starveCount + * @param {number} lastStarveDurationCount + * @param {number} dropCount + * @param {number} overflowCount + * @param {number} timegapMsMax + * @param {number} timegapMsAvg + * @param {number} timegapMsMaxWindow + * @param {number} timegapMsAvgWindow + */ + AUDIO_PROPERTY(float, lossRate) AUDIO_PROPERTY(float, lossCount) AUDIO_PROPERTY(float, lossRateWindow) @@ -68,6 +111,20 @@ private: class AudioStatsInterface : public QObject { Q_OBJECT + + /**jsdoc + * Audio stats from the client + * @namespace AudioStats + * @param {number} pingMs + * @param {number} inputReadMsMax + * @param {number} inputUnplayedMsMax + * @param {number} outputUnplayedMsMax + * @param {number} sentTimegapMsMax + * @param {number} sentTimegapMsAvg + * @param {number} sentTimegapMsMaxWindow + * @param {number} sentTimegapMsAvgWindow + */ + AUDIO_PROPERTY(float, pingMs); AUDIO_PROPERTY(float, inputReadMsMax); @@ -97,8 +154,26 @@ public: void updateInjectorStreams(const QHash<QUuid, AudioStreamStats>& stats); signals: + + /**jsdoc + * @function AudioStats.mixerStreamChanged + * @returns {Signal} + */ + void mixerStreamChanged(); + + /**jsdoc + * @function AudioStats.clientStreamChanged + * @returns {Signal} + */ + void clientStreamChanged(); + + /**jsdoc + * @function AudioStats.injectorStreamsChanged + * @returns {Signal} + */ + void injectorStreamsChanged(); private: diff --git a/libraries/audio/src/SoundCache.h b/libraries/audio/src/SoundCache.h index bc4ddf303f..bdb9e106d0 100644 --- a/libraries/audio/src/SoundCache.h +++ b/libraries/audio/src/SoundCache.h @@ -16,12 +16,97 @@ #include "Sound.h" +/**jsdoc + * API to manage Sound Cache resources + * @namespace SoundCache + */ + + /// Scriptable interface for sound loading. class SoundCache : public ResourceCache, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY public: + // Copied over from ResourceCache (see ResourceCache.h for reason) + + /**jsdoc + * @namespace SoundCache + * @property numTotal {number} total number of total resources + * @property numCached {number} total number of cached resource + * @property sizeTotal {number} size in bytes of all resources + * @property sizeCached {number} size in bytes of all cached resources + */ + + /**jsdoc + * Returns the total number of resources + * @function SoundCache.getNumTotalResources + * @returns {number} + */ + + /**jsdoc + * Returns the total size in bytes of all resources + * @function SoundCache.getSizeTotalResources + * @returns {number} + */ + + /**jsdoc + * Returns the total number of cached resources + * @function SoundCache.getNumCachedResources + * @returns {number} + */ + + /**jsdoc + * Returns the total size in bytes of cached resources + * @function SoundCache.getSizeCachedResources + * @returns {number} + */ + + /**jsdoc + * Returns list of all resource urls + * @function SoundCache.getResourceList + * @returns {string[]} + */ + + /**jsdoc + * Returns animation resource for particular animation + * @function SoundCache.getAnimation + * @param url {string} url to load + * @returns {Resource} animation + */ + + /**jsdoc + * Asynchronously loads a resource from the spedified URL and returns it. + * @param url {string} url of resource to load + * @param fallback {string} fallback URL if load of the desired url fails + * @function SoundCache.getResource + * @returns {Resource} + */ + + /**jsdoc + * Prefetches a resource. + * @param url {string} url of resource to load + * @function SoundCache.prefetch + * @returns {Resource} + */ + + /**jsdoc + * @param {number} deltaSize + * @function SoundCache.updateTotalSize + * @returns {Resource} + */ + + /**jsdoc + * @function SoundCache.dirty + * @returns {Signal} + */ + + /**jsdoc + * @function SoundCache.getSound + * @param {string} url + * @returns {} + */ + Q_INVOKABLE SharedSoundPointer getSound(const QUrl& url); protected: virtual QSharedPointer<Resource> createResource(const QUrl& url, const QSharedPointer<Resource>& fallback, diff --git a/libraries/avatars/src/AvatarHashMap.h b/libraries/avatars/src/AvatarHashMap.h index e4a485028f..77e0b1e5c7 100644 --- a/libraries/avatars/src/AvatarHashMap.h +++ b/libraries/avatars/src/AvatarHashMap.h @@ -9,6 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // + #ifndef hifi_AvatarHashMap_h #define hifi_AvatarHashMap_h @@ -29,6 +30,15 @@ #include "AvatarData.h" +/**jsdoc + * The AvatarHashMap API deals with functionality related to Avatar information and connectivity + * @namespace AvatarHashMap + */ + +// JSDoc 3.5.5 doesn't augment @property definitions. +// These functions are being copied into Avatar classes which inherit the AvatarHashMap + + class AvatarHashMap : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY @@ -39,9 +49,28 @@ public: int size() { return _avatarHash.size(); } // Currently, your own avatar will be included as the null avatar id. + + /**jsdoc + * @function AvatarHashMap.getAvatarIdentifiers + */ + Q_INVOKABLE QVector<QUuid> getAvatarIdentifiers(); + + /**jsdoc + * @function AvatarHashMap.getAvatarsInRange + * @param {Vec3} position + * @param {float} rangeMeters + * @returns {string[]} + */ + Q_INVOKABLE QVector<QUuid> getAvatarsInRange(const glm::vec3& position, float rangeMeters) const; + /**jsdoc + * @function AvatarHashMap.getAvatar + * @param {string} avatarID + * @returns {ScriptAvatarData} + */ + // Null/Default-constructed QUuids will return MyAvatar Q_INVOKABLE virtual ScriptAvatarData* getAvatar(QUuid avatarID) { return new ScriptAvatarData(getAvatarBySessionID(avatarID)); } @@ -49,18 +78,75 @@ public: int numberOfAvatarsInRange(const glm::vec3& position, float rangeMeters); signals: + + /**jsdoc + * @function AvatarHashMap.avatarAddedEvent + * @param {string} sessionUUID + * @returns {Signal} + */ + void avatarAddedEvent(const QUuid& sessionUUID); + + /**jsdoc + * @function AvatarHashMap.avatarRemovedEvent + * @param {string} sessionUUID + * @returns {Signal} + */ + void avatarRemovedEvent(const QUuid& sessionUUID); + + /**jsdoc + * @function AvatarHashMap.avatarSessionChangedEvent + * @param {string} sessionUUID + * @param {string} oldUUID + * @returns {Signal} + */ + void avatarSessionChangedEvent(const QUuid& sessionUUID,const QUuid& oldUUID); public slots: + + /**jsdoc + * @function AvatarHashMap.isAvatarInRange + * @param {string} position + * @param {string} range + * @returns {boolean} + */ + bool isAvatarInRange(const glm::vec3 & position, const float range); protected slots: + + /**jsdoc + * @function AvatarHashMap.sessionUUIDChanged + * @param {string} sessionUUID + * @param {string} oldUUID + */ + void sessionUUIDChanged(const QUuid& sessionUUID, const QUuid& oldUUID); + /**jsdoc + * @function AvatarHashMap.processAvatarDataPacket + * @param {} message + * @param {} sendingNode + */ + void processAvatarDataPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer sendingNode); + + /**jsdoc + * @function AvatarHashMap.processAvatarIdentityPacket + * @param {} message + * @param {} sendingNode + */ + void processAvatarIdentityPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer sendingNode); + + /**jsdoc + * @function AvatarHashMap.processKillAvatar + * @param {} message + * @param {} sendingNode + */ + void processKillAvatar(QSharedPointer<ReceivedMessage> message, SharedNodePointer sendingNode); protected: diff --git a/libraries/model-networking/src/model-networking/ModelCache.h b/libraries/model-networking/src/model-networking/ModelCache.h index 4dfa8b17ea..369d972a7d 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.h +++ b/libraries/model-networking/src/model-networking/ModelCache.h @@ -21,6 +21,11 @@ #include "FBXReader.h" #include "TextureCache.h" +/**jsdoc +* API to manage Model Cache resources +* @namespace ModelCache +*/ + // Alias instead of derive to avoid copying class NetworkTexture; @@ -136,7 +141,73 @@ class ModelCache : public ResourceCache, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY + public: + + /**jsdoc + * @namespace ModelCache + * @property numTotal {number} total number of total resources + * @property numCached {number} total number of cached resource + * @property sizeTotal {number} size in bytes of all resources + * @property sizeCached {number} size in bytes of all cached resources + */ + + /**jsdoc + * Returns the total number of resources + * @function ModelCache.getNumTotalResources + * @returns {number} + */ + + /**jsdoc + * Returns the total size in bytes of all resources + * @function ModelCache.getSizeTotalResources + * @returns {number} + */ + + /**jsdoc + * Returns the total number of cached resources + * @function ModelCache.getNumCachedResources + * @returns {number} + */ + + /**jsdoc + * Returns the total size in bytes of cached resources + * @function ModelCache.getSizeCachedResources + * @returns {number} + */ + + /**jsdoc + * Returns list of all resource urls + * @function ModelCache.getResourceList + * @returns {string[]} + */ + + /**jsdoc + * Asynchronously loads a resource from the spedified URL and returns it. + * @param url {string} url of resource to load + * @param fallback {string} fallback URL if load of the desired url fails + * @function ModelCache.getResource + * @returns {Resource} + */ + + /**jsdoc + * Prefetches a resource. + * @param url {string} url of resource to load + * @function ModelCache.prefetch + * @returns {Resource} + */ + + /**jsdoc + * @param {number} deltaSize + * @function ModelCache.updateTotalSize + * @returns {Resource} + */ + + /**jsdoc + * @function ModelCache.dirty + * @returns {Signal} + */ + GeometryResource::Pointer getGeometryResource(const QUrl& url, const QVariantHash& mapping = QVariantHash(), const QUrl& textureBaseUrl = QUrl()); diff --git a/libraries/model-networking/src/model-networking/TextureCache.h b/libraries/model-networking/src/model-networking/TextureCache.h index b2740e2ca1..174a25fee2 100644 --- a/libraries/model-networking/src/model-networking/TextureCache.h +++ b/libraries/model-networking/src/model-networking/TextureCache.h @@ -137,12 +137,90 @@ using NetworkTexturePointer = QSharedPointer<NetworkTexture>; Q_DECLARE_METATYPE(QWeakPointer<NetworkTexture>) +/**jsdoc + * API to manage Texture Cache resources + * @namespace TextureCache + */ + /// Stores cached textures, including render-to-texture targets. class TextureCache : public ResourceCache, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY public: + // Copied over from ResourceCache (see ResourceCache.h for reason) + + /**jsdoc + * @namespace TextureCache + * @property numTotal {number} total number of total resources + * @property numCached {number} total number of cached resource + * @property sizeTotal {number} size in bytes of all resources + * @property sizeCached {number} size in bytes of all cached resources + */ + + /**jsdoc + * Returns the total number of resources + * @function TextureCache.getNumTotalResources + * @returns {number} + */ + + /**jsdoc + * Returns the total size in bytes of all resources + * @function TextureCache.getSizeTotalResources + * @returns {number} + */ + + /**jsdoc + * Returns the total number of cached resources + * @function TextureCache.getNumCachedResources + * @returns {number} + */ + + /**jsdoc + * Returns the total size in bytes of cached resources + * @function TextureCache.getSizeCachedResources + * @returns {number} + */ + + /**jsdoc + * Returns list of all resource urls + * @function TextureCache.getResourceList + * @returns {string[]} + */ + + /**jsdoc + * Returns animation resource for particular animation + * @function TextureCache.getAnimation + * @param url {string} url to load + * @returns {Resource} animation + */ + + /**jsdoc + * Asynchronously loads a resource from the spedified URL and returns it. + * @param url {string} url of resource to load + * @param fallback {string} fallback URL if load of the desired url fails + * @function TextureCache.getResource + * @returns {Resource} + */ + + /**jsdoc + * Prefetches a resource. + * @param url {string} url of resource to load + * @function TextureCache.prefetch + * @returns {Resource} + */ + + /**jsdoc + * @param {number} deltaSize + * @function TextureCache.updateTotalSize + * @returns {Resource} + */ + + /**jsdoc + * @function TextureCache.dirty + * @returns {Signal} + */ + /// Returns the ID of the permutation/normal texture used for Perlin noise shader programs. This texture /// has two lines: the first, a set of random numbers in [0, 255] to be used as permutation offsets, and /// the second, a set of random unit vectors to be used as noise gradients. @@ -180,6 +258,10 @@ public: static const int DEFAULT_SPECTATOR_CAM_HEIGHT { 1024 }; signals: + /**jsdoc + * @function TextureCache.spectatorCameraFramebufferReset + * @returns {Signal} + */ void spectatorCameraFramebufferReset(); protected: diff --git a/libraries/networking/src/ResourceCache.h b/libraries/networking/src/ResourceCache.h index 17531f45b0..ddea7c51cf 100644 --- a/libraries/networking/src/ResourceCache.h +++ b/libraries/networking/src/ResourceCache.h @@ -1,4 +1,4 @@ -// + // // ResourceCache.h // libraries/shared/src // @@ -85,9 +85,7 @@ private: /// Wrapper to expose resources to JS/QML class ScriptableResource : public QObject { - Q_OBJECT - Q_PROPERTY(QUrl url READ getURL) - Q_PROPERTY(int state READ getState NOTIFY stateChanged) + /**jsdoc * @constructor Resource @@ -95,6 +93,12 @@ class ScriptableResource : public QObject { * @property state {Resource.State} current loading state */ + Q_OBJECT + Q_PROPERTY(QUrl url READ getURL) + Q_PROPERTY(int state READ getState NOTIFY stateChanged) + + + public: /**jsdoc @@ -181,11 +185,8 @@ Q_DECLARE_METATYPE(ScriptableResource*); /// Base class for resource caches. class ResourceCache : public QObject { Q_OBJECT - Q_PROPERTY(size_t numTotal READ getNumTotalResources NOTIFY dirty) - Q_PROPERTY(size_t numCached READ getNumCachedResources NOTIFY dirty) - Q_PROPERTY(size_t sizeTotal READ getSizeTotalResources NOTIFY dirty) - Q_PROPERTY(size_t sizeCached READ getSizeCachedResources NOTIFY dirty) - + // JSDoc 3.5.5 doesn't augment @property definitions. + // These functions are being copied into the different exposed cache classes /**jsdoc * @namespace ResourceCache * @property numTotal {number} total number of total resources @@ -193,6 +194,10 @@ class ResourceCache : public QObject { * @property sizeTotal {number} size in bytes of all resources * @property sizeCached {number} size in bytes of all cached resources */ + Q_PROPERTY(size_t numTotal READ getNumTotalResources NOTIFY dirty) + Q_PROPERTY(size_t numCached READ getNumCachedResources NOTIFY dirty) + Q_PROPERTY(size_t sizeTotal READ getSizeTotalResources NOTIFY dirty) + Q_PROPERTY(size_t sizeCached READ getSizeCachedResources NOTIFY dirty) public: /**jsdoc diff --git a/libraries/script-engine/src/AssetScriptingInterface.h b/libraries/script-engine/src/AssetScriptingInterface.h index fdce173dfe..c01550e1fc 100644 --- a/libraries/script-engine/src/AssetScriptingInterface.h +++ b/libraries/script-engine/src/AssetScriptingInterface.h @@ -25,6 +25,7 @@ #include <QtNetwork/QNetworkDiskCache> /**jsdoc + * The Assets API allows you to communicate with the Asset Browser * @namespace Assets */ class AssetScriptingInterface : public BaseAssetScriptingInterface, QScriptable { @@ -53,8 +54,7 @@ public: /**jsdoc * Download data from the connected domain's asset server. * @function Assets.downloadData - * @static - * @param url {string} url of asset to download, must be atp scheme url. + * @param url {string} URL of asset to download, must be ATP scheme URL. * @param callback {Assets~downloadDataCallback} */ @@ -69,7 +69,6 @@ public: /**jsdoc * Sets up a path to hash mapping within the connected domain's asset server * @function Assets.setMapping - * @static * @param path {string} * @param hash {string} * @param callback {Assets~setMappingCallback} @@ -80,12 +79,12 @@ public: * @callback Assets~setMappingCallback * @param {string} error */ + Q_INVOKABLE void setMapping(QString path, QString hash, QScriptValue callback); /**jsdoc * Look up a path to hash mapping within the connected domain's asset server * @function Assets.getMapping - * @static * @param path {string} * @param callback {Assets~getMappingCallback} */ @@ -93,11 +92,26 @@ public: /**jsdoc * Called when getMapping is complete. * @callback Assets~getMappingCallback - * @param error {string} error description if the path could not be resolved; otherwise a null value. * @param assetID {string} hash value if found, else an empty string + * @param error {string} error description if the path could not be resolved; otherwise a null value. */ + + /**jsdoc + * Called when getMapping is complete. + * @callback Assets~getMappingCallback + * @param assetID {string} hash value if found, else an empty string + * @param error {string} error description if the path could not be resolved; otherwise a null value. + */ + Q_INVOKABLE void getMapping(QString path, QScriptValue callback); + /**jsdoc + * @function Assets.setBakingEnabled + * @param path {string} + * @param enabled {boolean} + * @param callback {} + */ + Q_INVOKABLE void setBakingEnabled(QString path, bool enabled, QScriptValue callback); #if (PR_BUILD || DEV_BUILD) @@ -110,31 +124,35 @@ public: * @param {URL|Assets.GetOptions} options An atp: style URL, hash, or relative mapped path; or an {@link Assets.GetOptions} object with request parameters * @param {Assets~getAssetCallback} scope[callback] A scope callback function to receive (error, results) values */ - /**jsdoc - * A set of properties that can be passed to {@link Assets.getAsset}. - * @typedef {Object} Assets.GetOptions - * @property {URL} [url] an "atp:" style URL, hash, or relative mapped path to fetch - * @property {string} [responseType=text] the desired reponse type (text | arraybuffer | json) - * @property {boolean} [decompress=false] whether to attempt gunzip decompression on the fetched data - * See: {@link Assets.putAsset} and its .compress=true option - */ + + /**jsdoc + * A set of properties that can be passed to {@link Assets.getAsset}. + * @typedef {Object} Assets.GetOptions + * @property {URL} [url] an "atp:" style URL, hash, or relative mapped path to fetch + * @property {string} [responseType=text] the desired reponse type (text | arraybuffer | json) + * @property {boolean} [decompress=false] whether to attempt gunzip decompression on the fetched data + * See: {@link Assets.putAsset} and its .compress=true option + */ + /**jsdoc * Called when Assets.getAsset is complete. * @callback Assets~getAssetCallback * @param {string} error - contains error message or null value if no error occured fetching the asset * @param {Asset~getAssetResult} result - result object containing, on success containing asset metadata and contents */ - /**jsdoc - * Result value returned by {@link Assets.getAsset}. - * @typedef {Object} Assets~getAssetResult - * @property {url} [url] the resolved "atp:" style URL for the fetched asset - * @property {string} [hash] the resolved hash for the fetched asset - * @property {string|ArrayBuffer|Object} [response] response data (possibly converted per .responseType value) - * @property {string} [responseType] response type (text | arraybuffer | json) - * @property {string} [contentType] detected asset mime-type (autodetected) - * @property {number} [byteLength] response data size in bytes - * @property {number} [decompressed] flag indicating whether data was decompressed - */ + + /**jsdoc + * Result value returned by {@link Assets.getAsset}. + * @typedef {Object} Assets~getAssetResult + * @property {url} [url] the resolved "atp:" style URL for the fetched asset + * @property {string} [hash] the resolved hash for the fetched asset + * @property {string|ArrayBuffer|Object} [response] response data (possibly converted per .responseType value) + * @property {string} [responseType] response type (text | arraybuffer | json) + * @property {string} [contentType] detected asset mime-type (autodetected) + * @property {number} [byteLength] response data size in bytes + * @property {number} [decompressed] flag indicating whether data was decompressed + */ + Q_INVOKABLE void getAsset(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); /**jsdoc @@ -143,46 +161,131 @@ public: * @param {Assets.PutOptions} options A PutOptions object with upload parameters * @param {Assets~putAssetCallback} scope[callback] A scoped callback function invoked with (error, results) */ - /**jsdoc - * A set of properties that can be passed to {@link Assets.putAsset}. - * @typedef {Object} Assets.PutOptions - * @property {ArrayBuffer|string} [data] byte buffer or string value representing the new asset's content - * @property {string} [path=null] ATP path mapping to automatically create (upon successful upload to hash) - * @property {boolean} [compress=false] whether to gzip compress data before uploading - */ + + /**jsdoc + * A set of properties that can be passed to {@link Assets.putAsset}. + * @typedef {Object} Assets.PutOptions + * @property {ArrayBuffer|string} [data] byte buffer or string value representing the new asset's content + * @property {string} [path=null] ATP path mapping to automatically create (upon successful upload to hash) + * @property {boolean} [compress=false] whether to gzip compress data before uploading + */ + /**jsdoc * Called when Assets.putAsset is complete. * @callback Assets~puttAssetCallback * @param {string} error - contains error message (or null value if no error occured while uploading/mapping the new asset) * @param {Asset~putAssetResult} result - result object containing error or result status of asset upload */ - /**jsdoc - * Result value returned by {@link Assets.putAsset}. - * @typedef {Object} Assets~putAssetResult - * @property {url} [url] the resolved "atp:" style URL for the uploaded asset (based on .path if specified, otherwise on the resulting ATP hash) - * @property {string} [path] the uploaded asset's resulting ATP path (or undefined if no path mapping was assigned) - * @property {string} [hash] the uploaded asset's resulting ATP hash - * @property {boolean} [compressed] flag indicating whether the data was compressed before upload - * @property {number} [byteLength] flag indicating final byte size of the data uploaded to the ATP server - */ + + /**jsdoc + * Result value returned by {@link Assets.putAsset}. + * @typedef {Object} Assets~putAssetResult + * @property {url} [url] the resolved "atp:" style URL for the uploaded asset (based on .path if specified, otherwise on the resulting ATP hash) + * @property {string} [path] the uploaded asset's resulting ATP path (or undefined if no path mapping was assigned) + * @property {string} [hash] the uploaded asset's resulting ATP hash + * @property {boolean} [compressed] flag indicating whether the data was compressed before upload + * @property {number} [byteLength] flag indicating final byte size of the data uploaded to the ATP server + */ + Q_INVOKABLE void putAsset(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); + /**jsdoc + * @function Assets.deleteAsset + * @property {} options + * @property {} scope + * @property {} [callback = ""] + */ + Q_INVOKABLE void deleteAsset(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); + + /**jsdoc + * @function Assets.resolveAsset + * @property {} options + * @property {} scope + * @property {} [callback = ""] + */ + Q_INVOKABLE void resolveAsset(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); + + /**jsdoc + * @function Assets.decompressData + * @property {} options + * @property {} scope + * @property {} [callback = ""] + */ + Q_INVOKABLE void decompressData(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); + + /**jsdoc + * @function Assets.compressData + * @property {} options + * @property {} scope + * @property {} [callback = ""] + */ + Q_INVOKABLE void compressData(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); + + /**jsdoc + * @function Assets.initializeCache + * @returns {boolean} + */ Q_INVOKABLE bool initializeCache() { return Parent::initializeCache(); } + + /**jsdoc + * @function Assets.canWriteCacheValue + * @property {string} url + * @returns {boolean} + */ Q_INVOKABLE bool canWriteCacheValue(const QUrl& url); + + /**jsdoc + * @function Assets.getCacheStatus + * @property {} scope + * @property {} [callback = ""] + */ Q_INVOKABLE void getCacheStatus(QScriptValue scope, QScriptValue callback = QScriptValue()) { jsPromiseReady(Parent::getCacheStatus(), scope, callback); } + /**jsdoc + * @function Assets.queryCacheMeta + * @property {} options + * @property {} scope + * @property {} [callback = ""] + */ + Q_INVOKABLE void queryCacheMeta(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); + + /**jsdoc + * @function Assets.loadFromCache + * @property {} options + * @property {} scope + * @property {} [callback = ""] + */ + Q_INVOKABLE void loadFromCache(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); + + /**jsdoc + * @function Assets.saveToCache + * @property {} options + * @property {} scope + * @property {} [callback = ""] + */ + Q_INVOKABLE void saveToCache(QScriptValue options, QScriptValue scope, QScriptValue callback = QScriptValue()); + + /**jsdoc + * @function Assets.saveToCache + * @property {} url + * @property {} data + * @property {} metadata + * @property {} scope + * @property {} [callback = ""] + */ + Q_INVOKABLE void saveToCache(const QUrl& url, const QByteArray& data, const QVariantMap& metadata, QScriptValue scope, QScriptValue callback = QScriptValue()); protected: diff --git a/libraries/trackers/src/trackers/FaceTracker.h b/libraries/trackers/src/trackers/FaceTracker.h index 58d5c5e574..4224bb6633 100644 --- a/libraries/trackers/src/trackers/FaceTracker.h +++ b/libraries/trackers/src/trackers/FaceTracker.h @@ -18,6 +18,7 @@ #include <SettingHandle.h> /// Base class for face trackers (DDE, BinaryVR). + class FaceTracker : public QObject { Q_OBJECT @@ -58,11 +59,34 @@ public: QVector<float>& coefficients); signals: + + /**jsdoc + * @function FaceTracker.muteToggled + * @returns {Signal} + */ + void muteToggled(); public slots: + + /**jsdoc + * @function FaceTracker.setEnabled + * @param {boolean} enabled + */ + virtual void setEnabled(bool enabled) = 0; + + /**jsdoc + * @function FaceTracker.toggleMute + */ + void toggleMute(); + + /**jsdoc + * @function FaceTracker.getMuted + * @returns {boolean} + */ + bool getMuted() { return _isMuted; } protected: diff --git a/tools/jsdoc/plugins/hifi.js b/tools/jsdoc/plugins/hifi.js index d49736d7e0..07644850ee 100644 --- a/tools/jsdoc/plugins/hifi.js +++ b/tools/jsdoc/plugins/hifi.js @@ -17,11 +17,20 @@ exports.handlers = { // directories to scan for jsdoc comments var dirList = [ '../../interface/src', + '../../interface/src/assets', + '../../interface/src/audio', '../../interface/src/avatar', + '../../interface/src/commerce', + '../../interface/src/devices', + '../../interface/src/java', + '../../interface/src/networking', + '../../interface/src/ui/', '../../interface/src/scripting', '../../interface/src/ui/overlays', '../../interface/src/raypick', '../../libraries/animation/src', + '../../libraries/audio-client/src', + '../../libraries/audio/src', '../../libraries/avatars/src', '../../libraries/avatars-renderer/src/avatars-renderer', '../../libraries/controllers/src/controllers/',