10#include "qwt_plot_textlabel.h" 
   11#include "qwt_painter.h" 
   16#include <qpaintengine.h> 
   19static QRect qwtItemRect( 
int renderFlags,
 
   20    const QRectF& rect, 
const QSizeF& itemSize )
 
   23    if ( renderFlags & Qt::AlignLeft )
 
   27    else if ( renderFlags & Qt::AlignRight )
 
   29        x = rect.right() - itemSize.width();
 
   33        x = rect.center().x() - 0.5 * itemSize.width();
 
   37    if ( renderFlags & Qt::AlignTop )
 
   41    else if ( renderFlags & Qt::AlignBottom )
 
   43        y = rect.bottom() - itemSize.height();
 
   47        y = rect.center().y() - 0.5 * itemSize.height();
 
   50    return QRect( x, y, itemSize.width(), itemSize.height() );
 
   53class QwtPlotTextLabel::PrivateData
 
   85    m_data = 
new PrivateData;
 
 
  117    if ( m_data->text != 
text )
 
 
  149    if ( m_data->margin != 
margin )
 
 
  162    return m_data->margin;
 
 
  178    const QRectF& canvasRect )
 const 
  183    const int m = m_data->margin;
 
  185    const QRectF rect = 
textRect( canvasRect.adjusted( m, m, -m, -m ),
 
  186        m_data->text.
textSize( painter->font() ) );
 
  191        switch( painter->paintEngine()->type() )
 
  193            case QPaintEngine::Picture:
 
  194            case QPaintEngine::User: 
 
  212        if ( m_data->text.
borderPen().style() != Qt::NoPen )
 
  213            pw = qMax( m_data->text.
borderPen().width(), 1 );
 
  216        pixmapRect.setLeft( qwtFloor( rect.left() ) - pw );
 
  217        pixmapRect.setTop( qwtFloor( rect.top() ) - pw );
 
  218        pixmapRect.setRight( qwtCeil( rect.right() ) + pw );
 
  219        pixmapRect.setBottom( qwtCeil( rect.bottom() ) + pw );
 
  221#if QT_VERSION >= 0x050000 
  223        const QSize scaledSize = pixmapRect.size() * pixelRatio;
 
  225        const QSize scaledSize = pixmapRect.size();
 
  228        if ( m_data->pixmap.isNull() ||
 
  229            ( scaledSize != m_data->pixmap.size() ) )
 
  231            m_data->pixmap = QPixmap( scaledSize );
 
  232#if QT_VERSION >= 0x050000 
  233            m_data->pixmap.setDevicePixelRatio( pixelRatio );
 
  235            m_data->pixmap.fill( Qt::transparent );
 
  237            const QRect r( pw, pw,
 
  238                pixmapRect.width() - 2 * pw, pixmapRect.height() - 2 * pw );
 
  240            QPainter pmPainter( &m_data->pixmap );
 
  241            m_data->text.
draw( &pmPainter, r );
 
  244        painter->drawPixmap( pixmapRect, m_data->pixmap );
 
  248        m_data->text.
draw( painter, rect );
 
 
  264    const QRectF& rect, 
const QSizeF& textSize )
 const 
  266    return qwtItemRect( m_data->text.
renderFlags(), rect, textSize );
 
 
  272    m_data->pixmap = QPixmap();
 
 
static qreal devicePixelRatio(const QPaintDevice *)
static bool roundingAlignment()
Base class for items on the plot canvas.
void setZ(double z)
Set the z value.
void setItemAttribute(ItemAttribute, bool on=true)
@ Rtti_PlotTextLabel
For QwtPlotTextLabel.
virtual void itemChanged()
@ Legend
The item is represented on the legend.
QwtPlotTextLabel()
Constructor.
virtual ~QwtPlotTextLabel()
Destructor.
void setMargin(int margin)
void invalidateCache()
Invalidate all internal cache.
virtual void draw(QPainter *, const QwtScaleMap &, const QwtScaleMap &, const QRectF &) const override
virtual QRectF textRect(const QRectF &, const QSizeF &) const
Align the text label.
void setText(const QwtText &)
virtual int rtti() const override
A class representing a text.
void draw(QPainter *painter, const QRectF &rect) const