Index: trunk/src/oleaut32/iPicture.cpp
===================================================================
--- trunk/src/oleaut32/iPicture.cpp	(revision 1822)
+++ trunk/src/oleaut32/iPicture.cpp	(revision 1824)
@@ -1,3 +1,3 @@
-/* $Id: iPicture.cpp,v 1.2 1999-11-14 21:05:08 davidr Exp $ */
+/* $Id: iPicture.cpp,v 1.3 1999-11-23 20:45:23 davidr Exp $ */
 /* 
  * OLE Picture functions
@@ -34,5 +34,4 @@
 static void             IPictureImpl_Destructor(IPictureImpl * obj);
 
-static ULONG   WIN32API	IPictureImpl_AddRef(LPPICTURE iface);
 static HRESULT WIN32API	IPictureImpl_QueryInterface(LPPICTURE iface,
 				REFIID refiid, LPVOID * obj);
@@ -162,330 +161,28 @@
 
 // ----------------------------------------------------------------------
-// Uninitialised Picture
-// ----------------------------------------------------------------------
-HRESULT IPictureNone::get_Handle(OLE_HANDLE * pHandle)
-{
-    *pHandle = 0;
-    return E_FAIL;
-}
-
-HRESULT IPictureNone::get_hPal(OLE_HANDLE * phPal)
-{
-    *phPal = 0;
-    return E_FAIL;
-}
-
-HRESULT IPictureNone::get_Type(SHORT * pType)
-{
-    *pType = PICTYPE_UNINITIALIZED;
-    return S_OK;
-}
-
-HRESULT IPictureNone::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
-{
-    *pWidth = 0;
-    return E_FAIL;
-}
-
-HRESULT IPictureNone::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
-{
-    *pHeight = 0;
-    return E_FAIL;
-}
-
-HRESULT IPictureNone::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
-				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
-				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
-				LPCRECT pRcWBounds)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureNone::set_hPal(OLE_HANDLE hPal)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureNone::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureNone::get_Attributes(DWORD * pDwAttr)
-{
-    *pDwAttr = 0;
-    return S_OK;
-}
-
-IPictureBmp::IPictureBmp(IPictureImpl * a_pPicture, HBITMAP hbitmap, HPALETTE hpal)
-    : IPictureStrat(a_pPicture)
-{
-    pPicture->u.bmp.hbitmap = hbitmap;
-    pPicture->u.bmp.hpal = hpal;
-}
-
-// ----------------------------------------------------------------------
-// Icon Picture
-// ----------------------------------------------------------------------
-IPictureBmp::~IPictureBmp()
-{
-    if (pPicture->fOwn)
-    {
-	// Free bitmap...
-	DeleteObject(pPicture->u.bmp.hbitmap);
-	DeleteObject(pPicture->u.bmp.hpal);
-    }
-}
-
-HRESULT IPictureBmp::get_Handle(OLE_HANDLE * pHandle)
-{
-    *pHandle = pPicture->u.bmp.hbitmap;
-    return S_OK;
-}
-
-HRESULT IPictureBmp::get_hPal(OLE_HANDLE * phPal)
-{
-    *phPal = pPicture->u.bmp.hpal;
-    return S_OK;
-}
-
-HRESULT IPictureBmp::get_Type(SHORT * pType)
-{
-    *pType = PICTYPE_BITMAP;
-    return S_OK;
-}
-
-HRESULT IPictureBmp::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
-{
-    SIZE	size;
-
-    if (GetBitmapDimensionEx( pPicture->u.bmp.hbitmap, &size) == 0)
-    {
-	*pWidth = 0;
-	return E_FAIL;
-    }
-
-    *pWidth = size.cx;
-
-    return S_OK;
-}
-
-HRESULT IPictureBmp::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
-{
-    SIZE	size;
-
-    if (GetBitmapDimensionEx( pPicture->u.bmp.hbitmap, &size) == 0)
-    {
-	*pHeight = 0;
-	return E_FAIL;
-    }
-
-    *pHeight = size.cy;
-
-    return S_OK;
-}
-
-HRESULT IPictureBmp::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
-				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
-				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
-				LPCRECT pRcWBounds)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureBmp::set_hPal(OLE_HANDLE hPal)
-{
-    pPicture->u.bmp.hpal = hPal;
-    return S_OK;
-}
-
-HRESULT IPictureBmp::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureBmp::get_Attributes(DWORD * pDwAttr)
-{
-    // Although bitmaps may be scaled, it is really stretching.
-    *pDwAttr = 0;
-    return S_OK;
-}
-
-// ----------------------------------------------------------------------
-// Metafile Picture
-// ----------------------------------------------------------------------
-IPictureIcon::IPictureIcon(IPictureImpl * a_pPicture, HICON hicon)
-    : IPictureStrat(a_pPicture)
-{
-    pPicture->u.icon.hicon = hicon;
-}
-
-IPictureIcon::~IPictureIcon()
-{
-    if (pPicture->fOwn)
-    {
-	// Free icon...
-	DestroyIcon(pPicture->u.icon.hicon);
-    }
-}
-
-HRESULT IPictureIcon::get_Handle(OLE_HANDLE * pHandle)
-{
-    *pHandle = pPicture->u.icon.hicon;
-    return S_OK;
-}
-
-HRESULT IPictureIcon::get_hPal(OLE_HANDLE * phPal)
-{
-    *phPal = 0;
-    return S_OK;
-}
-
-HRESULT IPictureIcon::get_Type(SHORT * pType)
-{
-    *pType = PICTYPE_ICON;
-    return S_OK;
-}
-
-HRESULT IPictureIcon::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
-{
-    // FIXME - Read from system constants...
-    *pWidth = 32;
-
-    return S_OK;
-}
-
-HRESULT IPictureIcon::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
-{
-    // FIXME - Read from system constants...
-    *pHeight = 32;
-
-    return S_OK;
-}
-
-HRESULT IPictureIcon::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
-				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
-				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
-				LPCRECT pRcWBounds)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureIcon::set_hPal(OLE_HANDLE hPal)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureIcon::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureIcon::get_Attributes(DWORD * pDwAttr)
-{
-    *pDwAttr = PICTURE_TRANSPARENT;
-    return S_OK;
-}
-
-// ----------------------------------------------------------------------
-// Enhanced Metafile Picture
-// ----------------------------------------------------------------------
-
-IPictureMeta::IPictureMeta(IPictureImpl * a_pPicture, HMETAFILE hmeta, int xExt, int yExt)
-    : IPictureStrat(a_pPicture)
-{
-    pPicture->u.wmf.hmeta = hmeta;
-    pPicture->u.wmf.xExt = xExt;
-    pPicture->u.wmf.yExt = yExt;
-}
-
-IPictureMeta::~IPictureMeta()
-{
-    if (pPicture->fOwn)
-    {
-	// Free metafile...
-	DeleteMetaFile(pPicture->u.wmf.hmeta);
-    }
-}
-
-HRESULT IPictureMeta::get_Handle(OLE_HANDLE * pHandle)
-{
-    *pHandle = pPicture->u.wmf.hmeta;
-    return S_OK;
-}
-
-HRESULT IPictureMeta::get_hPal(OLE_HANDLE * phPal)
-{
-    *phPal = 0;
-    return E_FAIL;
-}
-
-HRESULT IPictureMeta::get_Type(SHORT * pType)
-{
-    *pType = PICTYPE_METAFILE;
-    return S_OK;
-}
-
-HRESULT IPictureMeta::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
-{
-    *pWidth = pPicture->u.wmf.xExt;
-    return S_OK;
-}
-
-HRESULT IPictureMeta::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
-{
-    *pHeight = pPicture->u.wmf.yExt;
-    return S_OK;
-}
-
-HRESULT IPictureMeta::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
-				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
-				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
-				LPCRECT pRcWBounds)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureMeta::set_hPal(OLE_HANDLE hPal)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureMeta::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureMeta::get_Attributes(DWORD * pDwAttr)
-{
-    *pDwAttr = PICTURE_SCALEABLE | PICTURE_TRANSPARENT;
-    return S_OK;
-}
-
-// ----------------------------------------------------------------------
 // IPictureImpl_QueryInterface
 // ----------------------------------------------------------------------
 static IPictureImpl *   IPictureImpl_Constructor(LPPICTDESC description, BOOL fOwn)
 {
-    IPictureImpl *	newObject;
+    IPictureImpl *	pNewObject;
 
     // Allocate a new object on the heap...
-    if ((newObject = (IPictureImpl *)HeapAlloc(GetProcessHeap(), 0, sizeof(IPictureImpl))) == 0)
+    if ((pNewObject = (IPictureImpl *)HeapAlloc(GetProcessHeap(), 0, sizeof(IPictureImpl))) == 0)
     	return 0;
 
-    dprintf(("OLEAUT32: IPictureImpl(%p)->Contructor(fOwn = %d)\n", newObject, fOwn));
+    dprintf(("OLEAUT32: IPictureImpl(%p)->Contructor(fOwn = %d)\n", pNewObject, fOwn));
 
     // Initialise the vft's
-    newObject->lpvtbl1 = &IPictureImpl_VTable;
-    newObject->lpvtbl2 = &IPictureImpl_IDispatch_VTable;
-    newObject->lpvtbl3 = &IPictureImpl_IPersistStream_VTable;
+    pNewObject->lpvtbl1 = &IPictureImpl_VTable;
+    pNewObject->lpvtbl2 = &IPictureImpl_IDispatch_VTable;
+    pNewObject->lpvtbl3 = &IPictureImpl_IPersistStream_VTable;
 
     // Initial reference count of 1...
-    newObject->ref = 1;
-    newObject->fOwn = fOwn;
+    pNewObject->ref = 1;
+    pNewObject->fOwn = fOwn;
 
     // If a description is not passed then leave the picture uninitialised...
     if (description == 0)
-	newObject->pStrat = new IPictureNone(newObject);
+	pNewObject->pStrat = new IPictureNone(pNewObject);
     else
     {
@@ -493,5 +190,5 @@
 	if (description->cbSizeofstruct < sizeof(PICTDESC))
 	{
-	    dprintf(("OLEAUT32: IPictureImpl(%p)->Constructor - Invalid cbSizeofstruct!", newObject));
+	    dprintf(("OLEAUT32: IPictureImpl(%p)->Constructor - Invalid cbSizeofstruct!", pNewObject));
 	    return 0;
 	}
@@ -499,6 +196,6 @@
 	{
 	    case PICTYPE_BITMAP:
-		newObject->pStrat = new IPictureBmp(
-					    newObject,
+		pNewObject->pStrat = new IPictureBmp(
+					    pNewObject,
 					    description->u.bmp.hbitmap,
 					    description->u.bmp.hpal);
@@ -506,5 +203,5 @@
 
 	    case PICTYPE_METAFILE:
-		newObject->pStrat = new IPictureMeta(newObject,
+		pNewObject->pStrat = new IPictureMeta(pNewObject,
 					    description->u.wmf.hmeta,
 					    description->u.wmf.xExt,
@@ -513,10 +210,10 @@
 
 	    case PICTYPE_ICON:
-		newObject->pStrat = new IPictureIcon(newObject,
+		pNewObject->pStrat = new IPictureIcon(pNewObject,
 					    description->u.icon.hicon);
 		break;
 
 	    case PICTYPE_ENHMETAFILE:
-		newObject->pStrat = new IPictureIcon(newObject,
+		pNewObject->pStrat = new IPictureIcon(pNewObject,
 					    description->u.emf.hemf);
 		break;
@@ -524,10 +221,10 @@
 	    default:
 	    	// assume uninitialised...
-		newObject->pStrat = new IPictureNone(newObject);
+		pNewObject->pStrat = new IPictureNone(pNewObject);
 		break;
 	}
     }
 
-    return newObject;
+    return pNewObject;
 }
 
@@ -535,11 +232,11 @@
 // IPictureImpl_QueryInterface
 // ----------------------------------------------------------------------
-static void             IPictureImpl_Destructor(IPictureImpl * obj)
-{
-    dprintf(("OLEAUT32: IPictureImpl(%p)->Destructor()\n", obj));
-
-    delete obj->pStrat;
-
-    HeapFree(GetProcessHeap(), 0, obj);
+static void             IPictureImpl_Destructor(IPictureImpl * This)
+{
+    dprintf(("OLEAUT32: IPictureImpl(%p)->Destructor()\n", This));
+
+    delete This->pStrat;
+
+    HeapFree(GetProcessHeap(), 0, This);
 }
 
Index: trunk/src/oleaut32/iPicture.h
===================================================================
--- trunk/src/oleaut32/iPicture.h	(revision 1822)
+++ trunk/src/oleaut32/iPicture.h	(revision 1824)
@@ -1,3 +1,3 @@
-/* $Id: iPicture.h,v 1.2 1999-11-14 21:04:43 davidr Exp $ */
+/* $Id: iPicture.h,v 1.3 1999-11-23 20:46:04 davidr Exp $ */
 /* 
  * OLE Picture functions private header
@@ -60,5 +60,5 @@
     BOOL		fOwn;
     HDC			hCurDC;
-    DWORD		lAttrib;
+    ULONG		lAttrib;
 
 } IPictureImpl;
@@ -234,73 +234,4 @@
 };
 
-IPictureEmf::IPictureEmf(IPictureImpl * a_pPicture, HENHMETAFILE hemf)
-    : IPictureStrat(a_pPicture)
-{
-    pPicture->u.emf.hemf = hemf;
-}
-
-IPictureEmf::~IPictureEmf()
-{
-    if (pPicture->fOwn)
-    {
-	// Free metafile...
-	DeleteEnhMetaFile(pPicture->u.emf.hemf);
-    }
-}
-
-HRESULT IPictureEmf::get_Handle(OLE_HANDLE * pHandle)
-{
-    *pHandle = pPicture->u.emf.hemf;
-    return S_OK;
-}
-
-HRESULT IPictureEmf::get_hPal(OLE_HANDLE * phPal)
-{
-    *phPal = 0;
-    return S_OK;
-}
-
-HRESULT IPictureEmf::get_Type(SHORT * pType)
-{
-    *pType = PICTYPE_ENHMETAFILE;
-    return S_OK;
-}
-
-HRESULT IPictureEmf::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
-{
-    *pWidth = 0;
-    return E_FAIL;
-}
-
-HRESULT IPictureEmf::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
-{
-    *pHeight = 0;
-    return E_FAIL;
-}
-
-HRESULT IPictureEmf::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
-				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
-				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
-				LPCRECT pRcWBounds)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureEmf::set_hPal(OLE_HANDLE hPal)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureEmf::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
-{
-    return E_FAIL;
-}
-
-HRESULT IPictureEmf::get_Attributes(DWORD * pDwAttr)
-{
-    *pDwAttr = PICTURE_SCALEABLE | PICTURE_TRANSPARENT;
-    return S_OK;
-}
-
 // Access macros
 #define _ICOM_THIS(class, name) class* This = (class*)name;
Index: trunk/src/oleaut32/iPictureBmp.cpp
===================================================================
--- trunk/src/oleaut32/iPictureBmp.cpp	(revision 1824)
+++ trunk/src/oleaut32/iPictureBmp.cpp	(revision 1824)
@@ -0,0 +1,134 @@
+/* $Id: iPictureBmp.cpp,v 1.1 1999-11-23 20:45:23 davidr Exp $ */
+/* 
+ * OLE Picture Bitmap Strategy object
+ *
+ * 20/11/99 - New Code
+ * 
+ * Copyright 1999 David J. Raison
+ * 
+ * Project Odin Software License can be found in LICENSE.TXT
+ * 
+ */
+ 
+#include "oleaut32.h"
+#include "olectl.h"
+#include "ipicture.h"
+
+// ======================================================================
+// Local Methods
+// ======================================================================
+
+// ----------------------------------------------------------------------
+// Bitmap Picture
+// ----------------------------------------------------------------------
+IPictureBmp::~IPictureBmp()
+{
+    if (pPicture->fOwn)
+    {
+	// Free bitmap...
+	DeleteObject(pPicture->u.bmp.hbitmap);
+	DeleteObject(pPicture->u.bmp.hpal);
+    }
+}
+
+// ----------------------------------------------------------------------
+// IPictureBmp::get_Handle
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::get_Handle(OLE_HANDLE * pHandle)
+{
+    *pHandle = pPicture->u.bmp.hbitmap;
+    return S_OK;
+}
+
+// ----------------------------------------------------------------------
+// IPictureBmp::get_hPal
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::get_hPal(OLE_HANDLE * phPal)
+{
+    *phPal = pPicture->u.bmp.hpal;
+    return S_OK;
+}
+
+// ----------------------------------------------------------------------
+// IPictureBmp::get_Type
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::get_Type(SHORT * pType)
+{
+    *pType = PICTYPE_BITMAP;
+    return S_OK;
+}
+
+// ----------------------------------------------------------------------
+// IPictureBmp::get_Width
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
+{
+    SIZE	size;
+
+    if (GetBitmapDimensionEx( pPicture->u.bmp.hbitmap, &size) == 0)
+    {
+	*pWidth = 0;
+	return E_FAIL;
+    }
+
+    *pWidth = size.cx;
+
+    return S_OK;
+}
+
+// ----------------------------------------------------------------------
+// IPictureBmp::get_Height
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
+{
+    SIZE	size;
+
+    if (GetBitmapDimensionEx( pPicture->u.bmp.hbitmap, &size) == 0)
+    {
+	*pHeight = 0;
+	return E_FAIL;
+    }
+
+    *pHeight = size.cy;
+
+    return S_OK;
+}
+
+// ----------------------------------------------------------------------
+// IPictureBmp::Render
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
+				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
+				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
+				LPCRECT pRcWBounds)
+{
+    return E_FAIL;
+}
+
+// ----------------------------------------------------------------------
+// IPictureBmp::set_hPal
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::set_hPal(OLE_HANDLE hPal)
+{
+    pPicture->u.bmp.hpal = hPal;
+    return S_OK;
+}
+
+// ----------------------------------------------------------------------
+// IPictureBmp::SaveAsFile
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
+{
+    return E_FAIL;
+}
+
+// ----------------------------------------------------------------------
+//  IPictureBmp::get_Attributes
+// ----------------------------------------------------------------------
+HRESULT IPictureBmp::get_Attributes(DWORD * pDwAttr)
+{
+    // Although bitmaps may be scaled, it is really stretching.
+    *pDwAttr = 0;
+    return S_OK;
+}
+
Index: trunk/src/oleaut32/iPictureEmf.cpp
===================================================================
--- trunk/src/oleaut32/iPictureEmf.cpp	(revision 1824)
+++ trunk/src/oleaut32/iPictureEmf.cpp	(revision 1824)
@@ -0,0 +1,89 @@
+/* $Id: iPictureEmf.cpp,v 1.1 1999-11-23 20:45:24 davidr Exp $ */
+/* 
+ * OLE Picture Enhanced Metafile Strategy object
+ *
+ * 20/11/99 - New Code
+ * 
+ * Copyright 1999 David J. Raison
+ * 
+ * Project Odin Software License can be found in LICENSE.TXT
+ * 
+ */
+ 
+#include "oleaut32.h"
+#include "olectl.h"
+#include "ipicture.h"
+
+// ----------------------------------------------------------------------
+// Enhanced Metafile Picture
+// ----------------------------------------------------------------------
+
+IPictureEmf::IPictureEmf(IPictureImpl * a_pPicture, HENHMETAFILE hemf)
+    : IPictureStrat(a_pPicture)
+{
+    pPicture->u.emf.hemf = hemf;
+}
+
+IPictureEmf::~IPictureEmf()
+{
+    if (pPicture->fOwn)
+    {
+	// Free metafile...
+	DeleteEnhMetaFile(pPicture->u.emf.hemf);
+    }
+}
+
+HRESULT IPictureEmf::get_Handle(OLE_HANDLE * pHandle)
+{
+    *pHandle = pPicture->u.emf.hemf;
+    return S_OK;
+}
+
+HRESULT IPictureEmf::get_hPal(OLE_HANDLE * phPal)
+{
+    *phPal = 0;
+    return S_OK;
+}
+
+HRESULT IPictureEmf::get_Type(SHORT * pType)
+{
+    *pType = PICTYPE_ENHMETAFILE;
+    return S_OK;
+}
+
+HRESULT IPictureEmf::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
+{
+    *pWidth = 0;
+    return E_FAIL;
+}
+
+HRESULT IPictureEmf::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
+{
+    *pHeight = 0;
+    return E_FAIL;
+}
+
+HRESULT IPictureEmf::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
+				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
+				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
+				LPCRECT pRcWBounds)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureEmf::set_hPal(OLE_HANDLE hPal)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureEmf::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureEmf::get_Attributes(DWORD * pDwAttr)
+{
+    *pDwAttr = PICTURE_SCALEABLE | PICTURE_TRANSPARENT;
+    return S_OK;
+}
+
Index: trunk/src/oleaut32/iPictureIcon.cpp
===================================================================
--- trunk/src/oleaut32/iPictureIcon.cpp	(revision 1824)
+++ trunk/src/oleaut32/iPictureIcon.cpp	(revision 1824)
@@ -0,0 +1,91 @@
+/* $Id: iPictureIcon.cpp,v 1.1 1999-11-23 20:45:24 davidr Exp $ */
+/* 
+ * OLE Picture Icon Strategy object
+ *
+ * 20/11/99 - New Code
+ * 
+ * Copyright 1999 David J. Raison
+ * 
+ * Project Odin Software License can be found in LICENSE.TXT
+ * 
+ */
+ 
+#include "oleaut32.h"
+#include "olectl.h"
+#include "ipicture.h"
+
+// ----------------------------------------------------------------------
+// Icon Picture
+// ----------------------------------------------------------------------
+IPictureIcon::IPictureIcon(IPictureImpl * a_pPicture, HICON hicon)
+    : IPictureStrat(a_pPicture)
+{
+    pPicture->u.icon.hicon = hicon;
+}
+
+IPictureIcon::~IPictureIcon()
+{
+    if (pPicture->fOwn)
+    {
+	// Free icon...
+	DestroyIcon(pPicture->u.icon.hicon);
+    }
+}
+
+HRESULT IPictureIcon::get_Handle(OLE_HANDLE * pHandle)
+{
+    *pHandle = pPicture->u.icon.hicon;
+    return S_OK;
+}
+
+HRESULT IPictureIcon::get_hPal(OLE_HANDLE * phPal)
+{
+    *phPal = 0;
+    return S_OK;
+}
+
+HRESULT IPictureIcon::get_Type(SHORT * pType)
+{
+    *pType = PICTYPE_ICON;
+    return S_OK;
+}
+
+HRESULT IPictureIcon::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
+{
+    // FIXME - Read from system constants...
+    *pWidth = 32;
+
+    return S_OK;
+}
+
+HRESULT IPictureIcon::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
+{
+    // FIXME - Read from system constants...
+    *pHeight = 32;
+
+    return S_OK;
+}
+
+HRESULT IPictureIcon::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
+				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
+				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
+				LPCRECT pRcWBounds)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureIcon::set_hPal(OLE_HANDLE hPal)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureIcon::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureIcon::get_Attributes(DWORD * pDwAttr)
+{
+    *pDwAttr = PICTURE_TRANSPARENT;
+    return S_OK;
+}
Index: trunk/src/oleaut32/iPictureMeta.cpp
===================================================================
--- trunk/src/oleaut32/iPictureMeta.cpp	(revision 1824)
+++ trunk/src/oleaut32/iPictureMeta.cpp	(revision 1824)
@@ -0,0 +1,91 @@
+/* $Id: iPictureMeta.cpp,v 1.1 1999-11-23 20:45:24 davidr Exp $ */
+/* 
+ * OLE Picture Metafile Strategy object
+ *
+ * 20/11/99 - New Code
+ * 
+ * Copyright 1999 David J. Raison
+ * 
+ * Project Odin Software License can be found in LICENSE.TXT
+ * 
+ */
+ 
+#include "oleaut32.h"
+#include "olectl.h"
+#include "ipicture.h"
+
+// ----------------------------------------------------------------------
+// Std Metafile Picture
+// ----------------------------------------------------------------------
+
+IPictureMeta::IPictureMeta(IPictureImpl * a_pPicture, HMETAFILE hmeta, int xExt, int yExt)
+    : IPictureStrat(a_pPicture)
+{
+    pPicture->u.wmf.hmeta = hmeta;
+    pPicture->u.wmf.xExt = xExt;
+    pPicture->u.wmf.yExt = yExt;
+}
+
+IPictureMeta::~IPictureMeta()
+{
+    if (pPicture->fOwn)
+    {
+	// Free metafile...
+	DeleteMetaFile(pPicture->u.wmf.hmeta);
+    }
+}
+
+HRESULT IPictureMeta::get_Handle(OLE_HANDLE * pHandle)
+{
+    *pHandle = pPicture->u.wmf.hmeta;
+    return S_OK;
+}
+
+HRESULT IPictureMeta::get_hPal(OLE_HANDLE * phPal)
+{
+    *phPal = 0;
+    return E_FAIL;
+}
+
+HRESULT IPictureMeta::get_Type(SHORT * pType)
+{
+    *pType = PICTYPE_METAFILE;
+    return S_OK;
+}
+
+HRESULT IPictureMeta::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
+{
+    *pWidth = pPicture->u.wmf.xExt;
+    return S_OK;
+}
+
+HRESULT IPictureMeta::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
+{
+    *pHeight = pPicture->u.wmf.yExt;
+    return S_OK;
+}
+
+HRESULT IPictureMeta::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
+				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
+				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
+				LPCRECT pRcWBounds)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureMeta::set_hPal(OLE_HANDLE hPal)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureMeta::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureMeta::get_Attributes(DWORD * pDwAttr)
+{
+    *pDwAttr = PICTURE_SCALEABLE | PICTURE_TRANSPARENT;
+    return S_OK;
+}
+
Index: trunk/src/oleaut32/iPictureNone.cpp
===================================================================
--- trunk/src/oleaut32/iPictureNone.cpp	(revision 1824)
+++ trunk/src/oleaut32/iPictureNone.cpp	(revision 1824)
@@ -0,0 +1,80 @@
+/* $Id: iPictureNone.cpp,v 1.1 1999-11-23 20:45:24 davidr Exp $ */
+/* 
+ * OLE Picture Metafile Strategy object
+ *
+ * 20/11/99 - New Code
+ * 
+ * Copyright 1999 David J. Raison
+ * 
+ * Project Odin Software License can be found in LICENSE.TXT
+ * 
+ */
+ 
+#include "oleaut32.h"
+#include "olectl.h"
+#include "ipicture.h"
+
+// ----------------------------------------------------------------------
+// Uninitialised Picture
+// ----------------------------------------------------------------------
+HRESULT IPictureNone::get_Handle(OLE_HANDLE * pHandle)
+{
+    *pHandle = 0;
+    return E_FAIL;
+}
+
+HRESULT IPictureNone::get_hPal(OLE_HANDLE * phPal)
+{
+    *phPal = 0;
+    return E_FAIL;
+}
+
+HRESULT IPictureNone::get_Type(SHORT * pType)
+{
+    *pType = PICTYPE_UNINITIALIZED;
+    return S_OK;
+}
+
+HRESULT IPictureNone::get_Width(OLE_XSIZE_HIMETRIC * pWidth)
+{
+    *pWidth = 0;
+    return E_FAIL;
+}
+
+HRESULT IPictureNone::get_Height(OLE_YSIZE_HIMETRIC * pHeight)
+{
+    *pHeight = 0;
+    return E_FAIL;
+}
+
+HRESULT IPictureNone::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
+				OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
+				OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
+				LPCRECT pRcWBounds)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureNone::set_hPal(OLE_HANDLE hPal)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureNone::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)
+{
+    return E_FAIL;
+}
+
+HRESULT IPictureNone::get_Attributes(DWORD * pDwAttr)
+{
+    *pDwAttr = 0;
+    return S_OK;
+}
+
+IPictureBmp::IPictureBmp(IPictureImpl * a_pPicture, HBITMAP hbitmap, HPALETTE hpal)
+    : IPictureStrat(a_pPicture)
+{
+    pPicture->u.bmp.hbitmap = hbitmap;
+    pPicture->u.bmp.hpal = hpal;
+}
+
