From dbab72fcedc74abb9d575075b2c234ec59406f1d Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Mon, 3 Oct 2016 12:02:16 +0200 Subject: [PATCH] [Escher] Image setter for the ImageView Change-Id: I18c5083c130ba5602cb8279ecb6c1a51692bacbe --- escher/include/escher/image_view.h | 3 ++- escher/src/image_view.cpp | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/escher/include/escher/image_view.h b/escher/include/escher/image_view.h index 8a98a0d3e..2d793229c 100644 --- a/escher/include/escher/image_view.h +++ b/escher/include/escher/image_view.h @@ -6,7 +6,8 @@ class ImageView : public ChildlessView { public: - ImageView(const Image * image); + ImageView(); + void setImage(const Image * image); void drawRect(KDContext * ctx, KDRect rect) const override; private: const Image * m_image; diff --git a/escher/src/image_view.cpp b/escher/src/image_view.cpp index 9b1348f7d..39192bcaa 100644 --- a/escher/src/image_view.cpp +++ b/escher/src/image_view.cpp @@ -3,14 +3,24 @@ extern "C" { #include } -ImageView::ImageView(const Image * image) : +ImageView::ImageView() : ChildlessView(), - m_image(image) + m_image(nullptr) { } void ImageView::drawRect(KDContext * ctx, KDRect rect) const { + if (m_image == nullptr) { + return; + } assert(bounds().width() == m_image->width()); assert(bounds().height() == m_image->height()); ctx->fillRectWithPixels(bounds(), m_image->pixels(), nullptr); } + +void ImageView::setImage(const Image * image) { + if (image != m_image) { + m_image = image; + markRectAsDirty(bounds()); + } +}