Ignore:
Timestamp:
Sep 2, 2000, 10:27:05 AM (25 years ago)
Author:
sandervl
Message:

more logging + implemented GetClipList

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ddraw/OS2CLIPPER.CPP

    r2174 r4146  
    1 /* $Id: OS2CLIPPER.CPP,v 1.9 1999-12-21 01:28:15 hugh Exp $ */
     1/* $Id: OS2CLIPPER.CPP,v 1.10 2000-09-02 08:27:05 sandervl Exp $ */
    22
    33/*
     
    2020#include <misc.h>
    2121#include <winerror.h>
     22#include <winuser.h>
    2223
    2324//******************************************************************************
     
    4142  lpDraw->Vtbl.AddRef(lpDraw);
    4243  hDive                   = lpDirectDraw->GetDiveInstance();
     44  windowRect.left = windowRect.right = windowRect.top = windowRect.bottom = 0;
    4345}
    4446//******************************************************************************
     
    5052//******************************************************************************
    5153//******************************************************************************
    52 HRESULT __stdcall ClipQueryInterface(THIS This, REFIID riid, LPVOID FAR * ppvObj)
     54HRESULT WIN32API ClipQueryInterface(THIS This, REFIID riid, LPVOID FAR * ppvObj)
    5355{
    54   #ifdef DEBUG
    55     dprintf(("DDRAW: ClipQueryInterface\n"));
    56   #endif
     56  dprintf(("DDRAW: ClipQueryInterface\n"));
    5757
    5858  *ppvObj = NULL;
     
    7070//******************************************************************************
    7171//******************************************************************************
    72 ULONG   __stdcall ClipAddRef(THIS This)
     72ULONG   WIN32API ClipAddRef(THIS This)
    7373{
    7474 OS2IDirectDrawClipper *me = (OS2IDirectDrawClipper *)This;
    7575
    76   #ifdef DEBUG
    77     dprintf(("DDRAW: OS2IDirectDrawClipper::AddRef %d\n", me->Referenced+1));
    78   #endif
     76  dprintf(("DDRAW: OS2IDirectDrawClipper::AddRef %d\n", me->Referenced+1));
    7977
    8078  return ++me->Referenced;
     
    8280//******************************************************************************
    8381//******************************************************************************
    84 ULONG   __stdcall ClipRelease(THIS This)
     82ULONG   WIN32API ClipRelease(THIS This)
    8583{
    8684 OS2IDirectDrawClipper *me = (OS2IDirectDrawClipper *)This;
    8785
    88   #ifdef DEBUG
    89     dprintf(("DDRAW: OS2IDirectDrawClipper::Release %d\n", me->Referenced-1));
    90   #endif
     86  dprintf(("DDRAW: OS2IDirectDrawClipper::Release %d", me->Referenced-1));
    9187
    9288  if(me->Referenced)
     
    106102//******************************************************************************
    107103//******************************************************************************
    108 HRESULT __stdcall ClipGetClipList(THIS, LPRECT, LPRGNDATA, LPDWORD)
     104HRESULT WIN32API ClipGetClipList(THIS This, LPRECT lpRect, LPRGNDATA lpClipList,
     105                                 LPDWORD lpdwSize)
    109106{
    110   #ifdef DEBUG
    111     dprintf(("DDRAW: ClipGetClipList\n"));
    112   #endif
     107 OS2IDirectDrawClipper *me = (OS2IDirectDrawClipper *)This;
     108 HRESULT rc = DD_OK;
    113109
    114   return(DD_OK);
     110  dprintf(("DDRAW: ClipGetClipList %x %x %x %x", This, lpRect, lpClipList, lpdwSize));
     111
     112  if(!lpdwSize) {
     113        return DDERR_INVALIDPARAMS;
     114  }
     115  if(me->clipWindow)
     116  {
     117      HRGN hRgn, hRgn1;
     118      HDC  hdc;
     119      int  bufneeded;
     120
     121        hRgn = CreateRectRgn(0, 0, 1, 1);
     122        hdc = GetDC(me->clipWindow);
     123        if(GetClipRgn(hdc, hRgn)) {
     124                if(lpRect) {
     125                        hRgn1 = CreateRectRgnIndirect(lpRect);
     126                        CombineRgn(hRgn, hRgn, hRgn1, RGN_AND);
     127                        DeleteObject(hRgn1);
     128                }
     129                bufneeded = GetRegionData(hRgn, *lpdwSize, lpClipList);
     130                if(bufneeded > *lpdwSize) {
     131                        rc = DDERR_REGIONTOOSMALL;
     132                }
     133        }
     134        else    rc = DDERR_NOCLIPLIST;
     135        DeleteObject(hRgn);
     136        ReleaseDC(me->clipWindow, hdc);
     137  }
     138  else { //todo!!
     139        dprintf(("ClipGetClipList not complete if not associated with window!"));
     140        rc = DDERR_NOCLIPLIST;
     141  }
     142  return rc;
    115143}
    116144//******************************************************************************
    117145//******************************************************************************
    118 HRESULT __stdcall ClipGetHWnd(THIS This, HWND FAR *pHwnd)
     146HRESULT WIN32API ClipGetHWnd(THIS This, HWND FAR *pHwnd)
    119147{
    120148 OS2IDirectDrawClipper *me = (OS2IDirectDrawClipper *)This;
    121149
    122   #ifdef DEBUG
    123     dprintf(("DDRAW: ClipGetHWnd\n"));
    124   #endif
     150  dprintf(("DDRAW: ClipGetHWnd %x %x", This, me->clipWindow));
    125151
    126152  *pHwnd = me->clipWindow;
     
    129155//******************************************************************************
    130156//******************************************************************************
    131 HRESULT __stdcall ClipInitialize(THIS, LPDIRECTDRAW, DWORD)
     157HRESULT WIN32API ClipInitialize(THIS This, LPDIRECTDRAW lpDD, DWORD dwFlags)
    132158{
    133   #ifdef DEBUG
    134     dprintf(("DDRAW: ClipInitialize\n"));
    135   #endif
     159  dprintf(("DDRAW: ClipInitialize %x %x %x", This, lpDD, dwFlags));
    136160
    137161  return(DDERR_ALREADYINITIALIZED); // Init is done during creation see M$ Doc
     
    139163//******************************************************************************
    140164//******************************************************************************
    141 HRESULT __stdcall ClipIsClipListChanged(THIS, BOOL FAR *)
     165HRESULT WIN32API ClipIsClipListChanged(THIS This, BOOL *lpbChanged)
    142166{
    143   #ifdef DEBUG
    144     dprintf(("DDRAW: ClipIsClipListChanged\n"));
    145   #endif
     167  dprintf(("DDRAW: ClipIsClipListChanged %x %x", This, lpbChanged));
    146168
    147169  return(DD_OK);
     
    149171//******************************************************************************
    150172//******************************************************************************
    151 HRESULT __stdcall ClipSetClipList(THIS, LPRGNDATA,DWORD)
     173HRESULT WIN32API ClipSetClipList(THIS This, LPRGNDATA lpClipList, DWORD lpdwSize)
    152174{
    153   #ifdef DEBUG
    154     dprintf(("DDRAW: ClipSetClipList\n"));
    155   #endif
     175 OS2IDirectDrawClipper *me = (OS2IDirectDrawClipper *)This;
    156176
     177  dprintf(("DDRAW: ClipSetClipList %x %x %x", This, lpClipList, lpdwSize));
     178
     179  if(me->clipWindow) {
     180        return DDERR_CLIPPERISUSINGHWND;
     181  }
    157182  return(DD_OK);
    158183}
     
    160185//DWORD param not used in DirectX 3
    161186//******************************************************************************
    162 HRESULT __stdcall ClipSetHWnd(THIS This, DWORD reserved, HWND hwnd)
     187HRESULT WIN32API ClipSetHWnd(THIS This, DWORD reserved, HWND hwnd)
    163188{
    164189 OS2IDirectDrawClipper *me = (OS2IDirectDrawClipper *)This;
    165190
    166   #ifdef DEBUG
    167     dprintf(("DDRAW: ClipSetHWnd\n"));
    168   #endif
     191  dprintf(("DDRAW: ClipSetHWnd %x %x %x", This, reserved, hwnd));
    169192
    170193  me->clipWindow = hwnd;
     194  GetClientRect(hwnd, &me->windowRect);
     195
    171196  return(DD_OK);
    172197}
Note: See TracChangeset for help on using the changeset viewer.