2003-05-18 17:16:18 +00:00
|
|
|
/*
|
|
|
|
* ReactOS W32 Subsystem
|
|
|
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team
|
|
|
|
*
|
|
|
|
* 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
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
*/
|
2004-07-14 20:48:58 +00:00
|
|
|
/* $Id: cliprgn.c,v 1.42 2004/07/14 20:48:58 navaraf Exp $ */
|
2004-05-10 17:07:20 +00:00
|
|
|
#include <w32k.h>
|
1999-07-22 16:21:53 +00:00
|
|
|
|
2004-05-26 18:49:06 +00:00
|
|
|
int FASTCALL
|
2002-09-01 20:39:56 +00:00
|
|
|
CLIPPING_UpdateGCRegion(DC* Dc)
|
|
|
|
{
|
2004-05-14 16:55:18 +00:00
|
|
|
PROSRGNDATA CombinedRegion;
|
2003-06-28 08:39:18 +00:00
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
if (Dc->w.hGCClipRgn == NULL)
|
2003-08-19 11:48:50 +00:00
|
|
|
Dc->w.hGCClipRgn = NtGdiCreateRectRgn(0, 0, 0, 0);
|
2003-08-29 09:29:11 +00:00
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
if (Dc->w.hClipRgn == NULL)
|
2003-08-19 11:48:50 +00:00
|
|
|
NtGdiCombineRgn(Dc->w.hGCClipRgn, Dc->w.hVisRgn, 0, RGN_COPY);
|
2004-05-14 16:55:18 +00:00
|
|
|
else
|
|
|
|
NtGdiCombineRgn(Dc->w.hGCClipRgn, Dc->w.hClipRgn, Dc->w.hVisRgn, RGN_AND);
|
|
|
|
NtGdiOffsetRgn(Dc->w.hGCClipRgn, Dc->w.DCOrgX, Dc->w.DCOrgY);
|
2003-06-28 08:39:18 +00:00
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
CombinedRegion = RGNDATA_LockRgn(Dc->w.hGCClipRgn);
|
|
|
|
ASSERT(CombinedRegion != NULL);
|
2003-06-28 08:39:18 +00:00
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
if (Dc->CombinedClip != NULL)
|
2003-06-28 08:39:18 +00:00
|
|
|
IntEngDeleteClipRegion(Dc->CombinedClip);
|
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
Dc->CombinedClip = IntEngCreateClipRegion(
|
|
|
|
CombinedRegion->rdh.nCount,
|
|
|
|
(PRECTL)CombinedRegion->Buffer,
|
|
|
|
(PRECTL)&CombinedRegion->rdh.rcBound);
|
|
|
|
ASSERT(Dc->CombinedClip != NULL);
|
2003-06-28 08:39:18 +00:00
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
RGNDATA_UnlockRgn(Dc->w.hGCClipRgn);
|
2004-05-26 18:49:06 +00:00
|
|
|
return NtGdiOffsetRgn(Dc->w.hGCClipRgn, -Dc->w.DCOrgX, -Dc->w.DCOrgY);
|
2002-09-01 20:39:56 +00:00
|
|
|
}
|
|
|
|
|
2002-07-13 21:37:27 +00:00
|
|
|
HRGN WINAPI SaveVisRgn(HDC hdc)
|
|
|
|
{
|
|
|
|
HRGN copy;
|
2002-07-22 07:55:49 +00:00
|
|
|
PROSRGNDATA obj, copyObj;
|
2003-08-20 07:45:02 +00:00
|
|
|
PDC dc = DC_LockDc(hdc);
|
2002-07-18 21:59:18 +00:00
|
|
|
|
2002-07-13 21:37:27 +00:00
|
|
|
if (!dc) return 0;
|
|
|
|
|
2002-07-18 21:59:18 +00:00
|
|
|
obj = RGNDATA_LockRgn(dc->w.hVisRgn);
|
2002-07-13 21:37:27 +00:00
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
if(!(copy = NtGdiCreateRectRgn(0, 0, 0, 0)))
|
2002-07-13 21:37:27 +00:00
|
|
|
{
|
2002-07-18 21:59:18 +00:00
|
|
|
RGNDATA_UnlockRgn(dc->w.hVisRgn);
|
2003-08-20 07:45:02 +00:00
|
|
|
DC_UnlockDc(hdc);
|
2002-07-13 21:37:27 +00:00
|
|
|
return 0;
|
|
|
|
}
|
2003-08-19 11:48:50 +00:00
|
|
|
NtGdiCombineRgn(copy, dc->w.hVisRgn, 0, RGN_COPY);
|
2002-07-18 21:59:18 +00:00
|
|
|
copyObj = RGNDATA_LockRgn(copy);
|
2002-07-13 21:37:27 +00:00
|
|
|
/* copyObj->header.hNext = obj->header.hNext;
|
|
|
|
header.hNext = copy; */
|
2002-07-18 21:59:18 +00:00
|
|
|
|
2002-07-13 21:37:27 +00:00
|
|
|
return copy;
|
|
|
|
}
|
|
|
|
|
2003-03-08 13:16:52 +00:00
|
|
|
INT STDCALL
|
2003-08-19 11:48:50 +00:00
|
|
|
NtGdiSelectVisRgn(HDC hdc, HRGN hrgn)
|
2002-07-13 21:37:27 +00:00
|
|
|
{
|
|
|
|
int retval;
|
|
|
|
DC *dc;
|
|
|
|
|
2003-01-18 20:47:32 +00:00
|
|
|
if (!hrgn)
|
2004-04-25 15:52:31 +00:00
|
|
|
{
|
|
|
|
SetLastWin32Error(ERROR_INVALID_PARAMETER);
|
2003-01-18 20:47:32 +00:00
|
|
|
return ERROR;
|
2004-04-25 15:52:31 +00:00
|
|
|
}
|
2003-08-20 07:45:02 +00:00
|
|
|
if (!(dc = DC_LockDc(hdc)))
|
2004-04-25 15:52:31 +00:00
|
|
|
{
|
|
|
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
2003-01-18 20:47:32 +00:00
|
|
|
return ERROR;
|
2004-04-25 15:52:31 +00:00
|
|
|
}
|
2002-07-13 21:37:27 +00:00
|
|
|
|
2002-07-18 21:59:18 +00:00
|
|
|
dc->w.flags &= ~DC_DIRTY;
|
2002-07-13 21:37:27 +00:00
|
|
|
|
2003-07-14 17:36:59 +00:00
|
|
|
if (dc->w.hVisRgn == NULL)
|
|
|
|
{
|
2003-08-19 11:48:50 +00:00
|
|
|
dc->w.hVisRgn = NtGdiCreateRectRgn(0, 0, 0, 0);
|
2003-11-26 21:48:35 +00:00
|
|
|
GDIOBJ_CopyOwnership(hdc, dc->w.hVisRgn);
|
2003-07-14 17:36:59 +00:00
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
retval = NtGdiCombineRgn(dc->w.hVisRgn, hrgn, 0, RGN_COPY);
|
2002-09-01 20:39:56 +00:00
|
|
|
CLIPPING_UpdateGCRegion(dc);
|
2003-08-20 07:45:02 +00:00
|
|
|
DC_UnlockDc( hdc );
|
2002-07-13 21:37:27 +00:00
|
|
|
|
|
|
|
return retval;
|
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
int STDCALL NtGdiExtSelectClipRgn(HDC hDC,
|
1999-07-22 16:21:53 +00:00
|
|
|
HRGN hrgn,
|
|
|
|
int fnMode)
|
|
|
|
{
|
2004-04-25 16:40:39 +00:00
|
|
|
int retval;
|
|
|
|
DC *dc;
|
|
|
|
|
|
|
|
if (!(dc = DC_LockDc(hDC)))
|
|
|
|
{
|
|
|
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
|
|
|
return ERROR;
|
|
|
|
}
|
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
// dc->w.flags &= ~DC_DIRTY;
|
2004-04-25 16:40:39 +00:00
|
|
|
|
|
|
|
if (!hrgn)
|
|
|
|
{
|
|
|
|
if (fnMode == RGN_COPY)
|
|
|
|
{
|
2004-05-14 16:55:18 +00:00
|
|
|
if (dc->w.hClipRgn != NULL)
|
|
|
|
{
|
|
|
|
NtGdiDeleteObject(dc->w.hClipRgn);
|
|
|
|
dc->w.hClipRgn = NULL;
|
2004-05-26 18:49:06 +00:00
|
|
|
retval = NULLREGION;
|
2004-05-14 16:55:18 +00:00
|
|
|
}
|
2004-04-25 16:40:39 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
DC_UnlockDc( hDC );
|
|
|
|
SetLastWin32Error(ERROR_INVALID_PARAMETER);
|
|
|
|
return ERROR;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2004-05-14 16:55:18 +00:00
|
|
|
if (!dc->w.hClipRgn)
|
2004-04-25 16:40:39 +00:00
|
|
|
{
|
|
|
|
PROSRGNDATA Rgn;
|
|
|
|
RECT rect;
|
|
|
|
if((Rgn = RGNDATA_LockRgn(dc->w.hVisRgn)))
|
|
|
|
{
|
|
|
|
UnsafeIntGetRgnBox(Rgn, &rect);
|
|
|
|
RGNDATA_UnlockRgn(dc->w.hVisRgn);
|
2004-05-14 16:55:18 +00:00
|
|
|
dc->w.hClipRgn = UnsafeIntCreateRectRgnIndirect(&rect);
|
2004-04-25 16:40:39 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2004-05-14 16:55:18 +00:00
|
|
|
dc->w.hClipRgn = NtGdiCreateRectRgn(0, 0, 0, 0);
|
2004-04-25 16:40:39 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if(fnMode == RGN_COPY)
|
2004-05-14 16:55:18 +00:00
|
|
|
{
|
|
|
|
NtGdiCombineRgn(dc->w.hClipRgn, hrgn, 0, fnMode);
|
|
|
|
}
|
2004-04-25 16:40:39 +00:00
|
|
|
else
|
2004-05-14 16:55:18 +00:00
|
|
|
NtGdiCombineRgn(dc->w.hClipRgn, dc->w.hClipRgn, hrgn, fnMode);
|
2004-04-25 16:40:39 +00:00
|
|
|
}
|
|
|
|
|
2004-05-26 18:49:06 +00:00
|
|
|
retval = CLIPPING_UpdateGCRegion(dc);
|
2004-04-25 16:40:39 +00:00
|
|
|
DC_UnlockDc( hDC );
|
|
|
|
|
|
|
|
return retval;
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
INT FASTCALL
|
|
|
|
IntGdiGetClipBox(HDC hDC, LPRECT rc)
|
1999-07-22 16:21:53 +00:00
|
|
|
{
|
2004-05-14 16:55:18 +00:00
|
|
|
PROSRGNDATA Rgn;
|
|
|
|
INT retval;
|
|
|
|
PDC dc;
|
2002-08-27 23:29:40 +00:00
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
if (!(dc = DC_LockDc(hDC)))
|
|
|
|
{
|
|
|
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
|
|
|
return ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!(Rgn = RGNDATA_LockRgn(dc->w.hGCClipRgn)))
|
|
|
|
{
|
|
|
|
DC_UnlockDc( hDC );
|
|
|
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
|
|
|
return ERROR;
|
|
|
|
}
|
|
|
|
retval = UnsafeIntGetRgnBox(Rgn, rc);
|
|
|
|
RGNDATA_UnlockRgn(dc->w.hGCClipRgn);
|
|
|
|
IntDPtoLP(dc, (LPPOINT)rc, 2);
|
|
|
|
DC_UnlockDc(hDC);
|
|
|
|
|
|
|
|
return retval;
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2003-12-13 12:12:41 +00:00
|
|
|
int STDCALL NtGdiGetClipBox(HDC hDC,
|
|
|
|
LPRECT rc)
|
|
|
|
{
|
|
|
|
int Ret;
|
|
|
|
NTSTATUS Status;
|
|
|
|
RECT Saferect;
|
|
|
|
|
|
|
|
Ret = IntGdiGetClipBox(hDC, &Saferect);
|
|
|
|
|
|
|
|
Status = MmCopyToCaller(rc, &Saferect, sizeof(RECT));
|
|
|
|
if(!NT_SUCCESS(Status))
|
|
|
|
{
|
|
|
|
|
|
|
|
SetLastNtError(Status);
|
|
|
|
return ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
return Ret;
|
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
int STDCALL NtGdiGetMetaRgn(HDC hDC,
|
1999-07-22 16:21:53 +00:00
|
|
|
HRGN hrgn)
|
|
|
|
{
|
|
|
|
UNIMPLEMENTED;
|
2004-07-14 20:48:58 +00:00
|
|
|
return 0;
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2004-04-25 16:06:20 +00:00
|
|
|
int STDCALL NtGdiExcludeClipRect(HDC hDC,
|
|
|
|
int LeftRect,
|
|
|
|
int TopRect,
|
|
|
|
int RightRect,
|
|
|
|
int BottomRect)
|
|
|
|
{
|
|
|
|
INT Result;
|
|
|
|
RECT Rect;
|
|
|
|
HRGN NewRgn;
|
|
|
|
PDC dc = DC_LockDc(hDC);
|
|
|
|
|
|
|
|
if (!dc)
|
|
|
|
{
|
|
|
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
|
|
|
return ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
Rect.left = LeftRect;
|
|
|
|
Rect.top = TopRect;
|
|
|
|
Rect.right = RightRect;
|
|
|
|
Rect.bottom = BottomRect;
|
|
|
|
|
|
|
|
IntLPtoDP(dc, (LPPOINT)&Rect, 2);
|
|
|
|
|
|
|
|
NewRgn = UnsafeIntCreateRectRgnIndirect(&Rect);
|
|
|
|
if (!NewRgn)
|
|
|
|
{
|
|
|
|
Result = ERROR;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2004-07-07 16:34:33 +00:00
|
|
|
if (!dc->w.hClipRgn)
|
|
|
|
{
|
|
|
|
dc->w.hClipRgn = NtGdiCreateRectRgn(0, 0, 0, 0);
|
|
|
|
NtGdiCombineRgn(dc->w.hClipRgn, dc->w.hVisRgn, NewRgn, RGN_DIFF);
|
|
|
|
Result = SIMPLEREGION;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Result = NtGdiCombineRgn(dc->w.hClipRgn, dc->w.hClipRgn, NewRgn, RGN_DIFF);
|
|
|
|
}
|
2004-04-25 16:06:20 +00:00
|
|
|
NtGdiDeleteObject(NewRgn);
|
|
|
|
}
|
|
|
|
if (Result != ERROR)
|
|
|
|
CLIPPING_UpdateGCRegion(dc);
|
|
|
|
|
|
|
|
DC_UnlockDc(hDC);
|
|
|
|
|
|
|
|
return Result;
|
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
int STDCALL NtGdiIntersectClipRect(HDC hDC,
|
1999-07-22 16:21:53 +00:00
|
|
|
int LeftRect,
|
|
|
|
int TopRect,
|
|
|
|
int RightRect,
|
|
|
|
int BottomRect)
|
|
|
|
{
|
2003-12-21 18:38:37 +00:00
|
|
|
INT Result;
|
|
|
|
RECT Rect;
|
|
|
|
HRGN NewRgn;
|
|
|
|
PDC dc = DC_LockDc(hDC);
|
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
DPRINT("NtGdiIntersectClipRect(%x, %d,%d-%d,%d)\n",
|
|
|
|
hDC, LeftRect, TopRect, RightRect, BottomRect);
|
|
|
|
|
2003-12-21 18:38:37 +00:00
|
|
|
if (!dc)
|
2004-04-25 15:52:31 +00:00
|
|
|
{
|
|
|
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
2003-12-21 18:38:37 +00:00
|
|
|
return ERROR;
|
2004-04-25 15:52:31 +00:00
|
|
|
}
|
2003-12-21 18:38:37 +00:00
|
|
|
|
|
|
|
Rect.left = LeftRect;
|
|
|
|
Rect.top = TopRect;
|
|
|
|
Rect.right = RightRect;
|
|
|
|
Rect.bottom = BottomRect;
|
|
|
|
|
|
|
|
IntLPtoDP(dc, (LPPOINT)&Rect, 2);
|
|
|
|
|
|
|
|
NewRgn = UnsafeIntCreateRectRgnIndirect(&Rect);
|
|
|
|
if (!NewRgn)
|
|
|
|
{
|
|
|
|
Result = ERROR;
|
|
|
|
}
|
|
|
|
else if (!dc->w.hClipRgn)
|
|
|
|
{
|
|
|
|
dc->w.hClipRgn = NewRgn;
|
|
|
|
Result = SIMPLEREGION;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Result = NtGdiCombineRgn(dc->w.hClipRgn, dc->w.hClipRgn, NewRgn, RGN_AND);
|
|
|
|
NtGdiDeleteObject(NewRgn);
|
|
|
|
}
|
|
|
|
if (Result != ERROR)
|
|
|
|
CLIPPING_UpdateGCRegion(dc);
|
|
|
|
|
|
|
|
DC_UnlockDc(hDC);
|
|
|
|
|
|
|
|
return Result;
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
int STDCALL NtGdiOffsetClipRgn(HDC hDC,
|
1999-07-22 16:21:53 +00:00
|
|
|
int XOffset,
|
|
|
|
int YOffset)
|
|
|
|
{
|
|
|
|
UNIMPLEMENTED;
|
2004-07-14 20:48:58 +00:00
|
|
|
return 0;
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
BOOL STDCALL NtGdiPtVisible(HDC hDC,
|
1999-07-22 16:21:53 +00:00
|
|
|
int X,
|
|
|
|
int Y)
|
|
|
|
{
|
2004-04-26 19:58:45 +00:00
|
|
|
HRGN rgn;
|
2004-04-25 15:52:31 +00:00
|
|
|
DC *dc;
|
|
|
|
|
|
|
|
if(!(dc = DC_LockDc(hDC)))
|
|
|
|
{
|
|
|
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
rgn = dc->w.hGCClipRgn;
|
2004-04-25 15:52:31 +00:00
|
|
|
DC_UnlockDc(hDC);
|
2004-04-26 19:58:45 +00:00
|
|
|
|
|
|
|
return (rgn ? NtGdiPtInRegion(rgn, X, Y) : FALSE);
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
BOOL STDCALL NtGdiRectVisible(HDC hDC,
|
2003-12-15 20:47:57 +00:00
|
|
|
CONST PRECT UnsafeRect)
|
1999-07-22 16:21:53 +00:00
|
|
|
{
|
2004-03-22 20:14:29 +00:00
|
|
|
NTSTATUS Status;
|
|
|
|
PROSRGNDATA Rgn;
|
2003-12-15 20:47:57 +00:00
|
|
|
PDC dc = DC_LockDc(hDC);
|
|
|
|
BOOL Result = FALSE;
|
|
|
|
RECT Rect;
|
|
|
|
|
|
|
|
if (!dc)
|
|
|
|
{
|
2004-04-25 15:52:31 +00:00
|
|
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
2003-12-15 20:47:57 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
2004-03-22 20:14:29 +00:00
|
|
|
Status = MmCopyFromCaller(&Rect, UnsafeRect, sizeof(RECT));
|
|
|
|
if(!NT_SUCCESS(Status))
|
|
|
|
{
|
|
|
|
DC_UnlockDc(hDC);
|
|
|
|
return FALSE;
|
|
|
|
}
|
2003-12-15 20:47:57 +00:00
|
|
|
|
|
|
|
if (dc->w.hGCClipRgn)
|
|
|
|
{
|
2004-03-22 20:14:29 +00:00
|
|
|
if((Rgn = (PROSRGNDATA)RGNDATA_LockRgn(dc->w.hGCClipRgn)))
|
|
|
|
{
|
|
|
|
IntLPtoDP(dc, (LPPOINT)&Rect, 2);
|
|
|
|
Result = UnsafeIntRectInRegion(Rgn, &Rect);
|
|
|
|
RGNDATA_UnlockRgn(dc->w.hGCClipRgn);
|
|
|
|
}
|
2003-12-15 20:47:57 +00:00
|
|
|
}
|
|
|
|
DC_UnlockDc(hDC);
|
|
|
|
|
|
|
|
return Result;
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
BOOL STDCALL NtGdiSelectClipPath(HDC hDC,
|
1999-07-22 16:21:53 +00:00
|
|
|
int Mode)
|
|
|
|
{
|
|
|
|
UNIMPLEMENTED;
|
2004-07-14 20:48:58 +00:00
|
|
|
return FALSE;
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2004-05-14 16:55:18 +00:00
|
|
|
INT STDCALL
|
|
|
|
NtGdiSelectClipRgn(HDC hDC, HRGN hRgn)
|
1999-07-22 16:21:53 +00:00
|
|
|
{
|
2004-05-14 16:55:18 +00:00
|
|
|
return NtGdiExtSelectClipRgn(hDC, hRgn, RGN_COPY);
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2003-08-19 11:48:50 +00:00
|
|
|
int STDCALL NtGdiSetMetaRgn(HDC hDC)
|
1999-07-22 16:21:53 +00:00
|
|
|
{
|
|
|
|
UNIMPLEMENTED;
|
2004-07-14 20:48:58 +00:00
|
|
|
return 0;
|
1999-07-22 16:21:53 +00:00
|
|
|
}
|
|
|
|
|
2003-05-18 17:16:18 +00:00
|
|
|
/* EOF */
|