00001 #include <gui/MessageBox.h>
00002 #include <gui/MessageQueue.h>
00003 #include <gui/Button.h>
00004 #include <gui/VideoView.h>
00005 #include <gui/TopView.h>
00006 #include <gui/Exceptions.h>
00007 #include <gui/Window.h>
00008 #include <gui/StringView.h>
00009 #include <gui/ApplicationWindow.h>
00010 #include <gui/Application.h>
00011 #include <gui/Menu.h>
00012 #include <gui/TextView.h>
00013 #include <gui/StatusBar.h>
00014 #include <gui/CheckBox.h>
00015 #include <iostream>
00016
00017 using namespace SkyGI;
00018
00019 class MyVideoView : public View
00020 {
00021 public:
00022 MyVideoView(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags);
00023 void Sized(const Point& pDelta);
00024 VideoView *pVideoView;
00025 void UpdateStatus();
00026
00027 ISSPlay m_pISSPlay;
00028
00029 };
00030
00031 void MyVideoView::Sized(const Point& cDelta)
00032 {
00033 Window::Sized(cDelta);
00034 UpdateStatus();
00035 }
00036
00037
00038 void MyVideoView::UpdateStatus()
00039 {
00040 char str[4096];
00041 ISSStream *pStream;
00042
00043 pStream = m_pISSPlay.GetVideoInputStream();
00044 if (pStream)
00045 {
00046 sprintf(str, "Video: %dx%d, (Codec: %s)",
00047 (int)pStream->m_pFormat.pVideo.pSize.x,
00048 (int)pStream->m_pFormat.pVideo.pSize.y,
00049 pStream->m_pFormat.szCodec.c_str());
00050
00051 if ((Width() != pStream->m_pFormat.pVideo.pSize.x) || (Height() != pStream->m_pFormat.pVideo.pSize.y))
00052 {
00053 String temp;
00054 temp.Format("(scaled to %dx%d) ", Width(), Height());
00055 strcat(str, temp.c_str());
00056 }
00057
00058 ((ApplicationWindow*)GetTop())->GetStatusBar()->SetText(str);
00059 }
00060 }
00061
00062 MyVideoView::MyVideoView(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags) : View(pParent, rFrame, nWindowLayoutFlags)
00063 {
00064 pVideoView = new VideoView(this, Rect(0,0,0,0), WINDOW_LAYOUT_SAME_SIZE);
00065
00066 pVideoView->SetAutoScale(true);
00067
00068 m_pISSPlay.Open("/boot/addon/videos/Vehicle Barrier.wmv");
00069
00070 m_pISSPlay.SetVideoOutputInterface(pVideoView);
00071
00072 if (m_pISSPlay.IsValid())
00073 {
00074 }
00075
00076 UpdateStatus();
00077 m_pISSPlay.Play();
00078 }
00079
00080 void VideoViewTest()
00081 {
00082 Rect r(Point(100, 100), Point(400, 440));
00083
00084 ApplicationWindow* pApplicationWindow = new ApplicationWindow(r, "VideoView", WINDOW_LAYOUT_NOTHING, APPLICATION_WINDOW_NO_VIEW);
00085
00086 pApplicationWindow->AddStatusBar();
00087 pApplicationWindow->GetTitleWindow()->SetFlags( (TitleWindowFlags)(pApplicationWindow->GetTitleWindow()->GetFlags() ));
00088 pApplicationWindow->AttachView(new MyVideoView(pApplicationWindow, pApplicationWindow->GetClientRect(), WINDOW_LAYOUT_NOTHING));
00089 pApplicationWindow->Show();
00090 }
00091