123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- ////////////////////////////////////////////////////////////////////////////////
- //
- // Copyright 2016 RWS Inc, All Rights Reserved
- //
- // This program is free software; you can redistribute it and/or modify
- // it under the terms of version 2 of the GNU General Public License as published by
- // the Free Software Foundation
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- //
- // You should have received a copy of the GNU General Public License along
- // with this program; if not, write to the Free Software Foundation, Inc.,
- // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- //
- ///////////////////////////////////////////////////////////////////////////////
- // Sample/Test application for Video Library.
- ///////////////////////////////////////////////////////////////////////////////
- #include "System.h"
- #include "Blue.h"
- #include "video.h"
- #include "hot.h"
- #include "wdisplay.h"
- #define VIDEO_FILE "\\\\METRO\\PROJECTS\\MUPPETS\\BEAKER\\TEMPASSETS\\LOSER1.AVI"
- #define CURSOR_FILE "\\\\METRO\\PROJECTS\\MUPPETS\\BEAKER\\TEMPASSETS\\HOTPTR.CUR"
- ///////////////////////////////////////////////////////////////////////////////
- //
- // Hooks Blue's Display's Window Proc. Return non-zero to have Blue return
- // your *plResult.
- //
- ///////////////////////////////////////////////////////////////////////////////
- short WinProcHook(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam,
- LRESULT* plResult)
- {
- short sRes = 0; // Assume normal processing.
- switch (uiMsg)
- {
- case WM_SETCURSOR:
- // TRACE("WinProcHook(): WM_SETCURSOR.\n");
- // sRes = TRUE;
- // *plResult = TRUE;
- break;
- }
- return sRes;
- }
- ///////////////////////////////////////////////////////////////////////////////
- //
- // Waits for a mouse click (down, then up) on sButton { MOUSE_BUTTON_LEFT,
- // MOUSE_BUTTON_RIGHT }.
- //
- ///////////////////////////////////////////////////////////////////////////////
- static void WaitClick(short sButton)
- {
- while (Blu_GetMouseButton(sButton) == MOUSE_BUTTON_UP)
- {
- Blu_System();
- }
-
- while (Blu_GetMouseButton(sButton) == MOUSE_BUTTON_DOWN)
- {
- Blu_System();
- }
- }
- ///////////////////////////////////////////////////////////////////////////////
- //
- // Attempt to start or stop a video.
- // Returns 0 on success.
- //
- ///////////////////////////////////////////////////////////////////////////////
- #define MCI_TIME_OUT 500
- #define MCI_RETRIES 3
- static short ToggleVideo(CVideo* pvideo)
- {
- short sRes = 0; // Assume success.
- Blu_HookWinProc(WinProcHook);
- if (pvideo->IsPlaying() == TRUE)
- {
- pvideo->Stop();
- if (pvideo->IsPlaying() == TRUE)
- {
- TRACE("ToggleVideo(): Video did not stop yet.\n");
- sRes = -1;
- }
- else
- {
- pvideo->Close();
- }
- }
- else
- {
- if (pvideo->Open(VIDEO_FILE, 0, 0, 1, 1, 0) == VIDEO_SUCCESS)
- {
- short sRetries;
- long lEndTime = 0L;
- for ( sRetries = 0;
- sRetries < MCI_RETRIES && sRes == 0 && pvideo->IsPlaying() == FALSE;
- )
- {
- if (lEndTime < Blu_GetTime())
- {
- if (++sRetries == MCI_RETRIES)
- {
- TRACE("ToggleVideo(): Exceeded max retries.\n");
- }
- else
- {
- if (pvideo->Play() == VIDEO_SUCCESS)
- {
- // Set next time.
- lEndTime = Blu_GetTime() + MCI_TIME_OUT;
- }
- else
- {
- TRACE("ToggleVideo(): Play returned error.\n");
- sRes = -2;
- }
- }
- }
- Blu_System();
- }
- if (pvideo->IsPlaying() == TRUE)
- {
- TRACE("ToggleVideo(): Took %d tries to start.\n", sRetries);
- }
- }
- else
- {
- Blu_MsgBox(MB_ICN_STOP | MB_BUT_OK, "Sux!", "Unable to open <%s>.", VIDEO_FILE);
- }
- }
- return sRes;
- }
- ///////////////////////////////////////////////////////////////////////////////
- //
- // Test video library functionality.
- //
- ///////////////////////////////////////////////////////////////////////////////
- short AppMain(void)
- {
- CVideo video;
- if (Blu_CreateDisplay(640, 400, (short)Blu_GetDisplayInfo(DI_MONITOR_COLORDEPTH))
- == 0)
- {
- short sButtonDn = FALSE;
- CHot hot;
- if (hot.Create(0, 0,
- Blu_GetDisplayInfo(DI_MONITOR_WIDTH), Blu_GetDisplayInfo(DI_MONITOR_HEIGHT),
- CURSOR_FILE) == 0)
- {
- hot.SetActive(TRUE);
- }
- else
- {
- TRACE("AppMain(): Unable to create hotbox.\n");
- }
- while (Blu_GetMouseButton(MOUSE_BUTTON_RIGHT) == MOUSE_BUTTON_UP)
- {
- if (Blu_GetMouseButton(MOUSE_BUTTON_LEFT) == MOUSE_BUTTON_DOWN)
- {
- sButtonDn = TRUE;
- }
- else
- {
- if (sButtonDn == TRUE)
- {
- ToggleVideo(&video);
- sButtonDn = FALSE;
- }
- }
- Blu_System();
- }
-
- while (Blu_GetMouseButton(MOUSE_BUTTON_RIGHT) == MOUSE_BUTTON_DOWN)
- {
- Blu_System();
- }
- }
- else
- {
- Blu_MsgBox(MB_ICN_INFO | MB_BUT_OK, "Sux!", "Unable to create display.");
- }
- return 0;
- }
- ///////////////////////////////////////////////////////////////////////////////
- // EOF.
- ///////////////////////////////////////////////////////////////////////////////
|