diff --git a/glabels/images/checkerboard.png b/glabels/images/checkerboard.png
index c97f40e..575edc3 100644
Binary files a/glabels/images/checkerboard.png and b/glabels/images/checkerboard.png differ
diff --git a/model/ModelImageObject.cpp b/model/ModelImageObject.cpp
index bc9eb18..9c30a42 100644
--- a/model/ModelImageObject.cpp
+++ b/model/ModelImageObject.cpp
@@ -40,6 +40,17 @@ namespace glabels
QImage* ModelImageObject::smDefaultImage = nullptr;
+ //
+ // Private
+ //
+ namespace
+ {
+ const QColor fillColor = QColor( 224, 224, 224, 255 );
+ const QColor labelColor = QColor( 102, 102, 102, 255 );
+ const Distance pad = Distance::pt(2);
+ }
+
+
///
/// Constructor
///
@@ -436,10 +447,61 @@ namespace glabels
if ( inEditor && (mFilenameNode.isField() || (!mImage && !mSvgRenderer) ) )
{
+ //
+ // Render default place holder image
+ //
painter->save();
painter->setRenderHint( QPainter::SmoothPixmapTransform, false );
painter->drawImage( destRect, *smDefaultImage );
painter->restore();
+
+ //
+ // Print label on top of place holder image, if we have room
+ //
+ if ( (mW > 6*pad) && (mH > 4*pad) )
+ {
+ QString labelText = tr("No image");
+ if ( mFilenameNode.isField() )
+ {
+ labelText = QString( "${%1}" ).arg( mFilenameNode.data() );
+ }
+
+ // Determine font size for labelText
+ QFont font( "Sans" );
+ font.setPointSizeF( 6 );
+
+ QFontMetricsF fm( font );
+ QRectF textRect = fm.boundingRect( labelText );
+
+ double wPts = (mW - 2*pad).pt();
+ double hPts = (mH - 2*pad).pt();
+ if ( (wPts < textRect.width()) || (hPts < textRect.height()) )
+ {
+ double scaleX = wPts / textRect.width();
+ double scaleY = hPts / textRect.height();
+ font.setPointSizeF( 6 * std::min( scaleX, scaleY ) );
+ }
+
+ // Render hole for text (font size may have changed above)
+ fm = QFontMetricsF( font );
+ textRect = fm.boundingRect( labelText );
+
+ QRectF holeRect( (mW.pt() - textRect.width())/2 - pad.pt(),
+ (mH.pt() - textRect.height())/2 - pad.pt(),
+ textRect.width() + 2*pad.pt(),
+ textRect.height() + 2*pad.pt() );
+
+ painter->setPen( Qt::NoPen );
+ painter->setBrush( QBrush( fillColor ) );
+ painter->drawRect( holeRect );
+
+ // Render text
+ painter->setFont( font );
+ painter->setPen( QPen( labelColor ) );
+ painter->drawText( QRectF( 0, 0, mW.pt(), mH.pt() ),
+ Qt::AlignCenter,
+ labelText );
+ }
}
else if ( mImage )
{
diff --git a/translations/glabels_C.ts b/translations/glabels_C.ts
index 9a9f61b..78a87d5 100644
--- a/translations/glabels_C.ts
+++ b/translations/glabels_C.ts
@@ -2550,6 +2550,13 @@
+
+ glabels::model::ModelImageObject
+
+ No image
+
+
+
glabels::model::ModelTextObject