| 
							- 
 - #include "../jucedemo_headers.h"
 - 
 - #if JUCE_DIRECTSHOW
 - 
 - //==============================================================================
 - class DirectShowWindowWithFileBrowser  : public Component,
 -                                          public FilenameComponentListener
 - {
 - public:
 -     DirectShowWindowWithFileBrowser (DirectShowComponent::VideoRendererType type)
 -         : fileChooser ("movie", File::nonexistent, true, false, false,
 -                        "*", String::empty, "(choose a video file to play)"),
 -           dshowComp (type)
 -     {
 -         addAndMakeVisible (&dshowComp);
 -         addAndMakeVisible (&fileChooser);
 -         fileChooser.addListener (this);
 -         fileChooser.setBrowseButtonText ("browse");
 -     }
 - 
 -     void resized()
 -     {
 -         dshowComp.setBounds (0, 0, getWidth(), getHeight() - 60);
 - 
 -         if (transportControl != 0)
 -             transportControl->setBounds (0, dshowComp.getBottom() + 4, getWidth(), 26);
 - 
 -         fileChooser.setBounds (0, getHeight() - 24, getWidth(), 24);
 -     }
 - 
 -     void filenameComponentChanged (FilenameComponent*)
 -     {
 -         // this is called when the user changes the filename in the file chooser box
 -         if (dshowComp.loadMovie (fileChooser.getCurrentFile()))
 -         {
 -             addAndMakeVisible (transportControl = new TransportControl (dshowComp));
 -             resized();
 - 
 -             dshowComp.play();
 -         }
 -         else
 -         {
 -             AlertWindow::showMessageBox (AlertWindow::WarningIcon,
 -                                          "Couldn't load the file!",
 -                                          "Sorry, DirectShow didn't manage to load that file!");
 -         }
 -     }
 - 
 - private:
 -     DirectShowComponent dshowComp;
 -     FilenameComponent fileChooser;
 - 
 -     //==============================================================================
 -     // A quick-and-dirty transport control, containing a play button and a position slider..
 -     class TransportControl  : public Component,
 -                               public ButtonListener,
 -                               public SliderListener,
 -                               public Timer
 -     {
 -     public:
 -         TransportControl (DirectShowComponent& dshowComp_)
 -             : playButton ("Play/Pause"),
 -               position (String::empty),
 -               dshowComp (dshowComp_)
 -         {
 -             addAndMakeVisible (&playButton);
 -             playButton.addListener (this);
 - 
 -             addAndMakeVisible (&position);
 -             position.setRange (0, dshowComp.getMovieDuration(), 0);
 -             position.setSliderStyle (Slider::LinearHorizontal);
 -             position.setTextBoxStyle (Slider::NoTextBox, false, 80, 20);
 -             position.addListener (this);
 - 
 -             startTimer (1000 / 50);
 -         }
 - 
 -         void buttonClicked (Button* buttonThatWasClicked)
 -         {
 -             if (dshowComp.isPlaying())
 -                 dshowComp.stop();
 -             else
 -                 dshowComp.play();
 -         }
 - 
 -         void sliderValueChanged (Slider* sliderThatWasMoved)
 -         {
 -             dshowComp.setPosition (position.getValue());
 -         }
 - 
 -         void resized()
 -         {
 -             const int playButtonWidth = 90;
 -             playButton.setBounds (0, 0, playButtonWidth, getHeight());
 -             position.setBounds (playButtonWidth, 0, getWidth() - playButtonWidth, getHeight());
 -         }
 - 
 -         void timerCallback()
 -         {
 -             if (! position.isMouseButtonDown())
 -                 position.setValue (dshowComp.getPosition(), false);
 -         }
 - 
 -     private:
 -         TextButton playButton;
 -         Slider position;
 -         DirectShowComponent& dshowComp;
 -     };
 - 
 -     ScopedPointer<TransportControl> transportControl;
 - };
 - 
 - 
 - //==============================================================================
 - class DirectShowDemo  : public Component
 - {
 - public:
 -     //==============================================================================
 -     DirectShowDemo()
 -         : dsComp1 (DirectShowComponent::dshowVMR7),
 -           dsComp2 (DirectShowComponent::dshowEVR)
 -     {
 -         setName ("DirectShow");
 - 
 -         // add a movie component..
 -         addAndMakeVisible (&dsComp1);
 -         addAndMakeVisible (&dsComp2);
 -     }
 - 
 -     ~DirectShowDemo()
 -     {
 -         dsComp1.setVisible (false);
 -         dsComp2.setVisible (false);
 -     }
 - 
 -     void resized()
 -     {
 -         dsComp1.setBoundsRelative (0.05f, 0.05f, 0.425f, 0.9f);
 -         dsComp2.setBoundsRelative (0.525f, 0.05f, 0.425f, 0.9f);
 -     }
 - 
 - private:
 -     //==============================================================================
 -     DirectShowWindowWithFileBrowser dsComp1, dsComp2;
 - };
 - 
 - 
 - //==============================================================================
 - Component* createDirectShowDemo()
 - {
 -     return new DirectShowDemo();
 - }
 - 
 - #endif
 
 
  |