diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/winextras/qwinfunctions.cpp | 46 |
1 files changed, 10 insertions, 36 deletions
diff --git a/src/winextras/qwinfunctions.cpp b/src/winextras/qwinfunctions.cpp index 68f2c99..b0e0ff4 100644 --- a/src/winextras/qwinfunctions.cpp +++ b/src/winextras/qwinfunctions.cpp @@ -202,54 +202,28 @@ HRGN qt_RectToHRGN(const QRect &rc) /*! \since 5.2 + \obsolete - Returns a HRGN that is equivalent to the given \a region. + This function is equivalent to QRegion::toHRGN() + + \sa QRegion::toHRGN() */ HRGN QtWin::toHRGN(const QRegion ®ion) { - const int size = region.rectCount(); - if (size == 0) - return nullptr; - - HRGN resultRgn = nullptr; - const auto rects = region.begin(); - resultRgn = qt_RectToHRGN(rects[0]); - for (int i = 1; i < size; i++) { - HRGN tmpRgn = qt_RectToHRGN(rects[i]); - int err = CombineRgn(resultRgn, resultRgn, tmpRgn, RGN_OR); - if (err == ERROR) - qWarning("Error combining HRGNs."); - DeleteObject(tmpRgn); - } - return resultRgn; + return region.toHRGN(); } /*! \since 5.2 + \obsolete + + This function is equivalent to QRegion::fromHRGN(). - Returns a QRegion that is equivalent to the given \a hrgn. + \sa QRegion::fromHRGN() */ QRegion QtWin::fromHRGN(HRGN hrgn) { - DWORD regionDataSize = GetRegionData(hrgn, 0, nullptr); - if (regionDataSize == 0) - return QRegion(); - - auto regionData = reinterpret_cast<LPRGNDATA>(malloc(regionDataSize)); - if (!regionData) - return QRegion(); - - QRegion region; - if (GetRegionData(hrgn, regionDataSize, regionData) == regionDataSize) { - auto pRect = reinterpret_cast<LPRECT>(regionData->Buffer); - for (DWORD i = 0; i < regionData->rdh.nCount; ++i) - region += QRect(pRect[i].left, pRect[i].top, - pRect[i].right - pRect[i].left, - pRect[i].bottom - pRect[i].top); - } - - free(regionData); - return region; + return QRegion::fromHRGN(hrgn); } /*! |