summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/experimental/pixman/junk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/experimental/pixman/junk.cpp')
-rw-r--r--chromium/third_party/skia/experimental/pixman/junk.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/chromium/third_party/skia/experimental/pixman/junk.cpp b/chromium/third_party/skia/experimental/pixman/junk.cpp
new file mode 100644
index 00000000000..f85a442e9a4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/pixman/junk.cpp
@@ -0,0 +1,108 @@
+
+extern "C" {
+#include <stdio.h>
+#include <stdlib.h>
+#include <config.h>
+#include "pixman-private.h"
+#include "utils.h"
+#include "gtk-utils.h"
+
+}
+
+#include "SkBitmap.h"
+#include "SkCanvas.h"
+#include "SkGraphics.h"
+#include "SkPaint.h"
+#import "SkWindow.h"
+
+bool DrawPixman(SkCanvas* canvas, int step, bool useOld);
+SkCanvas* canvas;
+
+extern "C" {
+
+void*
+pixbuf_from_argb32 (uint32_t *bits,
+ int width,
+ int height,
+ int stride)
+{
+ SkBitmap* bitmap = new SkBitmap;
+ bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height);
+ bitmap->allocPixels();
+
+ int p_stride = bitmap->rowBytes();
+ uint32_t *p_bits = bitmap->getAddr32(0, 0);
+ int i;
+
+ for (i = 0; i < height; ++i)
+ {
+ uint32_t *src_row = &bits[i * (stride / 4)];
+ uint32_t *dst_row = p_bits + i * (p_stride / 4);
+
+ a8r8g8b8_to_rgba_np (dst_row, src_row, width);
+ }
+ return (void*) bitmap;
+}
+
+
+void show_image (pixman_image_t *image) {
+ int width, height;
+ pixman_format_code_t format;
+ pixman_image_t *copy;
+
+ width = pixman_image_get_width (image);
+ height = pixman_image_get_height (image);
+
+
+ format = pixman_image_get_format (image);
+
+ /* Three cases:
+ *
+ * - image is a8r8g8b8_sRGB: we will display without modification
+ * under the assumption that the monitor is sRGB
+ *
+ * - image is a8r8g8b8: we will display without modification
+ * under the assumption that whoever created the image
+ * probably did it wrong by using sRGB inputs
+ *
+ * - other: we will convert to a8r8g8b8 under the assumption that
+ * whoever created the image probably did it wrong.
+ */
+ switch (format)
+ {
+ case PIXMAN_a8r8g8b8_sRGB:
+ case PIXMAN_a8r8g8b8:
+ copy = pixman_image_ref (image);
+ break;
+
+ default:
+ copy = pixman_image_create_bits (PIXMAN_a8r8g8b8,
+ width, height, NULL, -1);
+ pixman_image_composite32 (PIXMAN_OP_SRC,
+ image, NULL, copy,
+ 0, 0, 0, 0, 0, 0,
+ width, height);
+ break;
+ }
+
+ SkBitmap* bitmap = (SkBitmap*) pixbuf_from_argb32 (pixman_image_get_data (copy),
+ width, height,
+ pixman_image_get_stride (copy));
+ canvas->drawBitmap(*bitmap, 0, 0);
+ delete bitmap;
+}
+
+}
+
+bool DrawPixman(SkCanvas* c, int step, bool usePixman) {
+ canvas = c;
+ switch(step) {
+ case 0:
+ checkerboard_main(0, NULL);
+ break;
+ default:
+ alpha_main(0, NULL);
+ break;
+ }
+ return true;
+}