[MSVIDEO] GetOpenFileNamePreview

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Changelog:
  - Implemented semi-stubs for GetOpenFileNamePreviewA/W and
    GetSaveFileNamePreviewA/W based on GetOpenFileName dialog in
    COMDLG32.DLL - still must add OFN_ENABLEHOOK and it's handler.
  - Implemented ICCompressorFree.
  - Prepared ICCompressorChoose.

Pherhaps someone else may write the gui?


  Michael

Index: dlls/msvideo/msvideo_main.c
===================================================================
RCS file: /home/wine/wine/dlls/msvideo/msvideo_main.c,v
retrieving revision 1.51
diff -d -u -r1.51 msvideo_main.c
--- dlls/msvideo/msvideo_main.c	2 Jul 2003 00:40:14 -0000	1.51
+++ dlls/msvideo/msvideo_main.c	31 Aug 2003 09:44:51 -0000
@@ -1,6 +1,7 @@
 /*
  * Copyright 1998 Marcus Meissner
  * Copyright 2000 Bradley Baetz
+ * Copyright 2003 Michael Günnewig
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -32,6 +33,8 @@
 #include "wingdi.h"
 #include "winuser.h"
 
+#include "windowsx.h"
+
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(msvideo);
@@ -666,11 +669,32 @@
 /***********************************************************************
  *		ICCompressorChoose   [MSVFW32.@]
  */
-BOOL VFWAPI ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData,
-                               PCOMPVARS pc, LPSTR lpszTitle)
+BOOL VFWAPI ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn,
+                               LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle)
 {
-    FIXME("stub\n");
+  FIXME("(%p,0x%X,%p,%p,%p,%s),stub!\n",hwnd,uiFlags,pvIn,lpData,pc,lpszTitle);
+
+  if (pc == NULL || pc->cbSize != sizeof(COMPVARS))
     return FALSE;
+
+  if ((pc->dwFlags & ICMF_COMPVARS_VALID) == 0) {
+    pc->dwFlags   = 0;
+    pc->fccType   = pc->fccHandler = 0;
+    pc->hic       = NULL;
+    pc->lpbiOut   = NULL;
+    pc->lpBitsOut = pc->lpBitsPrev = pc->lpState = NULL;
+    pc->lQ        = ICQUALITY_DEFAULT;
+    pc->lKey      = -1;
+    pc->lDataRate = 300; /* kB */
+    pc->lpState   = NULL;
+    pc->cbState   = 0;
+  }
+  if (pc->fccType == 0)
+    pc->fccType = ICTYPE_VIDEO;
+
+  /* FIXME */
+  
+  return FALSE;
 }
 
 
@@ -679,7 +703,31 @@
  */
 void VFWAPI ICCompressorFree(PCOMPVARS pc)
 {
-    FIXME("stub\n");
+  TRACE("(%p)\n",pc);
+
+  if (pc != NULL && pc->cbSize == sizeof(COMPVARS)) {
+    if (pc->hic != NULL) {
+      ICClose(pc->hic);
+      pc->hic = NULL;
+    }
+    if (pc->lpbiOut != NULL) {
+      GlobalFreePtr(pc->lpbiOut);
+      pc->lpbiOut = NULL;
+    }
+    if (pc->lpBitsOut != NULL) {
+      GlobalFreePtr(pc->lpBitsOut);
+      pc->lpBitsOut = NULL;
+    }
+    if (pc->lpBitsPrev != NULL) {
+      GlobalFreePtr(pc->lpBitsPrev);
+      pc->lpBitsPrev = NULL;
+    }
+    if (pc->lpState != NULL) {
+      GlobalFreePtr(pc->lpBitsPrev);
+      pc->lpState = NULL;
+    }
+    pc->dwFlags = 0;
+  }
 }
 
 
@@ -1030,14 +1078,41 @@
 	return (HANDLE)hMem;
 }
 
+static BOOL GetFileNamePreview(LPVOID lpofn,BOOL bSave,BOOL bUnicode)
+{
+  CHAR    szFunctionName[20];
+  BOOL    (*fnGetFileName)(LPVOID);
+  HMODULE hComdlg32;
+  BOOL    ret;
+
+  FIXME("(%p,%d,%d), semi-stub!\n",lpofn,bSave,bUnicode);
+
+  lstrcpyA(szFunctionName, (bSave ? "GetSaveFileName" : "GetOpenFileName"));
+  lstrcatA(szFunctionName, (bUnicode ? "W" : "A"));
+
+  hComdlg32 = LoadLibraryA("COMDLG32.DLL");
+  if (hComdlg32 == NULL)
+    return FALSE;
+
+  fnGetFileName = (LPVOID)GetProcAddress(hComdlg32, szFunctionName);
+  if (fnGetFileName == NULL)
+    return FALSE;
+
+  /* FIXME: need to add OFN_ENABLEHOOK and our own handler */
+  ret = fnGetFileName(lpofn);
+
+  FreeLibrary(hComdlg32);
+  return ret;
+}
+
 /***********************************************************************
  *		GetOpenFileNamePreviewA	[MSVFW32.@]
  */
 BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn)
 {
-  FIXME("(%p), stub!\n", lpofn);
+  FIXME("(%p), semi-stub!\n", lpofn);
 
-  return FALSE;
+  return GetFileNamePreview(lpofn, FALSE, FALSE);
 }
 
 /***********************************************************************
@@ -1045,9 +1120,9 @@
  */
 BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn)
 {
-  FIXME("(%p), stub!\n", lpofn);
+  FIXME("(%p), semi-stub!\n", lpofn);
 
-  return FALSE;
+  return GetFileNamePreview(lpofn, FALSE, TRUE);
 }
 
 /***********************************************************************
@@ -1055,9 +1130,9 @@
  */
 BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn)
 {
-  FIXME("(%p), stub!\n", lpofn);
+  FIXME("(%p), semi-stub!\n", lpofn);
 
-  return FALSE;
+  return GetFileNamePreview(lpofn, TRUE, FALSE);
 }
 
 /***********************************************************************
@@ -1065,7 +1140,7 @@
  */
 BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn)
 {
-  FIXME("(%p), stub!\n", lpofn);
+  FIXME("(%p), semi-stub!\n", lpofn);
 
-  return FALSE;
+  return GetFileNamePreview(lpofn, TRUE, TRUE);
 }

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux