Mercurial > hg > svgui
changeset 299:5c59c433b358
* Show colour swatch next to layer name in pane (if available)
* Fix for incorrect layer name prefix handling (was making some layers appear
to have the same model name in cases where the model names differed by the
final character only)
author | Chris Cannam |
---|---|
date | Wed, 05 Sep 2007 15:17:15 +0000 |
parents | 226cb289bdf4 |
children | 0824a754a8eb |
files | layer/Layer.h layer/SingleColourLayer.cpp layer/SingleColourLayer.h view/Pane.cpp |
diffstat | 4 files changed, 23 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/layer/Layer.h Thu Aug 16 16:47:07 2007 +0000 +++ b/layer/Layer.h Wed Sep 05 15:17:15 2007 +0000 @@ -24,6 +24,7 @@ #include <QRect> #include <QXmlAttributes> #include <QMutex> +#include <QPixmap> #include <map> #include <set> @@ -95,6 +96,7 @@ } virtual QString getLayerPresentationName() const; + virtual QPixmap getLayerPresentationPixmap(QSize) const { return QPixmap(); } virtual int getVerticalScaleWidth(View *, QPainter &) const { return 0; } virtual void paintVerticalScale(View *, QPainter &, QRect) const { }
--- a/layer/SingleColourLayer.cpp Thu Aug 16 16:47:07 2007 +0000 +++ b/layer/SingleColourLayer.cpp Wed Sep 05 15:17:15 2007 +0000 @@ -31,6 +31,12 @@ setDefaultColourFor(0); } +QPixmap +SingleColourLayer::getLayerPresentationPixmap(QSize size) const +{ + return ColourDatabase::getInstance()->getExamplePixmap(m_colour, size); +} + bool SingleColourLayer::hasLightBackground() const {
--- a/layer/SingleColourLayer.h Thu Aug 16 16:47:07 2007 +0000 +++ b/layer/SingleColourLayer.h Wed Sep 05 15:17:15 2007 +0000 @@ -33,6 +33,8 @@ return ColourDistinguishes; } + virtual QPixmap getLayerPresentationPixmap(QSize size) const; + virtual PropertyList getProperties() const; virtual QString getPropertyLabel(const PropertyName &) const; virtual PropertyType getPropertyType(const PropertyName &) const;
--- a/view/Pane.cpp Thu Aug 16 16:47:07 2007 +0000 +++ b/view/Pane.cpp Wed Sep 05 15:17:15 2007 +0000 @@ -716,8 +716,13 @@ } QStringList texts; + std::vector<QPixmap> pixmaps; for (LayerList::iterator i = m_layers.begin(); i != m_layers.end(); ++i) { texts.push_back((*i)->getLayerPresentationName()); +// std::cerr << "Pane " << this << ": Layer presentation name for " << *i << ": " +// << texts[texts.size()-1].toStdString() << std::endl; + pixmaps.push_back((*i)->getLayerPresentationPixmap + (QSize(fontAscent, fontAscent))); } int maxTextWidth = width() / 3; @@ -734,6 +739,8 @@ if (r.x() + r.width() >= llx) { for (size_t i = 0; i < texts.size(); ++i) { + +// std::cerr << "Pane "<< this << ": text " << i << ": " << texts[i].toStdString() << std::endl; if (i + 1 == texts.size()) { paint.setPen(getForeground()); @@ -742,6 +749,12 @@ drawVisibleText(paint, llx, lly - fontHeight + fontAscent, texts[i], OutlinedText); + + if (!pixmaps[i].isNull()) { + paint.drawPixmap(llx - fontAscent - 3, + lly - fontHeight + (fontHeight-fontAscent)/2, + pixmaps[i]); + } lly -= fontHeight; }