]> git.sesse.net Git - vlc/blobdiff - modules/video_output/directx/vout.h
Copyright fixes
[vlc] / modules / video_output / directx / vout.h
index 0dc675a6fe658058fa8c8f709f538942f6db88ce..f8efacd462ada2166b01dc43e847119d25970dc5 100644 (file)
@@ -1,10 +1,10 @@
 /*****************************************************************************
  * vout.h: Windows DirectX video output header file
  *****************************************************************************
- * Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: vout.h,v 1.2 2002/10/01 20:43:35 ipkiss Exp $
+ * Copyright (C) 2001-2004 VideoLAN (Centrale Réseaux) and its contributors
+ * $Id$
  *
- * Authors: Gildas Bazin <gbazin@netcourrier.com>
+ * Authors: Gildas Bazin <gbazin@videolan.org>
  *
  * 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
@@ -45,12 +45,23 @@ struct vout_sys_t
     LPDIRECTDRAWSURFACE2 p_current_surface;   /* surface currently displayed */
     LPDIRECTDRAWCLIPPER  p_clipper;             /* clipper used for blitting */
     HINSTANCE            hddraw_dll;       /* handle of the opened ddraw dll */
-    HBRUSH               hbrush;           /* window backgound brush (color) */
+
     HWND                 hwnd;                  /* Handle of the main window */
+    HWND                 hvideownd;        /* Handle of the video sub-window */
+    HWND                 hparent;             /* Handle of the parent window */
+    HWND                 hfswnd;          /* Handle of the fullscreen window */
+    WNDPROC              pf_wndproc;             /* Window handling callback */
+
+    /* Multi-monitor support */
+    HMONITOR             hmonitor;          /* handle of the current monitor */
+    GUID                 *p_display_driver;
+    HMONITOR             (WINAPI* MonitorFromWindow)( HWND, DWORD );
+    BOOL                 (WINAPI* GetMonitorInfo)( HMONITOR, LPMONITORINFO );
 
     vlc_bool_t   b_using_overlay;         /* Are we using an overlay surface */
     vlc_bool_t   b_use_sysmem;   /* Should we use system memory for surfaces */
     vlc_bool_t   b_hw_yuv;    /* Should we use hardware YUV->RGB conversions */
+    vlc_bool_t   b_3buf_overlay;   /* Should we use triple buffered overlays */
 
     /* size of the display */
     RECT         rect_display;
@@ -61,26 +72,47 @@ struct vout_sys_t
     int          i_window_y;
     int          i_window_width;
     int          i_window_height;
+    int          i_window_style;
 
     /* Coordinates of src and dest images (used when blitting to display) */
     RECT         rect_src;
     RECT         rect_src_clipped;
     RECT         rect_dest;
     RECT         rect_dest_clipped;
+    RECT         rect_parent;
+
+    /* Overlay alignment restrictions */
+    int          i_align_src_boundary;
+    int          i_align_src_size;
+    int          i_align_dest_boundary;
+    int          i_align_dest_size;
 
     /* DDraw capabilities */
     int          b_caps_overlay_clipping;
 
     int          i_rgb_colorkey;      /* colorkey in RGB used by the overlay */
     int          i_colorkey;                 /* colorkey used by the overlay */
-    volatile u16 i_changes;             /* changes made to the video display */
+
+    volatile uint16_t i_changes;        /* changes made to the video display */
 
     /* Mouse */
     volatile vlc_bool_t b_cursor_hidden;
     volatile mtime_t    i_lastmoved;
 
-    event_thread_t *    p_event;
+    /* Misc */
+    vlc_bool_t      b_on_top_change;
+
+    vlc_bool_t      b_wallpaper;
+    COLORREF        color_bkg;
+    COLORREF        color_bkgtxt;
+
+#ifdef MODULE_NAME_IS_glwin32
+    HDC hGLDC;
+    HGLRC hGLRC;
+#endif
+
+    event_thread_t *p_event;
+    vlc_mutex_t    lock;
 };
 
 /*****************************************************************************
@@ -99,15 +131,76 @@ struct picture_sys_t
 /*****************************************************************************
  * Prototypes from vout.c
  *****************************************************************************/
+int E_(DirectXUpdateOverlay)( vout_thread_t *p_vout );
 
 /*****************************************************************************
  * Prototypes from events.c
  *****************************************************************************/
-void DirectXEventThread ( event_thread_t *p_event );
-void DirectXUpdateOverlay( vout_thread_t *p_vout );
+void E_(DirectXEventThread) ( event_thread_t *p_event );
+void E_(DirectXUpdateRects) ( vout_thread_t *p_vout, vlc_bool_t b_force );
 
 /*****************************************************************************
  * Constants
  *****************************************************************************/
 #define WM_VLC_HIDE_MOUSE WM_APP
+#define WM_VLC_SHOW_MOUSE WM_APP + 1
+#define WM_VLC_CREATE_VIDEO_WIN WM_APP + 2
+#define WM_VLC_CHANGE_TEXT WM_APP + 3
 #define IDM_TOGGLE_ON_TOP WM_USER + 1
+#define DX_POSITION_CHANGE 0x1000
+#define DX_WALLPAPER_CHANGE 0x2000
+
+/*****************************************************************************
+ * WinCE helpers
+ *****************************************************************************/
+#ifdef UNDER_CE
+
+#define AdjustWindowRect(a,b,c)
+
+#ifndef GCL_HBRBACKGROUND
+#   define GCL_HBRBACKGROUND (-10)
+#endif
+
+#define FindWindowEx(a,b,c,d) 0
+
+#define GetWindowPlacement(a,b)
+#define SetWindowPlacement(a,b)
+typedef struct _WINDOWPLACEMENT {
+    UINT length;
+    UINT flags;
+    UINT showCmd;
+    POINT ptMinPosition;
+    POINT ptMaxPosition;
+    RECT rcNormalPosition;
+} WINDOWPLACEMENT;
+
+#ifndef WM_NCMOUSEMOVE
+#   define WM_NCMOUSEMOVE 160
+#endif
+#ifndef CS_OWNDC
+#   define CS_OWNDC 32
+#endif
+#ifndef SC_SCREENSAVE
+#   define SC_SCREENSAVE 0xF140
+#endif
+#ifndef SC_MONITORPOWER
+#   define SC_MONITORPOWER 0xF170
+#endif
+#ifndef WM_NCPAINT
+#   define WM_NCPAINT 133
+#endif
+#ifndef WS_OVERLAPPEDWINDOW
+#   define WS_OVERLAPPEDWINDOW 0xcf0000
+#endif
+#ifndef WS_EX_NOPARENTNOTIFY
+#   define WS_EX_NOPARENTNOTIFY 4
+#endif
+#ifndef WS_EX_APPWINDOW
+#define WS_EX_APPWINDOW 0x40000
+#endif
+
+#define SetWindowLongPtr SetWindowLong
+#define GetWindowLongPtr GetWindowLong
+#define GWLP_USERDATA GWL_USERDATA
+
+#endif //UNDER_CE