%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/waritko/yacy/libbuild/WebCat-swf/src/pt/tumba/parser/swf/
Upload File :
Create Path :
Current File : //home/waritko/yacy/libbuild/WebCat-swf/src/pt/tumba/parser/swf/SoundInfo.java

package pt.tumba.parser.swf;

import java.io.IOException;

/**
 *  A Sound Information structure - defines playback style and envelope
 *
 *@author     unknown
 *@created    15 de Setembro de 2002
 */
public class SoundInfo {
    /**
     *  A Point in a sound envelope
     *
     *@author     unknown
     *@created    15 de Setembro de 2002
     */
    public static class EnvelopePoint {
        /**
         *  Description of the Field
         */
        public int mark44;
        /**
         *  Description of the Field
         */
        public int level0;
        /**
         *  Description of the Field
         */
        public int level1;


        /**
         *  Constructor for the EnvelopePoint object
         *
         *@param  mark44  Description of the Parameter
         *@param  level0  Description of the Parameter
         *@param  level1  Description of the Parameter
         */
        public EnvelopePoint(int mark44, int level0, int level1) {
            this.mark44 = mark44;
            this.level0 = level0;
            this.level1 = level1;
        }
    }


    /**
     *  Description of the Field
     */
    protected boolean noMultiplePlay;
    //only one instance can play at a time
    /**
     *  Description of the Field
     */
    protected boolean stopPlaying;

    /**
     *  Description of the Field
     */
    protected EnvelopePoint[] envelope;
    /**
     *  Description of the Field
     */
    protected int inPoint;
    /**
     *  Description of the Field
     */
    protected int outPoint;
    /**
     *  Description of the Field
     */
    protected int loopCount;


    /**
     *@param  noMultiplePlay  true = only play if not already playing
     *@param  stopSound       true = stop playing the sound
     *@param  envelope        may be null or empty for no envelope
     *@param  inPoint         -1 for no in-point
     *@param  outPoint        -1 for no out-point
     *@param  loopCount       >1 for a loop count
     */
    public SoundInfo(boolean noMultiplePlay, boolean stopSound,
            EnvelopePoint[] envelope,
            int inPoint, int outPoint, int loopCount) {
        this.noMultiplePlay = noMultiplePlay;
        this.stopPlaying = stopSound;
        this.envelope = envelope;
        this.inPoint = inPoint;
        this.outPoint = outPoint;
        this.loopCount = loopCount;
    }


    /**
     *  Gets the noMultiplePlay attribute of the SoundInfo object
     *
     *@return    The noMultiplePlay value
     */
    public boolean isNoMultiplePlay() {
        return this.noMultiplePlay;
    }


    /**
     *  Gets the stopPlaying attribute of the SoundInfo object
     *
     *@return    The stopPlaying value
     */
    public boolean isStopPlaying() {
        return this.stopPlaying;
    }


    /**
     *  Gets the envelope attribute of the SoundInfo object
     *
     *@return    The envelope value
     */
    public EnvelopePoint[] getEnvelope() {
        return this.envelope;
    }


    /**
     *  Gets the inPoint attribute of the SoundInfo object
     *
     *@return    The inPoint value
     */
    public int getInPoint() {
        return this.inPoint;
    }


    /**
     *  Gets the outPoint attribute of the SoundInfo object
     *
     *@return    The outPoint value
     */
    public int getOutPoint() {
        return this.outPoint;
    }


    /**
     *  Gets the loopCount attribute of the SoundInfo object
     *
     *@return    The loopCount value
     */
    public int getLoopCount() {
        return this.loopCount;
    }


    /**
     *  Constructor for the SoundInfo object
     *
     *@param  in               Description of the Parameter
     *@exception  IOException  Description of the Exception
     */
    public SoundInfo(InStream in) throws IOException {
        int flags = in.readUI8();

        noMultiplePlay = ((flags & 16) != 0);
        stopPlaying = ((flags & 32) != 0);
        boolean hasEnvelope = ((flags & 8) != 0);
        boolean hasLoops = ((flags & 4) != 0);
        boolean hasOutPoint = ((flags & 2) != 0);
        boolean hasInPoint = ((flags & 1) != 0);

        if (hasInPoint) {
            inPoint = (int) in.readUI32();
        } else {
            inPoint = -1;
        }

        if (hasOutPoint) {
            outPoint = (int) in.readUI32();
        } else {
            outPoint = -1;
        }

        if (hasLoops) {
            loopCount = in.readUI16();
        } else {
            loopCount = 1;
        }

        int envsize = 0;
        if (hasEnvelope) {
            envsize = in.readUI8();
        }

        envelope = new EnvelopePoint[envsize];

        for (int i = 0; i < envsize; i++) {
            envelope[i] = new EnvelopePoint((int) in.readUI32(),
                    in.readUI16(),
                    in.readUI16());
        }
    }


    /**
     *  Description of the Method
     *
     *@param  out              Description of the Parameter
     *@exception  IOException  Description of the Exception
     */
    public void write(OutStream out) throws IOException {
        int flags = 0;
        if (noMultiplePlay) {
            flags += 1;
        }
        if (stopPlaying) {
            flags += 2;
        }

        out.writeUBits(4, flags);

        boolean hasEnvelope = (envelope != null && envelope.length > 0);
        boolean hasLoops = (loopCount > 1);
        boolean hasOutPoint = (outPoint >= 0);
        boolean hasInPoint = (inPoint >= 0);

        flags = 0;
        if (hasEnvelope) {
            flags += 8;
        }
        if (hasLoops) {
            flags += 4;
        }
        if (hasOutPoint) {
            flags += 2;
        }
        if (hasInPoint) {
            flags += 1;
        }

        out.writeUBits(4, flags);

        if (hasInPoint) {
            out.writeUI32(inPoint);
        }
        if (hasOutPoint) {
            out.writeUI32(outPoint);
        }
        if (hasLoops) {
            out.writeUI16(loopCount);
        }

        if (hasEnvelope) {
            out.writeUI8(envelope.length);

            for (int i = 0; i < envelope.length; i++) {
                out.writeUI32(envelope[i].mark44);
                out.writeUI16(envelope[i].level0);
                out.writeUI16(envelope[i].level1);
            }
        }
    }


    /**
     *  Description of the Method
     *
     *@return    Description of the Return Value
     */
    public String toString() {
        return "SoundInfo: no-multiplay=" + noMultiplePlay +
                " stop=" + stopPlaying +
                " envelope=" + ((envelope == null) ? "none" : ("" + envelope.length + " points")) +
                " in-point=" + inPoint +
                " out-point=" + outPoint +
                " loop-count=" + loopCount;
    }
}

Zerion Mini Shell 1.0