summaryrefslogtreecommitdiffstats
path: root/kdeui/tests/kgradienttest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/tests/kgradienttest.cpp')
-rw-r--r--kdeui/tests/kgradienttest.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/kdeui/tests/kgradienttest.cpp b/kdeui/tests/kgradienttest.cpp
new file mode 100644
index 000000000..9fad0bb46
--- /dev/null
+++ b/kdeui/tests/kgradienttest.cpp
@@ -0,0 +1,108 @@
+#include "kgradienttest.h"
+#include <kapplication.h>
+#include <kpixmapeffect.h>
+#include <qpainter.h>
+#include <qdatetime.h>
+#include <qstring.h>
+
+int cols = 3, rows = 3; // how many
+
+void KGradientWidget::paintEvent(QPaintEvent */*ev*/)
+{
+ QTime time;
+ int it, ft;
+ QString say;
+
+ QColor ca = Qt::black, cb = Qt::blue;
+
+ int x = 0, y = 0;
+
+ pix.resize(width()/cols, height()/rows);
+ QPainter p(this);
+ p.setPen(Qt::white);
+
+ // draw once, so that the benchmarking be fair :-)
+ KPixmapEffect::gradient(pix,ca, cb, KPixmapEffect::VerticalGradient);
+
+ // vertical
+ time.start();
+ it = time.elapsed();
+ KPixmapEffect::gradient(pix,ca, cb, KPixmapEffect::VerticalGradient);
+ ft = time.elapsed();
+ say.setNum( ft - it); say += " ms, Vertical";
+ p.drawPixmap(x*width()/cols, y*height()/rows, pix);
+ p.drawText(5 + (x++)*width()/cols, 15+y*height()/rows, say); // augment x
+
+ // horizontal
+ it = time.elapsed();
+ KPixmapEffect::gradient(pix,ca, cb, KPixmapEffect::HorizontalGradient);
+ ft = time.elapsed() ;
+ say.setNum( ft - it); say += " ms, Horizontal";
+ p.drawPixmap(x*width()/cols, y*height()/rows, pix);
+ p.drawText(5+(x++)*width()/cols, 15+y*height()/rows, say);
+
+ // elliptic
+ it = time.elapsed();
+ KPixmapEffect::gradient(pix, ca, cb, KPixmapEffect::EllipticGradient);
+ ft = time.elapsed() ;
+ say.setNum( ft - it); say += " ms, Elliptic";
+ p.drawPixmap(x*width()/cols, y*height()/rows, pix);
+ p.drawText(5+(x++)*width()/cols, 15+y*height()/rows, say);
+
+ y++; // next row
+ x = 0; // reset the columns
+
+ // diagonal
+ it = time.elapsed();
+ KPixmapEffect::gradient(pix,ca, cb, KPixmapEffect::DiagonalGradient);
+ ft = time.elapsed();
+ say.setNum( ft - it); say += " ms, Diagonal";
+ p.drawPixmap(x*width()/cols, y*height()/rows, pix);
+ p.drawText(5+(x++)*width()/cols, 15+y*height()/rows, say);
+
+ // crossdiagonal
+ it = time.elapsed();
+ KPixmapEffect::gradient(pix,ca, cb, KPixmapEffect::CrossDiagonalGradient);
+ ft = time.elapsed();
+ say.setNum( ft - it); say += " ms, CrossDiagonal";
+ p.drawPixmap(width()/cols, y*height()/rows, pix);
+ p.drawText(5+(x++)*width()/cols, 15+y*height()/rows, say);
+
+ y++; // next row
+ x = 0; // reset the columns
+
+ // pyramidal
+ it = time.elapsed();
+ KPixmapEffect::gradient(pix, ca, cb, KPixmapEffect::PyramidGradient);
+ ft = time.elapsed();
+ say.setNum( ft - it); say += " ms, Pyramid";
+ p.drawPixmap(x*width()/cols, y*height()/rows, pix);
+ p.drawText(5+(x++)*width()/cols, 15+y*height()/rows, say);
+
+ // pattern
+ it = time.elapsed();
+ KPixmapEffect::gradient(pix, ca, cb, KPixmapEffect::RectangleGradient);
+ ft = time.elapsed();
+ say.setNum( ft - it); say += " ms, Rectangle";
+ p.drawPixmap(x*width()/cols, y*height()/rows, pix);
+ p.drawText(5+(x++)*width()/rows, 15+y*height()/rows, say);
+
+ // crosspipe
+ it = time.elapsed();
+ KPixmapEffect::gradient(pix, ca, cb, KPixmapEffect::PipeCrossGradient);
+ ft = time.elapsed();
+ say.setNum( ft - it); say += " ms, PipeCross";
+ p.drawPixmap(x*width()/cols, y*height()/rows, pix);
+ p.drawText(5+(x++)*width()/rows, 15+y*height()/rows, say);
+}
+
+int main(int argc, char **argv)
+{
+ KApplication *app = new KApplication(argc, argv, "KGradientTest");
+ KGradientWidget w;
+ w.resize(250 * cols, 250 * rows);
+ app->setMainWidget(&w);
+ w.show();
+ return(app->exec());
+}
+