summaryrefslogtreecommitdiffstats
path: root/src/libnr/testnr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libnr/testnr.cpp')
-rw-r--r--src/libnr/testnr.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/libnr/testnr.cpp b/src/libnr/testnr.cpp
new file mode 100644
index 000000000..12dce4c52
--- /dev/null
+++ b/src/libnr/testnr.cpp
@@ -0,0 +1,92 @@
+#define __TESTNR_C__
+
+/*
+ * Pixel buffer rendering library
+ *
+ * Authors:
+ * Lauris Kaplinski <lauris@kaplinski.com>
+ *
+ * This code is in public domain
+ */
+
+#if defined (_WIN32) || defined (__WIN32__)
+# include <windows.h>
+#include <glib.h>
+#endif
+
+
+#include "nr-blit.h"
+
+static double
+get_time (void)
+{
+ GTimeVal tv;
+ g_get_current_time (&tv);
+ return tv.tv_sec + 1e-6 * tv.tv_usec;
+}
+
+static unsigned int
+rand_byte (void)
+{
+ return (int) (256.0 * rand () / (RAND_MAX + 1.0));
+}
+
+int
+main (int argc, const char **argv)
+{
+ double start, end;
+ NRPixBlock d, m[16];
+ int count, i;
+
+ srand (time (NULL));
+
+ printf ("Initializing buffers\n");
+
+ /* Destination */
+ nr_pixblock_setup_fast (&d, NR_PIXBLOCK_MODE_R8G8B8A8P, 0, 0, 64, 64, 1);
+ d.empty = 0;
+
+ /* Masks */
+ for (i = 0; i < 16; i++) {
+ int r, b, c;
+ nr_pixblock_setup_fast (&m[i], NR_PIXBLOCK_MODE_A8, 0, 0, 64, 64, 0);
+ for (r = 0; r < 64; r++) {
+ unsigned int q;
+ unsigned char *p;
+ p = NR_PIXBLOCK_PX (&m[i]) + r * m[i].rs;
+ for (b = 0; b < 8; b++) {
+ q = rand_byte ();
+ if (q < 120) {
+ for (c = 0; c < 8; c++) *p++ = 0;
+ } else if (q < 240) {
+ for (c = 0; c < 8; c++) *p++ = 255;
+ } else {
+ for (c = 0; c < 8; c++) *p++ = rand_byte ();
+ }
+ }
+ }
+ m[i].empty = 0;
+ }
+
+ printf ("Random transparency\n");
+ count = 0;
+ start = end = get_time ();
+ while ((end - start) < 5.0) {
+ unsigned char r, g, b, a;
+ r = rand_byte ();
+ g = rand_byte ();
+ b = rand_byte ();
+ a = rand_byte ();
+
+ for (i = 0; i < 16; i++) {
+ nr_blit_pixblock_mask_rgba32 (&d, &m[i], (a << 24) | (g << 16) | (b << 8) | a);
+ count += 1;
+ }
+ end = get_time ();
+ }
+ printf ("Did %d [64x64] random buffers in %f sec\n", count, end - start); // localizing ok
+ printf ("%f buffers per second\n", count / (end - start)); // localizing ok
+ printf ("%f pixels per second\n", count * (64 * 64) / (end - start)); // localizing ok
+
+ return 0;
+}