]> git.sesse.net Git - vlc/blobdiff - modules/gui/beos/VideoWindow.h
Removes trailing spaces. Removes tabs.
[vlc] / modules / gui / beos / VideoWindow.h
index 649b64de0ec5f310be42f683a61c448a6faa5eae..2e973b2abbc20ad23e50cb9c693e8be2e6b02c07 100644 (file)
@@ -1,18 +1,19 @@
 /*****************************************************************************
  * VideoWindow.h: BeOS video window class prototype
  *****************************************************************************
- * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: VideoWindow.h,v 1.1 2002/08/04 17:23:43 sam Exp $
+ * Copyright (C) 1999, 2000, 2001 the VideoLAN team
+ * $Id$
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Tony Castley <tcastley@mail.powerup.com.au>
  *          Richard Shepherd <richard@rshepherd.demon.co.uk>
+ *          Stephan Aßmus <stippi@yellowbites.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * 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
  *
  * 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., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
+
+#ifndef BEOS_VIDEO_WINDOW_H
+#define BEOS_VIDEO_WINDOW_H
+
+#include <View.h>
+#include <Window.h>
+
 #define BITMAP  0
 #define OVERLAY 1
 #define OPENGL  2
 
 typedef struct colorcombo
 {
-       color_space colspace;
-       const char *name;
-       u32 chroma;
-       int planes;
-       int pixel_bytes;
+    color_space colspace;
+    const char *name;
+    uint32_t chroma;
+    int planes;
+    int pixel_bytes;
 } colorcombo;
 
 colorcombo colspace[]=
 {
-       {B_YCbCr420, "B_YCbCr420", VLC_FOURCC('I','4','2','0'), 3, 2},
-       {B_YUV422,   "B_YUV422",   VLC_FOURCC('Y','4','2','2'), 3, 2},
-       {B_YCbCr422, "B_YCbCr422", VLC_FOURCC('Y','U','Y','2'), 3, 2},
-       {B_RGB32,    "B_RGB32",    VLC_FOURCC('R','V','3','2'), 1, 4},
-       {B_RGB16,    "B_RGB16",    VLC_FOURCC('R','V','1','6'), 1, 2}
+    {B_YCbCr420, "B_YCbCr420", VLC_FOURCC('I','4','2','0'), 3, 2},
+    {B_YUV422,   "B_YUV422",   VLC_FOURCC('Y','4','2','2'), 3, 2},
+    {B_YCbCr422, "B_YCbCr422", VLC_FOURCC('Y','U','Y','2'), 3, 2},
+    {B_RGB32,    "B_RGB32",    VLC_FOURCC('R','V','3','2'), 1, 4},
+    {B_RGB16,    "B_RGB16",    VLC_FOURCC('R','V','1','6'), 1, 2}
 };
 
 #define COLOR_COUNT 5
-#define DEFAULT_COL 4
+#define DEFAULT_COL 3
+
+class VideoSettings
+{
+ public:
+                            VideoSettings( const VideoSettings& clone );
+    virtual                    ~VideoSettings();
+
+    static    VideoSettings*    DefaultSettings();
+
+    enum
+    {
+        SIZE_OTHER            = 0,
+        SIZE_50                = 1,
+        SIZE_100            = 2,
+        SIZE_200            = 3,
+    };
+
+            void            SetVideoSize( uint32_t mode );
+    inline    uint32_t            VideoSize() const
+                                { return fVideoSize; }
+    enum
+    {
+        FLAG_CORRECT_RATIO    = 0x0001,
+        FLAG_SYNC_RETRACE    = 0x0002,
+        FLAG_ON_TOP_ALL        = 0x0004,
+        FLAG_FULL_SCREEN    = 0x0008,
+    };
+
+    inline    void            SetFlags( uint32_t flags )
+                                { fFlags = flags; }
+    inline    void            AddFlags( uint32_t flags )
+                                { fFlags |= flags; }
+    inline    void            ClearFlags( uint32_t flags )
+                                { fFlags &= ~flags; }
+    inline    bool            HasFlags( uint32_t flags ) const
+                                { return fFlags & flags; }
+    inline    uint32_t            Flags() const
+                                { return fFlags; }
+
+ private:
+                            VideoSettings(); // reserved for default settings
+
+    static    VideoSettings    fDefaultSettings;
+
+            uint32_t            fVideoSize;
+            uint32_t            fFlags;
+            BMessage*        fSettings;
+};
 
 
 class VLCView : public BView
 {
-public:
-       VLCView( BRect bounds);
-       ~VLCView();
-       
-       void MouseDown(BPoint point);
-       void Draw(BRect updateRect);
+ public:
+                            VLCView( BRect bounds, vout_thread_t *p_vout );
+    virtual                    ~VLCView();
+
+    virtual    void            AttachedToWindow();
+    virtual    void            MouseDown(BPoint where);
+    virtual    void            MouseUp(BPoint where);
+    virtual    void            MouseMoved(BPoint where, uint32 transit,
+                                       const BMessage* dragMessage);
+    virtual    void            Pulse();
+    virtual    void            Draw(BRect updateRect);
+
+ private:
+            vout_thread_t   *p_vout;
+
+            bigtime_t        fLastMouseMovedTime;
+            bool            fCursorHidden;
+            bool            fCursorInside;
+            bool            fIgnoreDoubleClick;
 };
 
 
 class VideoWindow : public BWindow
 {
 public:
-    // standard constructor and destructor
-    VideoWindow( int v_width, int v_height,
-                 BRect frame); 
-    ~VideoWindow();
-    
-    void               Zoom(BPoint origin, float width, float height);
-    void            FrameResized(float width, float height);
-    void            FrameMoved(BPoint origin);
-    void            ScreenChanged(BRect frame, color_space mode);
-    void            drawBuffer(int bufferIndex);
-    void            WindowActivated(bool active);
-    int             SelectDrawingMode(int width, int height);
-    void            MessageReceived(BMessage *message);
-    
+                            VideoWindow(int v_width,
+                                        int v_height,
+                                        BRect frame,
+                                        vout_thread_t *p_vout);
+    virtual                    ~VideoWindow();
+
+                            // BWindow
+    virtual    void            MessageReceived(BMessage* message);
+    virtual    void            Zoom(BPoint origin,
+                                 float width, float height);
+    virtual    void            FrameResized(float width, float height);
+    virtual    void            FrameMoved(BPoint origin);
+    virtual    void            ScreenChanged(BRect frame,
+                                          color_space mode);
+    virtual    void            WindowActivated(bool active);
+
+                            // VideoWindow
+            void            drawBuffer(int bufferIndex);
+
+            void            ToggleInterfaceShowing();
+            void            SetInterfaceShowing(bool showIt);
+
+            void            SetCorrectAspectRatio(bool doIt);
+            bool            CorrectAspectRatio() const;
+            void            ToggleFullScreen();
+            void            SetFullScreen(bool doIt);
+            bool            IsFullScreen() const;
+            void            SetOnTop(bool doIt);
+            bool            IsOnTop() const;
+            void            SetSyncToRetrace(bool doIt);
+            bool            IsSyncedToRetrace() const;
+    inline    status_t        InitCheck() const
+                                { return fInitStatus; }
+
+
     // this is the hook controling direct screen connection
-    int32           i_width;     // incomming bitmap size 
-    int32           i_height;
+    int32_t         i_width;     // aspect corrected bitmap size
+    int32_t         i_height;
     BRect           winSize;     // current window size
-    bool            is_zoomed, vsync;
-    BBitmap            *bitmap[3];
-    VLCView            *view;
+    BBitmap            *bitmap[3];
+//    BBitmap         *overlaybitmap;
+    VLCView            *view;
     int             i_buffer;
-    bool                       teardownwindow;
+    volatile bool    teardownwindow;
     thread_id       fDrawThreadID;
     int             mode;
+    int             bitmap_count;
     int             colspace_index;
 
 private:
-    vout_thread_t  *p_vout;
+            status_t        _AllocateBuffers(int width,
+                                             int height,
+                                             int* mode);
+            void            _FreeBuffers();
+            void            _BlankBitmap(BBitmap* bitmap) const;
+            void            _SetVideoSize(uint32_t mode);
+            void            _SetToSettings();
+
+    vout_thread_t   *p_vout;
 
+    int32_t            fTrueWidth;     // incomming bitmap size
+    int32_t            fTrueHeight;
+    window_feel        fCachedFeel;
+    bool            fInterfaceShowing;
+    status_t        fInitStatus;
+    VideoSettings*    fSettings;
 };
 
+#endif    // BEOS_VIDEO_WINDOW_H
+