PixbufManipulator : overload function toByteArray
overloads toByteArray. This function is required to manage avatar
from vcard.
Tuleap: #655
Change-Id: I0ae05374627486cacfbe5a4f1eea17e8129ed32e
diff --git a/src/native/pixbufmanipulator.cpp b/src/native/pixbufmanipulator.cpp
index 468399b..1e534bf 100644
--- a/src/native/pixbufmanipulator.cpp
+++ b/src/native/pixbufmanipulator.cpp
@@ -177,8 +177,28 @@
QByteArray
PixbufManipulator::toByteArray(const QVariant& pxm)
{
- Q_UNUSED(pxm);
- return QByteArray();
+ std::shared_ptr<GdkPixbuf> pixbuf_photo = pxm.value<std::shared_ptr<GdkPixbuf>>();
+
+ if(pixbuf_photo.get()) {
+ gchar* png_buffer = nullptr;
+ gsize png_buffer_size;
+ GError *error = nullptr;
+
+ gdk_pixbuf_save_to_buffer(pixbuf_photo.get(), &png_buffer, &png_buffer_size, "png", &error, NULL);
+ QByteArray array = QByteArray(png_buffer, png_buffer_size);
+
+ g_free(png_buffer);
+
+ if (error != NULL) {
+ g_warning("in toByteArray, gdk_pixbuf_save_to_buffer failed : %s\n", error->message);
+ g_clear_error(&error);
+ }
+
+ return array;
+ } else {
+ g_debug("in toByteArray, failed to retrieve data from parameter pxm");
+ return QByteArray();
+ }
}
QVariant