summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidgetrepaintmanager_p.h
blob: fb390501ccbff45998b32146a28992db53811c71 (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
// Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QWIDGETREPAINTMANAGER_P_H#define QWIDGETREPAINTMANAGER_P_H//// W A R N I N G// -------------//// This file is not part of the Qt API. It exists purely as an// implementation detail. This header file may change from version to// version without notice, or even be removed.//// We mean it.//#include <QtWidgets/private/qtwidgetsglobal_p.h>#include <QtWidgets/qwidget.h>#include <private/qwidget_p.h>#include <QtGui/qbackingstore.h> QT_BEGIN_NAMESPACE class QPlatformTextureList;class QPlatformTextureListWatcher;class QWidgetRepaintManager;class Q_WIDGETS_EXPORT QWidgetRepaintManager { Q_GADGET public:enum UpdateTime { UpdateNow, UpdateLater };Q_ENUM(UpdateTime)enum BufferState{ BufferValid, BufferInvalid };Q_ENUM(BufferState)QWidgetRepaintManager(QWidget *t);~QWidgetRepaintManager(); QBackingStore *backingStore()const{return store; }voidsetBackingStore(QBackingStore *backingStore) { store = backingStore; }template<class T>voidmarkDirty(const T &r, QWidget *widget, UpdateTime updateTime = UpdateLater, BufferState bufferState = BufferValid);voidremoveDirtyWidget(QWidget *w);voidsync(QWidget *exposedWidget,const QRegion &exposedRegion);voidsync();voidmarkNeedsFlush(QWidget *widget,const QRegion &region,const QPoint &topLevelOffset);voidaddStaticWidget(QWidget *widget);voidmoveStaticWidgets(QWidget *reparented);voidremoveStaticWidget(QWidget *widget); QRegion staticContents(QWidget *widget =nullptr,const QRect &withinClipRect =QRect())const; QRegion dirtyRegion()const{return dirty; } QList<QWidget *>dirtyWidgetList()const{return dirtyWidgets; }boolisDirty()const;boolbltRect(const QRect &rect,int dx,int dy, QWidget *widget);private:voidupdateLists(QWidget *widget);voidaddDirtyWidget(QWidget *widget,const QRegion &rgn);voidresetWidget(QWidget *widget);voidaddDirtyRenderToTextureWidget(QWidget *widget);voidsendUpdateRequest(QWidget *widget, UpdateTime updateTime);boolsyncAllowed();voidpaintAndFlush();voidmarkNeedsFlush(QWidget *widget,const QRegion &region =QRegion());voidflush();voidflush(QWidget *widget,const QRegion &region, QPlatformTextureList *widgetTextures);boolhasStaticContents()const;voidupdateStaticContentsSize(); QWidget *tlw =nullptr; QBackingStore *store =nullptr; QRegion dirty;// needsRepaint QList<QWidget *> dirtyWidgets; QList<QWidget *> dirtyRenderToTextureWidgets; QRegion topLevelNeedsFlush; QList<QWidget *> needsFlushWidgets; QList<QWidget *> staticWidgets; QPlatformTextureListWatcher *textureListWatcher =nullptr;bool updateRequestSent =false; QElapsedTimer perfTime;int perfFrames =0;Q_DISABLE_COPY_MOVE(QWidgetRepaintManager)}; QT_END_NAMESPACE #endif// QWIDGETREPAINTMANAGER_P_H
close