1/*
2 * Copyright 2006-2010 Stephan A��mus <superstippi@gmx.de>
3 * All rights reserved. Distributed under the terms of the MIT license.
4 */
5#ifndef VIDEO_VIEW_H
6#define VIDEO_VIEW_H
7
8
9#include <View.h>
10
11#include "ListenerAdapter.h"
12#include "VideoTarget.h"
13
14
15enum {
16	M_HIDE_FULL_SCREEN_CONTROLS = 'hfsc'
17};
18
19
20class SubtitleBitmap;
21
22
23class VideoView : public BView, public VideoTarget {
24public:
25								VideoView(BRect frame, const char* name,
26									uint32 resizeMask);
27	virtual						~VideoView();
28
29	// BView interface
30	virtual	void				Draw(BRect updateRect);
31	virtual	void				MessageReceived(BMessage* message);
32	virtual	void				Pulse();
33	virtual	void				MouseMoved(BPoint where, uint32 transit,
34									const BMessage* dragMessage = NULL);
35
36	// VideoTarget interface
37	virtual	void				SetBitmap(const BBitmap* bitmap);
38
39	// VideoView
40			void				GetOverlayScaleLimits(float* minScale,
41									float* maxScale) const;
42
43			void				OverlayScreenshotPrepare();
44			void				OverlayScreenshotCleanup();
45
46			bool				UseOverlays() const;
47			bool				IsOverlayActive();
48			void				DisableOverlay();
49
50			void				SetPlaying(bool playing);
51			void				SetFullscreen(bool fullScreen);
52			void				SetFullscreenControlsVisible(bool visible);
53			void				SetVideoFrame(const BRect& frame);
54
55			void				SetSubTitle(const char* text);
56			void				SetSubTitleMaxBottom(float bottom);
57
58private:
59			void				_DrawBitmap(const BBitmap* bitmap);
60			void				_DrawSubtitle();
61			void				_AdoptGlobalSettings();
62			void				_SetOverlayMode(bool overlayMode);
63			void				_LayoutSubtitle();
64
65private:
66			BRect				fVideoFrame;
67			bool				fOverlayMode;
68			overlay_restrictions fOverlayRestrictions;
69			rgb_color			fOverlayKeyColor;
70			bool				fIsPlaying;
71			bool				fIsFullscreen;
72			bool				fFullscreenControlsVisible;
73			bool				fFirstPulseAfterFullscreen;
74			uint8				fSendHideCounter;
75			bigtime_t			fLastMouseMove;
76
77			SubtitleBitmap*		fSubtitleBitmap;
78			BRect				fSubtitleFrame;
79			float				fSubtitleMaxButtom;
80			bool				fHasSubtitle;
81			bool				fSubtitleChanged;
82
83			// Settings values:
84			ListenerAdapter		fGlobalSettingsListener;
85			bool				fUseOverlays;
86			bool				fUseBilinearScaling;
87			uint32				fSubtitlePlacement;
88};
89
90#endif // VIDEO_VIEW_H
91