summaryrefslogtreecommitdiff
path: root/boost/compute/interop/qt/qimage.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/compute/interop/qt/qimage.hpp')
-rw-r--r--boost/compute/interop/qt/qimage.hpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/boost/compute/interop/qt/qimage.hpp b/boost/compute/interop/qt/qimage.hpp
new file mode 100644
index 0000000000..faa6f98cc8
--- /dev/null
+++ b/boost/compute/interop/qt/qimage.hpp
@@ -0,0 +1,69 @@
+//---------------------------------------------------------------------------//
+// Copyright (c) 2013-2014 Kyle Lutz <kyle.r.lutz@gmail.com>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// See http://boostorg.github.com/compute for more information.
+//---------------------------------------------------------------------------//
+
+#ifndef BOOST_COMPUTE_INTEROP_QT_QIMAGE_HPP
+#define BOOST_COMPUTE_INTEROP_QT_QIMAGE_HPP
+
+#include <boost/throw_exception.hpp>
+
+#include <boost/compute/command_queue.hpp>
+#include <boost/compute/exception/opencl_error.hpp>
+#include <boost/compute/image/image2d.hpp>
+#include <boost/compute/image/image_format.hpp>
+#include <boost/compute/utility/dim.hpp>
+
+#include <QImage>
+
+namespace boost {
+namespace compute {
+
+inline image_format qt_qimage_format_to_image_format(const QImage::Format &format)
+{
+ if(format == QImage::Format_RGB32){
+ return image_format(image_format::bgra, image_format::unorm_int8);
+ }
+
+ BOOST_THROW_EXCEPTION(opencl_error(CL_IMAGE_FORMAT_NOT_SUPPORTED));
+}
+
+inline QImage::Format qt_image_format_to_qimage_format(const image_format &format)
+{
+ if(format == image_format(image_format::bgra, image_format::unorm_int8)){
+ return QImage::Format_RGB32;
+ }
+
+ return QImage::Format_Invalid;
+}
+
+inline image_format qt_qimage_get_format(const QImage &image)
+{
+ return qt_qimage_format_to_image_format(image.format());
+}
+
+inline void qt_copy_qimage_to_image2d(const QImage &qimage,
+ image2d &image,
+ command_queue &queue)
+{
+ queue.enqueue_write_image(image, image.origin(), image.size(), qimage.constBits());
+}
+
+inline void qt_copy_image2d_to_qimage(const image2d &image,
+ QImage &qimage,
+ command_queue &queue)
+{
+ queue.enqueue_read_image(
+ image, dim(0, 0), dim(qimage.width(), qimage.height()), qimage.bits()
+ );
+}
+
+} // end compute namespace
+} // end boost namespace
+
+#endif // BOOST_COMPUTE_INTEROP_QT_QIMAGE_HPP