diff options
author | wangjun <junx.j.wang@intel.com> | 2014-07-10 10:59:05 +0800 |
---|---|---|
committer | wangjun <junx.j.wang@intel.com> | 2014-07-10 10:59:05 +0800 |
commit | 57b97ed4b4b17c38d101cb74c5cbf61b154a2435 (patch) | |
tree | b2ea2a1b16083c8ee4f9f54937441691adaffb82 | |
parent | 0e1728845b5ecf4d1fdf44b9b1fbee0938fce197 (diff) | |
download | ivi-57b97ed4b4b17c38d101cb74c5cbf61b154a2435.tar.gz ivi-57b97ed4b4b17c38d101cb74c5cbf61b154a2435.tar.bz2 ivi-57b97ed4b4b17c38d101cb74c5cbf61b154a2435.zip |
Initial version for IVI help documentation.
Change-Id: I50f8c702ba5a2f9f02aebe69e0cd274ff9c69fea
Signed-off-by: wangjun <junx.j.wang@intel.com>
-rw-r--r-- | .classpath | 7 | ||||
-rw-r--r-- | .project | 28 | ||||
-rw-r--r-- | .settings/org.eclipse.jdt.core.prefs | 7 | ||||
-rw-r--r-- | META-INF/MANIFEST.MF | 10 | ||||
-rw-r--r-- | Tizen_IVI_Toc.xml | 6 | ||||
-rw-r--r-- | bin/.gitignore | 1 | ||||
-rw-r--r-- | build.properties | 7 | ||||
-rw-r--r-- | html/Locale.html | 257 | ||||
-rw-r--r-- | html/MediaServer.html | 533 | ||||
-rw-r--r-- | html/Speech.html | 957 | ||||
-rw-r--r-- | html/Vehicle.html | 3351 | ||||
-rw-r--r-- | html/apireference.html | 80 | ||||
-rw-r--r-- | html/ga.js | 65 | ||||
-rw-r--r-- | html/snippet.css | 52 | ||||
-rw-r--r-- | html/snippet.js | 1473 | ||||
-rw-r--r-- | html/styles.css | 629 | ||||
-rw-r--r-- | html/tizen.css | 932 | ||||
-rw-r--r-- | html/toc.html | 34 | ||||
-rw-r--r-- | plugin.xml | 16 | ||||
-rw-r--r-- | src/org/tizen/ivi/help/Activator.java | 61 | ||||
-rw-r--r-- | toc.xml | 11 |
21 files changed, 8517 insertions, 0 deletions
diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..cd7b121 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/.project b/.project new file mode 100644 index 0000000..b0ffa45 --- /dev/null +++ b/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.tizen.ivi.help</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..c537b63 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..ac299c9 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Help +Bundle-SymbolicName: org.tizen.ivi.help; singleton:=true +Bundle-Version: 1.1.0.qualifier +Bundle-Activator: org.tizen.ivi.help.Activator +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime +Bundle-ActivationPolicy: lazy +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 diff --git a/Tizen_IVI_Toc.xml b/Tizen_IVI_Toc.xml new file mode 100644 index 0000000..cea9c89 --- /dev/null +++ b/Tizen_IVI_Toc.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?NLS TYPE="org.eclipse.help.toc"?> + +<toc label="Tizen IVI App Programming" topic="html/toc.html"> + <link toc="toc.xml" /> +</toc> diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..571ee51 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1 @@ +/org diff --git a/build.properties b/build.properties new file mode 100644 index 0000000..fc53675 --- /dev/null +++ b/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = plugin.xml,\ + META-INF/,\ + .,\ + html/,\ + *.xml diff --git a/html/Locale.html b/html/Locale.html new file mode 100644 index 0000000..c56e87a --- /dev/null +++ b/html/Locale.html @@ -0,0 +1,257 @@ +<!DOCTYPE html PUBLIC "html"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link rel="stylesheet" type="text/css" href="tizen.css" media="screen"> +<script type="text/javascript" src="snippet.js"></script> +<title>Locale API</title> +</head> +<body id="content" onload="prettyPrint()"> + <div class="api" id="::Locale"> + <div class="title"> + <h1>Locale API</h1> + </div> + <div class="description"> + <p>Allows access to the Locale API.</p> + </div> + <h2>Table of Contents</h2> + <ul class="toc"> + <li>1. <a href="#interfaces">Interfaces</a> + <ul class="toc"> + <li>1.1. <a href="#::Locale::LocaleManagerObject">LocaleManagerObject</a> + </li> + <li>1.2. <a href="#::Locale::Locale">Locale</a> + </li> + <li>1.3. <a href="#::Locale::LocaleChangedCallback">LocaleChangedCallback</a> + </li> + </ul> + </li> + <li>2. <a href="#full-webidl">Full WebIDL</a> + </li> + </ul> + + <hr> + + <h2 id="method-summary">Summary of Interfaces and Methods</h2> + <table class="informaltable"> + <thead> + <tr> + <th>Interface</th> + <th>Method</th> + </tr> + <tr> + <td><a href="#::Locale::LocaleManagerObject"> LocaleManagerObject</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Locale::Locale"> Locale</a></td> + <td>DOMString <a href="#::Locale::Locale::getLocale">getLocale()</a>; <br> + void <a href="#::Locale::Locale::setLocale">setLocale</a>(DOMString + newLocale); <br> void <a href="#::Locale::Locale::localeChanged"> + localeChanged</a>(<a href="#::Locale::LocaleChangedCallback"><span class="typ">LocaleChangedCallback</span></a> changeCallback); <br></td> + </tr> + <tr> + <td><a href="#::Locale::LocaleChangedCallback"> LocaleChangedCallback</a></td> + <td></td> + </tr> + </thead> + <tbody></tbody> + </table> + <!-- -------------------------------- --> + <div class="interfaces" id="interfaces"> + <h2>1. Interfaces</h2> + + <div class="interface" id="::Locale::LocaleManagerObject"> + <h3>1.1. LocaleManagerObject</h3> + <div class="brief"></div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface LocaleManagerObject { + readonly attribute <a href="#::Locale::Locale"><span class="typ">Locale</span></a> locale; +}; +</pre> +<pre class="webidl prettyprint"> +Tizen implements Locale; +</pre> + </div> + + <div class="interface" id="::Locale::Locale"> + <h3>1.2. Locale</h3> + <div class="brief">The Vehicle interface defines access to locale functionality.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Locale { + + DOMString getLocale(); + + void setLocale(DOMString newLocale); + + void localeChanged(<a href="#::Locale::LocaleChangedCallback"><span class="typ">LocaleChangedCallback</span></a> changeCallback); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + <dl> + <dt class="method" id="::Locale::Locale::getLocale"> + <span class="methodName">getLocale</span> + </dt> + <dd> + <div class="brief">Gets the current locale.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +DOMString getLocale(); +<span class="pln"></span> +</pre> + </div> + <div class="returntype"> + <p> + <span class="return">Return value:</span> + </p> + Current locale in ISO 639-2 format (i.e., en_US for English US). + </div> + </dd> + <dt class="method" id="::Locale::Locale::setLocale"> + <span class="methodName">setLocale</span> + </dt> + <dd> + <div class="brief">Sets the system locale.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void setLocale(DOMString newLocale); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">newLocale</span>: + Locale to set in ISO 639-2 format.</li> + </ul> + </div> + </dd> + <dt class="method" id="::Locale::Locale::localeChanged"> + <span class="methodName">localeChanged</span> + </dt> + <dd> + <div class="brief">Subscribes a callback function to be invoked when locale changes.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void localeChanged(<a href="#::LocaleChangedCallback"><span class="typ">LocaleChangedCallback</span></a> changeCallback); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">changeCallback</span>: Callback + to be called when this event occurs.</li> + </ul> + </div> + </dd> + </dl> + </div> + + <div class="interface" id="::Locale::LocaleChangedCallback"> + <h3>1.3. LocaleChangedCallback</h3> + <div class="brief">This interface specified a success callback that is invoked when current locale is changed.</div> +<pre class="webidl prettyprint"> +[Callback=FunctionOnly, NoInterfaceObject] interface LocaleChangedCallback { + + void onsuccess(DOMString newLocale); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::Locale::LocaleChangedCallback::onsuccess"> + <span class="methodName">onsuccess</span> + </dt> + <dd> + <div class="brief">The callback function used to return a new locale. Called when current locale is changed successfully.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void onsuccess(DOMString newLocale); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">newLocale</span>: A new locale.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + </div> + </div> + + <!-- -------------------------------- --> + <h2 id="full-webidl">2. Full WebIDL</h2> +<pre class="webidl prettyprint"> +module Locale { + + [NoInterfaceObject] interface LocaleManagerObject { + readonly attribute Locale locale; + }; + + Tizen implements Locale; + + [NoInterfaceObject] interface Locale { + + DOMString getLocale(); + + void setLocale(DOMString newLocale); + + void localeChanged(LocaleChangedCallback changeCallback); + + }; + + [Callback=FunctionOnly, NoInterfaceObject] interface LocaleChangedCallback { + + void onsuccess(DOMString newLocale); + + }; +}; +</pre> + <div id="footer"> + <div class="copyright" align="center"> + Except as noted, this content - excluding the Code Examples - is + licensed under <a + href="http://creativecommons.org/licenses/by/3.0/legalcode" + target="_blank">Creative Commons Attribution 3.0</a> and all of + the Code Examples contained herein are licensed under <a + href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. + <br>For details, see the <a + href="https://www.tizen.org/content-license" target="_blank">Content + License</a>. + </div> + </div> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push([ '_setAccount', 'UA-25976949-1' ]); + _gaq.push([ '_setDomainName', 'tizen.org' ]); + _gaq.push([ '_trackPageview' ]); + + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' + : 'http://www') + + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); + </script> + </div> +</body> +</html> diff --git a/html/MediaServer.html b/html/MediaServer.html new file mode 100644 index 0000000..f207659 --- /dev/null +++ b/html/MediaServer.html @@ -0,0 +1,533 @@ +<!DOCTYPE html PUBLIC "html"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link rel="stylesheet" type="text/css" href="tizen.css" media="screen"> +<script type="text/javascript" src="snippet.js"></script> +<title>MediaServer API</title> +</head> +<body id="content" onload="prettyPrint()"> + <div class="api" id="::MediaServer"> + <div class="title"> + <h1>MediaServer API</h1> + </div> + <div class="description"> + <p>Media Server API to discover and manage images, videos, and music. </p> + </div> + <h2>Table of Contents</h2> + <ul class="toc"> + <li>1. <a href="#interfaces">Interfaces</a> + <ul class="toc"> + <li>1.1. <a href="#::MediaServerManagerObject">MediaServerManagerObject</a> + </li> + <li>1.2. <a href="#::MediaServerManager">MediaServerManager</a> + </li> + <li>1.3. <a href="#::MediaServer::MediaServer">MediaServer</a> + </li> + <li>1.4. <a href="#::MediaServerError">MediaServerError</a> + </li> + <li>1.5. <a href="#::MediaServerFoundServerCallback">MediaServerFoundServerCallback</a> + </li> + <li>1.6. <a href="#::MediaServerBrowseFindCallback">MediaServerBrowseFindCallback</a> + </li> + <li>1.7. <a href="#::MediaServerErrorCallback">MediaServerErrorCallback</a> + </li> + </ul> + </li> + <li>2. <a href="#full-webidl">Full WebIDL</a> + </li> + </ul> + + <hr> + + <h2 id="method-summary">Summary of Interfaces and Methods</h2> + <table class="informaltable"> + <thead> + <tr> + <th>Interface</th> + <th>Method</th> + </tr> + <tr> + <td><a href="#::MediaServerManagerObject"> MediaServerManagerObject</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::MediaServerManager"> MediaServerManager</a></td> + <td>void <a href="#::MediaServerManager::scanNetwork"> + scanNetwork</a>(<a href="#::MediaServerFoundServerCallback"><span class="typ">MediaServerFoundServerCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);</td> + </tr> + <tr> + <td><a href="#::MediaServer::MediaServer"> MediaServer</a></td> + <td>void <a href="#::MediaServer::MediaServer::browse">browse</a>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback); <br> + void <a href="#::MediaServer::MediaServer::find">find</a>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);</td> + </tr> + <tr> + <td><a href="#::MediaServerFoundServerCallback"> MediaServerFoundServerCallback</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::MediaServerBrowseFindCallback"> MediaServerBrowseFindCallback</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::MediaServerErrorCallback"> MediaServerErrorCallback</a></td> + <td></td> + </tr> + </thead> + <tbody></tbody> + </table> + <!-- -------------------------------- --> + + <div class="interfaces" id="interfaces"> + <h2>1. Interfaces</h2> + <div class="interface" id="::MediaServerManagerObject"> + <h3>1.1. MediaServerManagerObject</h3> + <div class="brief">This interface defines what is instantiated + by the Tizen object by the Tizen Platform. There will be a + tizen.mediaserver object that allows access to the functionality of the + MediaServerManager API.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface MediaServerManagerObject { + readonly attribute <a href="#::MediaServerManager"><span class="typ">MediaServerManager</span></a> mediaserver; +}; +</pre> +<pre class="webidl prettyprint"> +Tizen implements MediaServerManagerObject; +</pre> + </div> + <div class="interface" id="::MediaServerManager"> + <h3>1.2. MediaServerManager</h3> + <div class="brief">The MediaServerManager interface defines access to local network media servers discovery functionality. </div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface MediaServerManager { + + void scanNetwork(<a href="#::MediaServerFoundServerCallback"><span class="typ">MediaServerFoundServerCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::MediaServerManager::scanNetwork"> + <span class="methodName">scanNetwork</span> + </dt> + <dd> + <div class="brief">Scans local network for media servers.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void scanNetwork(<a href="#::MediaServerFoundServerCallback"><span class="typ">MediaServerFoundServerCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">successCallback</span>: + The method to call when each MediaServer is discovered.</li> + <li class="param"><span class="name">errorCallback[optional]</span>: + The method to call when no MediaServer is discovered.</li> + </ul> + </div> + <div class="exceptionlist"> + <p> + <span class="except">Exceptions:</span> + </p> + <ul class="exception"> + <li>WebAPIError + <ul> + <li class="list"><p>with error type + UnknownError, if no MediaServer is discovered. + </p></li> + </ul> + </li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + <div class="interface" id="::MediaServer::MediaServer"> + <h3>1.3. MediaServer</h3> + <div class="brief">The MediaServer interface.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface MediaServer { + + readonly attribute DOMString id; + + readonly attribute DOMString friendlyName; + + readonly attribute object root; + + void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback); + + void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback); + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::MediaServer::MediaServer::id"><span + class="attrName"><span class="readonly">readonly </span><span class="type">DOMString + </span><span class="name">id</span></span> + <div class="brief">An opaque unique ID.</div></li> + <li class="attribute" id="::MediaServer::MediaServer::friendlyName"><span + class="attrName"><span class="readonly">readonly </span><span class="type">DOMString </span><span + class="name">friendlyName</span></span> + <div class="brief"> A user-friendly name for the device.</div></li> + <li class="attribute" id="::MediaServer::MediaServer::root"><span + class="attrName"><span class="readonly">readonly </span><span class="type">object </span><span + class="name">root</span></span> + <div class="brief">Media server root folder.</div></li> + </ul> + </div> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::MediaServer::MediaServer::browse"> + <span class="methodName">browse</span> + </dt> + <dd> + <div class="brief">Browses for media items under a given media container.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">containerId</span>: + A unique identifier for media container in a media server.</li> + <li class="param"><span class="name">sortMode</span>: + Sort mode for media items.</li> + <li class="param"><span class="name">count</span>: + The maximum number of media items to return out of the browse result (0 for no limit).</li> + <li class="param"><span class="name">offset</span>: + The (0-based) index of the first item in the browse result.</li> + <li class="param"><span class="name">successCallback</span>: + The method to call when media items are discovered.</li> + <li class="param"><span class="name">errorCallback[optional]</span>: + The method to call when an error occurs.</li> + </ul> + </div> + <div class="exceptionlist"> + <p> + <span class="except">Exceptions:</span> + </p> + <ul class="exception"> + <li>WebAPIError + <ul> + <li class="list"><p>with error type + UnknownError, if an error occurs. + </p></li> + </ul> + </li> + </ul> + </div> + </dd> + <dt class="method" id="::MediaServer::MediaServer::find"> + <span class="methodName">find</span> + </dt> + <dd> + <div class="brief">Searches for media items under a given MediaContainer.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">containerId</span>: + A unique identifier for media container in a media server.</li> + <li class="param"><span class="name">searchFilter</span>: + The search criteria string.</li> + <li class="param"><span class="name">sortMode</span>: + Sort mode for media items.</li> + <li class="param"><span class="name">count</span>: + The maximum number of media items to return out of the browse result (0 for no limit).</li> + <li class="param"><span class="name">offset</span>: + The (0-based) index of the first item in the browse result.</li> + <li class="param"><span class="name">successCallback</span>: + The method to call when media items are discovered.</li> + <li class="param"><span class="name">errorCallback[optional]</span>: + The method to call when an error occurs.</li> + </ul> + </div> + <div class="exceptionlist"> + <p> + <span class="except">Exceptions:</span> + </p> + <ul class="exception"> + <li>WebAPIError + <ul> + <li class="list"><p>with error type + UnknownError, if an error occurs. + </p></li> + </ul> + </li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + + <div class="interface" id="::MediaServerError"> + <h3>1.4. MediaServerError</h3> + <div class="brief">The MediaServerError interface defines error codes and messages.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface MediaServerError { + + const unsigned short GENERIC = 1; + + attribute unsigned short code; + + attribute DOMString message; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::MediaServerError::GENERIC"><span + class="name">GENERIC</span> + <div class="brief">It defines an error code.</div></li> + </ul> + </div> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::MediaServerError::code"><span + class="attrName"><span class="type">unsigned short </span><span + class="name">code</span></span> + <div class="brief">An attribute to get error code.</div></li> + <li class="attribute" id="::MediaServerError::message"><span + class="attrName"><span class="type">DOMString </span><span + class="name">message</span></span> + <div class="brief">An attribute to get error message.</div></li> + </ul> + </div> + </div> + </div> + + <div class="interface" id="::MediaServerFoundServerCallback"> + <h3>1.5. MediaServerFoundServerCallback</h3> + <div class="brief">This interface invokes the success callback that is invoked when a MediaServer is discovered. </div> +<pre class="webidl prettyprint"> +[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback { + + void onsuccess(<a href="#::MediaServer"><span class="typ">MediaServer</span></a> value); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::MediaServerFoundServerCallback::onsuccess"> + <span class="methodName">onsuccess</span> + </dt> + <dd> + <div class="brief">The callback function used to return a MediaServer object. Called when the media server is found successfully. </div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void onsuccess(MediaServer value); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">value</span>: A MediaServer object.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + </div> + + <div class="interface" id="::MediaServerBrowseFindCallback"> + <h3>1.6. MediaServerBrowseFindCallback</h3> + <div class="brief">This interface specified a success callback that is invoked when some media items is found.</div> +<pre class="webidl prettyprint"> +[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback { + + void onsuccess(object[] value); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::MediaServerBrowseFindCallback::onsuccess"> + <span class="methodName">onsuccess</span> + </dt> + <dd> + <div class="brief">The callback function used to return a list of MediaServerItem objects. Called when the list of media server item is retrieved successfully.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void onsuccess(object[] value); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">value</span>: A list of media items.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + </div> + + <div class="interface" id="::MediaServerErrorCallback"> + <h3>1.6. MediaServerErrorCallback</h3> + <div class="brief">This interface specified a failure callback that is invoked when any errors are happened.</div> +<pre class="webidl prettyprint"> +[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback { + + void onfailure(<a href="#::MediaServerError"><span class="typ">MediaServerError</span></a> error); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::MediaServerErrorCallback::onfailure"> + <span class="methodName">onfailure</span> + </dt> + <dd> + <div class="brief">The callback function used to return a MediaServerError object. Called when an error occurs.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void onfailure(MediaServerError error); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">error</span>: A MediaServerError object.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + </div> + + <!-- -------------------------------- --> + <h2 id="full-webidl">3. Full WebIDL</h2> +<pre class="webidl prettyprint"> +module MediaServer { + + [NoInterfaceObject] interface MediaServerManagerObject { + readonly attribute MediaServerManager mediaserver; + }; + + Tizen implements MediaServerManagerObject; + + [NoInterfaceObject] interface MediaServerManager { + + void scanNetwork(MediaServerFoundServerCallback successCallback, optional MediaServerErrorCallback errorCallback); + + }; + + [NoInterfaceObject] interface MediaServer { + + readonly attribute DOMString id; + + readonly attribute DOMString friendlyName; + + readonly attribute object root; + + void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, MediaServerBrowseFindCallback successCallback, optional MediaServerErrorCallback errorCallback); + + void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, MediaServerBrowseFindCallback successCallback, optional MediaServerErrorCallback errorCallback); + + }; + + [NoInterfaceObject] interface MediaServerError { + + const unsigned short GENERIC = 1; + + attribute unsigned short code; + + attribute DOMString message; + + }; + + [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback { + + void onsuccess(MediaServer value); + + }; + + [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback { + + void onsuccess(object[] value); + + }; + + [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback { + + void onfailure(MediaServerError error); + + }; +}; +</pre> + <div id="footer"> + <div class="copyright" align="center"> + Except as noted, this content - excluding the Code Examples - is + licensed under <a + href="http://creativecommons.org/licenses/by/3.0/legalcode" + target="_blank">Creative Commons Attribution 3.0</a> and all of the + Code Examples contained herein are licensed under <a + href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. + <br>For details, see the <a + href="https://www.tizen.org/content-license" target="_blank">Content + License</a>. + </div> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push([ '_setAccount', 'UA-25976949-1' ]); + _gaq.push([ '_setDomainName', 'tizen.org' ]); + _gaq.push([ '_trackPageview' ]); + + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' + : 'http://www') + + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); + </script> + </div> +</body> +</html> diff --git a/html/Speech.html b/html/Speech.html new file mode 100644 index 0000000..3f2f72a --- /dev/null +++ b/html/Speech.html @@ -0,0 +1,957 @@ +<!DOCTYPE html PUBLIC "html"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link rel="stylesheet" type="text/css" href="tizen.css" media="screen"> +<script type="text/javascript" src="snippet.js"></script> +<title>Speech API</title> +</head> +<body id="content" onload="prettyPrint()"> + <div class="api" id="::Speech"> + <div class="title"> + <h1>Speech API</h1> + </div> + <div class="description"> + <p>The Web Speech API aims to enable web developers to provide, in a web browser, speech-input and text-to-speech output + features that are typically not available when using standard speech-recognition or screen-reader software.</p> + </div> + <h2>Table of Contents</h2> + <ul class="toc"> + <li>1. <a href="#typedefs">Type Definitions</a> + <ul class="toc"> + <li>1.1. <a href="#::ErrorCode">ErrorCode</a> + </li> + </ul> + </li> + <li>2. <a href="#interfaces">Interfaces</a> + <ul class="toc"> + <li>2.1. <a href="#::SpeechManagerObject">SpeechManagerObject</a> + </li> + <li>2.2. <a href="#::SpeechManager">SpeechManager</a> + </li> + <li>2.3. <a href="#::SpeechRecognition">SpeechRecognition</a> + </li> + <li>2.4. <a href="#::SpeechRecognitionError">SpeechRecognitionError</a> + </li> + <li>2.5. <a href="#::SpeechRecognitionAlternative">SpeechRecognitionAlternative</a> + </li> + <li>2.6. <a href="#::SpeechRecognitionResult">SpeechRecognitionResult</a> + </li> + <li>2.7. <a href="#::SpeechRecognitionResultList">SpeechRecognitionResultList</a> + </li> + <li>2.8. <a href="#::SpeechRecognitionEvent">SpeechRecognitionEvent</a> + </li> + <li>2.9. <a href="#::SpeechGrammar">SpeechGrammar</a> + </li> + <li>2.10. <a href="#::SpeechGrammarList">SpeechGrammarList</a> + </li> + </ul> + </li> + <li>3. <a href="#full-webidl">Full WebIDL</a> + </li> + </ul> + + <hr> + + <h2 id="method-summary">Summary of Interfaces and Methods</h2> + <table class="informaltable"> + <thead> + <tr> + <th>Interface</th> + <th>Method</th> + </tr> + <tr> + <td><a href="#::SpeechManagerObject"> SpeechManagerObject</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::SpeechManager"> SpeechManager</a></td> + <td>void <a href="#::SpeechManager::vocalizeString"> + vocalizeString</a>(DOMString speakString);</td> + </tr> + <tr> + <td><a href="#::SpeechRecognition"> SpeechRecognition</a></td> + <td>void <a href="#::SpeechRecognition::start">start</a>(); <br> + void <a href="#::SpeechRecognition::stop">stop</a>(); <br> void <a + href="#::SpeechRecognition::abort">abort()</a>; <br></td> + </tr> + <tr> + <td><a href="#::SpeechRecognitionError"> + SpeechRecognitionError</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::SpeechRecognitionAlternative"> + SpeechRecognitionAlternative</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::SpeechRecognitionResult"> + SpeechRecognitionResult</a></td> + <td><a href="#::SpeechRecognitionAlternative"><span class="typ">SpeechRecognitionAlternative</span></a> + <a href="#::SpeechRecognitionResult::item">item</a>(unsigned long index); <br></td> + </tr> + <tr> + <td><a href="#::SpeechRecognitionResultList"> + SpeechRecognitionResultList</a></td> + <td><a href="#::SpeechRecognitionResult"><span class="typ">SpeechRecognitionResult</span></a> + <a href="#::SpeechRecognitionResultList::item">item</a>(unsigned long index); <br></td> + </tr> + <tr> + <td><a href="#::SpeechRecognitionEvent"> + SpeechRecognitionEvent</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::SpeechGrammar"> SpeechGrammar</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::SpeechGrammarList"> SpeechGrammarList</a></td> + <td><a href="#::SpeechGrammar"><span class="typ">SpeechGrammar</span></a> + <a href="#::SpeechGrammarList::item">item</a>(unsigned long index); <br> void <a + href="#::SpeechGrammarList::addFromURI"> + addFromURI</a>(DOMString src, optional float weight); <br> void <a + href="#::SpeechGrammarList::addFromString"> + addFromString</a>(DOMString string, optional float weight); <br></td> + </tr> + </thead> + <tbody></tbody> + </table> + <!-- -------------------------------- --> + + <div class="typedefs" id="typedefs"> + <h2>1. Type Definitions</h2> + <div class="enum" id="::ErrorCode"> + <h3>1.1. ErrorCode</h3> + <div class="brief">Error codes for <a href="#::SpeechRecognitionError"><span class="typ">SpeechRecognitionError</span></a>.</div> +<pre class="webidl prettyprint"> +enum ErrorCode {"no-speech", "aborted", "audio-capture", "network", "not-allowed", "service-not-allowed", "bad-grammar", "language-not-supported"}; +</pre> + </div> + </div> + <!-- -------------------------------- --> + <div class="interfaces" id="interfaces"> + <h2>2. Interfaces</h2> + <div class="interface" id="::SpeechManagerObject"> + <h3>2.1. SpeechManagerObject</h3> + <div class="brief">This interface defines what is instantiated + by the Tizen object by the Tizen Platform. There will be a + tizen.speech object that allows access to the functionality of the + SpeechManager API.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SpeechManagerObject { + readonly attribute <a href="#::SpeechManager"><span class="typ">SpeechManager</span></a> speech; +}; +</pre> +<pre class="webidl prettyprint"> +Tizen implements SpeechManagerObject; +</pre> + </div> + <div class="interface" id="::SpeechManager"> + <h3>2.2. SpeechManager</h3> + <div class="brief">This section defines the speech manager interface.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SpeechManager { + + void vocalizeString(DOMString speakString); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::SpeechManager::vocalizeString"> + <span class="methodName">vocalizeString</span> + </dt> + <dd> + <div class="brief">Achieves text-to-speech feature.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void vocalizeString(DOMString speakString); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">speakString</span>: A text.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + <div class="interface" id="::SpeechRecognition"> + <h3>2.3. SpeechRecognition</h3> + <div class="brief"></div> +<pre class="webidl prettyprint"> +[Constructor()] + +interface SpeechRecognition : EventTarget { + + attribute <a href="#::SpeechGrammarList"><span class="typ">SpeechGrammarList</span></a> grammars; + + attribute DOMString lang; + + attribute boolean continuous; + + attribute boolean interimResults; + + attribute unsigned long maxAlternatives; + + attribute DOMString serviceURI; + + void start(); + + void stop(); + + void abort(); + + attribute EventHandler onaudiostart; + + attribute EventHandler onsoundstart; + + attribute EventHandler onspeechstart; + + attribute EventHandler onspeechend; + + attribute EventHandler onsoundend; + + attribute EventHandler onaudioend; + + attribute EventHandler onresult; + + attribute EventHandler onnomatch; + + attribute EventHandler onerror; + + attribute EventHandler onstart; + + attribute EventHandler onend; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::SpeechRecognition::grammars"><span + class="attrName"><span class="type">SpeechGrammarList + </span><span class="name">grammars</span></span> + <div class="brief">An attribute to stores the collection of + SpeechGrammar objects which represent the grammars that are + active for this recognition.</div></li> + <li class="attribute" id="::SpeechRecognition::lang"><span + class="attrName"><span class="type">DOMString </span><span + class="name">lang</span></span> + <div class="brief">An attribute to set the language of the + recognition for the request.</div></li> + <li class="attribute" id="::SpeechRecognition::continuous"><span + class="attrName"><span class="type">DOMString </span><span + class="name">continuous</span></span> + <div class="brief">The default value is false.</div></li> + <li class="attribute" id="::SpeechRecognition::interimResults"><span + class="attrName"><span class="type">boolean </span><span + class="name">interimResults</span></span> + <div class="brief">An attribute to control whether interim + results are returned. The default value is false.</div></li> + <li class="attribute" id="::SpeechRecognition::maxAlternatives"><span + class="attrName"><span class="type">unsigned long </span><span + class="name">maxAlternatives</span></span> + <div class="brief">An attribute to set the maximum number + of SpeechRecognitionAlternatives per result. The default value + is 1.</div></li> + <li class="attribute" id="::SpeechRecognition::serviceURI"><span + class="attrName"><span class="type">DOMString </span><span + class="name">serviceURI</span></span> + <div class="brief">An attribute to specifies the location + of the speech recognition service that the web application + wishes to use.</div></li> + <li class="attribute" id="::SpeechRecognition::onaudiostart"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">onaudiostart</span></span> + <div class="brief">Fired when the user agent has started to capture audio. + </div></li> + <li class="attribute" id="::SpeechRecognition::onsoundstart"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">onsoundstart</span></span> + <div class="brief">Fired when some sound, possibly speech, has been detected. + </div></li> + <li class="attribute" id="::SpeechRecognition::onspeechstart"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">onspeechstart</span></span> + <div class="brief">Fired when the speech that will be used for speech recognition has started. + </div></li> + <li class="attribute" id="::SpeechRecognition::speechend"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">speechend</span></span> + <div class="brief">Fired when the speech that will be used for speech recognition has ended. + The speechstart event must always have been fire before speechend. + </div></li> + <li class="attribute" id="::SpeechRecognition::soundend"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">soundend</span></span> + <div class="brief">Fired when some sound is no longer detected. + The soundstart event must always have been fired before soundend. + </div></li> + <li class="attribute" id="::SpeechRecognition::audioend"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">audioend</span></span> + <div class="brief">Fired when the user agent has finished capturing audio. + The audiostart event must always have been fired before audioend. + </div></li> + <li class="attribute" id="::SpeechRecognition::onresult"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">onresult</span></span> + <div class="brief">Fired when the speech recognizer returns a result. + </div></li> + <li class="attribute" id="::SpeechRecognition::onnomatch"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">onnomatch</span></span> + <div class="brief">Fired when the speech recognizer returns a final result with no recognition + hypothesis that meet or exceed the confidence threshold. + </div></li> + <li class="attribute" id="::SpeechRecognition::onerror"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">onerror</span></span> + <div class="brief">Fired when a speech recognition error occurs. + </div></li> + <li class="attribute" id="::SpeechRecognition::onstart"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">onstart</span></span> + <div class="brief">Fired when the recognition service has begun to listen to the audio with the intention of recognizing. + </div></li> + <li class="attribute" id="::SpeechRecognition::onend"><span + class="attrName"><span class="type">EventHandler </span><span + class="name">onend</span></span> + <div class="brief">Fired when the service has disconnected. + </div></li> + </ul> + </div> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::SpeechRecognition::start"> + <span class="methodName">start</span> + </dt> + <dd> + <div class="brief">When the start method is called it + represents the moment in time the web application wishes to + begin recognition. Once the system is successfully listening to + the recognition the user agent must raise a start event.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void start(); +<span class="pln"></span> +</pre> + </div> + <div class="exceptionlist"> + <p> + <span class="except">Exceptions:</span> + </p> + <ul class="exception"> + <li>WebAPIException + <ul> + <li class="list"><p>with error type + InvalidStateError, if the start method is called on an + already started object. + </p></li> + </ul> + </li> + </ul> + </div> + </dd> + <dt class="method" id="::SpeechRecognition::stop"> + <span class="methodName">stop</span> + </dt> + <dd> + <div class="brief">The stop method represents an + instruction to the recognition service to stop listening to more + audio, and to try and return a result using just the audio that + it has already received for this recognition.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void stop(); +<span class="pln"></span> +</pre> + </div> + </dd> + <dt class="method" id="::SpeechRecognition::abort"> + <span class="methodName">abort</span> + </dt> + <dd> + <div class="brief"> The abort method is a request to immediately + stop listening and stop recognizing and do not return any + information but that the system is done. When the abort method + is called, the speech service must stop recognizing. The user + agent must raise an end event once the speech service is no + longer connected.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void abort(); +<span class="pln"></span> +</pre> + </div> + </dd> + </dl> + </div> + </div> + + <div class="interface" id="::SpeechRecognitionError"> + <h3>2.4. SpeechRecognitionError</h3> + <div class="brief">The SpeechRecognitionError event is the + interface used for the error event.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SpeechRecognitionError : Event { + + readonly attribute <a href="#::ErrorCode"><span class="typ">ErrorCode</span></a> error; + + readonly attribute DOMString message; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::SpeechRecognitionError::error"><span + class="attrName"><span class="readonly">readonly </span><span class="type">ErrorCode </span><span + class="name">error</span></span> + <div class="brief">An attribute to get error code.</div></li> + <li class="attribute" id="::SpeechRecognitionError::message"><span + class="attrName"><span class="readonly">readonly </span><span class="type">DOMString </span><span + class="name">message</span></span> + <div class="brief">An attribute to get error message.</div></li> + </ul> + </div> + </div> + </div> + + <div class="interface" id="::SpeechRecognitionAlternative"> + <h3>2.5. SpeechRecognitionAlternative</h3> + <div class="brief">The SpeechRecognitionAlternative represents + a simple view of the response that gets used in a n-best list.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SpeechRecognitionAlternative { + + readonly attribute DOMString transcript; + + readonly attribute float confidence; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" + id="::SpeechRecognitionAlternative::transcript"><span + class="attrName"><span class="readonly">readonly </span><span class="type">DOMString </span><span + class="name">transcript</span></span> + <div class="brief">An attribute to get the raw words that + the user spoke.</div></li> + <li class="attribute" + id="::SpeechRecognitionAlternative::confidence"><span + class="attrName"><span class="readonly">readonly </span><span class="type">float </span><span + class="name">confidence</span></span> + <div class="brief">An attribute to get a numeric estimate + between 0 and 1 of how confident the recognition system is that + the recognition is correct. A higher number means the system is + more confident.</div></li> + </ul> + </div> + </div> + </div> + + <div class="interface" id="::SpeechRecognitionResult"> + <h3>2.6. SpeechRecognitionResult</h3> + <div class="brief">The SpeechRecognitionResult object represents + a single one-shot recognition match, either as one small part of a + continuous recognition or as the complete return result of a + non-continuous recognition.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SpeechRecognitionResult { + + readonly attribute unsigned long length; + + <a href="#::SpeechRecognitionAlternative"><span class="typ">SpeechRecognitionAlternative</span></a> item(unsigned long index); + + readonly attribute boolean final; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::SpeechRecognitionResult::length"><span + class="attrName"><span class="readonly">readonly </span><span class="type">unsigned long </span><span + class="name">length</span></span> + <div class="brief">An attribute to represent how many n-best + alternatives are represented in the item array.</div></li> + <li class="attribute" id="::SpeechRecognitionResult::final"><span + class="attrName"><span class="readonly">readonly </span><span class="type">boolean </span><span + class="name">final</span></span> + <div class="brief">An attribute to control whether or not an 3 characters. + interim result cannot be changed.</div></li> + </ul> + </div> + + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::SpeechRecognitionResult::item"> + <span class="methodName">item</span> + </dt> + <dd> + <div class="brief">Returns a SpeechRecognitionAlternative + from the index into an array of n-best values. If index is greater + than or equal to length, returns null.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +SpeechRecognitionAlternative item(unsigned long index); +<span class="pln"></span> +</pre> +</div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">index</span>: An index of the <a href="#::SpeechRecognitionAlternative"><span class="typ">SpeechRecognitionAlternative</span></a> array.</li> + </ul> + </div> + <div class="returntype"> + <p> + <span class="return">Return value:</span> + </p> + A <a href="#::SpeechRecognitionAlternative"><span class="typ">SpeechRecognitionAlternative</span></a> object. + </div> + </dd> + </dl> + </div> + </div> + </div> + + <div class="interface" id="::SpeechRecognitionResultList"> + <h3>2.7. SpeechRecognitionResultList</h3> + <div class="brief">The SpeechRecognitionResult object represents + a single one-shot recognition match, either as one small part of a + continuous recognition or as the complete return result of a + non-continuous recognition.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SpeechRecognitionResultList { + + readonly attribute unsigned long length; + + <a href="#::SpeechRecognitionResult"><span class="typ">SpeechRecognitionResult</span></a> item(unsigned long index); + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::SpeechRecognitionResultList::length"><span + class="attrName"><span class="readonly">readonly </span><span class="type">unsigned long </span><span + class="name">length</span></span> + <div class="brief">An attribute to indicate how many results + are represented in the item array.</div></li> + </ul> + </div> + + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::SpeechRecognitionResultList::item"> + <span class="methodName">item</span> + </dt> + <dd> + <div class="brief">Returns a SpeechRecognitionResult from the + index into an array of result values. If index is greater than or + equal to length, returns null.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +SpeechRecognitionResult item(unsigned long index); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">index</span>: An index of the <a href="#::SpeechRecognitionResult"><span class="typ">SpeechRecognitionResult</span></a> array.</li> + </ul> + </div> + <div class="returntype"> + <p> + <span class="return">Return value:</span> + </p> + A <a href="#::SpeechRecognitionResult"><span class="typ">SpeechRecognitionResult</span></a> object. + </div> + </dd> + </dl> + </div> + </div> + </div> + + <div class="interface" id="::SpeechRecognitionEvent"> + <h3>2.8. SpeechRecognitionEvent</h3> + <div class="brief">The SpeechRecognitionEvent is the event that + is raised each time there are any changes to interim or final + results.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SpeechRecognitionEvent : Event { + + readonly attribute unsigned long resultIndex; + + readonly attribute <a href="#::SpeechRecognitionResultList"><span class="typ">SpeechRecognitionResultList</span></a> results; + + readonly attribute any interpretation; + + readonly attribute Document emma; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::SpeechRecognitionEvent::length"><span + class="attrName"><span class="readonly">readonly </span><span class="type">unsigned long </span><span + class="name">resultIndex</span></span> + <div class="brief">An attribute to get the lowest index in + the results array that has changed.</div></li> + <li class="attribute" id="::SpeechRecognitionEvent::results"><span + class="attrName"><span class="readonly">readonly </span><span class="type">SpeechRecognitionResultList + </span><span class="name">results</span></span> + <div class="brief">An attribute to get all current + recognition results for this session.</div></li> + <li class="attribute" id="::SpeechRecognitionEvent::interpretation"><span + class="attrName"><span class="readonly">readonly </span><span class="type">any </span><span + class="name">interpretation</span></span> + <div class="brief">An attribute to represent the semantic + meaning from what the user said.</div></li> + <li class="attribute" id="::SpeechRecognitionEvent::emma"><span + class="attrName"><span class="readonly">readonly </span><span class="type">Document </span><span + class="name">emma</span></span> + <div class="brief">An attribute to get emma.</div></li> + </ul> + </div> + </div> + </div> + + <div class="interface" id="::SpeechGrammar"> + <h3>2.9. SpeechGrammar</h3> + <div class="brief">The SpeechGrammar object represents a + container for a grammar.</div> +<pre class="webidl prettyprint"> +[Constructor()] + +interface SpeechGrammar { + + attribute DOMString src; + + attribute float weight; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::SpeechGrammar::src"><span + class="attrName"><span class="type">DOMString </span><span + class="name">src</span></span> + <div class="brief">An attribute to get the URI for the + grammar.</div></li> + <li class="attribute" id="::SpeechGrammar::weight"><span + class="attrName"><span class="type">float </span><span + class="name">weight</span></span> + <div class="brief">An attribute to control the weight that + the speech recognition service should use with this grammar. By + default, a grammar has a weight of 1.</div></li> + </ul> + </div> + </div> + </div> + + <div class="interface" id="::SpeechGrammarList"> + <h3>2.10. SpeechGrammarList</h3> + <div class="brief">The SpeechGrammarList object represents a + collection of SpeechGrammar objects.</div> +<pre class="webidl prettyprint"> +[Constructor()] + +interface SpeechGrammarList { + + readonly attribute unsigned long length; + + <a href="#::SpeechGrammar"><span class="typ">SpeechGrammar</span></a> item(unsigned long index); + + void addFromURI(DOMString src, optional float weight); + + void addFromString(DOMString string, optional float weight); + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::SpeechGrammarList::length"><span + class="attrName"><span class="readonly">readonly </span><span class="type">unsigned long </span><span + class="name">length</span></span> + <div class="brief">An attribute to represent how many + grammars are currently in the array.</div></li> + </ul> + </div> + + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::SpeechGrammarList::item"> + <span class="methodName">item</span> + </dt> + <dd> + <div class="brief">Returns a SpeechGrammar from the index + into an array of grammars.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +SpeechGrammar item(unsigned long index); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">index</span>: An index of the <a href="#::SpeechGrammar"><span class="typ">SpeechGrammar</span></a> array.</li> + </ul> + </div> + <div class="returntype"> + <p> + <span class="return">Return value:</span> + </p> + A <a href="#::SpeechGrammar"><span class="typ">SpeechGrammar</span></a> object. + </div> + </dd> + <dt class="method" id="::SpeechGrammarList::addFromURI"> + <span class="methodName">addFromURI</span> + </dt> + <dd> + <div class="brief">Appends a grammar to the grammars array + parameter based on URI.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void addFromURI(DOMString src, optional float weight); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">src</span>: The URI for the grammar.</li> + <li class="param"><span class="name">weight[optional]</span>: The weight the grammar.</li> + </ul> + </div> + </dd> + <dt class="method" id="::SpeechGrammarList::addFromString"> + <span class="methodName">addFromString</span> + </dt> + <dd> + <div class="brief">Appends a grammar to the grammars array + parameter based on text.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void addFromString(DOMString string, optional float weight); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">string</span>: The string for the grammar.</li> + <li class="param"><span class="name">weight[optional]</span>: The weight the grammar.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + </div> + + <!-- -------------------------------- --> + <h2 id="full-webidl">3. Full WebIDL</h2> +<pre class="webidl prettyprint"> +module Speech { + + enum ErrorCode {"no-speech", "aborted", "audio-capture", "network", "not-allowed", "service-not-allowed", "bad-grammar", "language-not-supported"}; + + [NoInterfaceObject] interface SpeechManagerObject { + readonly attribute SpeechManager speech; + }; + + Tizen implements SpeechManagerObject; + + [NoInterfaceObject] interface SpeechManager { + + void vocalizeString(DOMString speakString); + + }; + + [Constructor()] + + interface SpeechRecognition : EventTarget { + + attribute SpeechGrammarList grammars; + + attribute DOMString lang; + + attribute boolean continuous; + + attribute boolean interimResults; + + attribute unsigned long maxAlternatives; + + attribute DOMString serviceURI; + + void start(); + + void stop(); + + void abort(); + + attribute EventHandler onaudiostart; + + attribute EventHandler onsoundstart; + + attribute EventHandler onspeechstart; + + attribute EventHandler onspeechend; + + attribute EventHandler onsoundend; + + attribute EventHandler onaudioend; + + attribute EventHandler onresult; + + attribute EventHandler onnomatch; + + attribute EventHandler onerror; + + attribute EventHandler onstart; + + attribute EventHandler onend; + + }; + + [NoInterfaceObject] interface SpeechRecognitionError : Event { + + readonly attribute ErrorCode error; + + readonly attribute DOMString message; + + }; + + [NoInterfaceObject] interface SpeechRecognitionAlternative { + + readonly attribute DOMString transcript; + + readonly attribute float confidence; + + }; + + [NoInterfaceObject] interface SpeechRecognitionResult { + + readonly attribute unsigned long length; + + SpeechRecognitionAlternative item(unsigned long index); + + readonly attribute boolean final; + + }; + + [NoInterfaceObject] interface SpeechRecognitionResultList { + + readonly attribute unsigned long length; + + SpeechRecognitionResult item(unsigned long index); + + }; + + [NoInterfaceObject] interface SpeechRecognitionEvent : Event { + + readonly attribute unsigned long resultIndex; + + readonly attribute SpeechRecognitionResultList results; + + readonly attribute any interpretation; + + readonly attribute Document emma; + + }; + + [Constructor()] + + interface SpeechGrammar { + + attribute DOMString src; + + attribute float weight; + + }; + + [Constructor()] + + interface SpeechGrammarList { + + readonly attribute unsigned long length; + + SpeechGrammar item(unsigned long index); + + void addFromURI(DOMString src, optional float weight); + + void addFromString(DOMString string, optional float weight); + + }; +}; +</pre> + <div id="footer"> + <div class="copyright" align="center"> + Except as noted, this content - excluding the Code Examples - is + licensed under <a + href="http://creativecommons.org/licenses/by/3.0/legalcode" + target="_blank">Creative Commons Attribution 3.0</a> and all of the + Code Examples contained herein are licensed under <a + href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. + <br>For details, see the <a + href="https://www.tizen.org/content-license" target="_blank">Content + License</a>. + </div> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push([ '_setAccount', 'UA-25976949-1' ]); + _gaq.push([ '_setDomainName', 'tizen.org' ]); + _gaq.push([ '_trackPageview' ]); + + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' + : 'http://www') + + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); + </script> + </div> +</body> +</html> diff --git a/html/Vehicle.html b/html/Vehicle.html new file mode 100644 index 0000000..156de4b --- /dev/null +++ b/html/Vehicle.html @@ -0,0 +1,3351 @@ +<!DOCTYPE html PUBLIC "html"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link rel="stylesheet" type="text/css" href="tizen.css" media="screen"> +<script type="text/javascript" src="snippet.js"></script> +<title>Vehicle API</title> +</head> +<body id="content" onload="prettyPrint()"> + <div class="api" id="::Vehicle"> + <div class="title"> + <h1>Vehicle API</h1> + </div> + <div class="description"> + <p>Allows access to the vehicle API.</p> + </div> + <!-- -------------------------------- --> + <h2>Table of Contents</h2> + <ul class="toc"> + <li>1. <a href="#interfaces">Interfaces</a> + <ul class="toc"> + <li>1.1. <a href="#::Vehicle::VehicleManagerObject">VehicleManagerObject</a> + </li> + <li>1.2. <a href="#::Vehicle::Vehicle">Vehicle</a> + </li> + <li>1.3. <a href="#::Vehicle::VehiclePropertyType">VehiclePropertyType</a> + </li> + <li>1.4. <a href="#::Vehicle::VehiclePropertyError">VehiclePropertyError</a> + </li> + <li>1.5. <a href="#::Vehicle::VehicleSpeed">VehicleSpeed</a> + </li> + <li>1.6. <a href="#::Vehicle::EngineSpeed">EngineSpeed</a> + </li> + <li>1.7. <a href="#::Vehicle::VehiclePowerMode">VehiclePowerMode</a> + </li> + <li>1.8. <a href="#::Vehicle::TripMeter">TripMeter</a> + </li> + <li>1.9. <a href="#::Vehicle::Acceleration">Acceleration</a> + </li> + <li>1.10. <a href="#::Vehicle::Transmission">Transmission</a> + </li> + <li>1.11. <a href="#::Vehicle::CruiseControlStatus">CruiseControlStatus</a> + </li> + <li>1.12. <a href="#::Vehicle::WheelBrake">WheelBrake</a> + </li> + <li>1.13. <a href="#::Vehicle::LightStatus">LightStatus</a> + </li> + <li>1.14. <a href="#::Vehicle::InteriorLightStatus">InteriorLightStatus</a> + </li> + <li>1.15. <a href="#::Vehicle::Horn">Horn</a> + </li> + <li>1.16. <a href="#::Vehicle::Fuel">Fuel</a> + </li> + <li>1.17. <a href="#::Vehicle::EngineOil">EngineOil</a> + </li> + <li>1.18. <a href="#::Vehicle::Location">Location</a> + </li> + <li>1.19. <a href="#::Vehicle::ExteriorBrightness">ExteriorBrightness</a> + </li> + <li>1.20. <a href="#::Vehicle::Temperature">Temperature</a> + </li> + <li>1.21. <a href="#::Vehicle::RainSensor">RainSensor</a> + </li> + <li>1.22. <a href="#::Vehicle::WindshieldWiper">WindshieldWiper</a> + </li> + <li>1.23. <a href="#::Vehicle::HVAC">HVAC</a> + </li> + <li>1.24. <a href="#::Vehicle::WindowStatus">WindowStatus</a> + </li> + <li>1.25. <a href="#::Vehicle::Sunroof">Sunroof</a> + </li> + <li>1.26. <a href="#::Vehicle::ConvertibleRoof">ConvertibleRoof</a> + </li> + <li>1.27. <a href="#::Vehicle::VehicleId">VehicleId</a> + </li> + <li>1.28. <a href="#::Vehicle::Size">Size</a> + </li> + <li>1.29. <a href="#::Vehicle::FuelInfo">FuelInfo</a> + </li> + <li>1.30. <a href="#::Vehicle::VehicleType">VehicleType</a> + </li> + <li>1.31. <a href="#::Vehicle::Doors">Doors</a> + </li> + <li>1.32. <a href="#::Vehicle::TransmissionGearType">TransmissionGearType</a> + </li> + <li>1.33. <a href="#::Vehicle::WheelInformation">WheelInformation</a> + </li> + <li>1.34. <a href="#::Vehicle::Odometer">Odometer</a> + </li> + <li>1.35. <a href="#::Vehicle::Fluid">Fluid</a> + </li> + <li>1.36. <a href="#::Vehicle::Battery">Battery</a> + </li> + <li>1.37. <a href="#::Vehicle::TirePressure">TirePressure</a> + </li> + <li>1.38. <a href="#::Vehicle::TireTemperature">TireTemperature</a> + </li> + <li>1.39. <a href="#::Vehicle::SecurityAlert">SecurityAlert</a> + </li> + <li>1.40. <a href="#::Vehicle::ParkingBrake">ParkingBrake</a> + </li> + <li>1.41. <a href="#::Vehicle::ParkingLight">ParkingLight</a> + </li> + <li>1.42. <a href="#::Vehicle::HazardLight">HazardLight</a> + </li> + <li>1.43. <a href="#::Vehicle::AntilockBrakingSystem">AntilockBrakingSystem</a> + </li> + <li>1.44. <a href="#::Vehicle::TractionControlSystem">TractionControlSystem</a> + </li> + <li>1.45. <a href="#::Vehicle::VehicleTopSpeedLimit">VehicleTopSpeedLimit</a> + </li> + <li>1.46. <a href="#::Vehicle::AirbagStatus">AirbagStatus</a> + </li> + <li>1.47. <a href="#::Vehicle::DoorStatus">DoorStatus</a> + </li> + <li>1.48. <a href="#::Vehicle::SeatBeltStatus">SeatBeltStatus</a> + </li> + <li>1.49. <a href="#::Vehicle::OccupantStatus">OccupantStatus</a> + </li> + <li>1.50. <a href="#::Vehicle::ObstacleDistance">ObstacleDistance</a> + </li> + <li>1.51. <a href="#::Vehicle::NightMode">NightMode</a> + </li> + <li>1.52. <a href="#::Vehicle::DrivingMode">DrivingMode</a> + </li> + <li>1.53. <a href="#::Vehicle::VehiclePropertyCallback">VehiclePropertyCallback</a> + </li> + <li>1.54. <a href="#::Vehicle::VehiclePropertyErrorCallback">VehiclePropertyErrorCallback</a> + </li> + <li>1.55. <a href="#::Vehicle::VehiclePropertyListCallback">VehiclePropertyListCallback</a> + </li> + <li>1.56. <a href="#::Vehicle::SupportedPropertiesCallback">SupportedPropertiesCallback</a> + </li> + <li>1.57. <a href="#::Vehicle::DefrostDictionary">DefrostDictionary</a> + </li> + </ul> + </li> + <li>2. <a href="#full-webidl">Full WebIDL</a> + </li> + </ul> + + <hr> + <!-- -------------------------------- --> + + <h2 id="method-summary">Summary of Interfaces and Methods</h2> + <table class="informaltable"> + <thead> + <tr> + <th>Interface</th> + <th>Method</th> + </tr> + <tr> + <td><a href="#::Vehicle::VehicleManagerObject"> VehicleManagerObject</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Vehicle"> Vehicle</a></td> + <td> + DOMString[] <a href="#::Vehicle::Vehicle::supported">supported</a>(); <br> + any <a href="#::Vehicle::Vehicle::get">get</a>(DOMString objectType, optional short zone); <br> + void <a href="#::Vehicle::Vehicle::getAsync">getAsync</a>(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback, optional short zone); <br> + void <a href="#::Vehicle::Vehicle::subscribe">subscribe</a>(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional unsigned short zone, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); <br> + void <a href="#::Vehicle::Vehicle::set">set</a>(DOMString objectType, object value, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); <br> + void <a href="#::Vehicle::Vehicle::getHistory">getHistory</a>(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <a href="#::Vehicle::VehiclePropertyListCallback"><span class="typ">VehiclePropertyListCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); <br> + unsigned short[] <a href="#::Vehicle::Vehicle::listZones">listZones</a>(DOMString objectType);</td> + </tr> + <tr> + <td><a href="#::Vehicle::VehiclePropertyType"> VehiclePropertyType</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehiclePropertyError"> VehiclePropertyError</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehicleSpeed"> VehicleSpeed</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::EngineSpeed"> EngineSpeed</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehiclePowerMode"> VehiclePowerMode</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::TripMeter"> TripMeter</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Acceleration"> Acceleration</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Transmission"> Transmission</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::CruiseControlStatus"> CruiseControlStatus</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::WheelBrake"> WheelBrake</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::LightStatus"> LightStatus</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::InteriorLightStatus"> InteriorLightStatus</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Horn"> Horn</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Fuel"> Fuel</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::EngineOil"> EngineOil</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Location"> Location</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::ExteriorBrightness"> ExteriorBrightness</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Temperature"> Temperature</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::RainSensor"> RainSensor</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::WindshieldWiper"> WindshieldWiper</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::HVAC"> HVAC</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::WindowStatus"> WindowStatus</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Sunroof"> Sunroof</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::ConvertibleRoof"> ConvertibleRoof</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehicleId"> VehicleId</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Size"> Size</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::FuelInfo"> FuelInfo</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehicleType"> VehicleType</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Doors"> Doors</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::TransmissionGearType"> TransmissionGearType</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::WheelInformation"> WheelInformation</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Odometer"> Odometer</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Fluid"> Fluid</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::Battery"> Battery</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::TirePressure"> TirePressure</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::TireTemperature"> TireTemperature</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::SecurityAlert"> SecurityAlert</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::ParkingBrake"> ParkingBrake</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::ParkingLight"> ParkingLight</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::HazardLight"> HazardLight</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::AntilockBrakingSystem"> AntilockBrakingSystem</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::TractionControlSystem"> TractionControlSystem</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehicleTopSpeedLimit"> VehicleTopSpeedLimit</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::AirbagStatus"> AirbagStatus</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::DoorStatus"> DoorStatus</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::SeatBeltStatus"> SeatBeltStatus</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::OccupantStatus"> OccupantStatus</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::ObstacleDistance"> ObstacleDistance</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::NightMode"> NightMode</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::DrivingMode"> DrivingMode</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehiclePropertyCallback"> VehiclePropertyCallback</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehiclePropertyErrorCallback"> VehiclePropertyErrorCallback</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::VehiclePropertyListCallback"> VehiclePropertyListCallback</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::SupportedPropertiesCallback"> SupportedPropertiesCallback</a></td> + <td></td> + </tr> + <tr> + <td><a href="#::Vehicle::DefrostDictionary"> DefrostDictionary</a></td> + <td></td> + </tr> + </thead> + <tbody></tbody> + </table> + <!-- -------------------------------- --> + + <div class="interfaces" id="interfaces"> + <h2>1. Interfaces</h2> + <div class="interface" id="::Vehicle::VehicleManagerObject"> + <h3>1.1. VehicleManagerObject</h3> + <div class="brief">This interface defines what is instantiated + by the Tizen object by the Tizen Platform. There will be a + tizen.vehicle object that allows access to the functionality of the + Vehicle API.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface VehicleManagerObject { + readonly attribute <a href="#::Vehicle::Vehicle"><span class="typ">Vehicle</span></a> vehicle; +};</pre> +<pre class="webidl prettyprint">Tizen implements VehicleManagerObject;</pre> + </div> + + <div class="interface" id="::Vehicle::Vehicle"> + <h3>1.2. Vehicle</h3> + <div class="brief">The Vehicle interface defines access to vehicle functionality.</div> + <pre class="webidl prettyprint"> +[NoInterfaceObject] interface Vehicle { + + const unsigned short ZONE_None = 0; + + const unsigned short ZONE_Front = 0x01; + + const unsigned short ZONE_Middle = 0x02; + + const unsigned short ZONE_Right = 0x04; + + const unsigned short ZONE_Left = 0x08; + + const unsigned short ZONE_Rear = 0x10; + + const unsigned short ZONE_Center = 0x20; + + DOMString[] supported(); + + any get(DOMString objectType, optional short zone); + + void getAsync(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback, optional short zone); + + void subscribe(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional unsigned short zone, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); + + void set(DOMString objectType, object value, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); + + void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <a href="#::Vehicle::VehiclePropertyListCallback"><span class="typ">VehiclePropertyListCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); + + unsigned short[] listZones(DOMString objectType); +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::Vehicle::ZONE_None"><span + class="name">ZONE_None</span> + <div class="brief">It defines a vehicle property zone that represents all direction zones.</div></li> + <li class="const" id="::Vehicle::Vehicle::ZONE_Front"><span + class="name">ZONE_Front</span> + <div class="brief">It defines a vehicle property zone that represents the front zone.</div></li> + <li class="const" id="::Vehicle::Vehicle::ZONE_Middle"><span + class="name">ZONE_Middle</span> + <div class="brief">It defines a vehicle property zone that represents the middle zone.</div></li> + <li class="const" id="::Vehicle::Vehicle::ZONE_Right"><span + class="name">ZONE_Right</span> + <div class="brief">It defines a vehicle property zone that represents the right zone.</div></li> + <li class="const" id="::Vehicle::Vehicle::ZONE_Left"><span + class="name">ZONE_Left</span> + <div class="brief">It defines a vehicle property zone that represents the left zone.</div></li> + <li class="const" id="::Vehicle::Vehicle::ZONE_Rear"><span + class="name">ZONE_Rear</span> + <div class="brief">It defines a vehicle property zone that represents the rear zone.</div></li> + <li class="const" id="::Vehicle::Vehicle::ZONE_Center"><span + class="name">ZONE_Center</span> + <div class="brief">It defines a vehicle property zone that represents the center zone.</div></li> + </ul> + </div> + <div class="methods"> + <h4>Methods</h4> + + <dl> + <dt class="method" id="::Vehicle::Vehicle::supported"> + <span class="methodName">supported</span> + </dt> + <dd> + <div class="brief">Returns supported vehicle property types.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +DOMString[] supported(); +<span class="pln"></span> +</pre> + </div> + <div class="returntype"> + <p> + <span class="return">Return value:</span> + </p> + A vehicle property type array. + </div> + </dd> + <dt class="method" id="::Vehicle::Vehicle::get"> + <span class="methodName">get</span> + </dt> + <dd> + <div class="brief">Fetches the current value for the vehicle property type.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +any get(DOMString objectType, optional short zone); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "NightMode".</li> + <li class="param"><span class="name">zone[optional]</span>: The specific zone in which the vehicle property type is in.</li> + </ul> + </div> + <div class="returntype"> + <p> + <span class="return">Return value:</span> + </p> + A vehicle property value object. + </div> + </dd> + <dt class="method" id="::Vehicle::Vehicle::getAsync"> + <span class="methodName">getAsync</span> + </dt> + <dd> + <div class="brief">Asynchronously fetches the current value for the vehicle property type.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void getAsync(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback, optional short zone); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "Horn".</li> + <li class="param"><span class="name">VehiclePropertyCallback</span>: The method to call when the requested vehicle property type is valid.</li> + <li class="param"><span class="name">errorCallback[optional]</span>: The method to call when an error occurs.</li> + <li class="param"><span class="name">zone[optional]</span>: The specific zone in which the vehicle property type is in.</li> + </ul> + </div> + </dd> + <dt class="method" id="::Vehicle::Vehicle::subscribe"> + <span class="methodName">subscribe</span> + </dt> + <dd> + <div class="brief">Subscribes to the given property and get callbacks when it changes.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void subscribe(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional unsigned short zone, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "Transmission".</li> + <li class="param"><span class="name">successCallback</span>: The method to call when the requested vehicle property value is changed.</li> + <li class="param"><span class="name">zone[optional]</span>: The specific zone in which the vehicle property type is in.</li> + <li class="param"><span class="name">errorCallback[optional]</span>: The method to call when an error occurs.</li> + </ul> + </div> + </dd> + <dt class="method" id="::Vehicle::Vehicle::set"> + <span class="methodName">set</span> + </dt> + <dd> + <div class="brief">Sets value for the given object type.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void set(DOMString objectType, object value, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">objectType</span>: The vehicle property type to be set, i.e., "EngineSpeed".</li> + <li class="param"><span class="name">value</span>: The vehicle property value to be set, that contains zone information i.e., "Zone": 0.</li> + <li class="param"><span class="name">errorCallback[optional]</span>: The method to call when an error occurs.</li> + </ul> + </div> + </dd> + <dt class="method" id="::Vehicle::Vehicle::getHistory"> + <span class="methodName">getHistory</span> + </dt> + <dd> + <div class="brief">Gets values for a given objectType within + a certain past time period between 'startTime' and 'endTime'.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <a href="#::Vehicle::VehiclePropertyListCallback"><span class="typ">VehiclePropertyListCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "VehicleSpeed".</li> + <li class="param"><span class="name">zone</span>: The specific zone in which the vehicle type is located or 0 if no zone.</li> + <li class="param"><span class="name">startTime</span>: Starting period of time.</li> + <li class="param"><span class="name">endTime</span>: Ending period of time.</li> + <li class="param"><span class="name">successCallback</span>: Callback with the result of the method call.</li> + <li class="param"><span class="name">errorCallback[optional]</span>: The method to call when an error occurs.</li> + </ul> + </div> + </dd> + <dt class="method" id="::Vehicle::Vehicle::listZones"> + <span class="methodName">listZones</span> + </dt> + <dd> + <div class="brief"> + Lists zones available for a given object type. + </div> + <div class="synopsis"> +<pre class="signature prettyprint"> +unsigned short[] listZones(DOMString objectType); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "HVAC".</li> + </ul> + </div> + <div class="returntype"> + <p> + <span class="return">Return value:</span> + </p> + An array. + </div> + </dd> + </dl> + </div> + </div> + + <div class="interface" id="::Vehicle::VehiclePropertyType"> + <h3>1.3. VehiclePropertyType</h3> + <div class="brief">The interface defines vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface VehiclePropertyType : Event { + + attribute DOMTimeStamp time; + + attribute short zone; + + attribute DOMString source; + +}; +</pre> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::VehiclePropertyType::time"><span class="attrName"><span + class="type">DOMTimeStamp </span><span class="name">time</span></span> + <div class="brief">An attribute to set time of generating the vehicle property.</div></li> + <li class="attribute" id="::Vehicle::VehiclePropertyType::zone"><span class="attrName"><span + class="type">short </span><span class="name">zone</span></span> + <div class="brief">An attribute to set zone of the vehicle property. By default, this attribute is set to 0.</div></li> + <li class="attribute" id="::Vehicle::VehiclePropertyType::source"><span class="attrName"><span + class="type">DOMString </span><span class="name">source</span></span> + <div class="brief">An attribute to set source of the vehicle property. By default, this attribute is set to 0.</div></li> + </ul> + </div> + + </div> + + <div class="interface" id="::Vehicle::VehiclePropertyError"> + <h3>1.4. VehiclePropertyError</h3> + <div class="brief">The interface defines vehicle property error code and message.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface VehiclePropertyError { + + const unsigned short PERMISSION_DENIED = 1; + + const unsigned short PROPERTY_UNAVAILABLE = 2; + + const unsigned short TIMEOUT = 3; + + const unsigned short UNKNOWN = 10; + + attribute unsigned short code; + + attribute DOMString message; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::VehiclePropertyError::PERMISSION_DENIED"><span + class="name">PERMISSION_DENIED</span> + <div class="brief">It defines an error code of no accessing permissions.</div></li> + <li class="const" id="::Vehicle::VehiclePropertyError::PROPERTY_UNAVAILABLE"><span + class="name">PROPERTY_UNAVAILABLE</span> + <div class="brief">It defines an error code of unsupported property.</div></li> + <li class="const" id="::Vehicle::VehiclePropertyError::TIMEOUT"><span + class="name">TIMEOUT</span> + <div class="brief">It defines an error code of accessing timeout.</div></li> + <li class="const" id="::Vehicle::VehiclePropertyError::UNKNOWN"><span + class="name">UNKNOWN</span> + <div class="brief">It defines an error code of unknown errors.</div></li> + </ul> + </div> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::VehiclePropertyError::code"><span class="attrName"><span + class="type">unsigned short </span><span class="name">code</span></span> + <div class="brief">An attribute to return an error code from PERMISSION_DENIED, PROPERTY_UNAVAILABLE, TIMEOUT and UNKNOWN.</div></li> + <li class="attribute" id="::Vehicle::VehiclePropertyError::message"><span class="attrName"><span + class="type">DOMString </span><span class="name">time</span></span> + <div class="brief">An attribute to return error message.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::VehicleSpeed"> + <h3>1.5. VehicleSpeed</h3> + <div class="brief">The interface defines vehicle speed of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface VehicleSpeed : VehiclePropertyType { + + attribute unsigned long vehicleSpeed; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::VehicleSpeed::vehicleSpeed"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> vehicleSpeed</span></span> + <div class="brief">An attribute to return vehicle speed in kilometers per hour.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::EngineSpeed"> + <h3>1.6. EngineSpeed</h3> + <div class="brief">The interface defines engine speed of vehicle property type.</div> + <pre class="webidl prettyprint"> +[NoInterfaceObject] interface EngineSpeed : VehiclePropertyType { + + attribute unsigned long engineSpeed; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::EngineSpeed::engineSpeed"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> engineSpeed</span></span> + <div class="brief">An attribute to return engine speed in rotations per minute.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::VehiclePowerMode"> + <h3>1.7. VehiclePowerMode</h3> + <div class="brief">The interface defines vehicle power mode of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface VehiclePowerMode : VehiclePropertyType { + + const unsigned short VEHICLEPOWERMODE_OFF = 0; + + const unsigned short VEHICLEPOWERMODE_ACCESSORY1 = 1; + + const unsigned short VEHICLEPOWERMODE_ACCESSORY2 = 2; + + const unsigned short VEHICLEPOWERMODE_RUN = 3; + + attribute octet vehiclePowerMode; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::VehiclePowerMode::VEHICLEPOWERMODE_OFF"><span + class="name">VEHICLEPOWERMODE_OFF</span> + <div class="brief">It defines a vehicle power mode that represents off mode.</div></li> + <li class="const" id="::Vehicle::VehiclePowerMode::VEHICLEPOWERMODE_ACCESSORY1"><span + class="name">VEHICLEPOWERMODE_ACCESSORY1</span> + <div class="brief">It defines a vehicle power mode that represents accessory1 mode.</div></li> + <li class="const" id="::Vehicle::VehiclePowerMode::VEHICLEPOWERMODE_ACCESSORY2"><span + class="name">VEHICLEPOWERMODE_ACCESSORY2</span> + <div class="brief">It defines a vehicle power mode that represents accessory2 mode.</div></li> + <li class="const" id="::Vehicle::VehiclePowerMode::VEHICLEPOWERMODE_RUN"><span + class="name">VEHICLEPOWERMODE_RUN</span> + <div class="brief">It defines a vehicle power mode that represents run mode.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::VehiclePowerMode::vehiclePowerMode"><span class="attrName"><span + class="type">octet</span><span class="name"> vehiclePowerMode</span></span> + <div class="brief">An attribute to return vehicle power mode (see VEHICLEPOWERMODE Constants).</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::TripMeter"> + <h3>1.8. TripMeter</h3> + <div class="brief">The interface defines trip meter of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface TripMeter : VehiclePropertyType { + + attribute unsigned long[] tripMeters; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::TripMeter::tripMeters"><span class="attrName"> + <span class="type">unsigned long[]</span><span class="name"> tripMeters</span></span> + <div class="brief">An attribute to return trip meters. Changing any items in the array will reset the item's value to '0'.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Acceleration"> + <h3>1.9. Acceleration</h3> + <div class="brief">The interface defines acceleration of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Acceleration : VehiclePropertyType { + + attribute unsigned long x; + + attribute unsigned long y; + + attribute unsigned long z; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Acceleration::x"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> x</span></span> + <div class="brief">An attribute to return acceleration on the "X" axis as 1/1000 G (gravitational force).</div></li> + <li class="attribute" id="::Vehicle::Acceleration::y"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> y</span></span> + <div class="brief">An attribute to return acceleration on the "Y" axis as 1/1000 G (gravitational force).</div></li> + <li class="attribute" id="::Vehicle::Acceleration::z"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> z</span></span> + <div class="brief">An attribute to return acceleration on the "Z" axis as 1/1000 G (gravitational force).</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Transmission"> + <h3>1.10. Transmission</h3> + <div class="brief">The interface defines transmission of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Transmission : VehiclePropertyType { + + const unsigned short TRANSMISSIONPOSITION_NEUTRAL = 0; + + const unsigned short TRANSMISSIONPOSITION_FIRST = 1; + + const unsigned short TRANSMISSIONPOSITION_SECOND = 2; + + const unsigned short TRANSMISSIONPOSITION_THIRD = 3; + + const unsigned short TRANSMISSIONPOSITION_FORTH = 4; + + const unsigned short TRANSMISSIONPOSITION_FIFTH = 5; + + const unsigned short TRANSMISSIONPOSITION_SIXTH = 6; + + const unsigned short TRANSMISSIONPOSITION_SEVENTH = 7; + + const unsigned short TRANSMISSIONPOSITION_EIGHTH = 8; + + const unsigned short TRANSMISSIONPOSITION_NINTH = 9; + + const unsigned short TRANSMISSIONPOSITION_TENTH = 10; + + const unsigned short TRANSMISSIONPOSITION_CVT = 64; + + const unsigned short TRANSMISSIONPOSITION_REVERSE = 128; + + const unsigned short TRANSMISSIONPOSITION_PARK = 255; + + const unsigned short TRANSMISSIONMODE_NORMAL = 0; + + const unsigned short TRANSMISSIONMODE_SPORT = 1; + + const unsigned short TRANSMISSIONMODE_ECONOMY = 2; + + const unsigned short TRANSMISSIONMODE_OEMCUSTOM1 = 3; + + const unsigned short TRANSMISSIONMODE_OEMCUSTOM2 = 4; + + attribute octet gearPosition; + + attribute octet mode; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_NEUTRAL"><span + class="name">TRANSMISSIONPOSITION_NEUTRAL</span> + <div class="brief">It defines a transmission position that is neutral position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_FIRST"><span + class="name">TRANSMISSIONPOSITION_FIRST</span> + <div class="brief">It defines a transmission position that is first position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_SECOND"><span + class="name">TRANSMISSIONPOSITION_SECOND</span> + <div class="brief">It defines a transmission position that is second position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_THIRD"><span + class="name">TRANSMISSIONPOSITION_THIRD</span> + <div class="brief">It defines a transmission position that is third position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_FORTH"><span + class="name">TRANSMISSIONPOSITION_FORTH</span> + <div class="brief">It defines a transmission position that is forth position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_FIFTH"><span + class="name">TRANSMISSIONPOSITION_FIFTH</span> + <div class="brief">It defines a transmission position that is fifth position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_SIXTH"><span + class="name">TRANSMISSIONPOSITION_SIXTH</span> + <div class="brief">It defines a transmission position that is sixth position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_SEVENTH"><span + class="name">TRANSMISSIONPOSITION_SEVENTH</span> + <div class="brief">It defines a transmission position that is seventh position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_EIGHTH"><span + class="name">TRANSMISSIONPOSITION_EIGHTH</span> + <div class="brief">It defines a transmission position that is eighth position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_NINTH"><span + class="name">TRANSMISSIONPOSITION_NINTH</span> + <div class="brief">It defines a transmission position that is ninth position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_TENTH"><span + class="name">TRANSMISSIONPOSITION_TENTH</span> + <div class="brief">It defines a transmission position that is tenth position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_CVT"><span + class="name">TRANSMISSIONPOSITION_CVT</span> + <div class="brief">It defines a transmission position that is cvt position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_REVERSE"><span + class="name">TRANSMISSIONPOSITION_REVERSE</span> + <div class="brief">It defines a transmission position that is reverse position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_PARK"><span + class="name">TRANSMISSIONPOSITION_PARK</span> + <div class="brief">It defines a transmission position that is park position.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_NORMAL"><span + class="name">TRANSMISSIONMODE_NORMAL</span> + <div class="brief">It defines a transmission mode that represents normal mode.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_SPORT"><span + class="name">TRANSMISSIONMODE_SPORT</span> + <div class="brief">It defines a transmission mode that represents sport mode.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_ECONOMY"><span + class="name">TRANSMISSIONMODE_ECONOMY</span> + <div class="brief">It defines a transmission mode that represents economy mode.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_OEMCUSTOM1"><span + class="name">TRANSMISSIONMODE_OEMCUSTOM1</span> + <div class="brief">It defines a transmission mode that represents oemcustom1 mode.</div></li> + <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_OEMCUSTOM2"><span + class="name">TRANSMISSIONMODE_OEMCUSTOM2</span> + <div class="brief">It defines a transmission mode that represents oemcustom2 mode.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Transmission::gearPosition"><span class="attrName"><span + class="type">octet</span><span class="name"> gearPosition</span></span> + <div class="brief">An attribute to return transmission gear position (see TRANSMISSIONPOSITION Constants).</div></li> + <li class="attribute" id="::Vehicle::Transmission::mode"><span class="attrName"><span + class="type">octet</span><span class="name"> mode</span></span> + <div class="brief">An attribute to return transmission mode (see TRANSMISSIONMODE Constants).</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::CruiseControlStatus"> + <h3>1.11. CruiseControlStatus</h3> + <div class="brief">The interface defines cruise control status of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface CruiseControlStatus : VehiclePropertyType { + + attribute boolean activated; + + attribute unsigned short speed; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::CruiseControlStatus::activated"><span class="attrName"> + <span class="type">boolean</span><span class="name"> activated</span></span> + <div class="brief"> An attribute to return whether or not the cruise control system is active (true) or inactive (false).</div></li> + <li class="attribute" id="::Vehicle::CruiseControlStatus::speed"><span class="attrName"> + <span class="type">unsigned short</span><span class="name"> speed</span></span> + <div class="brief"> An attribute to return target cruise control speed in kilometers per hour (kph).</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::WheelBrake"> + <h3>1.12. WheelBrake</h3> + <div class="brief">The interface defines wheel brake of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface WheelBrake : VehiclePropertyType { + + attribute boolean engaged; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id=":Vehicle::WheelBrake::engaged"><span class="attrName"><span + class="type">boolean</span><span class="name"> engaged</span></span> + <div class="brief">An attribute to return wheel brake status, engaged (true) or disengaged (false).</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::LightStatus"> + <h3>1.13. LightStatus</h3> + <div class="brief">The interface defines light status of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface LightStatus : VehiclePropertyType { + + attribute boolean head; + + attribute boolean rightTurn; + + attribute boolean leftTurn; + + attribute boolean brake; + + attribute boolean fog; + + attribute boolean hazard; + + attribute boolean parking; + + attribute boolean highBeam; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id=":Vehicle::LightStatus::head"><span class="attrName"><span + class="type">boolean</span><span class="name"> head</span></span> + <div class="brief"> An attribute to return headlight status, on (true) or off (false).</div></li> + <li class="attribute" id=":Vehicle::LightStatus::rightTurn"><span class="attrName"><span + class="type">boolean</span><span class="name"> rightTurn</span></span> + <div class="brief"> An attribute to return right turn signal status, on (true) or off (false).</div></li> + <li class="attribute" id=":Vehicle::LightStatus::leftTurn"><span class="attrName"><span + class="type">boolean</span><span class="name"> leftTurn</span></span> + <div class="brief"> An attribute to return left turn signal status, on (true) or off (false).</div></li> + <li class="attribute" id=":Vehicle::LightStatus::brake"><span class="attrName"><span + class="type">boolean</span><span class="name"> brake</span></span> + <div class="brief">An attribute to return brake signal light status, on (true) or off (false).</div></li> + <li class="attribute" id=":Vehicle::LightStatus::fog"><span class="attrName"><span + class="type">boolean</span><span class="name"> fog</span></span> + <div class="brief">An attribute to return fog light status, on (true) or off (false).</div></li> + <li class="attribute" id=":Vehicle::LightStatus::hazard"><span class="attrName"><span + class="type">boolean</span><span class="name"> hazard</span></span> + <div class="brief">An attribute to return hazard light status, on (true) or off (false). </div></li> + <li class="attribute" id=":Vehicle::LightStatus::parking"><span class="attrName"><span + class="type">boolean</span><span class="name"> parking</span></span> + <div class="brief">An attribute to return parking light status, on (true) or off (false).</div></li> + <li class="attribute" id=":Vehicle::LightStatus::highBeam"><span class="attrName"><span + class="type">boolean</span><span class="name"> highBeam</span></span> + <div class="brief">An attribute to return high beam status, on (true) or off (false).</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::InteriorLightStatus"> + <h3>1.14. InteriorLightStatus</h3> + <div class="brief">The interface defines interior light status of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface InteriorLightStatus : VehiclePropertyType { + + attribute boolean passenger; + + attribute boolean driver; + + attribute boolean center; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::InteriorLightStatus::passenger"><span class="attrName"><span + class="type">boolean</span><span class="name"> passenger</span></span> + <div class="brief">An attribute to return passenger interior light status, on (true) or off (false).</div></li> + <li class="attribute" id="::Vehicle::InteriorLightStatus::driver"><span class="attrName"><span + class="type">boolean</span><span class="name"> driver</span></span> + <div class="brief"> An attribute to return driver interior light status, on (true) or off (false).</div></li> + <li class="attribute" id="::Vehicle::InteriorLightStatus::center"><span class="attrName"><span + class="type">boolean</span><span class="name"> center</span></span> + <div class="brief"> An attribute to return center interior light status, on (true) or off (false).</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Horn"> + <h3>1.15. Horn</h3> + <div class="brief">The interface defines horn of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Horn : VehiclePropertyType { + + attribute boolean on; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Horn::on"><span class="attrName"><span + class="type">boolean</span><span class="name"> on</span></span> + <div class="brief">An attribute to return horn status, on (true) or off (false).</div></li> + </ul> + </div> + </div> + <div class="interface" id="::Vehicle::Fuel"> + <h3>1.16. Fuel</h3> + <div class="brief">The interface defines fuel of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Fuel : VehiclePropertyType { + + attribute unsigned short level; + + attribute unsigned short range; + + attribute unsigned short instantConsumption; + + attribute unsigned short instantEconomy; + + attribute unsigned short averageEconomy; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Fuel::level"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> level</span></span> + <div class="brief">An attribute to return fuel level as a percentage of fullness.</div></li> + <li class="attribute" id="::Vehicle::Fuel::range"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> range</span></span> + <div class="brief">An attribute to return estimated fuel range in kilometers.</div></li> + <li class="attribute" id="::Vehicle::Fuel::instantConsumption"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> instantConsumption</span></span> + <div class="brief">An attribute to return instant fuel consumption in milliliters of fuel per second. </div></li> + <li class="attribute" id="::Vehicle::Fuel::instantEconomy"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> instantEconomy</span></span> + <div class="brief">An attribute to return instant fuel economy in kilometers per liter of fuel. </div></li> + <li class="attribute" id="::Vehicle::Fuel::averageEconomy"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> averageEconomy</span></span> + <div class="brief">An attribute to return average fuel economy in kilometers per liter of fuel since last reset. + Setting this to any value should reset the counter to 0.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::EngineOil"> + <h3>1.17. EngineOil</h3> + <div class="brief">The interface defines engine oil of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface EngineOil : VehiclePropertyType { + + attribute unsigned short remaining; + + attribute long temperature; + + attribute unsigned short pressure; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::EngineOil::remaining"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> remaining</span></span> + <div class="brief">An attribute to return remaining engine oil as percentage of fullness.</div></li> + <li class="attribute" id="::Vehicle::EngineOil::temperature"><span class="attrName"><span + class="type">long</span><span class="name"> temperature</span></span> + <div class="brief"> An attribute to return engine oil temperature in Celcius.</div></li> + <li class="attribute" id="::Vehicle::EngineOil::pressure"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> pressure</span></span> + <div class="brief"> An attribute to return engine oil pressure in kpa.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Location"> + <h3>1.18. Location</h3> + <div class="brief">The interface defines location of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Location : VehiclePropertyType { + + attribute double latitude; + + attribute double longitude; + + attribute double altitude; + + attribute unsigned short direction; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Location::latitude"><span class="attrName"><span + class="type">double</span><span class="name"> latitude</span></span> + <div class="brief">An attribute to return latitude in Deg.Min (-180, +180).</div></li> + <li class="attribute" id="::Vehicle::Location::longitude"><span class="attrName"><span + class="type">double</span><span class="name"> longitude</span></span> + <div class="brief">An attribute to return longitude in Deg.Min (-90, +90). </div></li> + <li class="attribute" id="::Vehicle::Location::altitude"><span class="attrName"><span + class="type">double</span><span class="name"> altitude</span></span> + <div class="brief">An attribute to return altitude in meters above sea-level (0). </div></li> + <li class="attribute" id="::Vehicle::Location::direction"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> direction</span></span> + <div class="brief">An attribute to return direction in Degrees (0-360). </div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::ExteriorBrightness"> + <h3>1.19. ExteriorBrightness</h3> + <div class="brief">The interface defines exterior brightness of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface ExteriorBrightness : VehiclePropertyType { + + attribute unsigned long exteriorBrightness; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::ExteriorBrightness::exteriorBrightness"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> exteriorBrightness</span></span> + <div class="brief"> An attribute to return the brightness outside the vehicle in lux.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Temperature"> + <h3>1.20. Temperature</h3> + <div class="brief">The interface defines temperature of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Temperature : VehiclePropertyType { + + attribute short interior; + + attribute short exterior; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Temperature::interior"><span class="attrName"><span + class="type">short</span><span class="name"> interior</span></span> + <div class="brief">An attribute to return the temperature of the interior of the vehicle in celcius.</div></li> + <li class="attribute" id="::Vehicle::Temperature::exterior"><span class="attrName"><span + class="type">short</span><span class="name"> exterior</span></span> + <div class="brief"> An attribute to return the temperature of the exterior of the vehicle in celcius.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::RainSensor"> + <h3>1.21. RainSensor</h3> + <div class="brief">The interface defines rain sensor of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface RainSensor : VehiclePropertyType { + + attribute unsigned short rainSensor; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::RainSensor::rainSensor"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> rainSensor</span></span> + <div class="brief">An attribute to return level of rain intensity, 0: No Rain - 10: Heaviest Rain.</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::WindshieldWiper"> + <h3>1.22. WindshieldWiper</h3> + <div class="brief">The interface defines windshield wiper of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface WindshieldWiper : VehiclePropertyType { + + const unsigned short WIPERSPEED_OFF = 0; + + const unsigned short WIPERSPEED_SLOWEST = 1; + + const unsigned short WIPERSPEED_FASTEST = 5; + + const unsigned short WIPERSPEED_AUTO = 10; + + attribute unsigned short windshieldWiper; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::WindshieldWiper::WIPERSPEED_OFF"><span + class="name">WIPERSPEED_OFF</span> + <div class="brief">It defines the windshield wiper speed that is off status.</div></li> + <li class="const" id="::Vehicle::WindshieldWiper::WIPERSPEED_SLOWEST"><span + class="name">WIPERSPEED_SLOWEST</span> + <div class="brief">It defines the windshield wiper speed that is slowest status.</div></li> + <li class="const" id="::Vehicle::WindshieldWiper::WIPERSPEED_FASTEST"><span + class="name">WIPERSPEED_FASTEST</span> + <div class="brief">It defines the windshield wiper speed that is fastest status.</div></li> + <li class="const" id="::Vehicle::WindshieldWiper::WIPERSPEED_AUTO"><span + class="name">WIPERSPEED_AUTO</span> + <div class="brief">It defines the windshield wiper speed that is auto status.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::WindshieldWiper::windshieldWiper"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> windshieldWiper</span></span> + <div class="brief">An attribute to return Level of windshield whiper speed (see WIPERSPEED Constants).</div></li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::HVAC"> + <h3>1.23. HVAC</h3> + <div class="brief">The interface defines HVAC of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface HVAC : VehiclePropertyType { + + const unsigned short AIRFLOWDIRECTION_FRONTPANEL = 0; + + const unsigned short AIRFLOWDIRECTION_FLOORDUCT = 0x01; + + const unsigned short AIRFLOWDIRECTION_FRONT = 0x02; + + const unsigned short AIRFLOWDIRECTION_DEFROSTER = 0x04; + + attribute unsigned short airflowDirection; + + attribute unsigned short fanSpeed; + + attribute unsigned short targetTemperature; + + attribute boolean airConditioning; + + attribute boolean airRecirculation; + + attribute boolean heater; + + attribute boolean steeringWheelHeater; + + attribute boolean seatHeater; + + attribute boolean seatCooler; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::HVAC::AIRFLOWDIRECTION_FRONTPANEL"><span + class="name">AIRFLOWDIRECTION_FRONTPANEL</span> + <div class="brief">It defines an air flow direction that is front panel direction.</div></li> + <li class="const" id="::Vehicle::HVAC::AIRFLOWDIRECTION_FLOORDUCT"><span + class="name">AIRFLOWDIRECTION_FLOORDUCT</span> + <div class="brief">It defines an air flow direction that is floor duct panel direction.</div></li> + <li class="const" id="::Vehicle::HVAC::AIRFLOWDIRECTION_FRONT"><span + class="name">AIRFLOWDIRECTION_FRONT</span> + <div class="brief">It defines an air flow direction that is front direction.</div></li> + <li class="const" id="::Vehicle::HVAC::AIRFLOWDIRECTION_DEFROSTER"><span + class="name">AIRFLOWDIRECTION_DEFROSTER</span> + <div class="brief">It defines an air flow direction that is defroster direction.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::HVAC::airflowDirection"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> airflowDirection</span></span> + <div class="brief"> + An attribute to return airflow direction (See AIRFLOWDIRECTION Constants). + </div> + </li> + <li class="attribute" id="::Vehicle::HVAC::fanSpeed"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> fanSpeed</span></span> + <div class="brief"> + An attribute to return speed of the fan (0-7). + </div> + </li> + <li class="attribute" id="::Vehicle::HVAC::targetTemperature"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> targetTemperature</span></span> + <div class="brief"> + An attribute to return target desired temperature in celcius. + </div> + </li> + <li class="attribute" id="::Vehicle::HVAC::airConditioning"><span class="attrName"><span + class="type">boolean</span><span class="name"> targetTemperature</span></span> + <div class="brief"> + An attribute to return air conditioning, on (true) or off (false). + </div> + </li> + <li class="attribute" id="::Vehicle::HVAC::recirculation"><span class="attrName"><span + class="type">boolean</span><span class="name"> airConditioning</span></span> + <div class="brief"> + An attribute to return air recirculation, on (true) or off (false). + </div> + </li> + <li class="attribute" id="::Vehicle::HVAC::heater"><span class="attrName"><span + class="type">boolean</span><span class="name"> heater</span></span> + <div class="brief"> + An attribute to return heater status, on (true) or off (false). + </div> + </li> + <li class="attribute" id="::Vehicle::HVAC::steeringWheelHeater"><span class="attrName"><span + class="type">boolean</span><span class="name"> steeringWheelHeater</span></span> + <div class="brief"> + An attribute to return steering wheel heater, on (true) or off (false). + </div> + </li> + <li class="attribute" id="::Vehicle::HVAC::seatHeater"><span class="attrName"><span + class="type">boolean</span><span class="name"> seatHeater</span></span> + <div class="brief"> + An attribute to return seat heater status:, on (true) or off (false). + </div> + </li> + <li class="attribute" id="::Vehicle::HVAC::seatCooler"><span class="attrName"><span + class="type">boolean</span><span class="name"> seatCooler</span></span> + <div class="brief"> + An attribute to return seat cooler status:, on (true) or off (false). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::WindowStatus"> + <h3>1.24. WindowStatus</h3> + <div class="brief">The interface defines window status of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface WindowStatus : VehiclePropertyType { + + const unsigned short WINDOWLOCATION_DRIVER = 0; + + const unsigned short WINDOWLOCATION_PASSENGER = 1; + + const unsigned short WINDOWLOCATION_LEFTREAR = 2; + + const unsigned short WINDOWLOCATION_RIGHTREAR = 3; + + const unsigned short WINDOWLOCATION_REAR = 4; + + attribute unsigned short openness; + + attribute boolean defrost; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_DRIVER"><span + class="name">WINDOWLOCATION_DRIVER</span> + <div class="brief">It defines the window location that is driver zone.</div></li> + <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_PASSENGER"><span + class="name">WINDOWLOCATION_PASSENGER</span> + <div class="brief">It defines the window location that is passenger zone.</div></li> + <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_LEFTREAR"><span + class="name">WINDOWLOCATION_LEFTREAR</span> + <div class="brief">It defines the window location that is left rear zone.</div></li> + <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_RIGHTREAR"><span + class="name">WINDOWLOCATION_RIGHTREAR</span> + <div class="brief">It defines the window location that is right rear zone.</div></li> + <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_REAR"><span + class="name">WINDOWLOCATION_REAR</span> + <div class="brief">It defines the window location that is rear zone.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::WindowStatus::openness"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> openness</span></span> + <div class="brief"> + An attribute to return window openness percentage (100% fully open, 0% fully closed) for the window location (see WINDOWLOCATION Constants). + </div> + </li> + <li class="attribute" id="::Vehicle::WindowStatus::defrost"><span class="attrName"><span + class="type">boolean</span><span class="name"> defrost</span></span> + <div class="brief"> + An attribute to return the defroster status of the window, on (true) or off (false). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Sunroof"> + <h3>1.25. Sunroof</h3> + <div class="brief">The interface defines sunroof of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Sunroof : VehiclePropertyType { + + attribute unsigned short openness; + + attribute unsigned short tilt; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Sunroof::openness"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> openness</span></span> + <div class="brief"> + An attribute to return window status for sunroof openness percentage. + </div> + </li> + <li class="attribute" id="::Vehicle::Sunroof::tilt"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> tilt</span></span> + <div class="brief"> + An attribute to return tilt status for sunroof percentage. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::ConvertibleRoof"> + <h3>1.26. ConvertibleRoof</h3> + <div class="brief">The interface defines convertible roof of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface ConvertibleRoof : VehiclePropertyType { + + attribute unsigned short openness; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::ConvertibleRoof::openness"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> openness</span></span> + <div class="brief"> + An attribute to return window status for sunroof openness percentage. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::VehicleId"> + <h3>1.27. VehicleId</h3> + <div class="brief">The interface defines vehicle id of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface VehicleId : VehiclePropertyType { + + attribute DOMString WMI; + + attribute DOMString VIN; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id=":Vehicle::VehicleIdWMI"><span class="attrName"><span + class="type">DOMString</span><span class="name"> WMI</span></span> + <div class="brief"> + An attribute to return World Manufacturer Identifier (WMI) is defined by SAE ISO 3780:2009. + </div> + </li> + <li class="attribute" id=":Vehicle::VehicleIdVIN"><span class="attrName"><span + class="type">DOMString</span><span class="name"> VIN</span></span> + <div class="brief"> + An attribute to return Vehicle Identification Number (VIN) is defined by ISO 3779. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Size"> + <h3>1.28. Size</h3> + <div class="brief">The interface defines size of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Size : VehiclePropertyType { + + attribute unsigned long width; + + attribute unsigned long height; + + attribute unsigned long length; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Size::width"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> width</span></span> + <div class="brief"> + An attribute to return width of vehicle in mm. + </div> + </li> + <li class="attribute" id="::Vehicle::Size::height"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> height</span></span> + <div class="brief"> + An attribute to return height of vehicle in mm. + </div> + </li> + <li class="attribute" id="::Vehicle::Size::length"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> length</span></span> + <div class="brief"> + An attribute to return length of vehicle in mm. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::FuelInfo"> + <h3>1.29. FuelInfo</h3> + <div class="brief">The interface defines fuel information of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface FuelInfo : VehiclePropertyType { + + const unsigned short FUELTYPE_GASOLINE = 0; + + const unsigned short FUELTYPE_HIGH_OCTANE = 1; + + const unsigned short FUELTYPE_DIESEL = 2; + + const unsigned short FUELTYPE_ELECTRIC = 3; + + const unsigned short FUELTYPE_HYDROGEN = 4; + + const unsigned short REFUELPOSITION_LEFT = 0; + + const unsigned short REFUELPOSITION_RIGHT = 1; + + const unsigned short REFUELPOSITION_FRONT = 2; + + const unsigned short REFUELPOSITION_REAR = 3; + + attribute unsigned short type; + + attribute unsigned short refuelPosition; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_GASOLINE"><span + class="name">FUELTYPE_GASOLINE</span> + <div class="brief">It defines the gasoline fuel type.</div></li> + <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_HIGH_OCTANE"><span + class="name">FUELTYPE_HIGH_OCTANE</span> + <div class="brief">It defines the high octane fuel type.</div></li> + <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_DIESEL"><span + class="name">FUELTYPE_DIESEL</span> + <div class="brief">It defines the diesel fuel type.</div></li> + <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_ELECTRIC"><span + class="name">FUELTYPE_ELECTRIC</span> + <div class="brief">It defines the electric fuel type.</div></li> + <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_HYDROGEN"><span + class="name">FUELTYPE_HYDROGEN</span> + <div class="brief">It defines the hydrogen fuel type.</div></li> + <li class="const" id="::Vehicle::FuelInfo::REFUELPOSITION_LEFT"><span + class="name">REFUELPOSITION_LEFT</span> + <div class="brief">It defines the left refuel position.</div></li> + <li class="const" id="::Vehicle::FuelInfo::REFUELPOSITION_RIGHT"><span + class="name">REFUELPOSITION_RIGHT</span> + <div class="brief">It defines the right refuel position.</div></li> + <li class="const" id="::Vehicle::FuelInfo::REFUELPOSITION_FRONT"><span + class="name">REFUELPOSITION_FRONT</span> + <div class="brief">It defines the front refuel position.</div></li> + <li class="const" id="::Vehicle::FuelInfo::REFUELPOSITION_REAR"><span + class="name">REFUELPOSITION_REAR</span> + <div class="brief">It defines the rear refuel position.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::FuelInfo::type"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> type</span></span> + <div class="brief"> + An attribute to return type of fuel (see FUELTYPE Constants). + </div> + </li> + <li class="attribute" id="::Vehicle::FuelInfo::refuelPosition"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> refuelPosition</span></span> + <div class="brief"> + An attribute to return position of refuling (see REFUELPOSITION Constants). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::VehicleType"> + <h3>1.30. VehicleType</h3> + <div class="brief">The interface defines vehicle type of vehicle property type.</div> + <pre class="webidl prettyprint"> +[NoInterfaceObject] interface VehicleType : VehiclePropertyType { + + const unsigned short VEHICLETYPE_SEDAN = 0; + + const unsigned short VEHICLETYPE_COUPE = 1; + + const unsigned short VEHICLETYPE_CABRIOLE = 2; + + const unsigned short VEHICLETYPE_ROADSTER = 3; + + const unsigned short VEHICLETYPE_SUV = 4; + + const unsigned short VEHICLETYPE_TRUCK = 5; + + attribute unsigned short type; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_SEDAN"><span + class="name">VEHICLETYPE_SEDAN</span> + <div class="brief">It defines the sedan vehicle type.</div></li> + <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_COUPE"><span + class="name">VEHICLETYPE_COUPE</span> + <div class="brief">It defines the coupe vehicle type.</div></li> + <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_CABRIOLE"><span + class="name">VEHICLETYPE_CABRIOLE</span> + <div class="brief">It defines the cabriole vehicle type.</div></li> + <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_ROADSTER"><span + class="name">VEHICLETYPE_ROADSTER</span> + <div class="brief">It defines the roadster vehicle type.</div></li> + <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_SUV"><span + class="name">VEHICLETYPE_SUV</span> + <div class="brief">It defines the suv vehicle type.</div></li> + <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_TRUCK"><span + class="name">VEHICLETYPE_TRUCK</span> + <div class="brief">It defines the truck vehicle type.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::VehicleType::type"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> type</span></span> + <div class="brief"> + An attribute to return type of vehicle (see VEHICLETYPE Constants). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Doors"> + <h3>1.31. Doors</h3> + <div class="brief">The interface defines doors of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Doors : VehiclePropertyType { + + attribute unsigned short[] doorsPerRow; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Doors::doorsPerRow"><span class="attrName"><span + class="type">unsigned short[]</span><span class="name"> doorsPerRow</span></span> + <div class="brief"> + An attribute to return number of doors in each row. + </div> + <div class="brief"> + The index represents the row. Position '0' represents the first row, '1' the second row etc. + Example a common mini-van may have Doors[0] = 2 doors, Doors[1] = 1 (side door), Doors[2] = 1 (trunk). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::TransmissionGearType"> + <h3>1.32. TransmissionGearType</h3> + <div class="brief">The interface defines transmission gear type of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface TransmissionGearType : VehiclePropertyType { + + const unsigned short TRANSMISSIONGEARTYPE_AUTO = 0; + + const unsigned short TRANSMISSIONGEARTYPE_MANUAL = 1; + + const unsigned short TRANSMISSIONGEARTYPE_CV = 2; + + attribute unsigned short transmissionGearType; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::TransmissionGearType::TRANSMISSIONGEARTYPE_AUTO"><span + class="name">TRANSMISSIONGEARTYPE_AUTO</span> + <div class="brief">It defines the auto transmission gear type.</div></li> + <li class="const" id="::Vehicle::TransmissionGearType::TRANSMISSIONGEARTYPE_MANUAL"><span + class="name">TRANSMISSIONGEARTYPE_MANUAL</span> + <div class="brief">It defines the manual transmission gear type.</div></li> + <li class="const" id="::Vehicle::TransmissionGearType::TRANSMISSIONGEARTYPE_CV"><span + class="name">TRANSMISSIONGEARTYPE_CV</span> + <div class="brief">It defines the cv transmission gear type.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::TransmissionGearType::transmissionGearType"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> transmissionGearType</span></span> + <div class="brief"> + An attribute to return transmission gear type (see TRANSMISSIONGEARTYPE Constants). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::WheelInformation"> + <h3>1.33. WheelInformation</h3> + <div class="brief">The interface defines wheel information of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface WheelInformation : VehiclePropertyType { + + attribute unsigned short frontWheelRadius; + + attribute unsigned short rearWheelRadius; + + attribute unsigned long wheelTrack; + + attribute boolean ABS; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::WheelInformation::frontWheelRadius"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> frontWheelRadius</span></span> + <div class="brief"> + An attribute to return radius of front wheel(s) in mm. + </div> + </li> + <li class="attribute" id="::Vehicle::WheelInformation::rearWheelRadius"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> rearWheelRadius</span></span> + <div class="brief"> + An attribute to return Radius of Rear Wheel(s) in mm. + </div> + </li> + <li class="attribute" id="::Vehicle::WheelInformation::wheelTrack"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> wheelTrack</span></span> + <div class="brief"> + An attribute to return Wheel Track in mm. + </div> + </li> + <li class="attribute" id="::Vehicle::WheelInformation::ABS"><span class="attrName"><span + class="type">boolean</span><span class="name"> ABS</span></span> + <div class="brief"> + An attribute to return Antilock Brake System status, on (true) or off (false). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Odometer"> + <h3>1.34. Odometer</h3> + <div class="brief">The interface defines odometer of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Odometer : VehiclePropertyType { + + attribute unsigned long odometer; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Odometer::odometer"><span class="attrName"><span + class="type">unsigned long</span><span class="name"> odometer</span></span> + <div class="brief"> + An attribute to return Distance traveled in km. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Fluid"> + <h3>1.35. Fluid</h3> + <div class="brief">The interface defines fluid of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface Fluid : VehiclePropertyType { + + attribute unsigned short transmission; + + attribute unsigned short brake; + + attribute unsigned short washer; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Fluid::transmission"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> transmission</span></span> + <div class="brief"> + An attribute to return transmission fluid level percentage (0 - 100). + </div> + </li> + <li class="attribute" id="::Vehicle::Fluid::brake"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> brake</span></span> + <div class="brief"> + An attribute to return brake fluid level percentage (0 - 100). + </div> + </li> + <li class="attribute" id="::Vehicle::Fluid::washer"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> washer</span></span> + <div class="brief"> + An attribute to return washer fluid level percentage (0 - 100). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::Battery"> + <h3>1.36. Battery</h3> + <div class="brief">The interface defines battery of vehicle property type.</div> + <pre class="webidl prettyprint"> +[NoInterfaceObject] interface Battery : VehiclePropertyType { + + attribute double voltage; + + attribute double current; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::Battery::voltage"><span class="attrName"><span + class="type">double</span><span class="name"> voltage</span></span> + <div class="brief"> + An attribute to return battery voltage. + </div> + </li> + <li class="attribute" id="::Vehicle::Battery::current"><span class="attrName"><span + class="type">double</span><span class="name"> current</span></span> + <div class="brief"> + An attribute to return battery current in amperes. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::TirePressure"> + <h3>1.37. TirePressure</h3> + <div class="brief">The interface defines tire pressure of vehicle property type.</div> + <pre class="webidl prettyprint"> +[NoInterfaceObject] interface TirePressure : VehiclePropertyType { + + attribute double leftFront; + + attribute double rightFront; + + attribute double leftRear; + + attribute double rightRear; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::TirePressure::leftFront"><span class="attrName"><span + class="type">double</span><span class="name"> leftFront</span></span> + <div class="brief"> + An attribute to return left front tire pressure in kpa. + </div> + </li> + <li class="attribute" id="::Vehicle::TirePressure::rightFront"><span class="attrName"><span + class="type">double</span><span class="name"> rightFront</span></span> + <div class="brief"> + An attribute to return right front tire pressure in kpa. + </div> + </li> + <li class="attribute" id="::Vehicle::TirePressure::leftRear"><span class="attrName"><span + class="type">double</span><span class="name"> leftRear</span></span> + <div class="brief"> + An attribute to return left rear tire pressure in kpa. + </div> + </li> + <li class="attribute" id="::Vehicle::TirePressure::rightRear"><span class="attrName"><span + class="type">double</span><span class="name"> rightRear</span></span> + <div class="brief"> + An attribute to return right rear tire pressure in kpa. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::TireTemperature"> + <h3>1.38. TireTemperature</h3> + <div class="brief">The interface defines tire temperature of vehicle property type.</div> + <pre class="webidl prettyprint"> +[NoInterfaceObject] interface TireTemperature : VehiclePropertyType { + + attribute double leftFront; + + attribute double rightFront; + + attribute double leftRear; + + attribute double rightRear; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::TireTemperature::leftFront"><span class="attrName"><span + class="type">double</span><span class="name"> leftFront</span></span> + <div class="brief"> + An attribute to return left front tire temperature in celcius. + </div> + </li> + <li class="attribute" id="::Vehicle::TireTemperature::rightFront"><span class="attrName"><span + class="type">double</span><span class="name"> rightFront</span></span> + <div class="brief"> + An attribute to return right front tire temperature in celcius. + </div> + </li> + <li class="attribute" id="::Vehicle::TireTemperature::leftRear"><span class="attrName"><span + class="type">double</span><span class="name"> leftRear</span></span> + <div class="brief"> + An attribute to return left rear tire temperature in celcius. + </div> + </li> + <li class="attribute" id="::Vehicle::TireTemperature::rightRear"><span class="attrName"><span + class="type">double</span><span class="name"> rightRear</span></span> + <div class="brief"> + An attribute to return right rear tire temperature in celcius. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::SecurityAlert"> + <h3>1.39. SecurityAlert</h3> + <div class="brief">The interface defines security alert of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SecurityAlert : VehiclePropertyType { + + attribute boolean securityAlert; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::SecurityAlert::securityAlert"><span class="attrName"><span + class="type">boolean</span><span class="name"> securityAlert</span></span> + <div class="brief"> + An attribute to return security alert status. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::ParkingBrake"> + <h3>1.40. ParkingBrake</h3> + <div class="brief">The interface defines parking brake of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface ParkingBrake : VehiclePropertyType { + + attribute boolean parkingBrake; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::ParkingBrake::parkingBrake"><span class="attrName"><span + class="type">boolean</span><span class="name"> parkingBrake</span></span> + <div class="brief"> + An attribute to return status of parking brake, engaged (true) or disengaged (false). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::ParkingLight"> + <h3>1.41. ParkingLight</h3> + <div class="brief">The interface defines parking light of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface ParkingLight : VehiclePropertyType { + + attribute boolean parkingLight; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::ParkingLight::parkingLight"><span class="attrName"><span + class="type">boolean</span><span class="name"> parkingLight</span></span> + <div class="brief"> + An attribute to return status of parking light, engaged (true) or disengaged (false). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::HazardLight"> + <h3>1.42. HazardLight</h3> + <div class="brief">The interface defines hazard light of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface HazardLight : VehiclePropertyType { + + attribute boolean hazardLight; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::HazardLight::hazardLight"><span class="attrName"><span + class="type">boolean</span><span class="name"> hazardLight</span></span> + <div class="brief"> + An attribute to return status of hazard light, engaged (true) or disengaged (false). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::AntilockBrakingSystem"> + <h3>1.43. AntilockBrakingSystem</h3> + <div class="brief">The interface defines antilock braking system of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface AntilockBrakingSystem : VehiclePropertyType { + + attribute boolean antilockBrakingSystem; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::AntilockBrakingSystem::antilockBrakingSystem"><span class="attrName"><span + class="type">boolean</span><span class="name"> antilockBrakingSystem</span></span> + <div class="brief"> + An attribute to return whether Antilock Braking System is idle (false) or engaged (true). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::TractionControlSystem"> + <h3>1.44. TractionControlSystem</h3> + <div class="brief">The interface defines traction control system of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface TractionControlSystem : VehiclePropertyType { + + attribute boolean tractionControlSystem; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::TractionControlSystem::tractionControlSystem"><span class="attrName"><span + class="type">boolean</span><span class="name"> tractionControlSystem</span></span> + <div class="brief"> + An attribute to return whether Traction Control System is off (false) or on (true). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::VehicleTopSpeedLimit"> + <h3>1.45. VehicleTopSpeedLimit</h3> + <div class="brief">The interface defines vehicle top speed limit of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface VehicleTopSpeedLimit : VehiclePropertyType { + + attribute unsigned short vehicleTopSpeedLimit; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::VehicleTopSpeedLimit::vehicleTopSpeedLimit"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> vehicleTopSpeedLimit</span></span> + <div class="brief"> + An attribute to returns top rated speed in km/h (0 = no limit). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::AirbagStatus"> + <h3>1.46. AirbagStatus</h3> + <div class="brief">The interface defines airbag status of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface AirbagStatus : VehiclePropertyType { + + const unsigned short AIRBAGSTATUS_INACTIVE = 0; + + const unsigned short AIRBAGSTATUS_ACTIVE = 1; + + const unsigned short AIRBAGSTATUS_DEPLOYED = 2; + + attribute unsigned short airbagStatus; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::AirbagStatus::AIRBAGSTATUS_INACTIVE"><span + class="name">AIRBAGSTATUS_INACTIVE</span> + <div class="brief">It defines the inactive airbag status.</div></li> + <li class="const" id="::Vehicle::AirbagStatus::AIRBAGSTATUS_ACTIVE"><span + class="name">AIRBAGSTATUS_ACTIVE</span> + <div class="brief">It defines the active airbag status.</div></li> + <li class="const" id="::Vehicle::AirbagStatus::AIRBAGSTATUS_DEPLOYED"><span + class="name">AIRBAGSTATUS_DEPLOYED</span> + <div class="brief">It defines the deployed airbag status.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::AirbagStatus::airbagStatus"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> airbagStatus</span></span> + <div class="brief"> + An attribute to return Airbag deployment status (see AIRBAGSTATUS Constants). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::DoorStatus"> + <h3>1.47. DoorStatus</h3> + <div class="brief">The interface defines door status of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface DoorStatus : VehiclePropertyType { + + const unsigned short DOORSTATUS_CLOSED = 0; + + const unsigned short DOORSTATUS_OPEN = 1; + + const unsigned short DOORSTATUS_AJAR = 2; + + attribute unsigned short doorStatus; + + attribute boolean doorLockStatus; + + attribute boolean childLockStatus; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::DoorStatus::DOORSTATUS_CLOSED"><span + class="name">DOORSTATUS_CLOSED</span> + <div class="brief">It defines the closed door status.</div></li> + <li class="const" id="::Vehicle::DoorStatus::DOORSTATUS_OPEN"><span + class="name">DOORSTATUS_OPEN</span> + <div class="brief">It defines the open door status.</div></li> + <li class="const" id="::Vehicle::DoorStatus::DOORSTATUS_AJAR"><span + class="name">DOORSTATUS_AJAR</span> + <div class="brief">It defines the ajar door status.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::DoorStatus::doorStatus"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> doorStatus</span></span> + <div class="brief"> + An attribute to returns door status (see DOORSTATUS Constants). + </div> + </li> + <li class="attribute" id="::Vehicle::DoorStatus::doorLockStatus"><span class="attrName"><span + class="type">boolean</span><span class="name"> doorLockStatus</span></span> + <div class="brief"> + An attribute to returns door status, locked (true) or unlocked (false). + </div> + </li> + <li class="attribute" id="::Vehicle::DoorStatus::childLockStatus"><span class="attrName"><span + class="type">boolean</span><span class="name"> childLockStatus</span></span> + <div class="brief"> + An attribute to returns child lock status of rear doors, active (true) or inactive (false). + Setting this to 'true' will prevent the rear doors from being opened from the inside. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::SeatBeltStatus"> + <h3>1.48. SeatBeltStatus</h3> + <div class="brief">The interface defines seat belt status of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface SeatBeltStatus : VehiclePropertyType { + + attribute boolean seatBeltStatus; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::SeatBeltStatusseatBeltStatus"><span class="attrName"><span + class="type">boolean</span><span class="name"> seatBeltStatus</span></span> + <div class="brief"> + An attribute to return seat belt status, fasten (true) or unfastened (false). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::OccupantStatus"> + <h3>1.49. OccupantStatus</h3> + <div class="brief">The interface defines occupant status of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface OccupantStatus : VehiclePropertyType { + + const unsigned short OCCUPANTSTATUS_VACANT = 0; + + const unsigned short OCCUPANTSTATUS_CHILD = 1; + + const unsigned short OCCUPANTSTATUS_ADULT = 2; + + attribute unsigned short occupantStatus; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::OccupantStatus::OCCUPANTSTATUS_VACANT"><span + class="name">OCCUPANTSTATUS_VACANT</span> + <div class="brief">It defines the vacant occupant status.</div></li> + <li class="const" id="::Vehicle::OccupantStatus::OCCUPANTSTATUS_CHILD"><span + class="name">OCCUPANTSTATUS_CHILD</span> + <div class="brief">It defines the child occupant status.</div></li> + <li class="const" id="::Vehicle::OccupantStatus::OCCUPANTSTATUS_ADULT"><span + class="name">OCCUPANTSTATUS_ADULT</span> + <div class="brief">It defines the adult occupant status.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::OccupantStatus::occupantStatus"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> occupantStatus</span></span> + <div class="brief"> + An attribute to returns occupant status (see OCCUPANTSTATUS Constants). + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::ObstacleDistance"> + <h3>1.50. ObstacleDistance</h3> + <div class="brief">The interface defines obstacle distance of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface ObstacleDistance : VehiclePropertyType { + + const unsigned short DISTANCESENSORLOCATION_LEFTFRONT = 0; + + const unsigned short DISTANCESENSORLOCATION_RIGHTFRONT = 1; + + const unsigned short DISTANCESENSORLOCATION_LEFTREAR = 2; + + const unsigned short DISTANCESENSORLOCATION_RIGHTREAR = 3; + + const unsigned short DISTANCESENSORLOCATION_LEFTBLINDSPOT = 4; + + const unsigned short DISTANCESENSORLOCATION_RIGHTBLINDSPOT = 5; + + attribute double obstacleDistance; + +}; +</pre> + <div class="consts"> + <h4>Constants</h4> + <ul> + <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_LEFTFRONT"><span + class="name">DISTANCESENSORLOCATION_LEFTFRONT</span> + <div class="brief">It defines the left front distance sensor location.</div></li> + <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTFRONT"><span + class="name">DISTANCESENSORLOCATION_RIGHTFRONT</span> + <div class="brief">It defines the right front distance sensor location.</div></li> + <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_LEFTREAR"><span + class="name">DISTANCESENSORLOCATION_LEFTREAR</span> + <div class="brief">It defines the left rear distance sensor location.</div></li> + <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTREAR"><span + class="name">DISTANCESENSORLOCATION_RIGHTREAR</span> + <div class="brief">It defines the right rear distance sensor location.</div></li> + <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_LEFTBLINDSPOT"><span + class="name">DISTANCESENSORLOCATION_LEFTBLINDSPOT</span> + <div class="brief">It defines the left blind spot distance sensor location.</div></li> + <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTBLINDSPOT"><span + class="name">DISTANCESENSORLOCATION_RIGHTBLINDSPOT</span> + <div class="brief">It defines the right blind spot distance sensor location.</div></li> + </ul> + </div> + + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::ObstacleDistance::obstacleDistance"><span class="attrName"><span + class="type">double</span><span class="name"> obstacleDistance</span></span> + <div class="brief"> + An attribute to return distance sensor distance in m. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::NightMode"> + <h3>1.51. NightMode</h3> + <div class="brief">The interface defines night mode of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface NightMode : VehiclePropertyType { + + attribute boolean nightMode; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::NightMode::nightMode"><span class="attrName"><span + class="type">boolean</span><span class="name"> nightMode</span></span> + <div class="brief"> + An attribute to return whether or not the system is in night mode (true). False is day mode. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::DrivingMode"> + <h3>1.52. DrivingMode</h3> + <div class="brief">The interface defines driving mode of vehicle property type.</div> +<pre class="webidl prettyprint"> +[NoInterfaceObject] interface DrivingMode : VehiclePropertyType { + + attribute unsigned short drivingMode; + +}; +</pre> + <div class="attributes"> + <h4>Attributes</h4> + <ul> + <li class="attribute" id="::Vehicle::DrivingMode::drivingMode"><span class="attrName"><span + class="type">unsigned short</span><span class="name"> drivingMode</span></span> + <div class="brief"> + An attribute to return whether or not the system is in driving mode(1). 0 represents no driving mode. + </div> + </li> + </ul> + </div> + </div> + + <div class="interface" id="::Vehicle::VehiclePropertyCallback"> + <h3>1.53. VehiclePropertyCallback</h3> + <div class="brief">This interface specified a success callback that is invoked when vehicle propery type is valid.</div> +<pre class="webidl prettyprint"> +[Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyCallback { + + void onsuccess(VehiclePropertyType value); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + <dl> + <dt class="method" id="::Vehicle::VehiclePropertyCallback::onsuccess"> + <span class="methodName">onsuccess</span> + </dt> + <dd> + <div class="brief">The callback function used to return a property value. Called when vehicle propery type is valid.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void onsuccess(VehiclePropertyType value); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">value</span>: A VehiclePropertyType object.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + + <div class="interface" id="::Vehicle::VehiclePropertyErrorCallback"> + <h3>1.54. VehiclePropertyErrorCallback</h3> + <div class="brief">This interface specified a failure callback that is invoked when any errors are happened.</div> +<pre class="webidl prettyprint"> +[Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyErrorCallback { + + void onfailure(VehiclePropertyError error); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + <dl> + <dt class="method" id="::Vehicle::VehiclePropertyErrorCallback::onsuccess"> + <span class="methodName">onsuccess</span> + </dt> + <dd> + <div class="brief">The callback function used to return reference error code and message. Called when any errors are happened.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void onfailure(VehiclePropertyError error); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">error</span>: A VehiclePropertyError object.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + + <div class="interface" id="::Vehicle::VehiclePropertyListCallback"> + <h3>1.55. VehiclePropertyListCallback</h3> + <div class="brief">This interface specified a success callback that is invoked when vehicle propery type is valid.</div> +<pre class="webidl prettyprint"> +[Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyListCallback { + + void onsuccess(VehiclePropertyType[] values); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + <dl> + <dt class="method" id="::Vehicle::VehiclePropertyListCallback::onsuccess"> + <span class="methodName">onsuccess</span> + </dt> + <dd> + <div class="brief">The callback function used to return VehiclePropertyType value list. Called when vehicle propery type is valid.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> + void onsuccess(VehiclePropertyType[] values); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">values</span>: A VehiclePropertyType value list.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + + <div class="interface" id="::Vehicle::SupportedPropertiesCallback"> + <h3>1.56. SupportedPropertiesCallback</h3> + <div class="brief">This interface specified a success callback that is invoked.</div> +<pre class="webidl prettyprint"> +[Callback=FunctionOnly, NoInterfaceObject] interface SupportedPropertiesCallback { + + void onsuccess(DOMString[] properties); + +}; +</pre> + <div class="methods"> + <h4>Methods</h4> + <dl> + <dt class="method" id="::Vehicle::SupportedPropertiesCallback::onsuccess"> + <span class="methodName">onsuccess</span> + </dt> + <dd> + <div class="brief">The callback function used to return supported properties.</div> + <div class="synopsis"> +<pre class="signature prettyprint"> +void onsuccess(DOMString[] properties); +<span class="pln"></span> +</pre> + </div> + <div class="parameters"> + <p> + <span class="param">Parameters:</span> + </p> + <ul> + <li class="param"><span class="name">properties</span>: A string array.</li> + </ul> + </div> + </dd> + </dl> + </div> + </div> + + <div class="interface" id="::Vehicle::DefrostDictionary"> + <h3>1.57. DefrostDictionary</h3> + <div class="brief">A dictionary that is used for creating defrost items.</div> +<pre class="webidl prettyprint"> +dictionary DefrostDictionary { + + unsigned short window; + + boolean defrost; + +}; +</pre> + </div> + </div> + <h2 id="full-webidl">2. Full WebIDL</h2> +<pre class="webidl prettyprint"> +module Vehicle { + + [NoInterfaceObject] interface VehicleManagerObject { + readonly attribute Vehicle vehicle; + }; + + Tizen implements VehicleManagerObject; + + [NoInterfaceObject] interface Vehicle { + + const unsigned short ZONE_None = 0; + + const unsigned short ZONE_Front = 0x01; + + const unsigned short ZONE_Middle = 0x02; + + const unsigned short ZONE_Right = 0x04; + + const unsigned short ZONE_Left = 0x08; + + const unsigned short ZONE_Rear = 0x10; + + const unsigned short ZONE_Center = 0x20; + + DOMString[] supported(); + + any get(DOMString objectType, optional short zone); + + void getAsync(DOMString objectType, VehiclePropertyCallback successCallback, optional VehiclePropertyErrorCallback errorCallback, optional short zone); + + void subscribe(DOMString objectType, VehiclePropertyCallback successCallback, optional unsigned short zone, optional VehiclePropertyErrorCallback errorCallback); + + void set(DOMString objectType, object value, optional VehiclePropertyErrorCallback errorCallback); + + void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, VehiclePropertyListCallback successCallback, optional VehiclePropertyErrorCallback errorCallback); + + unsigned short[] listZones(DOMString objectType); + }; + + [NoInterfaceObject] interface VehiclePropertyType : Event { + + attribute DOMTimeStamp time; + + attribute short zone; + + attribute DOMString source; + + }; + + [NoInterfaceObject] interface VehiclePropertyError { + + const unsigned short PERMISSION_DENIED = 1; + + const unsigned short PROPERTY_UNAVAILABLE = 2; + + const unsigned short TIMEOUT = 3; + + const unsigned short UNKNOWN = 10; + + attribute unsigned short code; + + attribute DOMString message; + + }; + + [NoInterfaceObject] interface VehicleSpeed : VehiclePropertyType { + + attribute unsigned long vehicleSpeed; + + }; + + [NoInterfaceObject] interface EngineSpeed : VehiclePropertyType { + + attribute unsigned long engineSpeed; + + }; + + [NoInterfaceObject] interface VehiclePowerMode : VehiclePropertyType { + + const unsigned short VEHICLEPOWERMODE_OFF = 0; + + const unsigned short VEHICLEPOWERMODE_ACCESSORY1 = 1; + + const unsigned short VEHICLEPOWERMODE_ACCESSORY2 = 2; + + const unsigned short VEHICLEPOWERMODE_RUN = 3; + + attribute octet vehiclePowerMode; + + }; + + [NoInterfaceObject] interface TripMeter : VehiclePropertyType { + + attribute unsigned long[] tripMeters; + + }; + + [NoInterfaceObject] interface Acceleration : VehiclePropertyType { + + attribute unsigned long x; + + attribute unsigned long y; + + attribute unsigned long z; + + }; + + [NoInterfaceObject] interface Transmission : VehiclePropertyType { + + const unsigned short TRANSMISSIONPOSITION_NEUTRAL = 0; + + const unsigned short TRANSMISSIONPOSITION_FIRST = 1; + + const unsigned short TRANSMISSIONPOSITION_SECOND = 2; + + const unsigned short TRANSMISSIONPOSITION_THIRD = 3; + + const unsigned short TRANSMISSIONPOSITION_FORTH = 4; + + const unsigned short TRANSMISSIONPOSITION_FIFTH = 5; + + const unsigned short TRANSMISSIONPOSITION_SIXTH = 6; + + const unsigned short TRANSMISSIONPOSITION_SEVENTH = 7; + + const unsigned short TRANSMISSIONPOSITION_EIGHTH = 8; + + const unsigned short TRANSMISSIONPOSITION_NINTH = 9; + + const unsigned short TRANSMISSIONPOSITION_TENTH = 10; + + const unsigned short TRANSMISSIONPOSITION_CVT = 64; + + const unsigned short TRANSMISSIONPOSITION_REVERSE = 128; + + const unsigned short TRANSMISSIONPOSITION_PARK = 255; + + const unsigned short TRANSMISSIONMODE_NORMAL = 0; + + const unsigned short TRANSMISSIONMODE_SPORT = 1; + + const unsigned short TRANSMISSIONMODE_ECONOMY = 2; + + const unsigned short TRANSMISSIONMODE_OEMCUSTOM1 = 3; + + const unsigned short TRANSMISSIONMODE_OEMCUSTOM2 = 4; + + attribute octet gearPosition; + + attribute octet mode; + + }; + + [NoInterfaceObject] interface WheelBrake : VehiclePropertyType { + + attribute boolean engaged; + + }; + + [NoInterfaceObject] interface LightStatus : VehiclePropertyType { + + attribute boolean head; + + attribute boolean rightTurn; + + attribute boolean leftTurn; + + attribute boolean brake; + + attribute boolean fog; + + attribute boolean hazard; + + attribute boolean parking; + + attribute boolean highBeam; + + }; + + [NoInterfaceObject] interface InteriorLightStatus : VehiclePropertyType { + + attribute boolean passenger; + + attribute boolean driver; + + attribute boolean center; + + }; + + [NoInterfaceObject] interface Horn : VehiclePropertyType { + + attribute boolean on; + + }; + + [NoInterfaceObject] interface Fuel : VehiclePropertyType { + + attribute unsigned short level; + + attribute unsigned short range; + + attribute unsigned short instantConsumption; + + attribute unsigned short instantEconomy; + + attribute unsigned short averageEconomy; + + }; + + [NoInterfaceObject] interface EngineOil : VehiclePropertyType { + + attribute unsigned short remaining; + + attribute long temperature; + + attribute unsigned short pressure; + + }; + + [NoInterfaceObject] interface Location : VehiclePropertyType { + + attribute double latitude; + + attribute double longitude; + + attribute double altitude; + + attribute unsigned short direction; + + }; + + [NoInterfaceObject] interface ExteriorBrightness : VehiclePropertyType { + + attribute unsigned long exteriorBrightness; + + }; + + [NoInterfaceObject] interface Temperature : VehiclePropertyType { + + attribute short interior; + + attribute short exterior; + + }; + + [NoInterfaceObject] interface RainSensor : VehiclePropertyType { + + attribute unsigned short rainSensor; + + }; + + [NoInterfaceObject] interface WindshieldWiper : VehiclePropertyType { + + const unsigned short WIPERSPEED_OFF = 0; + + const unsigned short WIPERSPEED_SLOWEST = 1; + + const unsigned short WIPERSPEED_FASTEST = 5; + + const unsigned short WIPERSPEED_AUTO = 10; + + attribute unsigned short windshieldWiper; + + }; + + [NoInterfaceObject] interface HVAC : VehiclePropertyType { + + const unsigned short AIRFLOWDIRECTION_FRONTPANEL = 0; + + const unsigned short AIRFLOWDIRECTION_FLOORDUCT = 0x01; + + const unsigned short AIRFLOWDIRECTION_FRONT = 0x02; + + const unsigned short AIRFLOWDIRECTION_DEFROSTER = 0x04; + + attribute unsigned short airflowDirection; + + attribute unsigned short fanSpeed; + + attribute unsigned short targetTemperature; + + attribute boolean airConditioning; + + attribute boolean airRecirculation; + + attribute boolean heater; + + attribute boolean steeringWheelHeater; + + attribute boolean seatHeater; + + attribute boolean seatCooler; + + }; + + [NoInterfaceObject] interface WindowStatus : VehiclePropertyType { + + const unsigned short WINDOWLOCATION_DRIVER = 0; + + const unsigned short WINDOWLOCATION_PASSENGER = 1; + + const unsigned short WINDOWLOCATION_LEFTREAR = 2; + + const unsigned short WINDOWLOCATION_RIGHTREAR = 3; + + const unsigned short WINDOWLOCATION_REAR = 4; + + attribute unsigned short openness; + + attribute boolean defrost; + + }; + + [NoInterfaceObject] interface Sunroof : VehiclePropertyType { + + attribute unsigned short openness; + + attribute unsigned short tilt; + + }; + + [NoInterfaceObject] interface ConvertibleRoof : VehiclePropertyType { + + attribute unsigned short openness; + + }; + + [NoInterfaceObject] interface VehicleId : VehiclePropertyType { + + attribute DOMString WMI; + + attribute DOMString VIN; + + }; + + [NoInterfaceObject] interface Size : VehiclePropertyType { + + attribute unsigned long width; + + attribute unsigned long height; + + attribute unsigned long length; + + }; + + [NoInterfaceObject] interface FuelInfo : VehiclePropertyType { + + const unsigned short FUELTYPE_GASOLINE = 0; + + const unsigned short FUELTYPE_HIGH_OCTANE = 1; + + const unsigned short FUELTYPE_DIESEL = 2; + + const unsigned short FUELTYPE_ELECTRIC = 3; + + const unsigned short FUELTYPE_HYDROGEN = 4; + + const unsigned short REFUELPOSITION_LEFT = 0; + + const unsigned short REFUELPOSITION_RIGHT = 1; + + const unsigned short REFUELPOSITION_FRONT = 2; + + const unsigned short REFUELPOSITION_REAR = 3; + + attribute unsigned short type; + + attribute unsigned short refuelPosition; + + }; + + [NoInterfaceObject] interface VehicleType : VehiclePropertyType { + + const unsigned short VEHICLETYPE_SEDAN = 0; + + const unsigned short VEHICLETYPE_COUPE = 1; + + const unsigned short VEHICLETYPE_CABRIOLE = 2; + + const unsigned short VEHICLETYPE_ROADSTER = 3; + + const unsigned short VEHICLETYPE_SUV = 4; + + const unsigned short VEHICLETYPE_TRUCK = 5; + + attribute unsigned short type; + + }; + + [NoInterfaceObject] interface Doors : VehiclePropertyType { + + attribute unsigned short[] doorsPerRow; + + }; + + [NoInterfaceObject] interface TransmissionGearType : VehiclePropertyType { + + const unsigned short TRANSMISSIONGEARTYPE_AUTO = 0; + + const unsigned short TRANSMISSIONGEARTYPE_MANUAL = 1; + + const unsigned short TRANSMISSIONGEARTYPE_CV = 2; + + attribute unsigned short transmissionGearType; + + }; + + [NoInterfaceObject] interface WheelInformation : VehiclePropertyType { + + attribute unsigned short frontWheelRadius; + + attribute unsigned short rearWheelRadius; + + attribute unsigned long wheelTrack; + + attribute boolean ABS; + + }; + + [NoInterfaceObject] interface Odometer : VehiclePropertyType { + + attribute unsigned long odometer; + + }; + + [NoInterfaceObject] interface Fluid : VehiclePropertyType { + + attribute unsigned short transmission; + + attribute unsigned short brake; + + attribute unsigned short washer; + + }; + + [NoInterfaceObject] interface Battery : VehiclePropertyType { + + attribute double voltage; + + attribute double current; + + }; + + [NoInterfaceObject] interface TirePressure : VehiclePropertyType { + + attribute double leftFront; + + attribute double rightFront; + + attribute double leftRear; + + attribute double rightRear; + + }; + + [NoInterfaceObject] interface TireTemperature : VehiclePropertyType { + + attribute double leftFront; + + attribute double rightFront; + + attribute double leftRear; + + attribute double rightRear; + + }; + + [NoInterfaceObject] interface SecurityAlert : VehiclePropertyType { + + attribute boolean securityAlert; + + }; + + [NoInterfaceObject] interface ParkingBrake : VehiclePropertyType { + + attribute boolean parkingBrake; + + }; + + [NoInterfaceObject] interface ParkingLight : VehiclePropertyType { + + attribute boolean parkingLight; + + }; + + [NoInterfaceObject] interface HazardLight : VehiclePropertyType { + + attribute boolean hazardLight; + + }; + + [NoInterfaceObject] interface AntilockBrakingSystem : VehiclePropertyType { + + attribute boolean antilockBrakingSystem; + + }; + + [NoInterfaceObject] interface TractionControlSystem : VehiclePropertyType { + + attribute boolean tractionControlSystem; + + }; + + [NoInterfaceObject] interface VehicleTopSpeedLimit : VehiclePropertyType { + + attribute unsigned short vehicleTopSpeedLimit; + + }; + + [NoInterfaceObject] interface AirbagStatus : VehiclePropertyType { + + const unsigned short AIRBAGSTATUS_INACTIVE = 0; + + const unsigned short AIRBAGSTATUS_ACTIVE = 1; + + const unsigned short AIRBAGSTATUS_DEPLOYED = 2; + + attribute unsigned short airbagStatus; + + }; + + [NoInterfaceObject] interface DoorStatus : VehiclePropertyType { + + const unsigned short DOORSTATUS_CLOSED = 0; + + const unsigned short DOORSTATUS_OPEN = 1; + + const unsigned short DOORSTATUS_AJAR = 2; + + attribute unsigned short doorStatus; + + attribute boolean doorLockStatus; + + attribute boolean childLockStatus; + + }; + + [NoInterfaceObject] interface SeatBeltStatus : VehiclePropertyType { + + attribute boolean seatBeltStatus; + + }; + + [NoInterfaceObject] interface OccupantStatus : VehiclePropertyType { + + const unsigned short OCCUPANTSTATUS_VACANT = 0; + + const unsigned short OCCUPANTSTATUS_CHILD = 1; + + const unsigned short OCCUPANTSTATUS_ADULT = 2; + + attribute unsigned short occupantStatus; + + }; + + [NoInterfaceObject] interface ObstacleDistance : VehiclePropertyType { + + const unsigned short DISTANCESENSORLOCATION_LEFTFRONT = 0; + + const unsigned short DISTANCESENSORLOCATION_RIGHTFRONT = 1; + + const unsigned short DISTANCESENSORLOCATION_LEFTREAR = 2; + + const unsigned short DISTANCESENSORLOCATION_RIGHTREAR = 3; + + const unsigned short DISTANCESENSORLOCATION_LEFTBLINDSPOT = 4; + + const unsigned short DISTANCESENSORLOCATION_RIGHTBLINDSPOT = 5; + + attribute double obstacleDistance; + + }; + + [NoInterfaceObject] interface NightMode : VehiclePropertyType { + + attribute boolean nightMode; + + }; + + [NoInterfaceObject] interface DrivingMode : VehiclePropertyType { + + attribute unsigned short drivingMode; + + }; + + [Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyCallback { + + void onsuccess(VehiclePropertyType value); + + }; + + [Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyErrorCallback { + + void onfailure(VehiclePropertyError error); + + }; + + [Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyListCallback { + + void onsuccess(VehiclePropertyType[] values); + + }; + + [Callback=FunctionOnly, NoInterfaceObject] interface SupportedPropertiesCallback { + + void onsuccess(DOMString[] properties); + + }; + + dictionary DefrostDictionary { + + unsigned short window; + + boolean defrost; + + }; +}; +</pre> + </div> + <div id="footer"> + <div class="copyright" align="center"> + Except as noted, this content - excluding the Code Examples - is + licensed under <a + href="http://creativecommons.org/licenses/by/3.0/legalcode" + target="_blank">Creative Commons Attribution 3.0</a> and all of the + Code Examples contained herein are licensed under <a + href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. + <br>For details, see the <a + href="https://www.tizen.org/content-license" target="_blank">Content + License</a>. + </div> + </div> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push([ '_setAccount', 'UA-25976949-1' ]); + _gaq.push([ '_setDomainName', 'tizen.org' ]); + _gaq.push([ '_trackPageview' ]); + + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' + : 'http://www') + + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); + </script> + </div> +</body> +</html> diff --git a/html/apireference.html b/html/apireference.html new file mode 100644 index 0000000..bc87f23 --- /dev/null +++ b/html/apireference.html @@ -0,0 +1,80 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Tizen IVI API</title> +<link media="screen" href="./tizen.css" type="text/css" rel="stylesheet"> +</head> + +<body id="content" marginwidth="10" marginheight="10"> + <div id="title" class="api"> + <h1>Tizen IVI API Reference</h1> + <div class="brief"> + <p>The Tizen IVI API based on JavaScript provides you advanced access to the IVI specific modules.</p> + </div> + <h4 id="Tizen">Tizen IVI</h4> + <table width="90%"> + <thead> + <tr> + <th style="width: 20%">API</th> + <th>Description</th> + </tr> + </thead> + <tbody> + <tr> + <td style="width: 20%"><a href="Locale.html" + data-origin="ivi" data-domain="system" data-category="core" + data-status="S" data-version=""> Locale </a></td> + <td>This reference provides the Locale API specifications.</td> + </tr> + <tr> + <td style="width: 20%"><a href="MediaServer.html" + data-origin="ivi" data-domain="system" data-category="core" + data-status="S" data-version=""> MediaServer </a></td> + <td>This reference provides the MediaServer API + specifications.</td> + </tr> + <tr> + <td style="width: 20%"><a href="Speech.html" + data-origin="ivi" data-domain="system" data-category="core" + data-status="S" data-version=""> Speech </a></td> + <td>This reference provides the Speech API specifications.</td> + </tr> + <tr> + <td style="width: 20%"><a href="Vehicle.html" + data-origin="ivi" data-domain="system" data-category="core" + data-status="S" data-version=""> Vehicle </a></td> + <td>This reference provides the Vehicle API specifications.</td> + </tr> + </tbody> + </table> + <!--start--> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-25976949-1']); + _gaq.push(['_trackPageview']); + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> + <!--end--> + + <div id="footer"> + <div class="copyright" align="center"> + Except as noted, this content - excluding the Code Examples - is + licensed under <a + href="http://creativecommons.org/licenses/by/3.0/legalcode" + target="_blank">Creative Commons Attribution 3.0</a> and all of + the Code Examples contained herein are licensed under <a + href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. + <br>For details, see the <a + href="https://www.tizen.org/content-license" target="_blank">Content + License</a>. + </div> + </div> + </div> +</body> +</html> diff --git a/html/ga.js b/html/ga.js new file mode 100644 index 0000000..8f364a1 --- /dev/null +++ b/html/ga.js @@ -0,0 +1,65 @@ +(function(){var aa=encodeURIComponent,ba=Infinity,ca=setTimeout,da=isNaN,m=Math,ea=decodeURIComponent;function ha(a,b){return a.name=b} +var n="push",ia="test",ja="slice",p="replace",ka="load",la="floor",ma="charAt",na="value",q="indexOf",oa="match",pa="port",qa="createElement",ra="path",r="name",g="getTime",u="host",v="toString",w="length",x="prototype",sa="clientWidth",y="split",ta="stopPropagation",ua="scope",z="location",va="search",A="protocol",wa="clientHeight",xa="href",B="substring",ya="apply",za="navigator",C="join",D="toLowerCase",E;function Aa(a,b){switch(b){case 0:return""+a;case 1:return 1*a;case 2:return!!a;case 3:return 1E3*a}return a}function Ba(a){return"function"==typeof a}function Ca(a){return void 0!=a&&-1<(a.constructor+"")[q]("String")}function F(a,b){return void 0==a||"-"==a&&!b||""==a}function Da(a){if(!a||""==a)return"";for(;a&&-1<" \n\r\t"[q](a[ma](0));)a=a[B](1);for(;a&&-1<" \n\r\t"[q](a[ma](a[w]-1));)a=a[B](0,a[w]-1);return a}function Ea(){return m.round(2147483647*m.random())}function Fa(){} +function G(a,b){if(aa instanceof Function)return b?encodeURI(a):aa(a);H(68);return escape(a)}function I(a){a=a[y]("+")[C](" ");if(ea instanceof Function)try{return ea(a)}catch(b){H(17)}else H(68);return unescape(a)}var Ga=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)},Ha=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,!!d):a.detachEvent&&a.detachEvent("on"+b,c)}; +function Ia(a,b){if(a){var c=J[qa]("script");c.type="text/javascript";c.async=!0;c.src=a;c.id=b;var d=J.getElementsByTagName("script")[0];d.parentNode.insertBefore(c,d);return c}}function K(a){return a&&0<a[w]?a[0]:""}function L(a){var b=a?a[w]:0;return 0<b?a[b-1]:""}var Ja=function(){this.prefix="ga.";this.R={}};Ja[x].set=function(a,b){this.R[this.prefix+a]=b};Ja[x].get=function(a){return this.R[this.prefix+a]};Ja[x].contains=function(a){return void 0!==this.get(a)};function Ka(a){0==a[q]("www.")&&(a=a[B](4));return a[D]()}function La(a,b){var c,d={url:a,protocol:"http",host:"",path:"",d:new Ja,anchor:""};if(!a)return d;c=a[q]("://");0<=c&&(d.protocol=a[B](0,c),a=a[B](c+3));c=a[va]("/|\\?|#");if(0<=c)d.host=a[B](0,c)[D](),a=a[B](c);else return d.host=a[D](),d;c=a[q]("#");0<=c&&(d.anchor=a[B](c+1),a=a[B](0,c));c=a[q]("?");0<=c&&(Na(d.d,a[B](c+1)),a=a[B](0,c));d.anchor&&b&&Na(d.d,d.anchor);a&&"/"==a[ma](0)&&(a=a[B](1));d.path=a;return d} +function Oa(a,b){function c(a){var b=(a.hostname||"")[y](":")[0][D](),c=(a[A]||"")[D](),c=1*a[pa]||("http:"==c?80:"https:"==c?443:"");a=a.pathname||"";0==a[q]("/")||(a="/"+a);return[b,""+c,a]}var d=b||J[qa]("a");d.href=J[z][xa];var e=(d[A]||"")[D](),f=c(d),Be=d[va]||"",k=e+"//"+f[0]+(f[1]?":"+f[1]:"");0==a[q]("//")?a=e+a:0==a[q]("/")?a=k+a:a&&0!=a[q]("?")?0>a[y]("/")[0][q](":")&&(a=k+f[2][B](0,f[2].lastIndexOf("/"))+"/"+a):a=k+f[2]+(a||Be);d.href=a;e=c(d);return{protocol:(d[A]||"")[D](),host:e[0], +port:e[1],path:e[2],Oa:d[va]||"",url:a||""}}function Na(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b)[n](c)}for(var d=Da(b)[y]("&"),e=0;e<d[w];e++)if(d[e]){var f=d[e][q]("=");0>f?c(d[e],"1"):c(d[e][B](0,f),d[e][B](f+1))}}function Pa(a,b){if(F(a)||"["==a[ma](0)&&"]"==a[ma](a[w]-1))return"-";var c=J.domain;return a[q](c+(b&&"/"!=b?b:""))==(0==a[q]("http://")?7:0==a[q]("https://")?8:0)?"0":a};var Qa=0;function Ra(a,b,c){1<=Qa||1<=100*m.random()||ld()||(a=["utmt=error","utmerr="+a,"utmwv=5.4.6","utmn="+Ea(),"utmsp=1"],b&&a[n]("api="+b),c&&a[n]("msg="+G(c[B](0,100))),M.w&&a[n]("aip=1"),Sa(a[C]("&")),Qa++)};var Ta=0,Ua={};function N(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a} +var Wa=N(),Xa=Va("anonymizeIp"),Ya=N(),$a=N(),ab=N(),bb=N(),O=N(),P=N(),cb=N(),db=N(),eb=N(),fb=N(),gb=N(),hb=N(),ib=N(),jb=N(),kb=N(),lb=N(),nb=N(),ob=N(),pb=N(),qb=N(),rb=N(),sb=N(),tb=N(),ub=N(),vb=N(),wb=N(),xb=N(),yb=N(),zb=N(),Ab=N(),Bb=N(),Cb=N(),Db=N(),Eb=N(),Fb=N(!0),Gb=Va("currencyCode"),Hb=Va("page"),Ib=Va("title"),Jb=N(),Kb=N(),Lb=N(),Mb=N(),Nb=N(),Ob=N(),Pb=N(),Qb=N(),Rb=N(),Q=N(!0),Sb=N(!0),Tb=N(!0),Ub=N(!0),Vb=N(!0),Wb=N(!0),Zb=N(!0),$b=N(!0),ac=N(!0),bc=N(!0),cc=N(!0),R=N(!0),dc=N(!0), +ec=N(!0),fc=N(!0),gc=N(!0),hc=N(!0),ic=N(!0),jc=N(!0),S=N(!0),kc=N(!0),lc=N(!0),mc=N(!0),nc=N(!0),oc=N(!0),pc=N(!0),qc=N(!0),rc=Va("campaignParams"),sc=N(),tc=Va("hitCallback"),uc=N();N();var vc=N(),wc=N(),xc=N(),yc=N(),zc=N(),Ac=N(),Bc=N(),Cc=N(),Dc=N(),Ec=N(),Fc=N(),Gc=N(),Hc=N(),Ic=N();N();var Mc=N(),Nc=N(),Oc=N(),Oe=Va("uaName"),Pe=Va("uaDomain"),Qe=Va("uaPath");var Re=function(){function a(a,c,d){T($[x],a,c,d)}a("_createTracker",$[x].r,55);a("_getTracker",$[x].oa,0);a("_getTrackerByName",$[x].u,51);a("_getTrackers",$[x].pa,130);a("_anonymizeIp",$[x].aa,16);a("_forceSSL",$[x].la,125);a("_getPlugin",Pc,120)},Se=function(){function a(a,c,d){T(U[x],a,c,d)}Qc("_getName",$a,58);Qc("_getAccount",Wa,64);Qc("_visitCode",Q,54);Qc("_getClientInfo",ib,53,1);Qc("_getDetectTitle",lb,56,1);Qc("_getDetectFlash",jb,65,1);Qc("_getLocalGifPath",wb,57);Qc("_getServiceMode", +xb,59);V("_setClientInfo",ib,66,2);V("_setAccount",Wa,3);V("_setNamespace",Ya,48);V("_setAllowLinker",fb,11,2);V("_setDetectFlash",jb,61,2);V("_setDetectTitle",lb,62,2);V("_setLocalGifPath",wb,46,0);V("_setLocalServerMode",xb,92,void 0,0);V("_setRemoteServerMode",xb,63,void 0,1);V("_setLocalRemoteServerMode",xb,47,void 0,2);V("_setSampleRate",vb,45,1);V("_setCampaignTrack",kb,36,2);V("_setAllowAnchor",gb,7,2);V("_setCampNameKey",ob,41);V("_setCampContentKey",tb,38);V("_setCampIdKey",nb,39);V("_setCampMediumKey", +rb,40);V("_setCampNOKey",ub,42);V("_setCampSourceKey",qb,43);V("_setCampTermKey",sb,44);V("_setCampCIdKey",pb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",yb,0,1);V("_setVisitorCookieTimeout",cb,28,1);V("_setSessionCookieTimeout",db,26,1);V("_setCampaignCookieTimeout",eb,29,1);V("_setReferrerOverride",Jb,49);V("_setSiteSpeedSampleRate",Dc,132);a("_trackPageview",U[x].Fa,1);a("_trackEvent",U[x].F,4);a("_trackPageLoadTime",U[x].Ea,100);a("_trackSocial",U[x].Ga,104);a("_trackTrans",U[x].Ia, +18);a("_sendXEvent",U[x].t,78);a("_createEventTracker",U[x].ia,74);a("_getVersion",U[x].qa,60);a("_setDomainName",U[x].B,6);a("_setAllowHash",U[x].va,8);a("_getLinkerUrl",U[x].na,52);a("_link",U[x].link,101);a("_linkByPost",U[x].ua,102);a("_setTrans",U[x].za,20);a("_addTrans",U[x].$,21);a("_addItem",U[x].Y,19);a("_clearTrans",U[x].ea,105);a("_setTransactionDelim",U[x].Aa,82);a("_setCustomVar",U[x].wa,10);a("_deleteCustomVar",U[x].ka,35);a("_getVisitorCustomVar",U[x].ra,50);a("_setXKey",U[x].Ca,83); +a("_setXValue",U[x].Da,84);a("_getXKey",U[x].sa,76);a("_getXValue",U[x].ta,77);a("_clearXKey",U[x].fa,72);a("_clearXValue",U[x].ga,73);a("_createXObj",U[x].ja,75);a("_addIgnoredOrganic",U[x].W,15);a("_clearIgnoredOrganic",U[x].ba,97);a("_addIgnoredRef",U[x].X,31);a("_clearIgnoredRef",U[x].ca,32);a("_addOrganic",U[x].Z,14);a("_clearOrganic",U[x].da,70);a("_cookiePathCopy",U[x].ha,30);a("_get",U[x].ma,106);a("_set",U[x].xa,107);a("_addEventListener",U[x].addEventListener,108);a("_removeEventListener", +U[x].removeEventListener,109);a("_addDevId",U[x].V);a("_getPlugin",Pc,122);a("_setPageGroup",U[x].ya,126);a("_trackTiming",U[x].Ha,124);a("_initData",U[x].v,2);a("_setVar",U[x].Ba,22);V("_setSessionTimeout",db,27,3);V("_setCookieTimeout",eb,25,3);V("_setCookiePersistence",cb,24,1);a("_setAutoTrackOutbound",Fa,79);a("_setTrackOutboundSubdomains",Fa,81);a("_setHrefExamineLimit",Fa,80)};function Pc(a){var b=this.plugins_;if(b)return b.get(a)} +var T=function(a,b,c,d){a[b]=function(){try{return void 0!=d&&H(d),c[ya](this,arguments)}catch(a){throw Ra("exc",b,a&&a[r]),a;}}},Qc=function(a,b,c,d){U[x][a]=function(){try{return H(c),Aa(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e[r]),e;}}},V=function(a,b,c,d,e){U[x][a]=function(f){try{H(c),void 0==e?this.a.set(b,Aa(f,d)):this.a.set(b,e)}catch(Be){throw Ra("exc",a,Be&&Be[r]),Be;}}},Te=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Rc=RegExp(/(^|\.)doubleclick\.net$/i),Sc=function(a,b){return Rc[ia](J[z].hostname)?!0:"/"!==b?!1:0!=a[q]("www.google.")&&0!=a[q](".google.")&&0!=a[q]("google.")||-1<a[q]("google.org")?!1:!0},Tc=function(a){var b=a.get(bb),c=a.c(P,"/");Sc(b,c)&&a[ta]()};var Zc=function(){var a={},b={},c=new Uc;this.g=function(a,b){c.add(a,b)};var d=new Uc;this.e=function(a,b){d.add(a,b)};var e=!1,f=!1,Be=!0;this.T=function(){e=!0};this.j=function(a){this[ka]();this.set(sc,a,!0);a=new Vc(this);e=!1;d.execute(this);e=!0;b={};this.n();a.Ja()};this.load=function(){e&&(e=!1,this.Ka(),Wc(this),f||(f=!0,c.execute(this),Xc(this),Wc(this)),e=!0)};this.n=function(){if(e)if(f)e=!1,Xc(this),e=!0;else this[ka]()};this.get=function(c){Ua[c]&&this[ka]();return void 0!==b[c]?b[c]: +a[c]};this.set=function(c,d,e){Ua[c]&&this[ka]();e?b[c]=d:a[c]=d;Ua[c]&&this.n()};this.Za=function(b){a[b]=this.b(b,0)+1};this.b=function(a,b){var c=this.get(a);return void 0==c||""===c?b:1*c};this.c=function(a,b){var c=this.get(a);return void 0==c?b:c+""};this.Ka=function(){if(Be){var b=this.c(bb,""),c=this.c(P,"/");Sc(b,c)||(a[O]=a[hb]&&""!=b?Yc(b):1,Be=!1)}}};Zc[x].stopPropagation=function(){throw"aborted";}; +var Vc=function(a){var b=this;this.q=0;var c=a.get(tc);this.Ua=function(){0<b.q&&c&&(b.q--,b.q||c())};this.Ja=function(){!b.q&&c&&ca(c,10)};a.set(uc,b,!0)};function $c(a,b){b=b||[];for(var c=0;c<b[w];c++){var d=b[c];if(""+a==d||0==d[q](a+"."))return d}return"-"} +var bd=function(a,b,c){c=c?"":a.c(O,"1");b=b[y](".");if(6!==b[w]||ad(b[0],c))return!1;c=1*b[1];var d=1*b[2],e=1*b[3],f=1*b[4];b=1*b[5];if(!(0<=c&&0<d&&0<e&&0<f&&0<=b))return!1;a.set(Q,c);a.set(Vb,d);a.set(Wb,e);a.set(Zb,f);a.set($b,b);return!0},cd=function(a){var b=a.get(Q),c=a.get(Vb),d=a.get(Wb),e=a.get(Zb),f=a.b($b,1);return[a.b(O,1),void 0!=b?b:"-",c||"-",d||"-",e||"-",f][C](".")},dd=function(a){return[a.b(O,1),a.b(cc,0),a.b(R,1),a.b(dc,0)][C](".")},ed=function(a,b,c){c=c?"":a.c(O,"1");var d= +b[y](".");if(4!==d[w]||ad(d[0],c))d=null;a.set(cc,d?1*d[1]:0);a.set(R,d?1*d[2]:10);a.set(dc,d?1*d[3]:a.get(ab));return null!=d||!ad(b,c)},fd=function(a,b){var c=G(a.c(Tb,"")),d=[],e=a.get(Fb);if(!b&&e){for(var f=0;f<e[w];f++){var Be=e[f];Be&&1==Be[ua]&&d[n](f+"="+G(Be[r])+"="+G(Be[na])+"=1")}0<d[w]&&(c+="|"+d[C]("^"))}return c?a.b(O,1)+"."+c:null},gd=function(a,b,c){c=c?"":a.c(O,"1");b=b[y](".");if(2>b[w]||ad(b[0],c))return!1;b=b[ja](1)[C](".")[y]("|");0<b[w]&&a.set(Tb,I(b[0]));if(1>=b[w])return!0; +b=b[1][y](-1==b[1][q](",")?"^":",");for(c=0;c<b[w];c++){var d=b[c][y]("=");if(4==d[w]){var e={};ha(e,I(d[1]));e.value=I(d[2]);e.scope=1;a.get(Fb)[d[0]]=e}}return!0},hd=function(a,b){var c=Ue(a,b);return c?[a.b(O,1),a.b(ec,0),a.b(fc,1),a.b(gc,1),c][C]("."):""},Ue=function(a){function b(b,e){if(!F(a.get(b))){var f=a.c(b,""),f=f[y](" ")[C]("%20"),f=f[y]("+")[C]("%20");c[n](e+"="+f)}}var c=[];b(ic,"utmcid");b(nc,"utmcsr");b(S,"utmgclid");b(kc,"utmgclsrc");b(lc,"utmdclid");b(mc,"utmdsid");b(jc,"utmccn"); +b(oc,"utmcmd");b(pc,"utmctr");b(qc,"utmcct");return c[C]("|")},id=function(a,b,c){c=c?"":a.c(O,"1");b=b[y](".");if(5>b[w]||ad(b[0],c))return a.set(ec,void 0),a.set(fc,void 0),a.set(gc,void 0),a.set(ic,void 0),a.set(jc,void 0),a.set(nc,void 0),a.set(oc,void 0),a.set(pc,void 0),a.set(qc,void 0),a.set(S,void 0),a.set(kc,void 0),a.set(lc,void 0),a.set(mc,void 0),!1;a.set(ec,1*b[1]);a.set(fc,1*b[2]);a.set(gc,1*b[3]);Ve(a,b[ja](4)[C]("."));return!0},Ve=function(a,b){function c(a){return(a=b[oa](a+"=(.*?)(?:\\|utm|$)"))&& +2==a[w]?a[1]:void 0}function d(b,c){c?(c=e?I(c):c[y]("%20")[C](" "),a.set(b,c)):a.set(b,void 0)}-1==b[q]("=")&&(b=I(b));var e="2"==c("utmcvr");d(ic,c("utmcid"));d(jc,c("utmccn"));d(nc,c("utmcsr"));d(oc,c("utmcmd"));d(pc,c("utmctr"));d(qc,c("utmcct"));d(S,c("utmgclid"));d(kc,c("utmgclsrc"));d(lc,c("utmdclid"));d(mc,c("utmdsid"))},ad=function(a,b){return b?a!=b:!/^\d+$/[ia](a)};var Uc=function(){this.filters=[]};Uc[x].add=function(a,b){this.filters[n]({name:a,s:b})};Uc[x].execute=function(a){try{for(var b=0;b<this.filters[w];b++)this.filters[b].s.call(W,a)}catch(c){}};function jd(a){100!=a.get(vb)&&a.get(Q)%1E4>=100*a.get(vb)&&a[ta]()}function kd(a){ld(a.get(Wa))&&a[ta]()}function md(a){"file:"==J[z][A]&&a[ta]()}function Ge(a){He()&&a[ta]()}function nd(a){a.get(Ib)||a.set(Ib,J.title,!0);a.get(Hb)||a.set(Hb,J[z].pathname+J[z][va],!0)};var od=new function(){var a=[];this.set=function(b){a[b]=!0};this.Xa=function(){for(var b=[],c=0;c<a[w];c++)a[c]&&(b[m[la](c/6)]=b[m[la](c/6)]^1<<c%6);for(c=0;c<b[w];c++)b[c]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"[ma](b[c]||0);return b[C]("")+"~"}};function H(a){od.set(a)};var W=window,J=document,ld=function(a){var b=W._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===W["ga-disable-"+a])return!0;try{var c=W.external;if(c&&c._gaUserPrefs&&"oo"==c._gaUserPrefs)return!0}catch(d){}return!1},He=function(){return W[za]&&"preview"==W[za].loadPurpose},We=function(a,b){ca(a,b)},pd=function(a){var b=[],c=J.cookie[y](";");a=RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$");for(var d=0;d<c[w];d++){var e=c[d][oa](a);e&&b[n](e[1])}return b},X=function(a,b,c,d,e,f){e=ld(e)?!1:Sc(d,c)?!1:He()?!1:!0;if(e){if(b&& +0<=W[za].userAgent[q]("Firefox")){b=b[p](/\n|\r/g," ");e=0;for(var Be=b[w];e<Be;++e){var k=b.charCodeAt(e)&255;if(10==k||13==k)b=b[B](0,e)+"?"+b[B](e+1)}}b&&2E3<b[w]&&(b=b[B](0,2E3),H(69));a=a+"="+b+"; path="+c+"; ";f&&(a+="expires="+(new Date((new Date)[g]()+f)).toGMTString()+"; ");d&&(a+="domain="+d+";");J.cookie=a}};var qd,rd,sd=function(){if(!qd){var a={},b=W[za],c=W.screen;a.Q=c?c.width+"x"+c.height:"-";a.P=c?c.colorDepth+"-bit":"-";a.language=(b&&(b.language||b.browserLanguage)||"-")[D]();a.javaEnabled=b&&b.javaEnabled()?1:0;a.characterSet=J.characterSet||J.charset||"-";try{var d;var e=J.documentElement,f=J.body,Be=f&&f[sa]&&f[wa],b=[];e&&e[sa]&&e[wa]&&("CSS1Compat"===J.compatMode||!Be)?b=[e[sa],e[wa]]:Be&&(b=[f[sa],f[wa]]);d=0>=b[0]||0>=b[1]?"":b[C]("x");a.Wa=d}catch(k){H(135)}qd=a}},td=function(){sd();for(var a= +qd,b=W[za],a=b.appName+b.version+a.language+b.platform+b.userAgent+a.javaEnabled+a.Q+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b=a[w],c=W.history[w];0<c;)a+=c--^b++;return Yc(a)},ud=function(a){sd();var b=qd;a.set(Lb,b.Q);a.set(Mb,b.P);a.set(Pb,b.language);a.set(Qb,b.characterSet);a.set(Nb,b.javaEnabled);a.set(Rb,b.Wa);if(a.get(ib)&&a.get(jb)){if(!(b=rd)){var c,d,e;d="ShockwaveFlash";if((b=(b=W[za])?b.plugins:void 0)&&0<b[w])for(c=0;c<b[w]&&!e;c++)d=b[c],-1<d[r][q]("Shockwave Flash")&& +(e=d.description[y]("Shockwave Flash ")[1]);else{d=d+"."+d;try{c=new ActiveXObject(d+".7"),e=c.GetVariable("$version")}catch(f){}if(!e)try{c=new ActiveXObject(d+".6"),e="WIN 6,0,21,0",c.AllowScriptAccess="always",e=c.GetVariable("$version")}catch(Be){}if(!e)try{c=new ActiveXObject(d),e=c.GetVariable("$version")}catch(k){}e&&(e=e[y](" ")[1][y](","),e=e[0]+"."+e[1]+" r"+e[2])}b=e?e:"-"}rd=b;a.set(Ob,rd)}else a.set(Ob,"-")};var vd=function(a){if(Ba(a))this.s=a;else{var b=a[0],c=b.lastIndexOf(":"),d=b.lastIndexOf(".");this.h=this.i=this.l="";-1==c&&-1==d?this.h=b:-1==c&&-1!=d?(this.i=b[B](0,d),this.h=b[B](d+1)):-1!=c&&-1==d?(this.l=b[B](0,c),this.h=b[B](c+1)):c>d?(this.i=b[B](0,d),this.l=b[B](d+1,c),this.h=b[B](c+1)):(this.i=b[B](0,d),this.h=b[B](d+1));this.k=a[ja](1);this.Ma=!this.l&&"_require"==this.h;this.J=!this.i&&!this.l&&"_provide"==this.h}},Y=function(){T(Y[x],"push",Y[x][n],5);T(Y[x],"_getPlugin",Pc,121);T(Y[x], +"_createAsyncTracker",Y[x].Sa,33);T(Y[x],"_getAsyncTracker",Y[x].Ta,34);this.I=new Ja;this.p=[]};E=Y[x];E.Na=function(a,b,c){var d=this.I.get(a);if(!Ba(d))return!1;b.plugins_=b.plugins_||new Ja;b.plugins_.set(a,new d(b,c||{}));return!0};E.push=function(a){var b=Z.Va[ya](this,arguments),b=Z.p.concat(b);for(Z.p=[];0<b[w]&&!Z.O(b[0])&&!(b.shift(),0<Z.p[w]););Z.p=Z.p.concat(b);return 0};E.Va=function(a){for(var b=[],c=0;c<arguments[w];c++)try{var d=new vd(arguments[c]);d.J?this.O(d):b[n](d)}catch(e){}return b}; +E.O=function(a){try{if(a.s)a.s[ya](W);else if(a.J)this.I.set(a.k[0],a.k[1]);else{var b="_gat"==a.i?M:"_gaq"==a.i?Z:M.u(a.i);if(a.Ma){if(!this.Na(a.k[0],b,a.k[2])){if(!a.Pa){var c=Oa(""+a.k[1]);var d=c[A],e=J[z][A];var f;if(f="https:"==d||d==e?!0:"http:"!=d?!1:"http:"==e){var Be;t:{var k=Oa(J[z][xa]);if(!(c.Oa||0<=c.url[q]("?")||0<=c[ra][q]("://")||c[u]==k[u]&&c[pa]==k[pa]))for(var s="http:"==c[A]?80:443,t=M.S,b=0;b<t[w];b++)if(c[u]==t[b][0]&&(c[pa]||s)==(t[b][1]||s)&&0==c[ra][q](t[b][2])){Be=!0;break t}Be= +!1}f=Be&&!ld()}f&&(a.Pa=Ia(c.url))}return!0}}else a.l&&(b=b.plugins_.get(a.l)),b[a.h][ya](b,a.k)}}catch(Za){}};E.Sa=function(a,b){return M.r(a,b||"")};E.Ta=function(a){return M.u(a)};var yd=function(){function a(a,b,c,d){void 0==f[a]&&(f[a]={});void 0==f[a][b]&&(f[a][b]=[]);f[a][b][c]=d}function b(a,b,c){if(void 0!=f[a]&&void 0!=f[a][b])return f[a][b][c]}function c(a,b){if(void 0!=f[a]&&void 0!=f[a][b]){f[a][b]=void 0;var c=!0,d;for(d=0;d<Be[w];d++)if(void 0!=f[a][Be[d]]){c=!1;break}c&&(f[a]=void 0)}}function d(a){var b="",c=!1,d,e;for(d=0;d<Be[w];d++)if(e=a[Be[d]],void 0!=e){c&&(b+=Be[d]);for(var c=[],f=void 0,ga=void 0,ga=0;ga<e[w];ga++)if(void 0!=e[ga]){f="";ga!=mb&&void 0== +e[ga-1]&&(f+=ga[v]()+Za);for(var Cd=e[ga],Jc="",Yb=void 0,Kc=void 0,Lc=void 0,Yb=0;Yb<Cd[w];Yb++)Kc=Cd[ma](Yb),Lc=Ma[Kc],Jc+=void 0!=Lc?Lc:Kc;f+=Jc;c[n](f)}b+=k+c[C](t)+s;c=!1}else c=!0;return b}var e=this,f=[],Be=["k","v"],k="(",s=")",t="*",Za="!",Ma={"'":"'0"};Ma[s]="'1";Ma[t]="'2";Ma[Za]="'3";var mb=1;e.Ra=function(a){return void 0!=f[a]};e.A=function(){for(var a="",b=0;b<f[w];b++)void 0!=f[b]&&(a+=b[v]()+d(f[b]));return a};e.Qa=function(a){if(void 0==a)return e.A();for(var b=a.A(),c=0;c<f[w];c++)void 0== +f[c]||a.Ra(c)||(b+=c[v]()+d(f[c]));return b};e.f=function(b,c,d){if(!wd(d))return!1;a(b,"k",c,d);return!0};e.o=function(b,c,d){if(!xd(d))return!1;a(b,"v",c,d[v]());return!0};e.getKey=function(a,c){return b(a,"k",c)};e.N=function(a,c){return b(a,"v",c)};e.L=function(a){c(a,"k")};e.M=function(a){c(a,"v")};T(e,"_setKey",e.f,89);T(e,"_setValue",e.o,90);T(e,"_getKey",e.getKey,87);T(e,"_getValue",e.N,88);T(e,"_clearKey",e.L,85);T(e,"_clearValue",e.M,86)};function wd(a){return"string"==typeof a} +function xd(a){return!("number"==typeof a||void 0!=Number&&a instanceof Number)||m.round(a)!=a||da(a)||a==ba?!1:!0};var zd=function(a){var b=W.gaGlobal;a&&!b&&(W.gaGlobal=b={});return b},Ad=function(){var a=zd(!0).hid;null==a&&(a=Ea(),zd(!0).hid=a);return a},Dd=function(a){a.set(Kb,Ad());var b=zd();if(b&&b.dh==a.get(O)){var c=b.sid;c&&(a.get(ac)?H(112):H(132),a.set(Zb,c),a.get(Sb)&&a.set(Wb,c));b=b.vid;a.get(Sb)&&b&&(b=b[y]("."),a.set(Q,1*b[0]),a.set(Vb,1*b[1]))}};var Ed,Fd=function(a,b,c,d){var e=a.c(bb,""),f=a.c(P,"/");d=void 0!=d?d:a.b(cb,0);a=a.c(Wa,"");X(b,c,f,e,a,d)},Xc=function(a){var b=a.c(bb,"");a.b(O,1);var c=a.c(P,"/"),d=a.c(Wa,"");X("__utma",cd(a),c,b,d,a.get(cb));X("__utmb",dd(a),c,b,d,a.get(db));X("__utmc",""+a.b(O,1),c,b,d);var e=hd(a,!0);e?X("__utmz",e,c,b,d,a.get(eb)):X("__utmz","",c,b,"",-1);(e=fd(a,!1))?X("__utmv",e,c,b,d,a.get(cb)):X("__utmv","",c,b,"",-1)},Wc=function(a){var b=a.b(O,1);if(!bd(a,$c(b,pd("__utma"))))return a.set(Ub,!0),!1; +var c=!ed(a,$c(b,pd("__utmb")));a.set(bc,c);id(a,$c(b,pd("__utmz")));gd(a,$c(b,pd("__utmv")));Ed=!c;return!0},Gd=function(a){Ed||0<pd("__utmb")[w]||(X("__utmd","1",a.c(P,"/"),a.c(bb,""),a.c(Wa,""),1E4),0==pd("__utmd")[w]&&a[ta]())};var h=0,Jd=function(a){void 0==a.get(Q)?Hd(a):a.get(Ub)&&!a.get(Mc)?Hd(a):a.get(bc)&&(Id(a),h++,1<h&&H(137))},Kd=function(a){a.get(hc)&&!a.get(ac)&&(Id(a),a.set(fc,a.get($b)))},Hd=function(a){var b=a.get(ab);a.set(Sb,!0);a.set(Q,Ea()^td(a)&2147483647);a.set(Tb,"");a.set(Vb,b);a.set(Wb,b);a.set(Zb,b);a.set($b,1);a.set(ac,!0);a.set(cc,0);a.set(R,10);a.set(dc,b);a.set(Fb,[]);a.set(Ub,!1);a.set(bc,!1)},Id=function(a){a.set(Wb,a.get(Zb));a.set(Zb,a.get(ab));a.Za($b);a.set(ac,!0);a.set(cc,0);a.set(R,10); +a.set(dc,a.get(ab));a.set(bc,!1)};var Ld="daum:q eniro:search_word naver:query pchome:q images.google:q google:q yahoo:p yahoo:q msn:q bing:q aol:query aol:q lycos:q lycos:query ask:q netscape:query cnn:query about:terms mamma:q voila:rdata virgilio:qs live:q baidu:wd alice:qs yandex:text najdi:q seznam:q rakuten:qt biglobe:q goo.ne:MT wp:szukaj onet:qt yam:k kvasir:q ozu:q terra:query rambler:query conduit:q babylon:q search-results:q avg:q comcast:q incredimail:q startsiden:q go.mail.ru:q search.centrum.cz:q 360.cn:q".split(" "), +Sd=function(a){if(a.get(kb)&&!a.get(Mc)){for(var b=!F(a.get(ic))||!F(a.get(nc))||!F(a.get(S))||!F(a.get(lc)),c={},d=0;d<Md[w];d++){var e=Md[d];c[e]=a.get(e)}(d=a.get(rc))?(H(149),e=new Ja,Na(e,d),d=e):d=La(J[z][xa],a.get(gb)).d;if("1"!=L(d.get(a.get(ub)))||!b)if(d=Xe(a,d)||Qd(a),d||b||!a.get(ac)||(Pd(a,void 0,"(direct)",void 0,void 0,void 0,"(direct)","(none)",void 0,void 0),d=!0),d&&(a.set(hc,Rd(a,c)),b="(direct)"==a.get(nc)&&"(direct)"==a.get(jc)&&"(none)"==a.get(oc),a.get(hc)||a.get(ac)&&!b))a.set(ec, +a.get(ab)),a.set(fc,a.get($b)),a.Za(gc)}},Xe=function(a,b){function c(c,d){d=d||"-";var e=L(b.get(a.get(c)));return e&&"-"!=e?I(e):d}var d=L(b.get(a.get(nb)))||"-",e=L(b.get(a.get(qb)))||"-",f=L(b.get(a.get(pb)))||"-",Be=L(b.get("gclsrc"))||"-",k=L(b.get("dclid"))||"-",s=c(ob,"(not set)"),t=c(rb,"(not set)"),Za=c(sb),Ma=c(tb);if(F(d)&&F(f)&&F(k)&&F(e))return!1;var mb=!F(f)&&!F(Be),mb=F(e)&&(!F(k)||mb),Xb=F(Za);if(mb||Xb){var Bd=Nd(a),Bd=La(Bd,!0);(Bd=Od(a,Bd))&&!F(Bd[1]&&!Bd[2])&&(mb&&(e=Bd[0]),Xb&& +(Za=Bd[1]))}Pd(a,d,e,f,Be,k,s,t,Za,Ma);return!0},Qd=function(a){var b=Nd(a),c=La(b,!0);if(!(void 0!=b&&null!=b&&""!=b&&"0"!=b&&"-"!=b&&0<=b[q]("://"))||c&&-1<c[u][q]("google")&&c.d.contains("q")&&"cse"==c[ra])return!1;if((b=Od(a,c))&&!b[2])return Pd(a,void 0,b[0],void 0,void 0,void 0,"(organic)","organic",b[1],void 0),!0;if(b||!a.get(ac))return!1;t:{for(var b=a.get(Bb),d=Ka(c[u]),e=0;e<b[w];++e)if(-1<d[q](b[e])){a=!1;break t}Pd(a,void 0,d,void 0,void 0,void 0,"(referral)","referral",void 0,"/"+c[ra]); +a=!0}return a},Od=function(a,b){for(var c=a.get(zb),d=0;d<c[w];++d){var e=c[d][y](":");if(-1<b[u][q](e[0][D]())){var f=b.d.get(e[1]);if(f&&(f=K(f),!f&&-1<b[u][q]("google.")&&(f="(not provided)"),!e[3]||-1<b.url[q](e[3]))){t:{for(var c=f,d=a.get(Ab),c=I(c)[D](),Be=0;Be<d[w];++Be)if(c==d[Be]){c=!0;break t}c=!1}return[e[2]||e[0],f,c]}}}return null},Pd=function(a,b,c,d,e,f,Be,k,s,t){a.set(ic,b);a.set(nc,c);a.set(S,d);a.set(kc,e);a.set(lc,f);a.set(jc,Be);a.set(oc,k);a.set(pc,s);a.set(qc,t)},Md=[jc,ic, +S,lc,nc,oc,pc,qc],Rd=function(a,b){function c(a){a=(""+a)[y]("+")[C]("%20");return a=a[y](" ")[C]("%20")}function d(c){var d=""+(a.get(c)||"");c=""+(b[c]||"");return 0<d[w]&&d==c}if(d(S)||d(lc))return H(131),!1;for(var e=0;e<Md[w];e++){var f=Md[e],Be=b[f]||"-",f=a.get(f)||"-";if(c(Be)!=c(f))return!0}return!1},Td=RegExp(/^https?:\/\/(www\.)?google(\.com?)?(\.[a-z]{2}t?)?\/?$/i),Nd=function(a){a=Pa(a.get(Jb),a.get(P));try{if(Td[ia](a))return H(136),a+"?q="}catch(b){H(145)}return a};var Ud,Vd,Wd=function(a){Ud=a.c(S,"");Vd=a.c(kc,"")},Xd=function(a){var b=a.c(S,""),c=a.c(kc,"");b!=Ud&&(-1<c[q]("ds")?a.set(mc,void 0):!F(Ud)&&-1<Vd[q]("ds")&&a.set(mc,Ud))};var Zd=function(a){Yd(a,J[z][xa])?(a.set(Mc,!0),H(12)):a.set(Mc,!1)},Yd=function(a,b){if(!a.get(fb))return!1;var c=La(b,a.get(gb)),d=K(c.d.get("__utma")),e=K(c.d.get("__utmb")),f=K(c.d.get("__utmc")),Be=K(c.d.get("__utmx")),k=K(c.d.get("__utmz")),s=K(c.d.get("__utmv")),c=K(c.d.get("__utmk"));if(Yc(""+d+e+f+Be+k+s)!=c){d=I(d);e=I(e);f=I(f);Be=I(Be);f=$d(d+e+f+Be,k,s,c);if(!f)return!1;k=f[0];s=f[1]}if(!bd(a,d,!0))return!1;ed(a,e,!0);id(a,k,!0);gd(a,s,!0);ae(a,Be,!0);return!0},ce=function(a,b,c){var d; +d=cd(a)||"-";var e=dd(a)||"-",f=""+a.b(O,1)||"-",Be=be(a)||"-",k=hd(a,!1)||"-";a=fd(a,!1)||"-";var s=Yc(""+d+e+f+Be+k+a),t=[];t[n]("__utma="+d);t[n]("__utmb="+e);t[n]("__utmc="+f);t[n]("__utmx="+Be);t[n]("__utmz="+k);t[n]("__utmv="+a);t[n]("__utmk="+s);d=t[C]("&");if(!d)return b;e=b[q]("#");if(c)return 0>e?b+"#"+d:b+"&"+d;c="";f=b[q]("?");0<e&&(c=b[B](e),b=b[B](0,e));return 0>f?b+"?"+d+c:b+"&"+d+c},$d=function(a,b,c,d){for(var e=0;3>e;e++){for(var f=0;3>f;f++){if(d==Yc(a+b+c))return H(127),[b,c]; +var Be=b[p](/ /g,"%20"),k=c[p](/ /g,"%20");if(d==Yc(a+Be+k))return H(128),[Be,k];Be=Be[p](/\+/g,"%20");k=k[p](/\+/g,"%20");if(d==Yc(a+Be+k))return H(129),[Be,k];try{var s=b[oa]("utmctr=(.*?)(?:\\|utm|$)");if(s&&2==s[w]&&(Be=b[p](s[1],G(I(s[1]))),d==Yc(a+Be+c)))return H(139),[Be,c]}catch(t){}b=I(b)}c=I(c)}};var de="|",fe=function(a,b,c,d,e,f,Be,k,s){var t=ee(a,b);t||(t={},a.get(Cb)[n](t));t.id_=b;t.affiliation_=c;t.total_=d;t.tax_=e;t.shipping_=f;t.city_=Be;t.state_=k;t.country_=s;t.items_=t.items_||[];return t},ge=function(a,b,c,d,e,f,Be){a=ee(a,b)||fe(a,b,"",0,0,0,"","","");var k;t:{if(a&&a.items_){k=a.items_;for(var s=0;s<k[w];s++)if(k[s].sku_==c){k=k[s];break t}}k=null}s=k||{};s.transId_=b;s.sku_=c;s.name_=d;s.category_=e;s.price_=f;s.quantity_=Be;k||a.items_[n](s);return s},ee=function(a,b){for(var c= +a.get(Cb),d=0;d<c[w];d++)if(c[d].id_==b)return c[d];return null};var he,ie=function(a){if(!he){var b;b=J[z].hash;var c=W[r],d=/^#?gaso=([^&]*)/;if(c=(b=(b=b&&b[oa](d)||c&&c[oa](d))?b[1]:K(pd("GASO")))&&b[oa](/^(?:!([-0-9a-z.]{1,40})!)?([-.\w]{10,1200})$/i))Fd(a,"GASO",""+b,0),M._gasoDomain=a.get(bb),M._gasoCPath=a.get(P),a=c[1],Ia("https://www.google.com/analytics/web/inpage/pub/inpage.js?"+(a?"prefix="+a+"&":"")+Ea(),"_gasojs");he=!0}};var ae=function(a,b,c){c&&(b=I(b));c=a.b(O,1);b=b[y](".");2>b[w]||!/^\d+$/[ia](b[0])||(b[0]=""+c,Fd(a,"__utmx",b[C]("."),void 0))},be=function(a,b){var c=$c(a.get(O),pd("__utmx"));"-"==c&&(c="");return b?G(c):c},Ye=function(a){try{var b=La(J[z][xa],!1),c=ea(L(b.d.get("utm_referrer")))||"";c&&a.set(Jb,c);var d=ea(K(b.d.get("utm_expid")))||"";d&&(d=d[y](".")[0],a.set(Oc,""+d))}catch(e){H(146)}},l=function(a){var b=W.gaData&&W.gaData.expId;b&&a.set(Oc,""+b)};var ke=function(a,b){var c=m.min(a.b(Dc,0),100);if(a.b(Q,0)%100>=c)return!1;c=Ze()||$e();if(void 0==c)return!1;var d=c[0];if(void 0==d||d==ba||da(d))return!1;0<d?af(c)?b(je(c)):b(je(c[ja](0,1))):Ga(W,"load",function(){ke(a,b)},!1);return!0},me=function(a,b,c,d){var e=new yd;e.f(14,90,b[B](0,500));e.f(14,91,a[B](0,150));e.f(14,92,""+le(c));void 0!=d&&e.f(14,93,d[B](0,500));e.o(14,90,c);return e},af=function(a){for(var b=1;b<a[w];b++)if(da(a[b])||a[b]==ba||0>a[b])return!1;return!0},le=function(a){return da(a)|| +0>a?0:5E3>a?10*m[la](a/10):5E4>a?100*m[la](a/100):41E5>a?1E3*m[la](a/1E3):41E5},je=function(a){for(var b=new yd,c=0;c<a[w];c++)b.f(14,c+1,""+le(a[c])),b.o(14,c+1,a[c]);return b},Ze=function(){var a=W.performance||W.webkitPerformance;if(a=a&&a.timing){var b=a.navigationStart;if(0==b)H(133);else return[a.loadEventStart-b,a.domainLookupEnd-a.domainLookupStart,a.connectEnd-a.connectStart,a.responseStart-a.requestStart,a.responseEnd-a.responseStart,a.fetchStart-b,a.domInteractive-b,a.domContentLoadedEventStart- +b]}},$e=function(){if(W.top==W){var a=W.external,b=a&&a.onloadT;a&&!a.isValidLoadTime&&(b=void 0);2147483648<b&&(b=void 0);0<b&&a.setPageReadyTime();return void 0==b?void 0:[b]}};var cf=function(a){if(a.get(Sb))try{var b;t:{var c=pd(a.get(Oe)||"_ga");if(c&&!(1>c[w])){for(var d=[],e=0;e<c[w];e++){var f;var Be=c[e][y]("."),k=Be.shift();if(("GA1"==k||"1"==k)&&1<Be[w]){var s=Be.shift()[y]("-");1==s[w]&&(s[1]="1");s[0]*=1;s[1]*=1;f={Ya:s,$a:Be[C](".")}}else f=void 0;f&&d[n](f)}if(1==d[w]){b=d[0].$a;break t}if(0!=d[w]){var t=a.get(Pe)||a.get(bb),d=bf(d,(0==t[q](".")?t.substr(1):t)[y](".")[w],0);if(1==d[w]){b=d[0].$a;break t}var Za=a.get(Qe)||a.get(P);(c=Za)?(1<c[w]&&"/"==c[ma](c[w]- +1)&&(c=c.substr(0,c[w]-1)),0!=c[q]("/")&&(c="/"+c),Za=c):Za="/";d=bf(d,"/"==Za?1:Za[y]("/")[w],1);b=d[0].$a;break t}}b=void 0}if(b){var Ma=(""+b)[y](".");2==Ma[w]&&/[0-9.]/[ia](Ma)&&(H(114),a.set(Q,Ma[0]),a.set(Vb,Ma[1]),a.set(Sb,!1))}}catch(mb){H(115)}},bf=function(a,b,c){for(var d=[],e=[],f=128,Be=0;Be<a[w];Be++){var k=a[Be];if(k.Ya[c]==b)d[n](k);else if(k.Ya[c]==f)e[n](k);else k.Ya[c]<f&&(e=[k],f=k.Ya[c])}return 0<d[w]?d:e};var U=function(a,b,c){function d(a){return function(b){if((b=b.get(Nc)[a])&&b[w])for(var c=Te(e,a),d=0;d<b[w];d++)b[d].call(e,c)}}var e=this;this.a=new Zc;this.get=function(a){return this.a.get(a)};this.set=function(a,b,c){this.a.set(a,b,c)};this.set(Wa,b||"UA-XXXXX-X");this.set($a,a||"");this.set(Ya,c||"");this.set(ab,m.round((new Date)[g]()/1E3));this.set(P,"/");this.set(cb,63072E6);this.set(eb,15768E6);this.set(db,18E5);this.set(fb,!1);this.set(yb,50);this.set(gb,!1);this.set(hb,!0);this.set(ib, +!0);this.set(jb,!0);this.set(kb,!0);this.set(lb,!0);this.set(ob,"utm_campaign");this.set(nb,"utm_id");this.set(pb,"gclid");this.set(qb,"utm_source");this.set(rb,"utm_medium");this.set(sb,"utm_term");this.set(tb,"utm_content");this.set(ub,"utm_nooverride");this.set(vb,100);this.set(Dc,1);this.set(Ec,!1);this.set(wb,"/__utm.gif");this.set(xb,1);this.set(Cb,[]);this.set(Fb,[]);this.set(zb,Ld[ja](0));this.set(Ab,[]);this.set(Bb,[]);this.B("auto");this.set(Jb,J.referrer);Ye(this.a);this.set(Nc,{hit:[], +load:[]});this.a.g("0",Zd);this.a.g("1",Wd);this.a.g("2",Jd);this.a.g("3",cf);this.a.g("4",Sd);this.a.g("5",Xd);this.a.g("6",Kd);this.a.g("7",d("load"));this.a.g("8",ie);this.a.e("A",kd);this.a.e("B",md);this.a.e("C",Ge);this.a.e("D",Jd);this.a.e("E",jd);this.a.e("F",Tc);this.a.e("G",ne);this.a.e("H",Gd);this.a.e("I",nd);this.a.e("J",ud);this.a.e("K",Dd);this.a.e("L",l);this.a.e("M",d("hit"));this.a.e("N",oe);this.a.e("O",pe);0===this.get(ab)&&H(111);this.a.T();this.H=void 0};E=U[x]; +E.m=function(){var a=this.get(Db);a||(a=new yd,this.set(Db,a));return a};E.La=function(a){for(var b in a){var c=a[b];a.hasOwnProperty(b)&&this.set(b,c,!0)}};E.K=function(a){if(this.get(Ec))return!1;var b=this,c=ke(this.a,function(c){b.set(Hb,a,!0);b.t(c)});this.set(Ec,c);return c};E.Fa=function(a){a&&Ca(a)?(H(13),this.set(Hb,a,!0)):"object"===typeof a&&null!==a&&this.La(a);this.H=a=this.get(Hb);this.a.j("page");this.K(a)}; +E.F=function(a,b,c,d,e){if(""==a||!wd(a)||""==b||!wd(b)||void 0!=c&&!wd(c)||void 0!=d&&!xd(d))return!1;this.set(wc,a,!0);this.set(xc,b,!0);this.set(yc,c,!0);this.set(zc,d,!0);this.set(vc,!!e,!0);this.a.j("event");return!0};E.Ha=function(a,b,c,d,e){var f=this.a.b(Dc,0);1*e===e&&(f=e);if(this.a.b(Q,0)%100>=f)return!1;c=1*(""+c);if(""==a||!wd(a)||""==b||!wd(b)||!xd(c)||da(c)||0>c||0>f||100<f||void 0!=d&&(""==d||!wd(d)))return!1;this.t(me(a,b,c,d));return!0}; +E.Ga=function(a,b,c,d){if(!a||!b)return!1;this.set(Ac,a,!0);this.set(Bc,b,!0);this.set(Cc,c||J[z][xa],!0);d&&this.set(Hb,d,!0);this.a.j("social");return!0};E.Ea=function(){this.set(Dc,10);this.K(this.H)};E.Ia=function(){this.a.j("trans")};E.t=function(a){this.set(Eb,a,!0);this.a.j("event")};E.ia=function(a){this.v();var b=this;return{_trackEvent:function(c,d,e){H(91);b.F(a,c,d,e)}}};E.ma=function(a){return this.get(a)}; +E.xa=function(a,b){if(a)if(Ca(a))this.set(a,b);else if("object"==typeof a)for(var c in a)a.hasOwnProperty(c)&&this.set(c,a[c])};E.addEventListener=function(a,b){var c=this.get(Nc)[a];c&&c[n](b)};E.removeEventListener=function(a,b){for(var c=this.get(Nc)[a],d=0;c&&d<c[w];d++)if(c[d]==b){c.splice(d,1);break}};E.qa=function(){return"5.4.6"};E.B=function(a){this.get(hb);a="auto"==a?Ka(J.domain):a&&"-"!=a&&"none"!=a?a[D]():"";this.set(bb,a)};E.va=function(a){this.set(hb,!!a)}; +E.na=function(a,b){return ce(this.a,a,b)};E.link=function(a,b){if(this.a.get(fb)&&a){var c=ce(this.a,a,b);J[z].href=c}};E.ua=function(a,b){this.a.get(fb)&&a&&a.action&&(a.action=ce(this.a,a.action,b))}; +E.za=function(){this.v();var a=this.a,b=J.getElementById?J.getElementById("utmtrans"):J.utmform&&J.utmform.utmtrans?J.utmform.utmtrans:null;if(b&&b[na]){a.set(Cb,[]);for(var b=b[na][y]("UTM:"),c=0;c<b[w];c++){b[c]=Da(b[c]);for(var d=b[c][y](de),e=0;e<d[w];e++)d[e]=Da(d[e]);"T"==d[0]?fe(a,d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8]):"I"==d[0]&&ge(a,d[1],d[2],d[3],d[4],d[5],d[6])}}};E.$=function(a,b,c,d,e,f,Be,k){return fe(this.a,a,b,c,d,e,f,Be,k)};E.Y=function(a,b,c,d,e,f){return ge(this.a,a,b,c,d,e,f)}; +E.Aa=function(a){de=a||"|"};E.ea=function(){this.set(Cb,[])};E.wa=function(a,b,c,d){var e=this.a;if(0>=a||a>e.get(yb))a=!1;else if(!b||!c||128<b[w]+c[w])a=!1;else{1!=d&&2!=d&&(d=3);var f={};ha(f,b);f.value=c;f.scope=d;e.get(Fb)[a]=f;a=!0}a&&this.a.n();return a};E.ka=function(a){this.a.get(Fb)[a]=void 0;this.a.n()};E.ra=function(a){return(a=this.a.get(Fb)[a])&&1==a[ua]?a[na]:void 0};E.Ca=function(a,b,c){this.m().f(a,b,c)};E.Da=function(a,b,c){this.m().o(a,b,c)}; +E.sa=function(a,b){return this.m().getKey(a,b)};E.ta=function(a,b){return this.m().N(a,b)};E.fa=function(a){this.m().L(a)};E.ga=function(a){this.m().M(a)};E.ja=function(){return new yd};E.W=function(a){a&&this.get(Ab)[n](a[D]())};E.ba=function(){this.set(Ab,[])};E.X=function(a){a&&this.get(Bb)[n](a[D]())};E.ca=function(){this.set(Bb,[])};E.Z=function(a,b,c,d,e){if(a&&b){a=[a,b[D]()][C](":");if(d||e)a=[a,d,e][C](":");d=this.get(zb);d.splice(c?0:d[w],0,a)}};E.da=function(){this.set(zb,[])}; +E.ha=function(a){this.a[ka]();var b=this.get(P),c=be(this.a);this.set(P,a);this.a.n();ae(this.a,c);this.set(P,b)};E.ya=function(a,b){if(0<a&&5>=a&&Ca(b)&&""!=b){var c=this.get(Fc)||[];c[a]=b;this.set(Fc,c)}};E.V=function(a){a=""+a;if(a[oa](/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Ic)||[];b[n](a);this.set(Ic,b)}};E.v=function(){this.a[ka]()};E.Ba=function(a){a&&""!=a&&(this.set(Tb,a),this.a.j("var"))};var ne=function(a){"trans"!==a.get(sc)&&500<=a.b(cc,0)&&a[ta]();if("event"===a.get(sc)){var b=(new Date)[g](),c=a.b(dc,0),d=a.b(Zb,0),c=m[la]((b-(c!=d?c:1E3*c))/1E3*1);0<c&&(a.set(dc,b),a.set(R,m.min(10,a.b(R,0)+c)));0>=a.b(R,0)&&a[ta]()}},pe=function(a){"event"===a.get(sc)&&a.set(R,m.max(0,a.b(R,10)-1))};var qe=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a[n](b+"="+c)};this.toString=function(){return a[C]("&")}},re=function(a,b){(b||2!=a.get(xb))&&a.Za(cc)},se=function(a,b){b.add("utmwv","5.4.6");b.add("utms",a.get(cc));b.add("utmn",Ea());var c=J[z].hostname;F(c)||b.add("utmhn",c,!0);c=a.get(vb);100!=c&&b.add("utmsp",c,!0)},te=function(a,b){b.add("utmht",(new Date)[g]());b.add("utmac",Da(a.get(Wa)));a.get(Oc)&&b.add("utmxkey",a.get(Oc),!0);a.get(vc)&&b.add("utmni",1);var c=a.get(Ic); +c&&0<c[w]&&b.add("utmdid",c[C]("."));ff(a,b);!1!==a.get(Xa)&&(a.get(Xa)||M.w)&&b.add("aip",1);M.bb||(M.bb=a.get(Wa));(1<M.ab()||M.bb!=a.get(Wa))&&b.add("utmmt",1);b.add("utmu",od.Xa())},ue=function(a,b){for(var c=a.get(Fc)||[],d=[],e=1;e<c[w];e++)c[e]&&d[n](e+":"+G(c[e][p](/%/g,"%25")[p](/:/g,"%3A")[p](/,/g,"%2C")));d[w]&&b.add("utmpg",d[C](","))},ff=function(a,b){function c(a,b){b&&d[n](a+"="+b+";")}var d=[];c("__utma",cd(a));c("__utmz",hd(a,!1));c("__utmv",fd(a,!0));c("__utmx",be(a));b.add("utmcc", +d[C]("+"),!0)},ve=function(a,b){a.get(ib)&&(b.add("utmcs",a.get(Qb),!0),b.add("utmsr",a.get(Lb)),a.get(Rb)&&b.add("utmvp",a.get(Rb)),b.add("utmsc",a.get(Mb)),b.add("utmul",a.get(Pb)),b.add("utmje",a.get(Nb)),b.add("utmfl",a.get(Ob),!0))},we=function(a,b){a.get(lb)&&a.get(Ib)&&b.add("utmdt",a.get(Ib),!0);b.add("utmhid",a.get(Kb));b.add("utmr",Pa(a.get(Jb),a.get(P)),!0);b.add("utmp",G(a.get(Hb),!0),!0)},xe=function(a,b){for(var c=a.get(Db),d=a.get(Eb),e=a.get(Fb)||[],f=0;f<e[w];f++){var Be=e[f];Be&& +(c||(c=new yd),c.f(8,f,Be[r]),c.f(9,f,Be[na]),3!=Be[ua]&&c.f(11,f,""+Be[ua]))}F(a.get(wc))||F(a.get(xc),!0)||(c||(c=new yd),c.f(5,1,a.get(wc)),c.f(5,2,a.get(xc)),e=a.get(yc),void 0!=e&&c.f(5,3,e),e=a.get(zc),void 0!=e&&c.o(5,1,e));c?b.add("utme",c.Qa(d),!0):d&&b.add("utme",d.A(),!0)},ye=function(a,b,c){var d=new qe;re(a,c);se(a,d);d.add("utmt","tran");d.add("utmtid",b.id_,!0);d.add("utmtst",b.affiliation_,!0);d.add("utmtto",b.total_,!0);d.add("utmttx",b.tax_,!0);d.add("utmtsp",b.shipping_,!0);d.add("utmtci", +b.city_,!0);d.add("utmtrg",b.state_,!0);d.add("utmtco",b.country_,!0);xe(a,d);ve(a,d);we(a,d);(b=a.get(Gb))&&d.add("utmcu",b,!0);c||(ue(a,d),te(a,d));return d[v]()},ze=function(a,b,c){var d=new qe;re(a,c);se(a,d);d.add("utmt","item");d.add("utmtid",b.transId_,!0);d.add("utmipc",b.sku_,!0);d.add("utmipn",b.name_,!0);d.add("utmiva",b.category_,!0);d.add("utmipr",b.price_,!0);d.add("utmiqt",b.quantity_,!0);xe(a,d);ve(a,d);we(a,d);(b=a.get(Gb))&&d.add("utmcu",b,!0);c||(ue(a,d),te(a,d));return d[v]()}, +Ae=function(a,b){var c=a.get(sc);if("page"==c)c=new qe,re(a,b),se(a,c),xe(a,c),ve(a,c),we(a,c),b||(ue(a,c),te(a,c)),c=[c[v]()];else if("event"==c)c=new qe,re(a,b),se(a,c),c.add("utmt","event"),xe(a,c),ve(a,c),we(a,c),b||(ue(a,c),te(a,c)),c=[c[v]()];else if("var"==c)c=new qe,re(a,b),se(a,c),c.add("utmt","var"),!b&&te(a,c),c=[c[v]()];else if("trans"==c)for(var c=[],d=a.get(Cb),e=0;e<d[w];++e){c[n](ye(a,d[e],b));for(var f=d[e].items_,Be=0;Be<f[w];++Be)c[n](ze(a,f[Be],b))}else"social"==c?b?c=[]:(c=new qe, +re(a,b),se(a,c),c.add("utmt","social"),c.add("utmsn",a.get(Ac),!0),c.add("utmsa",a.get(Bc),!0),c.add("utmsid",a.get(Cc),!0),xe(a,c),ve(a,c),we(a,c),ue(a,c),te(a,c),c=[c[v]()]):"feedback"==c?b?c=[]:(c=new qe,re(a,b),se(a,c),c.add("utmt","feedback"),c.add("utmfbid",a.get(Gc),!0),c.add("utmfbpr",a.get(Hc),!0),xe(a,c),ve(a,c),we(a,c),ue(a,c),te(a,c),c=[c[v]()]):c=[];return c},oe=function(a){var b,c=a.get(xb),d=a.get(uc),e=d&&d.Ua,f=0;if(0==c||2==c){var Be=a.get(wb)+"?";b=Ae(a,!0);for(var k=0,s=b[w];k< +s;k++)Sa(b[k],e,Be,!0),f++}if(1==c||2==c)for(b=Ae(a),k=0,s=b[w];k<s;k++)try{Sa(b[k],e),f++}catch(t){t&&Ra(t[r],void 0,t.message)}d&&(d.q=f)};var Ce=function(a){ha(this,"len");this.message=a+"-8192"},De=function(a){ha(this,"ff2post");this.message=a+"-2036"},Sa=function(a,b,c,d){b=b||Fa;if(d||2036>=a[w])gf(a,b,c);else if(8192>=a[w]){if(0<=W[za].userAgent[q]("Firefox")&&![].reduce)throw new De(a[w]);hf(a,b)||Ee(a,b)}else throw new Ce(a[w]);},gf=function(a,b,c){c=c||("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/__utm.gif?";var d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=null;d.onerror= +null;b()};d.onerror=function(){d.onload=null;d.onerror=null;b()}},hf=function(a,b){var c,d=("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/p/__utm.gif",e=W.XDomainRequest;if(e)c=new e,c.open("POST",d);else if(e=W.XMLHttpRequest)e=new e,"withCredentials"in e&&(c=e,c.open("POST",d,!0),c.setRequestHeader("Content-Type","text/plain"));if(c)return c.onreadystatechange=function(){4==c.readyState&&(b(),c=null)},c.send(a),!0},Ee=function(a,b){if(J.body){a=aa(a); +try{var c=J[qa]('<iframe name="'+a+'"></iframe>')}catch(d){c=J[qa]("iframe"),ha(c,a)}c.height="0";c.width="0";c.style.display="none";c.style.visibility="hidden";var e=J[z],e=("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/u/post_iframe.html#"+aa(e[A]+"//"+e[u]+"/favicon.ico"),f=function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)};Ga(W,"beforeunload",f);var Be=!1,k=0,s=function(){if(!Be){try{if(9<k||c.contentWindow[z][u]==J[z][u]){Be=!0;f(); +Ha(W,"beforeunload",f);b();return}}catch(a){}k++;ca(s,200)}};Ga(c,"load",s);J.body.appendChild(c);c.src=e}else We(function(){Ee(a,b)},100)};var $=function(){this.G=this.w=!1;this.C={};this.D=[];this.U=0;this.S=[["www.google-analytics.com","","/plugins/"]];this._gasoCPath=this._gasoDomain=this.bb=void 0;Re();Se()};E=$[x];E.oa=function(a,b){return this.r(a,void 0,b)};E.r=function(a,b,c){b&&H(23);c&&H(67);void 0==b&&(b="~"+M.U++);a=new U(b,a,c);M.C[b]=a;M.D[n](a);return a};E.u=function(a){a=a||"";return M.C[a]||M.r(void 0,a)};E.pa=function(){return M.D[ja](0)};E.ab=function(){return M.D[w]};E.aa=function(){this.w=!0}; +E.la=function(){this.G=!0};var Fe=function(a){if("prerender"==J.webkitVisibilityState)return!1;a();return!0};var M=new $;var Ie=W._gat;Ie&&Ba(Ie._getTracker)?M=Ie:W._gat=M;var Z=new Y;(function(a){if(!Fe(a)){H(123);var b=!1,c=function(){!b&&Fe(a)&&(b=!0,Ha(J,"webkitvisibilitychange",c))};Ga(J,"webkitvisibilitychange",c)}})(function(){var a=W._gaq,b=!1;if(a&&Ba(a[n])&&(b="[object Array]"==Object[x][v].call(Object(a)),!b)){Z=a;return}W._gaq=Z;b&&Z[n][ya](Z,a)});function Yc(a){var b=1,c=0,d;if(a)for(b=0,d=a[w]-1;0<=d;d--)c=a.charCodeAt(d),b=(b<<6&268435455)+c+(c<<14),c=b&266338304,b=0!=c?b^c>>21:b;return b};})(); diff --git a/html/snippet.css b/html/snippet.css new file mode 100644 index 0000000..f101370 --- /dev/null +++ b/html/snippet.css @@ -0,0 +1,52 @@ +/* Pretty printing styles. Used with prettify.js. */ + +/* SPAN elements with the classes below are added by prettyprint. */ +.pln { color: #000 } /* plain text */ + +@media screen { + .str { color: #793AFF } /* string content */ + .kwd { color: #7F0055 } /* a keyword */ + .com { color: green} /* a comment */ + .typ { color: #1C1C1C } /* a type name */ + .lit { color: black } /* a literal value */ + /* punctuation, lisp open bracket, lisp close bracket */ + .pun, .opn, .clo { color: #1C1C1C} + .tag { color: #008 } /* a markup tag name */ + .atn { color: #606 } /* a markup attribute name */ + .atv { color: #793AFF} /* #080a markup attribute value */ + .dec, .var { color: #606 } /* a declaration; a variable name */ + .fun { color: red } /* a function name */ +} + +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { color: #060 } + .kwd { color: #006; font-weight: bold } + .com { color: #600; font-style: italic } + .typ { color: #404; font-weight: bold } + .lit { color: #044 } + .pun, .opn, .clo { color: #440 } + .tag { color: #006; font-weight: bold } + .atn { color: #404 } + .atv { color: #060 } +} + +/* Put a border around prettyprinted code snippets. */ +pre.prettyprint { overflow: auto; padding: 2px; border: 1px solid #888 } + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L5, +li.L6, +li.L7, +li.L8 { list-style-type: none } +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { background: #eee } diff --git a/html/snippet.js b/html/snippet.js new file mode 100644 index 0000000..6d55a6c --- /dev/null +++ b/html/snippet.js @@ -0,0 +1,1473 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * some functions for browser-side pretty printing of code contained in html. + * + * <p> + * For a fairly comprehensive set of languages see the + * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a> + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + * <p> + * Usage: <ol> + * <li> include this source file in an html page via + * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>} + * <li> define style rules. See the example page for examples. + * <li> mark the {@code <pre>} and {@code <code>} tags in your source with + * {@code class=prettyprint.} + * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty + * printer needs to do more substantial DOM manipulations to support that, so + * some css styles may not be preserved. + * </ol> + * That's it. I wanted to keep the API as simple as possible, so there's no + * need to specify which language the code is in, but if you wish, you can add + * another class to the {@code <pre>} or {@code <code>} element to specify the + * language, as in {@code <pre class="prettyprint lang-java">}. Any class that + * starts with "lang-" followed by a file extension, specifies the file type. + * See the "lang-*.js" files in this directory for code that implements + * per-language file handlers. + * <p> + * Change log:<br> + * cbeust, 2006/08/22 + * <blockquote> + * Java annotations (start with "@") are now captured as literals ("lit") + * </blockquote> + * @requires console + */ + +// JSLint declarations +/*global console, document, navigator, setTimeout, window */ + +/** + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with + * UI events. + * If set to {@code false}, {@code prettyPrint()} is synchronous. + */ +window['PR_SHOULD_USE_CONTINUATION'] = true; + +(function () { + // Keyword lists for various languages. + // We use things that coerce to strings to make them compact when minified + // and to defeat aggressive optimizers that fold large string constants. + var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"]; + var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," + + "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," + + "static,struct,switch,typedef,union,unsigned,void,volatile"]; + var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," + + "new,operator,private,protected,public,this,throw,true,try,typeof"]; + var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," + + "concept,concept_map,const_cast,constexpr,decltype," + + "dynamic_cast,explicit,export,friend,inline,late_check," + + "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," + + "template,typeid,typename,using,virtual,where"]; + var JAVA_KEYWORDS = [COMMON_KEYWORDS, + "abstract,boolean,extends,final,finally,implements,import," + + "instanceof,null,native,package,strictfp,super,synchronized,throws," + + "transient"]; + var CSHARP_KEYWORDS = [JAVA_KEYWORDS, + "as,base,by,checked,decimal,delegate,descending,dynamic,event," + + "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," + + "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," + + "stackalloc,string,uint,ulong,unchecked,unsafe,ushort,var,byte,"]; + var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," + + "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," + + "true,try,unless,until,when,while,yes"; + var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS, + "debugger,eval,export,function,null,undefined,var," + + "Infinity,NaN"]; + var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,foreach,for," + + "goto,if,import,last,local,my,next,no,our,print,package,redo,require," + + "sub,undef,unless,until,use,wantarray,while,BEGIN,END"; + var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," + + "elif,except,exec,finally,from,global,import,in,is,lambda," + + "nonlocal,not,or,pass,print,raise,try,with,yield," + + "False,True,None"]; + var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," + + "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," + + "rescue,retry,self,super,then,true,undef,unless,until,when,yield," + + "BEGIN,END"]; + var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," + + "function,in,local,set,then,until"]; + var ALL_KEYWORDS = [ + CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS + + PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS]; + var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/; + + // token style names. correspond to css classes + /** + * token style for a string literal + * @const + */ + var PR_STRING = 'str'; + /** + * token style for a keyword + * @const + */ + var PR_KEYWORD = 'kwd'; + /** + * token style for a comment + * @const + */ + var PR_COMMENT = 'com'; + /** + * token style for a type + * @const + */ + var PR_TYPE = 'typ'; + /** + * token style for a literal value. e.g. 1, null, true. + * @const + */ + var PR_LITERAL = 'lit'; + /** + * token style for a punctuation string. + * @const + */ + var PR_PUNCTUATION = 'pun'; + /** + * token style for a punctuation string. + * @const + */ + var PR_PLAIN = 'pln'; + + /** + * token style for an sgml tag. + * @const + */ + var PR_TAG = 'tag'; + /** + * token style for a markup declaration such as a DOCTYPE. + * @const + */ + var PR_DECLARATION = 'dec'; + /** + * token style for embedded source. + * @const + */ + var PR_SOURCE = 'src'; + /** + * token style for an sgml attribute name. + * @const + */ + var PR_ATTRIB_NAME = 'atn'; + /** + * token style for an sgml attribute value. + * @const + */ + var PR_ATTRIB_VALUE = 'atv'; + + /** + * A class that indicates a section of markup that is not code, e.g. to allow + * embedding of line numbers within code listings. + * @const + */ + var PR_NOCODE = 'nocode'; + +/** + * A set of tokens that can precede a regular expression literal in + * javascript + * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html + * has the full list, but I've removed ones that might be problematic when + * seen in languages that don't support regular expression literals. + * + * <p>Specifically, I've removed any keywords that can't precede a regexp + * literal in a syntactically legal javascript program, and I've removed the + * "in" keyword since it's not a keyword in many languages, and might be used + * as a count of inches. + * + * <p>The link a above does not accurately describe EcmaScript rules since + * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works + * very well in practice. + * + * @private + * @const + */ +var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*'; + +// CAVEAT: this does not properly handle the case where a regular +// expression immediately follows another since a regular expression may +// have flags for case-sensitivity and the like. Having regexp tokens +// adjacent is not valid in any language I'm aware of, so I'm punting. +// TODO: maybe style special characters inside a regexp as punctuation. + + + /** + * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally + * matches the union of the sets of strings matched by the input RegExp. + * Since it matches globally, if the input strings have a start-of-input + * anchor (/^.../), it is ignored for the purposes of unioning. + * @param {Array.<RegExp>} regexs non multiline, non-global regexs. + * @return {RegExp} a global regex. + */ + function combinePrefixPatterns(regexs) { + var capturedGroupIndex = 0; + + var needToFoldCase = false; + var ignoreCase = false; + for (var i = 0, n = regexs.length; i < n; ++i) { + var regex = regexs[i]; + if (regex.ignoreCase) { + ignoreCase = true; + } else if (/[a-z]/i.test(regex.source.replace( + /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) { + needToFoldCase = true; + ignoreCase = false; + break; + } + } + + var escapeCharToCodeUnit = { + 'b': 8, + 't': 9, + 'n': 0xa, + 'v': 0xb, + 'f': 0xc, + 'r': 0xd + }; + + function decodeEscape(charsetPart) { + var cc0 = charsetPart.charCodeAt(0); + if (cc0 !== 92 /* \\ */) { + return cc0; + } + var c1 = charsetPart.charAt(1); + cc0 = escapeCharToCodeUnit[c1]; + if (cc0) { + return cc0; + } else if ('0' <= c1 && c1 <= '7') { + return parseInt(charsetPart.substring(1), 8); + } else if (c1 === 'u' || c1 === 'x') { + return parseInt(charsetPart.substring(2), 16); + } else { + return charsetPart.charCodeAt(1); + } + } + + function encodeEscape(charCode) { + if (charCode < 0x20) { + return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16); + } + var ch = String.fromCharCode(charCode); + if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') { + ch = '\\' + ch; + } + return ch; + } + + function caseFoldCharset(charSet) { + var charsetParts = charSet.substring(1, charSet.length - 1).match( + new RegExp( + '\\\\u[0-9A-Fa-f]{4}' + + '|\\\\x[0-9A-Fa-f]{2}' + + '|\\\\[0-3][0-7]{0,2}' + + '|\\\\[0-7]{1,2}' + + '|\\\\[\\s\\S]' + + '|-' + + '|[^-\\\\]', + 'g')); + var groups = []; + var ranges = []; + var inverse = charsetParts[0] === '^'; + for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) { + var p = charsetParts[i]; + if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups. + groups.push(p); + } else { + var start = decodeEscape(p); + var end; + if (i + 2 < n && '-' === charsetParts[i + 1]) { + end = decodeEscape(charsetParts[i + 2]); + i += 2; + } else { + end = start; + } + ranges.push([start, end]); + // If the range might intersect letters, then expand it. + // This case handling is too simplistic. + // It does not deal with non-latin case folding. + // It works for latin source code identifiers though. + if (!(end < 65 || start > 122)) { + if (!(end < 65 || start > 90)) { + ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]); + } + if (!(end < 97 || start > 122)) { + ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]); + } + } + } + } + + // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]] + // -> [[1, 12], [14, 14], [16, 17]] + ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); }); + var consolidatedRanges = []; + var lastRange = [NaN, NaN]; + for (var i = 0; i < ranges.length; ++i) { + var range = ranges[i]; + if (range[0] <= lastRange[1] + 1) { + lastRange[1] = Math.max(lastRange[1], range[1]); + } else { + consolidatedRanges.push(lastRange = range); + } + } + + var out = ['[']; + if (inverse) { out.push('^'); } + out.push.apply(out, groups); + for (var i = 0; i < consolidatedRanges.length; ++i) { + var range = consolidatedRanges[i]; + out.push(encodeEscape(range[0])); + if (range[1] > range[0]) { + if (range[1] + 1 > range[0]) { out.push('-'); } + out.push(encodeEscape(range[1])); + } + } + out.push(']'); + return out.join(''); + } + + function allowAnywhereFoldCaseAndRenumberGroups(regex) { + // Split into character sets, escape sequences, punctuation strings + // like ('(', '(?:', ')', '^'), and runs of characters that do not + // include any of the above. + var parts = regex.source.match( + new RegExp( + '(?:' + + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set + + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape + + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape + + '|\\\\[0-9]+' // a back-reference or octal escape + + '|\\\\[^ux0-9]' // other escape sequence + + '|\\(\\?[:!=]' // start of a non-capturing group + + '|[\\(\\)\\^]' // start/emd of a group, or line start + + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters + + ')', + 'g')); + var n = parts.length; + + // Maps captured group numbers to the number they will occupy in + // the output or to -1 if that has not been determined, or to + // undefined if they need not be capturing in the output. + var capturedGroups = []; + + // Walk over and identify back references to build the capturedGroups + // mapping. + for (var i = 0, groupIndex = 0; i < n; ++i) { + var p = parts[i]; + if (p === '(') { + // groups are 1-indexed, so max group index is count of '(' + ++groupIndex; + } else if ('\\' === p.charAt(0)) { + var decimalValue = +p.substring(1); + if (decimalValue && decimalValue <= groupIndex) { + capturedGroups[decimalValue] = -1; + } + } + } + + // Renumber groups and reduce capturing groups to non-capturing groups + // where possible. + for (var i = 1; i < capturedGroups.length; ++i) { + if (-1 === capturedGroups[i]) { + capturedGroups[i] = ++capturedGroupIndex; + } + } + for (var i = 0, groupIndex = 0; i < n; ++i) { + var p = parts[i]; + if (p === '(') { + ++groupIndex; + if (capturedGroups[groupIndex] === undefined) { + parts[i] = '(?:'; + } + } else if ('\\' === p.charAt(0)) { + var decimalValue = +p.substring(1); + if (decimalValue && decimalValue <= groupIndex) { + parts[i] = '\\' + capturedGroups[groupIndex]; + } + } + } + + // Remove any prefix anchors so that the output will match anywhere. + // ^^ really does mean an anchored match though. + for (var i = 0, groupIndex = 0; i < n; ++i) { + if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; } + } + + // Expand letters to groups to handle mixing of case-sensitive and + // case-insensitive patterns if necessary. + if (regex.ignoreCase && needToFoldCase) { + for (var i = 0; i < n; ++i) { + var p = parts[i]; + var ch0 = p.charAt(0); + if (p.length >= 2 && ch0 === '[') { + parts[i] = caseFoldCharset(p); + } else if (ch0 !== '\\') { + // TODO: handle letters in numeric escapes. + parts[i] = p.replace( + /[a-zA-Z]/g, + function (ch) { + var cc = ch.charCodeAt(0); + return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']'; + }); + } + } + } + + return parts.join(''); + } + + var rewritten = []; + for (var i = 0, n = regexs.length; i < n; ++i) { + var regex = regexs[i]; + if (regex.global || regex.multiline) { throw new Error('' + regex); } + rewritten.push( + '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')'); + } + + return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g'); + } + + /** + * Split markup into a string of source code and an array mapping ranges in + * that string to the text nodes in which they appear. + * + * <p> + * The HTML DOM structure:</p> + * <pre> + * (Element "p" + * (Element "b" + * (Text "print ")) ; #1 + * (Text "'Hello '") ; #2 + * (Element "br") ; #3 + * (Text " + 'World';")) ; #4 + * </pre> + * <p> + * corresponds to the HTML + * {@code <p><b>print </b>'Hello '<br> + 'World';</p>}.</p> + * + * <p> + * It will produce the output:</p> + * <pre> + * { + * sourceCode: "print 'Hello '\n + 'World';", + * // 1 2 + * // 012345678901234 5678901234567 + * spans: [0, #1, 6, #2, 14, #3, 15, #4] + * } + * </pre> + * <p> + * where #1 is a reference to the {@code "print "} text node above, and so + * on for the other text nodes. + * </p> + * + * <p> + * The {@code} spans array is an array of pairs. Even elements are the start + * indices of substrings, and odd elements are the text nodes (or BR elements) + * that contain the text for those substrings. + * Substrings continue until the next index or the end of the source. + * </p> + * + * @param {Node} node an HTML DOM subtree containing source-code. + * @return {Object} source code and the text nodes in which they occur. + */ + function extractSourceSpans(node) { + var nocode = /(?:^|\s)nocode(?:\s|$)/; + + var chunks = []; + var length = 0; + var spans = []; + var k = 0; + + var whitespace; + if (node.currentStyle) { + whitespace = node.currentStyle.whiteSpace; + } else if (window.getComputedStyle) { + whitespace = document.defaultView.getComputedStyle(node, null) + .getPropertyValue('white-space'); + } + var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3); + + function walk(node) { + switch (node.nodeType) { + case 1: // Element + if (nocode.test(node.className)) { return; } + for (var child = node.firstChild; child; child = child.nextSibling) { + walk(child); + } + var nodeName = node.nodeName; + if ('BR' === nodeName || 'LI' === nodeName) { + chunks[k] = '\n'; + spans[k << 1] = length++; + spans[(k++ << 1) | 1] = node; + } + break; + case 3: case 4: // Text + var text = node.nodeValue; + if (text.length) { + if (!isPreformatted) { + text = text.replace(/[ \t\r\n]+/g, ' '); + } else { + text = text.replace(/\r\n?/g, '\n'); // Normalize newlines. + } + // TODO: handle tabs here? + chunks[k] = text; + spans[k << 1] = length; + length += text.length; + spans[(k++ << 1) | 1] = node; + } + break; + } + } + + walk(node); + + return { + sourceCode: chunks.join('').replace(/\n$/, ''), + spans: spans + }; + } + + /** + * Apply the given language handler to sourceCode and add the resulting + * decorations to out. + * @param {number} basePos the index of sourceCode within the chunk of source + * whose decorations are already present on out. + */ + function appendDecorations(basePos, sourceCode, langHandler, out) { + if (!sourceCode) { return; } + var job = { + sourceCode: sourceCode, + basePos: basePos + }; + langHandler(job); + out.push.apply(out, job.decorations); + } + + var notWs = /\S/; + + /** + * Given an element, if it contains only one child element and any text nodes + * it contains contain only space characters, return the sole child element. + * Otherwise returns undefined. + * <p> + * This is meant to return the CODE element in {@code <pre><code ...>} when + * there is a single child element that contains all the non-space textual + * content, but not to return anything where there are multiple child elements + * as in {@code <pre><code>...</code><code>...</code></pre>} or when there + * is textual content. + */ + function childContentWrapper(element) { + var wrapper = undefined; + for (var c = element.firstChild; c; c = c.nextSibling) { + var type = c.nodeType; + wrapper = (type === 1) // Element Node + ? (wrapper ? element : c) + : (type === 3) // Text Node + ? (notWs.test(c.nodeValue) ? element : wrapper) + : wrapper; + } + return wrapper === element ? undefined : wrapper; + } + + /** Given triples of [style, pattern, context] returns a lexing function, + * The lexing function interprets the patterns to find token boundaries and + * returns a decoration list of the form + * [index_0, style_0, index_1, style_1, ..., index_n, style_n] + * where index_n is an index into the sourceCode, and style_n is a style + * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to + * all characters in sourceCode[index_n-1:index_n]. + * + * The stylePatterns is a list whose elements have the form + * [style : string, pattern : RegExp, DEPRECATED, shortcut : string]. + * + * Style is a style constant like PR_PLAIN, or can be a string of the + * form 'lang-FOO', where FOO is a language extension describing the + * language of the portion of the token in $1 after pattern executes. + * E.g., if style is 'lang-lisp', and group 1 contains the text + * '(hello (world))', then that portion of the token will be passed to the + * registered lisp handler for formatting. + * The text before and after group 1 will be restyled using this decorator + * so decorators should take care that this doesn't result in infinite + * recursion. For example, the HTML lexer rule for SCRIPT elements looks + * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match + * '<script>foo()<\/script>', which would cause the current decorator to + * be called with '<script>' which would not match the same rule since + * group 1 must not be empty, so it would be instead styled as PR_TAG by + * the generic tag rule. The handler registered for the 'js' extension would + * then be called with 'foo()', and finally, the current decorator would + * be called with '<\/script>' which would not match the original rule and + * so the generic tag rule would identify it as a tag. + * + * Pattern must only match prefixes, and if it matches a prefix, then that + * match is considered a token with the same style. + * + * Context is applied to the last non-whitespace, non-comment token + * recognized. + * + * Shortcut is an optional string of characters, any of which, if the first + * character, gurantee that this pattern and only this pattern matches. + * + * @param {Array} shortcutStylePatterns patterns that always start with + * a known character. Must have a shortcut string. + * @param {Array} fallthroughStylePatterns patterns that will be tried in + * order if the shortcut ones fail. May have shortcuts. + * + * @return {function (Object)} a + * function that takes source code and returns a list of decorations. + */ + function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) { + var shortcuts = {}; + var tokenizer; + (function () { + var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns); + var allRegexs = []; + var regexKeys = {}; + for (var i = 0, n = allPatterns.length; i < n; ++i) { + var patternParts = allPatterns[i]; + var shortcutChars = patternParts[3]; + if (shortcutChars) { + for (var c = shortcutChars.length; --c >= 0;) { + shortcuts[shortcutChars.charAt(c)] = patternParts; + } + } + var regex = patternParts[1]; + var k = '' + regex; + if (!regexKeys.hasOwnProperty(k)) { + allRegexs.push(regex); + regexKeys[k] = null; + } + } + allRegexs.push(/[\0-\uffff]/); + tokenizer = combinePrefixPatterns(allRegexs); + })(); + + var nPatterns = fallthroughStylePatterns.length; + + /** + * Lexes job.sourceCode and produces an output array job.decorations of + * style classes preceded by the position at which they start in + * job.sourceCode in order. + * + * @param {Object} job an object like <pre>{ + * sourceCode: {string} sourceText plain text, + * basePos: {int} position of job.sourceCode in the larger chunk of + * sourceCode. + * }</pre> + */ + var decorate = function (job) { + var sourceCode = job.sourceCode, basePos = job.basePos; + /** Even entries are positions in source in ascending order. Odd enties + * are style markers (e.g., PR_COMMENT) that run from that position until + * the end. + * @type {Array.<number|string>} + */ + var decorations = [basePos, PR_PLAIN]; + var pos = 0; // index into sourceCode + var tokens = sourceCode.match(tokenizer) || []; + var styleCache = {}; + + for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) { + var token = tokens[ti]; + var style = styleCache[token]; + var match = void 0; + + var isEmbedded; + if (typeof style === 'string') { + isEmbedded = false; + } else { + var patternParts = shortcuts[token.charAt(0)]; + if (patternParts) { + match = token.match(patternParts[1]); + style = patternParts[0]; + } else { + for (var i = 0; i < nPatterns; ++i) { + patternParts = fallthroughStylePatterns[i]; + match = token.match(patternParts[1]); + if (match) { + style = patternParts[0]; + break; + } + } + + if (!match) { // make sure that we make progress + style = PR_PLAIN; + } + } + + isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5); + if (isEmbedded && !(match && typeof match[1] === 'string')) { + isEmbedded = false; + style = PR_SOURCE; + } + + if (!isEmbedded) { styleCache[token] = style; } + } + + var tokenStart = pos; + pos += token.length; + + if (!isEmbedded) { + decorations.push(basePos + tokenStart, style); + } else { // Treat group 1 as an embedded block of source code. + var embeddedSource = match[1]; + var embeddedSourceStart = token.indexOf(embeddedSource); + var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length; + if (match[2]) { + // If embeddedSource can be blank, then it would match at the + // beginning which would cause us to infinitely recurse on the + // entire token, so we catch the right context in match[2]. + embeddedSourceEnd = token.length - match[2].length; + embeddedSourceStart = embeddedSourceEnd - embeddedSource.length; + } + var lang = style.substring(5); + // Decorate the left of the embedded source + appendDecorations( + basePos + tokenStart, + token.substring(0, embeddedSourceStart), + decorate, decorations); + // Decorate the embedded source + appendDecorations( + basePos + tokenStart + embeddedSourceStart, + embeddedSource, + langHandlerForExtension(lang, embeddedSource), + decorations); + // Decorate the right of the embedded section + appendDecorations( + basePos + tokenStart + embeddedSourceEnd, + token.substring(embeddedSourceEnd), + decorate, decorations); + } + } + job.decorations = decorations; + }; + return decorate; + } + + /** returns a function that produces a list of decorations from source text. + * + * This code treats ", ', and ` as string delimiters, and \ as a string + * escape. It does not recognize perl's qq() style strings. + * It has no special handling for double delimiter escapes as in basic, or + * the tripled delimiters used in python, but should work on those regardless + * although in those cases a single string literal may be broken up into + * multiple adjacent string literals. + * + * It recognizes C, C++, and shell style comments. + * + * @param {Object} options a set of optional parameters. + * @return {function (Object)} a function that examines the source code + * in the input job and builds the decoration list. + */ + function sourceDecorator(options) { + var shortcutStylePatterns = [], fallthroughStylePatterns = []; + if (options['tripleQuotedStrings']) { + // '''multi-line-string''', 'single-line-string', and double-quoted + shortcutStylePatterns.push( + [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, + null, '\'"']); + } else if (options['multiLineStrings']) { + // 'multi-line-string', "multi-line-string" + shortcutStylePatterns.push( + [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, + null, '\'"`']); + } else { + // 'single-line-string', "single-line-string" + shortcutStylePatterns.push( + [PR_STRING, + /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, + null, '"\'']); + } + if (options['verbatimStrings']) { + // verbatim-string-literal production from the C# grammar. See issue 93. + fallthroughStylePatterns.push( + [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]); + } + var hc = options['hashComments']; + if (hc) { + if (options['cStyleComments']) { + if (hc > 1) { // multiline hash comments + shortcutStylePatterns.push( + [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']); + + } else { + // Stop C preprocessor declarations at an unclosed open comment +// shortcutStylePatterns.push( +// [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, +// null, '#']); + } + fallthroughStylePatterns.push( + [PR_STRING, + /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, + null]); + } else { + shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']); + } + } + if (options['cStyleComments']) { + fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]); + fallthroughStylePatterns.push( + [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]); + } + if (options['regexLiterals']) { + /** + * @const + */ + var REGEX_LITERAL = ( + // A regular expression literal starts with a slash that is + // not followed by * or / so that it is not confused with + // comments. + '/(?=[^/*])' + // and then contains any number of raw characters, + + '(?:[^/\\x5B\\x5C]' + // escape sequences (\x5C), + + '|\\x5C[\\s\\S]' + // or non-nesting character sets (\x5B\x5D); + + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+' + // finally closed by a /. + + '/'); + fallthroughStylePatterns.push( + ['lang-regex', + new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')') + ]); + } + + var types = options['types']; + if (types) { + fallthroughStylePatterns.push([PR_TYPE, types]); + } + + var keywords = ("" + options['keywords']).replace(/^ | $/g, ''); + if (keywords.length) { + fallthroughStylePatterns.push( + [PR_KEYWORD, + new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'), + null]); + } + + shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']); + fallthroughStylePatterns.push( + // TODO(mikesamuel): recognize non-latin letters and numerals in idents + [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null], + [PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null], + [PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null], + [PR_LITERAL, + new RegExp( + '^(?:' + // A hex number + + '0x[a-f0-9]+' + // or an octal or decimal number, + + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)' + // possibly in scientific notation + + '(?:e[+\\-]?\\d+)?' + + ')' + // with an optional modifier like UL for unsigned long + + '[a-z]*', 'i'), + null, '0123456789'], + // Don't treat escaped quotes in bash as starting strings. See issue 144. + [PR_PLAIN, /^\\[\s\S]?/, null], + [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]); + + return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns); + } + + var decorateSource = sourceDecorator({ + 'keywords': ALL_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }); + + /** + * Given a DOM subtree, wraps it in a list, and puts each line into its own + * list item. + * + * @param {Node} node modified in place. Its content is pulled into an + * HTMLOListElement, and each line is moved into a separate list item. + * This requires cloning elements, so the input might not have unique + * IDs after numbering. + */ + function numberLines(node, opt_startLineNum) { + var nocode = /(?:^|\s)nocode(?:\s|$)/; + var lineBreak = /\r\n?|\n/; + + var document = node.ownerDocument; + + var whitespace; + if (node.currentStyle) { + whitespace = node.currentStyle.whiteSpace; + } else if (window.getComputedStyle) { + whitespace = document.defaultView.getComputedStyle(node, null) + .getPropertyValue('white-space'); + } + // If it's preformatted, then we need to split lines on line breaks + // in addition to <BR>s. + var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3); + + var li = document.createElement('LI'); + while (node.firstChild) { + li.appendChild(node.firstChild); + } + // An array of lines. We split below, so this is initialized to one + // un-split line. + var listItems = [li]; + + function walk(node) { + switch (node.nodeType) { + case 1: // Element + if (nocode.test(node.className)) { break; } + if ('BR' === node.nodeName) { + breakAfter(node); + // Discard the <BR> since it is now flush against a </LI>. + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } else { + for (var child = node.firstChild; child; child = child.nextSibling) { + walk(child); + } + } + break; + case 3: case 4: // Text + if (isPreformatted) { + var text = node.nodeValue; + var match = text.match(lineBreak); + if (match) { + var firstLine = text.substring(0, match.index); + node.nodeValue = firstLine; + var tail = text.substring(match.index + match[0].length); + if (tail) { + var parent = node.parentNode; + parent.insertBefore( + document.createTextNode(tail), node.nextSibling); + } + breakAfter(node); + if (!firstLine) { + // Don't leave blank text nodes in the DOM. + node.parentNode.removeChild(node); + } + } + } + break; + } + } + + // Split a line after the given node. + function breakAfter(lineEndNode) { + // If there's nothing to the right, then we can skip ending the line + // here, and move root-wards since splitting just before an end-tag + // would require us to create a bunch of empty copies. + while (!lineEndNode.nextSibling) { + lineEndNode = lineEndNode.parentNode; + if (!lineEndNode) { return; } + } + + function breakLeftOf(limit, copy) { + // Clone shallowly if this node needs to be on both sides of the break. + var rightSide = copy ? limit.cloneNode(false) : limit; + var parent = limit.parentNode; + if (parent) { + // We clone the parent chain. + // This helps us resurrect important styling elements that cross lines. + // E.g. in <i>Foo<br>Bar</i> + // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>. + var parentClone = breakLeftOf(parent, 1); + // Move the clone and everything to the right of the original + // onto the cloned parent. + var next = limit.nextSibling; + parentClone.appendChild(rightSide); + for (var sibling = next; sibling; sibling = next) { + next = sibling.nextSibling; + parentClone.appendChild(sibling); + } + } + return rightSide; + } + + var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0); + + // Walk the parent chain until we reach an unattached LI. + for (var parent; + // Check nodeType since IE invents document fragments. + (parent = copiedListItem.parentNode) && parent.nodeType === 1;) { + copiedListItem = parent; + } + // Put it on the list of lines for later processing. + listItems.push(copiedListItem); + } + + // Split lines while there are lines left to split. + for (var i = 0; // Number of lines that have been split so far. + i < listItems.length; // length updated by breakAfter calls. + ++i) { + walk(listItems[i]); + } + + // Make sure numeric indices show correctly. + if (opt_startLineNum === (opt_startLineNum|0)) { + listItems[0].setAttribute('value', opt_startLineNum); + } + + var ol = document.createElement('OL'); + ol.className = 'linenums'; + var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0; + for (var i = 0, n = listItems.length; i < n; ++i) { + li = listItems[i]; + // Stick a class on the LIs so that stylesheets can + // color odd/even rows, or any other row pattern that + // is co-prime with 10. + li.className = 'L' + ((i + offset) % 10); + if (!li.firstChild) { + li.appendChild(document.createTextNode('\xA0')); + } + ol.appendChild(li); + } + + node.appendChild(ol); + } + + /** + * Breaks {@code job.sourceCode} around style boundaries in + * {@code job.decorations} and modifies {@code job.sourceNode} in place. + * @param {Object} job like <pre>{ + * sourceCode: {string} source as plain text, + * spans: {Array.<number|Node>} alternating span start indices into source + * and the text node or element (e.g. {@code <BR>}) corresponding to that + * span. + * decorations: {Array.<number|string} an array of style classes preceded + * by the position at which they start in job.sourceCode in order + * }</pre> + * @private + */ + function recombineTagsAndDecorations(job) { + var isIE = /\bMSIE\b/.test(navigator.userAgent); + var newlineRe = /\n/g; + + var source = job.sourceCode; + var sourceLength = source.length; + // Index into source after the last code-unit recombined. + var sourceIndex = 0; + + var spans = job.spans; + var nSpans = spans.length; + // Index into spans after the last span which ends at or before sourceIndex. + var spanIndex = 0; + + var decorations = job.decorations; + var nDecorations = decorations.length; + // Index into decorations after the last decoration which ends at or before + // sourceIndex. + var decorationIndex = 0; + + // Remove all zero-length decorations. + decorations[nDecorations] = sourceLength; + var decPos, i; + for (i = decPos = 0; i < nDecorations;) { + if (decorations[i] !== decorations[i + 2]) { + decorations[decPos++] = decorations[i++]; + decorations[decPos++] = decorations[i++]; + } else { + i += 2; + } + } + nDecorations = decPos; + + // Simplify decorations. + for (i = decPos = 0; i < nDecorations;) { + var startPos = decorations[i]; + // Conflate all adjacent decorations that use the same style. + var startDec = decorations[i + 1]; + var end = i + 2; + while (end + 2 <= nDecorations && decorations[end + 1] === startDec) { + end += 2; + } + decorations[decPos++] = startPos; + decorations[decPos++] = startDec; + i = end; + } + + nDecorations = decorations.length = decPos; + + var decoration = null; + while (spanIndex < nSpans) { + var spanStart = spans[spanIndex]; + var spanEnd = spans[spanIndex + 2] || sourceLength; + + var decStart = decorations[decorationIndex]; + var decEnd = decorations[decorationIndex + 2] || sourceLength; + + var end = Math.min(spanEnd, decEnd); + + var textNode = spans[spanIndex + 1]; + var styledText; + if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s + // Don't introduce spans around empty text nodes. + && (styledText = source.substring(sourceIndex, end))) { + // This may seem bizarre, and it is. Emitting LF on IE causes the + // code to display with spaces instead of line breaks. + // Emitting Windows standard issue linebreaks (CRLF) causes a blank + // space to appear at the beginning of every line but the first. + // Emitting an old Mac OS 9 line separator makes everything spiffy. + if (isIE) { styledText = styledText.replace(newlineRe, '\r'); } + textNode.nodeValue = styledText; + var document = textNode.ownerDocument; + var span = document.createElement('SPAN'); + span.className = decorations[decorationIndex + 1]; + var parentNode = textNode.parentNode; + parentNode.replaceChild(span, textNode); + span.appendChild(textNode); + if (sourceIndex < spanEnd) { // Split off a text node. + spans[spanIndex + 1] = textNode + // TODO: Possibly optimize by using '' if there's no flicker. + = document.createTextNode(source.substring(end, spanEnd)); + parentNode.insertBefore(textNode, span.nextSibling); + } + } + + sourceIndex = end; + + if (sourceIndex >= spanEnd) { + spanIndex += 2; + } + if (sourceIndex >= decEnd) { + decorationIndex += 2; + } + } + } + + /** Maps language-specific file extensions to handlers. */ + var langHandlerRegistry = {}; + /** Register a language handler for the given file extensions. + * @param {function (Object)} handler a function from source code to a list + * of decorations. Takes a single argument job which describes the + * state of the computation. The single parameter has the form + * {@code { + * sourceCode: {string} as plain text. + * decorations: {Array.<number|string>} an array of style classes + * preceded by the position at which they start in + * job.sourceCode in order. + * The language handler should assigned this field. + * basePos: {int} the position of source in the larger source chunk. + * All positions in the output decorations array are relative + * to the larger source chunk. + * } } + * @param {Array.<string>} fileExtensions + */ + function registerLangHandler(handler, fileExtensions) { + for (var i = fileExtensions.length; --i >= 0;) { + var ext = fileExtensions[i]; + if (!langHandlerRegistry.hasOwnProperty(ext)) { + langHandlerRegistry[ext] = handler; + } else if (window['console']) { + console['warn']('cannot override language handler %s', ext); + } + } + } + function langHandlerForExtension(extension, source) { + if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) { + // Treat it as markup if the first non whitespace character is a < and + // the last non-whitespace character is a >. + extension = /^\s*</.test(source) + ? 'default-markup' + : 'default-code'; + } + return langHandlerRegistry[extension]; + } + registerLangHandler(decorateSource, ['default-code']); + registerLangHandler( + createSimpleLexer( + [], + [ + [PR_PLAIN, /^[^<?]+/], + [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/], + [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/], + // Unescaped content in an unknown language + ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/], + ['lang-', /^<%([\s\S]+?)(?:%>|$)/], + [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/], + ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i], + // Unescaped content in javascript. (Or possibly vbscript). + ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], + // Contains unescaped stylesheet content + ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i], + ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i] + ]), + ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']); + registerLangHandler( + createSimpleLexer( + [ + [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'], + [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\''] + ], + [ + [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i], + [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], + ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/], + [PR_PUNCTUATION, /^[=<>\/]+/], + ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i], + ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i], + ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i], + ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i], + ['lang-css', /^style\s*=\s*\'([^\']+)\'/i], + ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i] + ]), + ['in.tag']); + registerLangHandler( + createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']); + registerLangHandler(sourceDecorator({ + 'keywords': CPP_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true, + 'types': C_TYPES + }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']); + registerLangHandler(sourceDecorator({ + 'keywords': 'null,true,false' + }), ['json']); + registerLangHandler(sourceDecorator({ + 'keywords': CSHARP_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true, + 'verbatimStrings': true, + 'types': C_TYPES + }), ['cs']); + registerLangHandler(sourceDecorator({ + 'keywords': JAVA_KEYWORDS, + 'cStyleComments': true + }), ['java']); + registerLangHandler(sourceDecorator({ + 'keywords': SH_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true + }), ['bsh', 'csh', 'sh']); + registerLangHandler(sourceDecorator({ + 'keywords': PYTHON_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'tripleQuotedStrings': true + }), ['cv', 'py']); + registerLangHandler(sourceDecorator({ + 'keywords': PERL_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }), ['perl', 'pl', 'pm']); + registerLangHandler(sourceDecorator({ + 'keywords': RUBY_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }), ['rb']); + registerLangHandler(sourceDecorator({ + 'keywords': JSCRIPT_KEYWORDS, + 'cStyleComments': true, + 'regexLiterals': true + }), ['js']); + registerLangHandler(sourceDecorator({ + 'keywords': COFFEE_KEYWORDS, + 'hashComments': 3, // ### style block comments + 'cStyleComments': true, + 'multilineStrings': true, + 'tripleQuotedStrings': true, + 'regexLiterals': true + }), ['coffee']); + registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']); + + function applyDecorator(job) { + var opt_langExtension = job.langExtension; + + try { + // Extract tags, and convert the source code to plain text. + var sourceAndSpans = extractSourceSpans(job.sourceNode); + /** Plain text. @type {string} */ + var source = sourceAndSpans.sourceCode; + job.sourceCode = source; + job.spans = sourceAndSpans.spans; + job.basePos = 0; + + // Apply the appropriate language handler + langHandlerForExtension(opt_langExtension, source)(job); + + // Integrate the decorations and tags back into the source code, + // modifying the sourceNode in place. + recombineTagsAndDecorations(job); + } catch (e) { + if ('console' in window) { + console['log'](e && e['stack'] ? e['stack'] : e); + } + } + } + + /** + * @param sourceCodeHtml {string} The HTML to pretty print. + * @param opt_langExtension {string} The language name to use. + * Typically, a filename extension like 'cpp' or 'java'. + * @param opt_numberLines {number|boolean} True to number lines, + * or the 1-indexed number of the first line in sourceCodeHtml. + */ + function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) { + var container = document.createElement('PRE'); + // This could cause images to load and onload listeners to fire. + // E.g. <img onerror="alert(1337)" src="nosuchimage.png">. + // We assume that the inner HTML is from a trusted source. + container.innerHTML = sourceCodeHtml; + if (opt_numberLines) { + numberLines(container, opt_numberLines); + } + + var job = { + langExtension: opt_langExtension, + numberLines: opt_numberLines, + sourceNode: container + }; + applyDecorator(job); + return container.innerHTML; + } + + function prettyPrint(opt_whenDone) { + function byTagName(tn) { return document.getElementsByTagName(tn); } + // fetch a list of nodes to rewrite + var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')]; + var elements = []; + for (var i = 0; i < codeSegments.length; ++i) { + for (var j = 0, n = codeSegments[i].length; j < n; ++j) { + elements.push(codeSegments[i][j]); + } + } + codeSegments = null; + + var clock = Date; + if (!clock['now']) { + clock = { 'now': function () { return +(new Date); } }; + } + + // The loop is broken into a series of continuations to make sure that we + // don't make the browser unresponsive when rewriting a large page. + var k = 0; + var prettyPrintingJob; + + var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/; + var prettyPrintRe = /\bprettyprint\b/; + + function doWork() { + var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ? + clock['now']() + 250 /* ms */ : + Infinity); + for (; k < elements.length && clock['now']() < endTime; k++) { + var cs = elements[k]; + var className = cs.className; + if (className.indexOf('prettyprint') >= 0) { + // If the classes includes a language extensions, use it. + // Language extensions can be specified like + // <pre class="prettyprint lang-cpp"> + // the language extension "cpp" is used to find a language handler as + // passed to PR.registerLangHandler. + // HTML5 recommends that a language be specified using "language-" + // as the prefix instead. Google Code Prettify supports both. + // http://dev.w3.org/html5/spec-author-view/the-code-element.html + var langExtension = className.match(langExtensionRe); + // Support <pre class="prettyprint"><code class="language-c"> + var wrapper; + if (!langExtension && (wrapper = childContentWrapper(cs)) + && "CODE" === wrapper.tagName) { + langExtension = wrapper.className.match(langExtensionRe); + } + + if (langExtension) { + langExtension = langExtension[1]; + } + + // make sure this is not nested in an already prettified element + var nested = false; + for (var p = cs.parentNode; p; p = p.parentNode) { + if ((p.tagName === 'pre' || p.tagName === 'code' || + p.tagName === 'xmp') && + p.className && p.className.indexOf('prettyprint') >= 0) { + nested = true; + break; + } + } + if (!nested) { + // Look for a class like linenums or linenums:<n> where <n> is the + // 1-indexed number of the first line. + var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/); + lineNums = lineNums + ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true + : false; + if (lineNums) { numberLines(cs, lineNums); } + + // do the pretty printing + prettyPrintingJob = { + langExtension: langExtension, + sourceNode: cs, + numberLines: lineNums + }; + applyDecorator(prettyPrintingJob); + } + } + } + if (k < elements.length) { + // finish up in a continuation + setTimeout(doWork, 250); + } else if (opt_whenDone) { + opt_whenDone(); + } + } + + doWork(); + } + + /** + * Find all the {@code <pre>} and {@code <code>} tags in the DOM with + * {@code class=prettyprint} and prettify them. + * + * @param {Function?} opt_whenDone if specified, called when the last entry + * has been finished. + */ + window['prettyPrintOne'] = prettyPrintOne; + /** + * Pretty print a chunk of code. + * + * @param {string} sourceCodeHtml code as html + * @return {string} code as html, but prettier + */ + window['prettyPrint'] = prettyPrint; + /** + * Contains functions for creating and registering new language handlers. + * @type {Object} + */ + window['PR'] = { + 'createSimpleLexer': createSimpleLexer, + 'registerLangHandler': registerLangHandler, + 'sourceDecorator': sourceDecorator, + 'PR_ATTRIB_NAME': PR_ATTRIB_NAME, + 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE, + 'PR_COMMENT': PR_COMMENT, + 'PR_DECLARATION': PR_DECLARATION, + 'PR_KEYWORD': PR_KEYWORD, + 'PR_LITERAL': PR_LITERAL, + 'PR_NOCODE': PR_NOCODE, + 'PR_PLAIN': PR_PLAIN, + 'PR_PUNCTUATION': PR_PUNCTUATION, + 'PR_SOURCE': PR_SOURCE, + 'PR_STRING': PR_STRING, + 'PR_TAG': PR_TAG, + 'PR_TYPE': PR_TYPE + }; +})(); diff --git a/html/styles.css b/html/styles.css new file mode 100644 index 0000000..35aee0b --- /dev/null +++ b/html/styles.css @@ -0,0 +1,629 @@ +body { + background: white; + color: #1C1C1C; + margin-right: 20px; + margin-left: 20px; + font-size: 9pt; + font-weight: normal; + font-family: Arial, Helvetica, sans-serif; +} + +h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ol, dl, dd, dt, footer { + font-family: Arial, Verdana, Helvetica, sans-serif +} + +/* Set default font to 9 pt */ +table, div, p, dl, td, caption, th, ul, ol, li, dd, dt, pre, code { + font-size: 9pt; +} + +pre, code { + font-family: "Courier New", Courier, monospace; + border: 1px solid #888; + margin: 6px 1.5px; + padding: 1px 1px 1px 1px; + font-weight: normal; + font-style: normal; +} + +h1 {font-size: 24pt; color: #0E437D;} +h2 {font-size: 18pt; color: #0E437D;} +h3 {font-size: 14pt; color: #1C1C1C;} +h4 {font-size: 12pt; color: #1C1C1C;} +h5 {font-size: 10pt; color: #1C1C1C;} + +h1, h2, h3, h4, h5 { + font-weight: bold; + font-style: normal; + line-height: normal; + margin-top: 16pt; +} + +caption, p.caption { + font-size: 9pt; + color: #1C1C1C; + font-weight: bold; + text-align: left; + margin-top: 20px; + margin-bottom: 0px; +} + +ol { + margin-bottom: 20px; +} + +ul ul , ol ul, ul ol, ol ol{ + margin-top: 10px; +} + +ul li, ol li { + margin-bottom: 10px; +} + +ol.tutorstep li { + border-top: 2px solid #719cc7; + list-style-position: inside; + font-weight: bold; + margin-top: 30px; + margin-left: -20px; + padding-top: 3px; + font-size: 12pt; +} + +ol.tutorstep li p{ + font-size: 9pt; + font-weight: normal; + margin-top: 10px; +} + +ol.tutorstep ol li, ol.tutorstep li ol li, ol.tutorstep li ul li { + font-size: 9pt; + list-style-position: outside; + margin-left: 0px; + font-weight: normal; +} + +ol.tutorstep ol li p, ol.tutorstep ul li p { + font-size: 9pt; + font-weight: normal; + margin-top: 5px; +} + +ol li p, ul li p { + font-size: 9pt; + font-weight: normal; + margin-bottom: 2px; + margin-top: 2px; +} + +ol ol , ol.tutorstep ol{ + font-size: 9pt; + font-weight: normal; + list-style-type: lower-alpha; + color: #1C1C1C; + border-style: none; + margin-top: 10px; +} + +ol.tutorstep ul { + margin-top: 10px; + font-size: 9pt; +} + +ol ol li, ol ul li, ol.tutorstep ol li, ol.tutorstep ul li { + border-style: none; + margin-top: 5px; + font-size: 9pt; +} + +ul { + font-size: 9pt; + font-weight: normal; + color: #1C1C1C; +} + + +/* End of font face declarations */ + +/* Set table borders and heading row background */ +table { + border: 0px; + border-collapse: collapse; + width: 100%; + margin-top: 20px; + margin-bottom: 20px; + +} + +th { + border-top: 2px solid #719cc7; + border-right: 1px solid #c6d9f1; + border-left: 1px solid #c6d9f1; + background-color: #f3f7fb; + padding: 4px; + color: #719cc7; + font-size: 9pt; + font-weight: bold; +} + +td { + border: 1px solid #c6d9f1; + vertical-align:top; + padding: 3px 20px 5px 20px; +} + +/* Notes stand out using a light top & bottom borders with yellow background */ +table.note { + border-top: 2px solid #719cc7; + border-left: 0px; + border-right: 0px; + width: 100%; +} + +tr.note { + text-align: left; +} + +th.note { + text-align: left; + background-color: #ddd9c3; + background-image: note.gif; + border-top: 2px solid #719cc7; + border-bottom:1px solid #719cc7; + border-right: none; + +} + +td.note, p.note { + background-color: #eeece1; + color: #1C1C1C; + padding: 5px; + margin-top:12px; + margin-bottom:12px; + border: none; +} + +/* Figure titles are centered and bolded */ +p.figure , ol.tutorstep li p.figure, ol.tutorstep ol li p.figure, ol.tutorstep ul li p.figure { + text-align: center; + font-weight: bold; +} + +/* Red background and white text for things that need fixing before release */ +.fix { + background-color: red; + font-weight: bold; + color: white; +} + +/* Footer includes space and a gray line above */ +#footer { + font-size: 9pt; + padding-top:10px; + margin-top:20px; + text-align: center; + /* border-top:1px solid #EEEEEE; */ +} + +#banner { + padding: 8px 4px 8px 4px; + /* top right bottom left */ + border: 1px solid #7f7f7f; + width: 100%; + background-image: url("banner.png"); + text-align: left; + font-weight: bold; + font-size: 9pt; + color: #ffffff; +} + +caption { + font-size: 9pt; + color: #1C1C1C; + font-weight: bold; + text-align: center; + margin-top: 20px; + margin-bottom: 0px; +} + +div.qindex, div.navpath, div.navtab{ + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a:link { + color: #719cc7; + text-decoration: underline; + font-weight: bold; +} + +a:hover { + color: #0e437d; +} + +a:visited { + text-decoration: underline; + color: #719cc7; + font-weight: bold; +} + +a.qindex { + font-weight: bold; + padding: 2px; +} + +a.qindex:hover { + text-decoration: underline; + color: #0e437d; + padding: 2px; +} + +a.qindex:visited { + text-decoration: underline; + font-weight: bold; + color: #719cc7; + padding: 2px; +} + +a.qindexHL { + text-decoration: underline; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + padding: 2px 6px; + border: 1px double #9295C2; +} + +a.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; + padding: 2px 6px; +} + +div.banner { + padding: 8px 4px 0px 4px; + /* top right bottom left */ + border: 1px solid #7f7f7f; + width: 100%; + background-image: url("banner.png"); + text-align: left; + font-weight: bold; + font-size: 9pt; + color: #ffffff; +} + +div.footer { + font-size: 9pt; + padding-top:10px; + margin-top:20px; + text-align: center; +} + +dl.el { + margin-left: -1cm +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + padding: 4px 6px; + margin: 4px 8px 4px 2px; +} + +div.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + padding: 6px; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px +} + +td.md { + background-color: #f5f5f5; + font-weight: bold; +} + +td.mdname1 { + background-color: #f5f5f5; + font-weight: bold; + color: #602020; +} + +td.mdname { + background-color: #f5f5f5; + font-weight: bold; + color: #602020; + width: 600px; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +td.indexkey { + background-color: #eeeeff; + font-weight: bold; + border: 1px solid #CCCCCC; + margin: 2px 0px 2px 0; + padding: 2px 10px; +} + +td.indexvalue { + background-color: #eeeeff; + border: 1px solid #CCCCCC; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #f0f0f0; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { +} + +img.formulaInl { + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { color: #008000 } +span.keywordtype { color: #604020 } +span.keywordflow { color: #e08000 } +span.comment { color: #800000 } +span.preprocessor { color: #806020 } +span.stringliteral { color: #002080 } +span.charliteral { color: #008080 } +span.vhdldigit { color: #ff00ff } +span.vhdlchar { color: #000000 } +span.vhdlkeyword { color: #700070 } +span.vhdllogic { color: #ff0000 } + +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} + +.mdRow { + padding: 8px 10px; +} + +/* @group Member Descriptions */ + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F4F4F4A; + border: none; + margin: 4px; + padding: 3px 8px 4px 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #DBDBDB; +} + +.memTemplParams { + color: #606060; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; + margin-left: 3px; +} + +.memnav { + background-color: #eeeeff; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; +} + +.memname { + white-space: nowrap; + font-weight: bold; +} + +.memproto, .memdoc { + border: 1px solid #9BBCDD; +} + +.memproto { + padding: 0; + background-color: #D5E2EF; + font-weight: bold; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; +} + +.memdoc { + padding: 2px 5px; + background-color: #eef3f5; + border-top-width: 0; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; +} + +.memdoc p, .memdoc dl, .memdoc ul { + margin: 6px 0; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #853E0E; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +/* @end */ + +.search { color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #eeeeff; +} + +td.tiny { + font-size: 75%; +} + +.highlight { + background-color:#E2E2FF; +} + +/*---------- ide-eclipse Styles ---------*/ +.sh_ide-eclipse{font-family: "Courier New", Courier, monospace; + margin: 0px 0px; + padding: -30px -30px -30px -30px; + font-weight: normal; + font-style: normal;} +.sh_ide-eclipse .sh_sourceCode{background-color:#fff;color:#000;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_keyword{color:#7f0055;font-weight:bold;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_type{color:#7f0055;font-weight:bold;font-style:normal;} +/*.sh_ide-eclipse .sh_sourceCode .sh_string{color:#00f;font-weight:normal;font-style:normal;}*/ +.sh_ide-eclipse .sh_sourceCode .sh_string{color:#2A00FF;font-weight:normal;font-style:normal;} + +.sh_ide-eclipse .sh_sourceCode .sh_regexp{color:#00f;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_specialchar{color:#00f;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_comment{color:#238E23;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_number{color:#000;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_preproc{color:#3f5fbf;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_function{color:#000;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_url{color:#00f;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_date{color:#7f0055;font-weight:bold;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_time{color:#7f0055;font-weight:bold;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_file{color:#7f0055;font-weight:bold;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_ip{color:#00f;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_name{color:#00f;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_variable{color:#7f0055;font-weight:bold;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_oldfile{color:#00f;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_newfile{color:#00f;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_difflines{color:#7f0055;font-weight:bold;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_selector{color:#7f0055;font-weight:bold;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_property{color:#7f0055;font-weight:bold;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_value{color:#00f;font-weight:normal;font-style:normal;} +.sh_ide-eclipse .sh_sourceCode .sh_unknown{font-family: "Courier New", Courier, monospace;} + +/*------------- STYLE FOR NAMES FROM XML FILE -------------*/ +.sh_styleFromXML{color:#800000;font-weight:bold;} +/*-------------------------------------------------------*/ + +/*-------- Snippet Base Styles ----------*/ +.snippet-wrap {position:relative;} +*:first-child+html .snippet-wrap {display:inline-block;} +* html .snippet-wrap {display:inline-block;} +.snippet-reveal{text-decoration:underline;} +.snippet-wrap .snippet-menu, .snippet-wrap .snippet-hide {position:absolute; top:-99999px; right:15px; font-size:.9em;z-index:1;background-color:transparent;} +.snippet-wrap .snippet-hide {top:auto; bottom:1px;} +*:first-child+html .snippet-wrap .snippet-hide {bottom:1px;} +* html .snippet-wrap .snippet-hide {bottom:1px;} +.snippet-wrap .snippet-menu pre, .snippet-wrap .snippet-hide pre {background-color:transparent; margin:1; padding:0;} +.snippet-wrap .snippet-menu a, .snippet-wrap .snippet-hide a {padding:1px; text-decoration:underline;} +.snippet-wrap pre.sh_sourceCode{padding:1px;line-height:120%;overflow:auto;position:relative; + -moz-border-radius:0px; + -webkit-border-radius:0px; + border-radius:0px; + box-shadow: 1px 1px px #000; + -moz-box-shadow: 2px 2px 1px #000; + -webkit-box-shadow: 1px 1px 1px #000;} +.snippet-wrap pre.snippet-textonly {padding:1em;} +*:first-child+html .snippet-wrap pre.snippet-formatted {padding:0.5em 0.5em;} +* html .snippet-wrap pre.snippet-formatted {padding:0em 0.3em;} +.snippet-reveal pre.sh_sourceCode {padding:0em 0em; text-align:right;} +.snippet-wrap .snippet-num li{padding-left:2px;} +.snippet-wrap .snippet-no-num{list-style:none; padding:0em 0em; margin:0;} +.snippet-wrap .snippet-no-num li {list-style:none; padding-left:0;} +.snippet-wrap .snippet-num {margin:1em 0 1em 1em; padding-left:2px;} +.snippet-wrap .snippet-num li {list-style:decimal-leading-zero outside none;} +.snippet-wrap .snippet-no-num li.box {padding:0 6px; margin-left:-6px;} +.snippet-wrap .snippet-num li.box {border:1px solid; list-style-position:inside; margin-left:0px; padding-left:2px;} +*:first-child+html .snippet-wrap .snippet-num li.box {margin-left:-2px;} +* html .snippet-wrap .snippet-num li.box {margin-left:-2px;} +.snippet-wrap li.box-top {border-width:0px 0px 0 !important;} +.snippet-wrap li.box-bot {border-width:0 0px 0px !important;} +.snippet-wrap li.box-mid {border-width:0 0px !important;} +.snippet-wrap .snippet-num li .box-sp {width:10px; display:inline-block;} +*:first-child+html .snippet-wrap .snippet-num li .box-sp {width:20px;} +* html .snippet-wrap .snippet-num li .box-sp {width:2px;} +.snippet-wrap .snippet-no-num li.box {border:1px solid;} +.snippet-wrap .snippet-no-num li .box-sp {display:none;} diff --git a/html/tizen.css b/html/tizen.css new file mode 100644 index 0000000..3b05984 --- /dev/null +++ b/html/tizen.css @@ -0,0 +1,932 @@ +.attribute +{ + padding-bottom:15px; +} +#content pre +{ + /*text-align: left; + -webkit-border-radius: 8px; + -khtml-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; + border: 1px solid rgba(255, 255, 255, 0.2); + display:block; + color:#2c3123; + margin:15px 0px 15px -8px; + padding:12px 20px 12px 35px; + font-size: 14px; + /*overflow:hidden;*/ + /*word-wrap:break-word;*/ + /*white-space: normal;*/ + background: white; + color: #1C1C1C; + margin-right: 20px; + margin-left: 20px; + font-size: 10pt; + font-weight: normal; + font-family: Arial, Helvetica, sans-serif; +} +#content pre code +{ + font-size: 1em; + margin: 0px; + padding: 2px; + border: 1px solid #888; +} + +#content pre webidl +{ + font-size: 1em; + margin: 0px; + padding: 2px; + border: 1px solid #888; +} + +#content .prettyprint +{ +} + +#content .signature +{ + background-color: #FCE6B9; + word-wrap:break-word; +} + +#content .examplecode +{ + background-color: #D5F1FD; + word-wrap:break-word; +} + +#content .webidl +{ + background-color: #D9F0C4; + word-wrap:break-word; +} + +#content .prettyprint b +{ + font-weight: normal; + color: #c61800; /*letter-spacing: -1px;*/ +} + + +#content pre select +{ + border: 1px solid #c61800; +} + +#content input +{ + font-size: 16px; + margin-right: 10px; + font-family: Helvetica; + padding: 3px; +} +#content input[type="range"] +{ + width: 100%; +} + +#content button +{ + margin: 20px 10px 0 0; + font-family: Verdana; +} + +#content button.large +{ + font-size: 32px; +} + +#content pre b +{ + font-weight: normal; + color: #c61800; /*letter-spacing: -1px;*/ +} +#content pre em +{ + font-weight: normal; + font-style: normal; + color: #18a600; +} +#content pre input[type="range"] +{ + height: 6px; + cursor: pointer; + width: auto; +} + + + + +#content .product, #content .product-ua, #content .product-cc +{ +} + +#content dfn.external +{ + font-weight: normal; + font-style: italic; +} + +#content pre.idl +{ + border: solid thin; + background: #eee; + color: #000; + padding: 0.5em; +} + +#content pre.idl :link, #content pre.idl :visited +{ + color: inherit; + background: transparent; +} + +#content dfn +{ + font-style: normal; + font-weight: bolder; +} +#content em.ct, #content em.ct-samp +{ + text-transform: uppercase; + font-style: normal; + font-weight: normal; +} + +#content .issue +{ + padding: 1em; + border: 1px solid #f00; + background: #ffc; +} + +#content .issue::before +{ + content: "Issue"; + display: block; + width: 150px; + margin: -1.5em 0 0.5em 0; + font-weight: bold; + border: 1px solid #f00; + background: #fff; + padding: 3px 1em; +} + +#content .comment +{ + padding: 1em; + border: 1px solid #f00; + background: #fff; +} + +#content .comment::before +{ + content: "Comment"; + display: block; + width: 150px; + margin: -1.5em 0 0.5em 0; + font-weight: bold; + border: 1px solid #f00; + background: #fff; + padding: 3px 1em; +} + +#content .ws3 +{ + padding: 1em; + border: 1px solid #f00; + background: lightblue; +} + +#content .ws3::before +{ + content: "For WS3 Review"; + display: block; + width: 150px; + margin: -1.5em 0 0.5em 0; + font-weight: bold; + border: 1px solid #f00; + background: #fff; + padding: 3px 1em; +} + +#content .ws4 +{ + padding: 1em; + border: 1px solid #f00; + background: lightblue; +} + +#content .ws4::before +{ + content: "Under discussion"; + display: block; + width: 150px; + margin: -1.5em 0 0.5em 0; + font-weight: bold; + border: 1px solid #f00; + background: #fff; + padding: 3px 1em; +} + +#content .note +{ + margin-left: 2em; + border: 2px solid #CFF6D9; + padding: .5em; + padding-top: 0px; + padding-bottom: 1em; + color: #444; + background-color: #E2FFF0; + font-size: 0.8em; +} + +#content dd > dl +{ + margin: 0px; + padding: 0px; + margin-bottom: 15px; +} + +#content code +{ + font-size: 1.1em; + text-decoration: none; + color: #002108; +} + + +#content .dir_listing li +{ + list-style-type: none; + font-family: Tahoma, Arial, Helvetica, sans-serif; +} + +#content span span +{ + /*background-color: yellow;*/ +} + +#content li.folder +{ + list-style-image: url(images/expanded_folder.png); +} + +#content .authorguide +{ + border: 1px solid #67BBB5; + background: #E8EBFC; + padding: 1em; + font-size: .9em; + color: #003; +} + +#content .authorguide strong +{ + padding: .2em; + color: #003; + border: none; + position: relative; + display: block; + width: 200px; + left: -1.5em; + top: -1.5em; + background: #C6D8E6; + text-align: center; +} + +#content span.notetitle +{ + padding: .2em; + color: #066; + border: none; + position: relative; + display: block; + width: 40px; + left: -1.5em; + top: -.7em; + background: #F2FFF1; + padding-left: .2em; + text-align: center; +} + +#content var +{ + font-family: "Lucida Console" , Monaco, monospace; +} + +#content li.folder li +{ + list-style-image: none; +} + +#content .dir_listing .comment +{ + border: none; + font-family: "Courier New" , Courier, monospace; + color: #669933; +} + +#content .dir_listing img +{ + vertical-align: middle; +} + +#content .redNote +{ + color: red; +} + +#content dl.procedure dt +{ + font-weight: normal; +} + +#content .editorialNote +{ + padding: 5px; + background-color: #F3B9B7; + border: 3px dashed #FFEEB8; + color: #444; + font-size: 0.8em; +} + +#content li > ol +{ + list-style-type: upper-alpha; +} + +#content p[id]:after +{ + font-size: .8em; +} + +#content table.wac +{ + border-width: 1px; + border-spacing: 2px; + border-style: outset; + border-color: #808080; + border-collapse: collapse; + background-color: #ffffff; +} + +#content table.wac th +{ + border-width: 1px; + padding: 1px; + border-style: inset; + border-color: #808080; + background-color: #ffffff; +} + +#content table.wac td +{ + vertical-align: top; + border-width: 1px; + padding: 1px; + border-style: inset; + border-color: #808080; + background-color: #ffffff; +} + +#content .wacreqid +{ + font-weight: bold; +} + +#content .wacreqid_ext +{ + font-weight: bold; +} + +#content wacreqtext +{ + font-style: normal; +} + +/* Table styles */ +#content table +{ + border: 0px; + border-collapse: collapse; + margin-top: 20px; + margin-bottom: 20px; +} + +#content th +{ + border-top: 2px solid #719cc7; + border-right: 1px solid #c6d9f1; + border-left: 1px solid #c6d9f1; + background-color: #f3f7fb; + padding: 4px; + color: #719cc7; + font-size: 9pt; + font-weight: bold; +} + +#content th[scope="row"] +{ + background: inherit; + color: inherit; + border-top: 1px solid #ddd; +} + +#content td +{ + border: 1px solid #c6d9f1; + vertical-align:top; + padding: 3px 20px 5px 20px; +} +/* +#content th:last-of-type, td:last-of-type +{ + border-right: none; +} + +#content tr:nth-child(even) +{ + background: #f0f6ff; +} +*/ +#content .attrName +{ + font-size: 10pt; + font-weight: bold; +} + +#content .methodName +{ + font-size: 13pt; + font-weight: bold; +} + +#content +{ + background: white; + color: #1C1C1C; + margin-right: 20px; + font-size: 10pt; + font-weight: normal; + font-family: Arial, Helvetica, sans-serif; +} + + +a:link { + color: #719cc7; + text-decoration: underline; + font-weight: bold; +} + +a:hover { + color: #0e437d; +} + +a:visited { + text-decoration: underline; + color: #719cc7; + font-weight: bold; +} + + + +#content a:link img, #content a:visited img +{ + border-style: none; +} +/* no border on img links */ + +#content a img +{ + color: white; +} +/* trick to hide the border in Netscape 4 */ +@media all +{ + /* hide the next rule from Netscape 4 */ + #content a img + { + color: inherit; + } + /* undo the color change above */ +} + +#content th, #content td +{ + /* ns 4 */ /*font-family: sans-serif;*/ + font-size: 10pt; +} + +#content h1, #content h2, #content h3, #content h4, #content h5, #content h6 +{ + text-align: left; + font-family: Arial, Verdana, Helvetica, sans-serif; +} +/* background should be transparent, but WebTV has a bug */ +#content h1, #content h2, #content h3, #content h4 +{ + color: #005A9C; + background: white; + padding-top: 0.2em; +} +#content h1 +{ + font-size: 24pt; + color: #0E437D; +} +#content h2 +{ + font-size: 18pt; + color: #0E437D; +} +#content h3 +{ + font-size: 14pt; + color: #1C1C1C; +} +#content h4 +{ + font-size: 12pt; + color: #1C1C1C; + font-weight: bold; +} +#content h5 +{ + font-size: 10pt; + color: #1C1C1C; + font-style: italic; + font-weight: bold; +} +#content h6 +{ + font-size: 10pt; + color: #1C1C1C; + font-weight: bold; + font-variant: small-caps; +} + + +#content .hide +{ + display: none; +} + +#content div.head +{ + margin-bottom: 1em; +} +#content div.head h1 +{ + margin-top: 2em; + clear: both; +} +#content div.head table +{ + margin-left: 2em; + margin-top: 2em; +} + +#content p.copyright +{ + font-size: small; +} +#content p.copyright small +{ + font-size: small; +} + + +#content a[href] img:hover +{ + background: white; +} + +@media screen +{ + /* hide from IE3 */ + #content a[href]:hover + { + color: #0e437d; + } +} + +#content pre +{ + margin-left: 2em; +} +/* + #content p { + margin-top: 0.6em; + margin-bottom: 0.6em; + } + */ + +/* opera 3.50 */ +#content dt, #content dd +{ + margin-top: 0; + margin-bottom: 15px; +} +#content pre, #content code +{ + font-family: monospace; +} +/* navigator 4 requires this */ + +#content ul.toc, #content ol.toc +{ + list-style: disc; /* Mac NS has problem with 'none' */ + list-style: none; +} + + +@media aural +{ + #content h1, #content h2, #content h3 + { + stress: 20; + richness: 90; + } + #content .hide + { + speak: none; + } + #content p.copyright + { + volume: x-soft; + speech-rate: x-fast; + } + #content dt + { + pause-before: 20%; + } + #content pre + { + speak-punctuation: code; + } +} + +#content .toc +{ + list-style-type: none; +} + +#content div.exampleInner pre +{ + margin-left: 1em; + margin-top: 0em; + margin-bottom: 0em; +} +#content div.exampleOuter +{ + border: 4px double gray; + margin: 0em; + padding: 0em; +} +#content div.exampleInner +{ + background-color: #d5dee3; + border-top-width: 4px; + border-top-style: double; + border-top-color: #d3d3d3; + border-bottom-width: 4px; + border-bottom-style: double; + border-bottom-color: #d3d3d3; + padding: 4px; + margin: 0em; +} +#content div.exampleWrapper +{ + margin: 4px; +} +#content div.exampleHeader +{ + font-weight: bold; + margin: 4px; +} + + + +#content .def-api-feature dt, #content dt .def-device-cap, #content dt.const code +{ + font: bold 100% sans-serif; +} +#content dt.attribute code, #content dt.method code +{ + font: italic 100% sans-serif; +} + +#content .def-device-caps dd +{ + margin-bottom: 2em; +} + +#content dt.method +{ + margin-top: 2em; +} + +#content .summary td +{ + text-align: left; + background-color: white; + color: inherit; + font-family: monospace; + white-space: pre; + padding: .3em 1em .3em 1em; +} +/* Pretty printing styles. Used with prettify.js. */ + +#content .str +{ + color: #080; +} +#content .kwd +{ + color: #008; +} +#content .com +{ + color: #800; +} +#content .typ +{ + color: #606; +} +#content .lit +{ + color: #066; +} +#content .pun +{ + color: #660; +} +#content .pln +{ + color: #000; +} +#content .tag +{ + color: #008; +} +#content .atn +{ + color: #606; +} +#content .atv +{ + color: #080; +} +#content .dec +{ + color: #606; +} +#content .readonly +{ + color: red; +} +#content .type +{ + color: #993800; +} +#content .optional +{ + color: #000; + /*#font-weight: bold;*/ + /* font-style: italic;*/ +} + + +/* Specify class=linenums on a pre to get line numbering */ +#content ol.linenums +{ + margin-top: 0; + margin-bottom: 0; +} + +/* IE indents via margin-left */ +#content li.L0, #content li.L1, #content li.L2, #content li.L3, #content li.L4, #content li.L5, #content li.L6, #content li.L7, #content li.L8 +{ + list-style-type: none; +} +/* Alternate shading for lines */ +#content li.L1, #content li.L3, #content li.L5, #content li.L7, #content li.L9 +{ + background: #eee; +} +/*@media print {*/ +#content .str +{ + color: #060; +} +#content .kwd +{ + color: #006; + font-weight: bold; +} +#content .com +{ + color: #600; + font-style: italic; +} +#content .typ +{ + color: #404; + font-weight: bold; +} +#content .lit +{ + color: #044; +} +#content .pun +{ + color: #440; +} +#content .pln +{ + color: #000; +} +#content .tag +{ + color: #006; + font-weight: bold; +} +#content .atn +{ + color: #404; +} +#content .atv +{ + color: #060; +} +/*}*/ + +/* div.status Styles */ +#content a[href].status:link{ + color: #ffffff; + text-decoration: none; +} + +#content a[href].status:visited{ + color: #ffffff; +} + +#content a[href].status:hover{ + color: #3D9EC9; +} + +/* Footer Styles */ +#footer +{ + background-color: #DDDDDD; + margin-top: 20px; + font-size: .8em; + padding: 20px; + color: #666; +} + +#footer .sponsor +{ + padding: 0 10px 10px 10px; + margin-top: 10px; + text-align: right; + float: right; +} + +#footer .trademark +{ + padding: 0 10px 10px 10px; + margin-top: 10px; + text-align: right; + clear: both; +} + + +#footer ul +{ + list-style: none; + margin: 0; + padding: 0; +} +#footer li +{ + margin-bottom: 2px; +} +.version, span.param, .except, .example, .return, .privilege, .remark, .privilegelevel +{ + font-weight: bold; +} +span.name +{ + font-weight: bold; +} + +li.feature +{ + margin-left:30px; + font-weight: bold; +} diff --git a/html/toc.html b/html/toc.html new file mode 100644 index 0000000..6099d7b --- /dev/null +++ b/html/toc.html @@ -0,0 +1,34 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + +<html> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"> +<title>Tizen IVI Application Programming</title> +<link href="styles.css" rel="StyleSheet" type="text/css"> +<link href="snippet.css" rel="StyleSheet" type="text/css"> +</head> + +<body marginheight="0" marginwidth="0"> + <h1>Tizen IVI Application Programming</h1> + <p>The Tizen Web application programming documentation provides all + the information you need to create interactive web applications for + Tizen IVI devices:</p> + <ul> + <li><a href="apireference.html">IVI API References</a> + <p>Provides descriptions for all Tizen IVI APIs.</p></li> + </ul> + <p>The main terms and abbreviations used in the documentation are explained in the <a href="../../org.tizen.gettingstarted/html/glossary/glossary.htm">glossary</a>.</p> + <div id="footer"> + <hr size="1"> + <font size="1">Except as noted, this content - excluding the + Code Examples - is licensed under <a + href="http://creativecommons.org/licenses/by/3.0/legalcode" + target="_blank">Creative Commons Attribution 3.0</a> and all of the + Code Examples contained herein are licensed under <a + href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br>For + details, see the <a href="https://www.tizen.org/content-license" + target="_blank">Content License</a>. + </font> + </div> +</body> +</html> diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..0174fc5 --- /dev/null +++ b/plugin.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + + <extension + point="org.eclipse.help.toc"> + <toc + file="toc.xml"> + </toc> + <toc + file="Tizen_IVI_Toc.xml" + primary="true"> + </toc> + </extension> + +</plugin> diff --git a/src/org/tizen/ivi/help/Activator.java b/src/org/tizen/ivi/help/Activator.java new file mode 100644 index 0000000..a16ac41 --- /dev/null +++ b/src/org/tizen/ivi/help/Activator.java @@ -0,0 +1,61 @@ +package org.tizen.ivi.help; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "org.tizen.ivi.help"; //$NON-NLS-1$ + + // The shared instance + private static Activator plugin; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + + /** + * Returns an image descriptor for the image file at the given + * plug-in relative path + * + * @param path the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(String path) { + return imageDescriptorFromPlugin(PLUGIN_ID, path); + } +} @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?NLS TYPE="org.eclipse.help.toc"?> + +<toc label="Tizen IVI App Programming"> + <topic label="API References" href="html/apireference.html"> + <topic label="Locale" href="html/Locale.html"/> + <topic label="MediaServer" href="html/MediaServer.html"/> + <topic label="Speech" href="html/Speech.html"/> + <topic label="Vehicle" href="html/Vehicle.html"/> + </topic> +</toc> |