コード例 #1
0
const QImage& QgsWMSLegendNode::getLegendGraphic() const
{
    if ( ! mValid && ! mFetcher )
    {
        // or maybe in presence of a downloader we should just delete it
        // and start a new one ?

        QgsRasterLayer* layer = qobject_cast<QgsRasterLayer*>( mLayerNode->layer() );
        const QgsLayerTreeModel* mod = model();
        if ( ! mod ) return mImage;
        const QgsMapSettings* ms = mod->legendFilterByMap();

        QgsRasterDataProvider* prov = layer->dataProvider();

        Q_ASSERT( ! mFetcher );
        mFetcher.reset( prov->getLegendGraphicFetcher( ms ) );
        if ( mFetcher )
        {
            connect( mFetcher.data(), SIGNAL( finish( const QImage& ) ), this, SLOT( getLegendGraphicFinished( const QImage& ) ) );
            connect( mFetcher.data(), SIGNAL( error( const QString& ) ), this, SLOT( getLegendGraphicErrored( const QString& ) ) );
            connect( mFetcher.data(), SIGNAL( progress( qint64, qint64 ) ), this, SLOT( getLegendGraphicProgress( qint64, qint64 ) ) );
            mFetcher->start();
        } // else QgsDebugMsg("XXX No legend supported ?");

    }
コード例 #2
0
QImage QgsWmsLegendNode::getLegendGraphic() const
{
  if ( ! mValid && ! mFetcher )
  {
    // or maybe in presence of a downloader we should just delete it
    // and start a new one ?

    QgsRasterLayer *layer = qobject_cast<QgsRasterLayer *>( mLayerNode->layer() );
    const QgsLayerTreeModel *mod = model();
    if ( ! mod )
      return mImage;
    const QgsMapSettings *ms = mod->legendFilterMapSettings();

    QgsRasterDataProvider *prov = layer->dataProvider();
    if ( ! prov )
      return mImage;

    Q_ASSERT( ! mFetcher );
    mFetcher.reset( prov->getLegendGraphicFetcher( ms ) );
    if ( mFetcher )
    {
      connect( mFetcher.get(), &QgsImageFetcher::finish, this, &QgsWmsLegendNode::getLegendGraphicFinished );
      connect( mFetcher.get(), &QgsImageFetcher::error, this, &QgsWmsLegendNode::getLegendGraphicErrored );
      connect( mFetcher.get(), &QgsImageFetcher::progress, this, &QgsWmsLegendNode::getLegendGraphicProgress );
      mFetcher->start();
    } // else QgsDebugMsg("XXX No legend supported?");

  }

  return mImage;
}