winex11: Implement a separate entry point for PatBlt and simplify the StretchBlt...
[wine] / dlls / mshtml / hlink.c
index 5a04509..965318f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005 Jacek Caban
+ * Copyright 2005-2006 Jacek Caban for CodeWeavers
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
+ * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "config.h"
-
 #include <stdarg.h>
-#include <stdio.h>
 
 #define COBJMACROS
 
@@ -28,6 +26,7 @@
 #include "ole2.h"
 
 #include "wine/debug.h"
+#include "wine/unicode.h"
 
 #include "mshtml_private.h"
 
@@ -37,66 +36,69 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
  * IHlinkTarget implementation
  */
 
-#define HLINKTRG_THIS(iface) DEFINE_THIS(HTMLDocument, HlinkTarget, iface)
+static inline HTMLDocument *impl_from_IHlinkTarget(IHlinkTarget *iface)
+{
+    return CONTAINING_RECORD(iface, HTMLDocument, IHlinkTarget_iface);
+}
 
 static HRESULT WINAPI HlinkTarget_QueryInterface(IHlinkTarget *iface, REFIID riid, void **ppv)
 {
-    HTMLDocument *This = HLINKTRG_THIS(iface);
-    return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppv);
+    HTMLDocument *This = impl_from_IHlinkTarget(iface);
+    return htmldoc_query_interface(This, riid, ppv);
 }
 
 static ULONG WINAPI HlinkTarget_AddRef(IHlinkTarget *iface)
 {
-    HTMLDocument *This = HLINKTRG_THIS(iface);
-    return IHTMLDocument2_AddRef(HTMLDOC(This));
+    HTMLDocument *This = impl_from_IHlinkTarget(iface);
+    return htmldoc_addref(This);
 }
 
 static ULONG WINAPI HlinkTarget_Release(IHlinkTarget *iface)
 {
-    HTMLDocument *This = HLINKTRG_THIS(iface);
-    return IHTMLDocument2_Release(HTMLDOC(This));
+    HTMLDocument *This = impl_from_IHlinkTarget(iface);
+    return htmldoc_release(This);
 }
 
 static HRESULT WINAPI HlinkTarget_SetBrowseContext(IHlinkTarget *iface, IHlinkBrowseContext *pihlbc)
 {
-    HTMLDocument *This = HLINKTRG_THIS(iface);
+    HTMLDocument *This = impl_from_IHlinkTarget(iface);
     FIXME("(%p)->(%p)\n", This, pihlbc);
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI HlinkTarget_GetBrowseContext(IHlinkTarget *iface, IHlinkBrowseContext **ppihlbc)
 {
-    HTMLDocument *This = HLINKTRG_THIS(iface);
+    HTMLDocument *This = impl_from_IHlinkTarget(iface);
     FIXME("(%p)->(%p)\n", This, ppihlbc);
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI HlinkTarget_Navigate(IHlinkTarget *iface, DWORD grfHLNF, LPCWSTR pwzJumpLocation)
 {
-    HTMLDocument *This = HLINKTRG_THIS(iface);
+    HTMLDocument *This = impl_from_IHlinkTarget(iface);
 
-    TRACE("(%p)->(%08lx %s)\n", This, grfHLNF, debugstr_w(pwzJumpLocation));
+    TRACE("(%p)->(%08x %s)\n", This, grfHLNF, debugstr_w(pwzJumpLocation));
 
     if(grfHLNF)
-        FIXME("Unsupported grfHLNF=%08lx\n", grfHLNF);
+        FIXME("Unsupported grfHLNF=%08x\n", grfHLNF);
     if(pwzJumpLocation)
         FIXME("JumpLocation not supported\n");
 
-    return IOleObject_DoVerb(OLEOBJ(This), OLEIVERB_SHOW, NULL, NULL, -1, NULL, NULL);
+    return IOleObject_DoVerb(&This->IOleObject_iface, OLEIVERB_SHOW, NULL, NULL, -1, NULL, NULL);
 }
 
 static HRESULT WINAPI HlinkTarget_GetMoniker(IHlinkTarget *iface, LPCWSTR pwzLocation, DWORD dwAssign,
         IMoniker **ppimkLocation)
 {
-    HTMLDocument *This = HLINKTRG_THIS(iface);
-    FIXME("(%p)->(%s %08lx %p)\n", This, debugstr_w(pwzLocation), dwAssign, ppimkLocation);
+    HTMLDocument *This = impl_from_IHlinkTarget(iface);
+    FIXME("(%p)->(%s %08x %p)\n", This, debugstr_w(pwzLocation), dwAssign, ppimkLocation);
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI HlinkTarget_GetFriendlyName(IHlinkTarget *iface, LPCWSTR pwzLocation,
         LPWSTR *ppwzFriendlyName)
 {
-    HTMLDocument *This = HLINKTRG_THIS(iface);
+    HTMLDocument *This = impl_from_IHlinkTarget(iface);
     FIXME("(%p)->(%s %p)\n", This, debugstr_w(pwzLocation), ppwzFriendlyName);
     return E_NOTIMPL;
 }
@@ -114,5 +116,5 @@ static const IHlinkTargetVtbl HlinkTargetVtbl = {
 
 void HTMLDocument_Hlink_Init(HTMLDocument *This)
 {
-    This->lpHlinkTargetVtbl = &HlinkTargetVtbl;
+    This->IHlinkTarget_iface.lpVtbl = &HlinkTargetVtbl;
 }