summaryrefslogtreecommitdiffstats
path: root/src/kvilib/ext/kvi_doublebuffer.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 02:13:59 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 02:13:59 +0000
commita6d58bb6052ac8cb01805a48c4ad2f129126116f (patch)
treedd867a099fcbb263a8009a9fb22695b87855dad6 /src/kvilib/ext/kvi_doublebuffer.h
downloadkvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.tar.gz
kvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.zip
Added KDE3 version of kvirc
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/kvilib/ext/kvi_doublebuffer.h')
-rw-r--r--src/kvilib/ext/kvi_doublebuffer.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/kvilib/ext/kvi_doublebuffer.h b/src/kvilib/ext/kvi_doublebuffer.h
new file mode 100644
index 00000000..103759a1
--- /dev/null
+++ b/src/kvilib/ext/kvi_doublebuffer.h
@@ -0,0 +1,62 @@
+#ifndef _KVI_DOUBLEBUFFER_H_
+#define _KVI_DOUBLEBUFFER_H_
+//=============================================================================
+//
+// File : kvi_doublebuffer.h
+// Created on Fri 27 Jan 2006 18:59:54 by Szymon Stefanek
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
+//
+// 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 opinion) 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. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+
+#include <qpixmap.h>
+
+//
+// This class is basically a huge shared memory pixmap meant to be used in double-buffer
+// painting operations. The memory buffer is resized on the fly so you will always obtain
+// a pixmap that is at least of the specified size. The problem is that this is a time
+// consuming operation (not good in a paint event). We solve it by keeping the buffer
+// with the greatest requested size in the last N minutes.
+//
+// The keyword in all this thingie is "memory is cheap, processing time is not".
+// We know in advance that KVIrc needs a huge double buffer anyway...
+// So we basically grow instantly but we are really lazy at shrinking.
+//
+
+class KVILIB_API KviDoubleBuffer
+{
+public:
+ KviDoubleBuffer(unsigned int uWidth,unsigned int uHeight);
+ ~KviDoubleBuffer();
+public:
+ // This returns a pointer to the memory buffer. The buffer is at least
+ // of the size declared in the constructor.
+ QPixmap * pixmap();
+
+ // The stuff below is internal (used only by KviApp)
+
+ // to be called at application initialisation and cleanup
+ static void init();
+ static void done();
+ // this has to be called at sensible intervals (like 2 minutes)
+ static void heartbeat();
+};
+
+#endif //!_KVI_DOUBLEBUFFER_H_