nim_duilib/duilib/Render/Clip.cpp
jiajia_deng 4933d1f2bc Remove dependency on shared
Signed-off-by: jiajia_deng <2894220@gmail.com>
2019-09-20 16:27:58 +08:00

52 lines
973 B
C++

#include "StdAfx.h"
namespace ui {
GdiClip::GdiClip()
{
}
GdiClip::~GdiClip()
{
}
void GdiClip::CreateClip(HDC hDC, UiRect rcItem)
{
if (hDC != NULL) {
CPoint ptWinOrg;
GetWindowOrgEx(hDC, &ptWinOrg);
rcItem.Offset(-ptWinOrg.x, -ptWinOrg.y);
HRGN hRgn = ::CreateRectRgnIndirect(&rcItem);
::SaveDC(hDC);
::ExtSelectClipRgn(hDC, hRgn, RGN_AND);
::DeleteObject(hRgn);
}
}
void GdiClip::CreateRoundClip(HDC hDC, UiRect rcItem, int width, int height)
{
if (hDC != NULL) {
CPoint ptWinOrg;
GetWindowOrgEx(hDC, &ptWinOrg);
rcItem.Offset(-ptWinOrg.x, -ptWinOrg.y);
HRGN hRgn = ::CreateRoundRectRgn(rcItem.left, rcItem.top, rcItem.right + 1, rcItem.bottom + 1, width, height);
::SaveDC(hDC);
::ExtSelectClipRgn(hDC, hRgn, RGN_AND);
::DeleteObject(hRgn);
}
}
void GdiClip::ClearClip(HDC hDC)
{
if (hDC != NULL) {
ASSERT(::GetObjectType(hDC) == OBJ_DC || ::GetObjectType(hDC) == OBJ_MEMDC);
::RestoreDC(hDC, -1);
}
}
} // namespace ui