implementation of sound api sound
authorAnton Epple <toni.epple@eppleton.de>
Tue, 28 May 2013 13:26:37 +0200
branchsound
changeset 11613a1fb8e1378d
parent 1103 8ee3112f5647
child 1162 17885c601f91
implementation of sound api
javaquery/api/pom.xml
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5SoundEnvironment.java
     1.1 --- a/javaquery/api/pom.xml	Thu May 16 10:38:20 2013 +0200
     1.2 +++ b/javaquery/api/pom.xml	Tue May 28 13:26:37 2013 +0200
     1.3 @@ -78,6 +78,11 @@
     1.4        <artifactId>launcher.http</artifactId>
     1.5        <version>${project.version}</version>
     1.6        <scope>test</scope>
     1.7 -    </dependency>    
     1.8 +    </dependency>
     1.9 +    <dependency>
    1.10 +      <groupId>net.java.html</groupId>
    1.11 +      <artifactId>sound</artifactId>
    1.12 +      <version>1.0-SNAPSHOT</version>
    1.13 +    </dependency>
    1.14    </dependencies>
    1.15  </project>
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5SoundEnvironment.java	Tue May 28 13:26:37 2013 +0200
     2.3 @@ -0,0 +1,75 @@
     2.4 +/*
     2.5 + * To change this template, choose Tools | Templates
     2.6 + * and open the template in the editor.
     2.7 + */
     2.8 +package org.apidesign.bck2brwsr.htmlpage;
     2.9 +
    2.10 +import net.java.html.sound.AudioClip;
    2.11 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
    2.12 +import org.apidesign.html.sound.spi.AudioEnvironment;
    2.13 +
    2.14 +/**
    2.15 + *
    2.16 + * @author antonepple
    2.17 + */
    2.18 +public class HTML5AudioEnvironment implements AudioEnvironment {
    2.19 +
    2.20 +    @Override
    2.21 +    public Object play(AudioClip clip, Object nativeClip) {
    2.22 +        if (nativeClip == null) {
    2.23 +            nativeClip = createNativeCLip(clip.getSource());
    2.24 +        }
    2.25 +        playImpl(nativeClip);
    2.26 +        return nativeClip;
    2.27 +    }
    2.28 +
    2.29 +    @Override
    2.30 +    public Object pause(AudioClip aThis, Object nativeClip) {
    2.31 +        if (nativeClip == null) {
    2.32 +            return null; // only can pause a cached clip
    2.33 +        }
    2.34 +        pauseImpl(nativeClip);
    2.35 +        return nativeClip;
    2.36 +    }
    2.37 +
    2.38 +    @Override
    2.39 +    public Object stop(AudioClip aThis, Object nativeClip) {
    2.40 +        if (nativeClip == null) {
    2.41 +            return null; // only can stop a cached clip
    2.42 +        }
    2.43 +        stopImpl(nativeClip);
    2.44 +        return nativeClip;
    2.45 +    }
    2.46 +
    2.47 +    @Override
    2.48 +    public Object setVolume(AudioClip aThis, int volume, Object cached) {
    2.49 +        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    2.50 +    }
    2.51 +
    2.52 +    @Override
    2.53 +    public Object playFrom(AudioClip clip, int seconds, Object nativeClip) {
    2.54 +        if (nativeClip == null) {
    2.55 +            nativeClip = createNativeCLip(clip.getSource());
    2.56 +        }
    2.57 +        playFromImpl(nativeClip);
    2.58 +        return nativeClip;
    2.59 +    }
    2.60 +
    2.61 +    @JavaScriptBody(args = "nativeClip", body = "nativeClip.play()")
    2.62 +    private native void playImpl(Object nativeClip);
    2.63 +
    2.64 +    @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause(), nativeClip.currentTime=0;")
    2.65 +    private void stopImpl(Object nativeClip) {
    2.66 +    }
    2.67 +
    2.68 +    @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause();")
    2.69 +    private void pauseImpl(Object nativeClip) {
    2.70 +    }
    2.71 +
    2.72 +    @JavaScriptBody(args = "nativeClip", body = "nativeClip.currentTime=0; nativeClip.play();")
    2.73 +    private void playFromImpl(Object nativeClip) {
    2.74 +    }
    2.75 +
    2.76 +    @JavaScriptBody(args = {"src"}, body = "var clip = new Audio();clip.src=src; return clip;")
    2.77 +    private native Object createNativeCLip(String src);
    2.78 +}