19#include "moc_qgsmeshdatasetgroupstore.cpp" 
   28  return mRegistry.keys();
 
 
   33  return mDatasetGroupTreeRootItem->enabledDatasetGroupIndexes();
 
 
   38  return mRegistry.count();
 
 
   53  removePersistentProvider();
 
   54  mPersistentProvider = provider;
 
   55  if ( !mPersistentProvider )
 
   57  for ( 
const QString &uri : extraDatasetUri )
 
   62  checkDatasetConsistency( mPersistentProvider );
 
   63  removeUnregisteredItemFromTree();
 
   67  for ( 
int i = 0; i < groupCount; ++i )
 
 
   76QgsMeshDatasetGroupStore::DatasetGroup QgsMeshDatasetGroupStore::datasetGroup( 
int index )
 const 
   78  return mRegistry.value( index, DatasetGroup{
nullptr, -1} );
 
   83  if ( !mPersistentProvider )
 
   85  return mPersistentProvider->
addDataset( path ) ;
 
 
  113  int groupIndex = registerDatasetGroup( DatasetGroup{&mExtraDatasets, nativeIndex} );
 
  115  if ( groupIndex == -1 )
 
  118  QList<int> groupIndexes;
 
  119  groupIndexes.append( groupIndex );
 
  120  createDatasetGroupTreeItems( groupIndexes );
 
  121  syncItemToDatasetGroup( groupIndex );
 
 
  130  const QgsMeshDatasetGroupStore::DatasetGroup group = datasetGroup( index );
 
  131  if ( group.first == mPersistentProvider )
 
  133  else if ( group.first == &mExtraDatasets )
 
  134    eraseExtraDataset( group.second );
 
  136  reindexDatasetGroups();
 
 
  139void QgsMeshDatasetGroupStore::reindexDatasetGroups()
 
  142  mPersistentExtraDatasetGroupIndexes.clear();
 
  143  mGroupNameToGlobalIndex.clear();
 
  150    mRegistry[globalIndex] = DatasetGroup{mPersistentProvider, i};
 
  151    mPersistentExtraDatasetGroupIndexes.append( globalIndex );
 
  152    mGroupNameToGlobalIndex.insert( name, globalIndex );
 
  160    mRegistry[globalIndex] = DatasetGroup{source, i};
 
  161    mGroupNameToGlobalIndex.insert( name, globalIndex );
 
  171  for ( 
int groupIndex : groupIndexes )
 
  172    syncItemToDatasetGroup( groupIndex );
 
 
  177  return mDatasetGroupTreeRootItem.get();
 
 
  183    mDatasetGroupTreeRootItem.reset( rootItem->
clone() );
 
  185    mDatasetGroupTreeRootItem.reset();
 
  187  unregisterGroupNotPresentInTree();
 
 
  192  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( index.
group() );
 
  194    return group.first->datasetGroupMetadata( group.second );
 
 
  201  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( groupIndex );
 
  203    return group.first->datasetCount( group.second );
 
 
  210  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( index.
group() );
 
 
  219  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( index.
group() );
 
 
  228  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( index.
group() );
 
 
  237  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( index.
group() );
 
 
  246  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( index.
group() );
 
 
  255  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( index.
group() );
 
 
  266  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( groupIndex );
 
  273                              group.first->datasetIndexAtTime( referenceTime, group.second, time, method ).dataset() );
 
 
  279  int groupIndex )
 const 
  281  const QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( groupIndex );
 
  283    return QList<QgsMeshDatasetIndex>();
 
  287  const QList<QgsMeshDatasetIndex> datasetIndexes = group.first->datasetIndexInTimeInterval( referenceTime, group.second, time1, time2 );
 
  289  QList<QgsMeshDatasetIndex> ret;
 
  290  ret.reserve( datasetIndexes.count() );
 
 
  300  QgsMeshDatasetGroupStore::DatasetGroup  group = datasetGroup( index.
group() );
 
  301  if ( !group.first || group.second < 0 )
 
  306  if ( group.first == mPersistentProvider )
 
  308  else if ( group.first == &mExtraDatasets )
 
 
  324  QDomElement storeElement = doc.createElement( QStringLiteral( 
"mesh-dataset-groups-store" ) );
 
  325  storeElement.appendChild( mDatasetGroupTreeRootItem->writeXml( doc, context ) );
 
  327  QMap < int, DatasetGroup>::const_iterator it = mRegistry.constBegin();
 
  328  while ( it != mRegistry.constEnd() )
 
  330    QDomElement elemDataset;
 
  331    if ( it.value().first == mPersistentProvider )
 
  333      elemDataset = doc.createElement( QStringLiteral( 
"mesh-dataset" ) );
 
  334      elemDataset.setAttribute( QStringLiteral( 
"global-index" ), it.key() );
 
  335      elemDataset.setAttribute( QStringLiteral( 
"source-type" ), QStringLiteral( 
"persitent-provider" ) );
 
  336      elemDataset.setAttribute( QStringLiteral( 
"source-index" ), it.value().second );
 
  338    else if ( it.value().first == &mExtraDatasets )
 
  343        elemDataset = mExtraDatasets.
writeXml( it.value().second, doc, context );
 
  344        if ( !elemDataset.isNull() )
 
  345          elemDataset.setAttribute( QStringLiteral( 
"global-index" ), it.key() );
 
  349    if ( !elemDataset.isNull() )
 
  350      storeElement.appendChild( elemDataset );
 
  354  for ( 
auto it = mGroupNameToGlobalIndex.constBegin(); it != mGroupNameToGlobalIndex.constEnd(); ++it )
 
  356    QDomElement elemNameToIndex = doc.createElement( QStringLiteral( 
"name-to-global-index" ) );
 
  357    elemNameToIndex.setAttribute( QStringLiteral( 
"name" ), it.key() );
 
  358    elemNameToIndex.setAttribute( QStringLiteral( 
"global-index" ), it.value() );
 
  360    storeElement.appendChild( elemNameToIndex );
 
 
  370  QDomElement datasetElem = storeElem.firstChildElement( 
"mesh-dataset" );
 
  371  QMap<int, QgsMeshDatasetGroup *> extraDatasetGroups;
 
  372  while ( !datasetElem.isNull() )
 
  374    int globalIndex = datasetElem.attribute( QStringLiteral( 
"global-index" ) ).toInt();
 
  376    const QString sourceType = datasetElem.attribute( QStringLiteral( 
"source-type" ) );
 
  377    if ( sourceType == QLatin1String( 
"persitent-provider" ) )
 
  379      mPersistentExtraDatasetGroupIndexes.append( globalIndex );
 
  381    else if ( sourceType == QLatin1String( 
"virtual" ) )
 
  384      QString name = datasetElem.attribute( QStringLiteral( 
"name" ) );
 
  385      QString formula = datasetElem.attribute( QStringLiteral( 
"formula" ) );
 
  386      qint64 startTime = datasetElem.attribute( QStringLiteral( 
"start-time" ) ).toLongLong();
 
  387      qint64 endTime = datasetElem.attribute( QStringLiteral( 
"end-time" ) ).toLongLong();
 
  390      extraDatasetGroups[globalIndex] = dsg;
 
  393      mRegistry[globalIndex] = DatasetGroup{source, sourceIndex};
 
  397      QgsDebugError( QStringLiteral( 
"Unhandled source-type: %1." ).arg( sourceType ) );
 
  400    datasetElem = datasetElem.nextSiblingElement( QStringLiteral( 
"mesh-dataset" ) );
 
  403  QDomElement nameToIndexElem = storeElem.firstChildElement( 
"name-to-global-index" );
 
  404  mGroupNameToGlobalIndex.clear();
 
  405  while ( !nameToIndexElem.isNull() )
 
  407    QString name = nameToIndexElem.attribute( QStringLiteral( 
"name" ) );
 
  408    int globalIndex = nameToIndexElem.attribute( QStringLiteral( 
"global-index" ) ).toInt();
 
  410    mGroupNameToGlobalIndex.insert( name, globalIndex );
 
  412    nameToIndexElem = nameToIndexElem.nextSiblingElement( QStringLiteral( 
"name-to-global-index" ) );
 
  415  QDomElement rootTreeItemElem = storeElem.firstChildElement( QStringLiteral( 
"mesh-dataset-group-tree-item" ) );
 
  416  if ( !rootTreeItemElem.isNull() )
 
 
  425  for ( QMap<int, DatasetGroup>::const_iterator it = mRegistry.cbegin(); it != mRegistry.cend(); ++it )
 
  427    if ( it.value().first == source && it.value().second == nativeGroupIndex )
 
 
  436  return mGroupNameToGlobalIndex.value( 
groupName, -1 );
 
 
  446  DatasetGroup group = datasetGroup( groupIndex );
 
  449  if ( group.first && group.second >= 0 )
 
  450    fail = mPersistentProvider->
persistDatasetGroup( filePath, driver, group.first, group.second );
 
  454    eraseDatasetGroup( group );
 
  455    group.first = mPersistentProvider;
 
  457    mRegistry[groupIndex] = group;
 
  459    if ( mDatasetGroupTreeRootItem )
 
 
  470void QgsMeshDatasetGroupStore::onPersistentDatasetAdded( 
int count )
 
  472  Q_ASSERT( mPersistentProvider );
 
  476  QList<int> newGroupIndexes;
 
  477  for ( 
int i = providerBeginIndex; i < providerTotalCount; ++i )
 
  480    if ( mGroupNameToGlobalIndex.empty() && i < mPersistentExtraDatasetGroupIndexes.count() )
 
  483      mRegistry[mPersistentExtraDatasetGroupIndexes.at( i )] = DatasetGroup( mPersistentProvider, i );
 
  485    else if ( mGroupNameToGlobalIndex.contains( 
groupName ) )
 
  488      registerDatasetGroup( DatasetGroup{mPersistentProvider, i} );
 
  492      int newGroupIndex = registerDatasetGroup( DatasetGroup{mPersistentProvider, i} );
 
  493      if ( newGroupIndex != -1 )
 
  494        newGroupIndexes.append( newGroupIndex );
 
  498  if ( !newGroupIndexes.isEmpty() )
 
  500    createDatasetGroupTreeItems( newGroupIndexes );
 
  501    mPersistentExtraDatasetGroupIndexes.append( newGroupIndexes );
 
  503    for ( 
int groupIndex : std::as_const( newGroupIndexes ) )
 
  504      syncItemToDatasetGroup( groupIndex );
 
  510void QgsMeshDatasetGroupStore::removePersistentProvider()
 
  512  if ( !mPersistentProvider )
 
  517  QMap < int, DatasetGroup>::iterator it = mRegistry.begin();
 
  518  while ( it != mRegistry.end() )
 
  520    if ( it.value().first == mPersistentProvider )
 
  521      it = mRegistry.erase( it );
 
  526  mPersistentProvider = 
nullptr;
 
  529int QgsMeshDatasetGroupStore::newIndex()
 
  531  QSet usedIndex = qgis::listToSet( mRegistry.keys() );
 
  532  usedIndex.unite( qgis::listToSet( mGroupNameToGlobalIndex.values() ) );
 
  535  while ( usedIndex.contains( index ) )
 
  541int QgsMeshDatasetGroupStore::registerDatasetGroup( 
const QgsMeshDatasetGroupStore::DatasetGroup &group )
 
  543  const QString &name = group.first->datasetGroupMetadata( group.second ).name();
 
  544  auto it = mGroupNameToGlobalIndex.find( name );
 
  547  if ( it != mGroupNameToGlobalIndex.end() )
 
  549    groupIndex = it.value();
 
  551    if ( mRegistry.contains( groupIndex ) )
 
  553      QgsDebugError( QStringLiteral( 
"Duplicate group name for %1." ).arg( name ) );
 
  559    groupIndex = newIndex();
 
  560    mGroupNameToGlobalIndex.insert( name, groupIndex );
 
  563  mRegistry[groupIndex] = group;
 
  567void QgsMeshDatasetGroupStore::eraseDatasetGroup( 
const QgsMeshDatasetGroupStore::DatasetGroup &group )
 
  569  if ( group.first == mPersistentProvider )
 
  571  else if ( group.first == &mExtraDatasets )
 
  572    eraseExtraDataset( group.second );
 
  575void QgsMeshDatasetGroupStore::eraseExtraDataset( 
int indexInExtraStore )
 
  580  QMap < int, DatasetGroup>::iterator it = mRegistry.begin();
 
  581  while ( it != mRegistry.end() )
 
  583    int localIndex = it.value().second;
 
  584    if ( it.value().first == &mExtraDatasets && localIndex > indexInExtraStore )
 
  585      it->second = localIndex - 1;
 
  597    if ( globalIndex == -1 )
 
  598      globalIndex = registerDatasetGroup( DatasetGroup{source, i} );
 
  600    if ( globalIndex != - 1 )
 
  601      indexes.append( globalIndex );
 
  604  if ( !indexes.isEmpty() )
 
  605    createDatasetGroupTreeItems( indexes );
 
  607  const QList<int> globalIndexes = mRegistry.keys();
 
  608  for ( 
int globalIndex :  globalIndexes )
 
  610    if ( mRegistry.value( globalIndex ).first == source )
 
  611      syncItemToDatasetGroup( globalIndex );
 
  615void QgsMeshDatasetGroupStore::removeUnregisteredItemFromTree()
 
  617  QList<QgsMeshDatasetGroupTreeItem *> itemsToCheck;
 
  618  QList<int> indexItemToRemove;
 
  619  for ( 
int i = 0; i < mDatasetGroupTreeRootItem->childCount(); ++i )
 
  620    itemsToCheck.append( mDatasetGroupTreeRootItem->child( i ) );
 
  622  while ( !itemsToCheck.isEmpty() )
 
  626    if ( !mRegistry.contains( globalIndex ) )
 
  627      indexItemToRemove.append( globalIndex );
 
  628    for ( 
int i = 0; i < item->
childCount(); ++i )
 
  629      itemsToCheck.append( item->
child( i ) );
 
  632  for ( 
int i : indexItemToRemove )
 
  640void QgsMeshDatasetGroupStore::unregisterGroupNotPresentInTree()
 
  642  if ( !mDatasetGroupTreeRootItem )
 
  648  QMap < int, DatasetGroup>::iterator it = mRegistry.begin();
 
  649  while ( it != mRegistry.end() )
 
  651    DatasetGroup datasetGroup = it.value();
 
  652    int globalIndex = it.key();
 
  653    if ( ! mDatasetGroupTreeRootItem->childFromDatasetGroupIndex( globalIndex ) 
 
  654         && datasetGroup.first != mPersistentProvider ) 
 
  656      it = mRegistry.erase( it ); 
 
  657      eraseDatasetGroup( datasetGroup ); 
 
  664void QgsMeshDatasetGroupStore::syncItemToDatasetGroup( 
int groupIndex )
 
  666  if ( !mDatasetGroupTreeRootItem )
 
  668  const DatasetGroup group = datasetGroup( groupIndex );
 
  670  if ( group.first == mPersistentProvider && mPersistentProvider )
 
  676  else if ( group.first == &mExtraDatasets )
 
  683void QgsMeshDatasetGroupStore::createDatasetGroupTreeItems( 
const QList<int> &indexes )
 
  685  QMap<QString, QgsMeshDatasetGroupTreeItem *> mNameToItem;
 
  687  for ( 
int i = 0; i < indexes.count(); ++i )
 
  689    int groupIndex = indexes.at( i );
 
  690    if ( mDatasetGroupTreeRootItem->childFromDatasetGroupIndex( groupIndex ) )
 
  693    const QString name = meta.
name();
 
  694    const QStringList subdatasets = name.split( 
'/' );
 
  696    QString displayName = name;
 
  699    if ( subdatasets.size() == 2 )
 
  701      auto it = mNameToItem.find( subdatasets[0] );
 
  702      if ( it == mNameToItem.end() )
 
  703        QgsDebugError( QStringLiteral( 
"Unable to find parent group for %1." ).arg( name ) );
 
  706        displayName = subdatasets[1];
 
  710    else if ( subdatasets.size() != 1 )
 
  711      QgsDebugError( QStringLiteral( 
"Ignoring too deep child group name %1." ).arg( name ) );
 
  715    if ( mNameToItem.contains( name ) )
 
  716      QgsDebugError( QStringLiteral( 
"Group %1 is not unique" ).arg( displayName ) );
 
  717    mNameToItem[name] = item;
 
  723  int groupIndex = mGroups.size();
 
  724  mGroups.push_back( std::unique_ptr<QgsMeshDatasetGroup>( 
datasetGroup ) );
 
  733  return mGroups.size() - 1;
 
 
  739    mGroups.erase( mGroups.begin() + groupIndex );
 
 
  757  if ( groupIndex >= 0 && groupIndex < 
int( mGroups.size() ) )
 
  758    return mGroups.at( groupIndex )->description();
 
 
  765  if ( groupIndex >= 0 && groupIndex < 
int( mGroups.size() ) )
 
  766    return mGroups[groupIndex].get();
 
 
  779  return QStringList();
 
 
  784  return mGroups.size();
 
 
  790    return mGroups.at( groupIndex )->datasetCount();
 
 
  798    return mGroups.at( groupIndex )->groupMetadata();
 
 
  805  int groupIndex = index.
group();
 
  808    int datasetIndex = index.
dataset();
 
 
  818  int groupIndex = index.
group();
 
  822    int datasetIndex = index.
dataset();
 
 
  832  int groupIndex = index.
group();
 
  836    int datasetIndex = index.
dataset();
 
 
  848  Q_UNUSED( faceIndex )
 
 
  855  int groupIndex = index.
group();
 
  859    int datasetIndex = index.
dataset();
 
 
  869  int groupIndex = index.
group();
 
  873    int datasetIndex = index.
dataset();
 
 
  881    const QString &outputDriver,
 
  883    const QVector<QgsMeshDataBlock> &datasetValues,
 
  884    const QVector<QgsMeshDataBlock> &datasetActive,
 
  885    const QVector<double> × )
 
  887  Q_UNUSED( outputFilePath )
 
  888  Q_UNUSED( outputDriver )
 
  891  Q_UNUSED( datasetActive )
 
 
  897    const QString &outputDriver,
 
  899    int datasetGroupIndex )
 
  901  Q_UNUSED( outputFilePath )
 
  902  Q_UNUSED( outputDriver )
 
  904  Q_UNUSED( datasetGroupIndex )
 
 
  910  if ( groupIndex >= 0 && groupIndex < 
int( mGroups.size() ) && mGroups[groupIndex] )
 
  911    return mGroups[groupIndex]->writeXml( doc, context );
 
  913    return QDomElement();
 
 
  920  bool hasTemporal = 
false;
 
  921  for ( 
size_t g = 0; g < mGroups.size(); ++g )
 
 
bool hasTemporalCapabilities() const
Returns true if the provider has temporal capabilities available.
 
A block of 3d stacked mesh data related N faces defined on base mesh frame.
 
A block of integers/doubles from a mesh dataset.
 
QDateTime referenceTime() const
Returns the reference time.
 
MatchingTemporalDatasetMethod
Method for selection of temporal mesh dataset from a range time.
 
qint64 datasetTime(const QgsMeshDatasetIndex &index) const
Returns the relative time in milliseconds of the dataset.
 
Base class for providing data for QgsMeshLayer.
 
virtual bool removeDatasetGroup(int index)=0
Remove dataset group from the mesh.
 
void datasetGroupsAdded(int count)
Emitted when some new dataset groups have been added.
 
QgsMeshDataProviderTemporalCapabilities * temporalCapabilities() override
Returns the provider's temporal capabilities.
 
QgsMeshDatasetGroupTreeItem * datasetGroupTreeItem() const
Returns a pointer to the root of the dataset groups tree item.
 
QgsMeshDatasetMetadata datasetMetadata(const QgsMeshDatasetIndex &index) const
Returns the metadata of the dataset with global index.
 
void setDatasetGroupTreeItem(const QgsMeshDatasetGroupTreeItem *rootItem)
Sets the root of the dataset groups tree item.
 
QList< int > enabledDatasetGroupIndexes() const
Returns a list of all group indexes that are enabled.
 
bool addPersistentDatasets(const QString &path)
Adds persistent datasets from a file with path.
 
QgsMeshDatasetGroupMetadata datasetGroupMetadata(const QgsMeshDatasetIndex &index) const
Returns the metadata of the dataset group with global index.
 
bool isFaceActive(const QgsMeshDatasetIndex &index, int faceIndex) const
Returns whether face is active for particular dataset.
 
QList< int > datasetGroupIndexes() const
Returns a list of all group indexes.
 
bool hasTemporalCapabilities() const
Returns whether at lea&st one of stored dataset group is temporal.
 
void resetDatasetGroupTreeItem()
Resets to default state the dataset groups tree item.
 
QgsMeshDataBlock datasetValues(const QgsMeshDatasetIndex &index, int valueIndex, int count) const
Returns count values of the dataset with global index and from valueIndex.
 
QgsMeshDatasetIndex datasetIndexAtTime(qint64 time, int groupIndex, QgsMeshDataProviderTemporalCapabilities::MatchingTemporalDatasetMethod method) const
Returns the global dataset index of the dataset int the dataset group with groupIndex,...
 
bool saveDatasetGroup(QString filePath, int groupIndex, QString driver)
Saves on a file with filePath the dataset groups index with groupIndex with the specified driver.
 
QList< QgsMeshDatasetIndex > datasetIndexInTimeInterval(qint64 time1, qint64 time2, int groupIndex) const
Returns the global dataset index of the dataset int the dataset group with groupIndex,...
 
bool addDatasetGroup(QgsMeshDatasetGroup *group)
Adds a extra dataset group, take ownership, returns True if the group is effectivly added.
 
QgsMeshDatasetValue datasetValue(const QgsMeshDatasetIndex &index, int valueIndex) const
Returns the value of the dataset with global index and valueIndex.
 
void removeDatasetGroup(int groupIndex)
Removes dataset group with global index groupIndex.
 
QDomElement writeXml(QDomDocument &doc, const QgsReadWriteContext &context)
Writes the store's information in a DOM document.
 
int extraDatasetGroupCount() const
Returns the count of extra dataset groups.
 
int datasetGroupCount() const
Returns the count of dataset groups.
 
QgsMeshDatasetGroupStore(QgsMeshLayer *layer)
Constructor.
 
QgsMeshDataBlock areFacesActive(const QgsMeshDatasetIndex &index, int faceIndex, int count) const
Returns whether faces are active for particular dataset.
 
QString groupName(int groupIndex) const
Returns the name of the dataset group with global index groupIndex.
 
void setPersistentProvider(QgsMeshDataProvider *provider, const QStringList &extraDatasetUri)
Sets the persistent mesh data provider with the path of its extra dataset to be loaded by the provide...
 
qint64 datasetRelativeTime(const QgsMeshDatasetIndex &index) const
Returns the relative time of the dataset from the persistent provider reference time.
 
int datasetCount(int groupIndex) const
Returns the total count of dataset group in the store.
 
void readXml(const QDomElement &storeElem, const QgsReadWriteContext &context)
Reads the store's information from a DOM document.
 
int globalDatasetGroupIndexInSource(QgsMeshDatasetSourceInterface *source, int nativeGroupIndex) const
Returns the global dataset group index of the dataset group with native index nativeGroupIndex in the...
 
int indexFromGroupName(const QString &groupName) const
Returns the global dataset group index of the dataset with name groupName.
 
void datasetGroupsAdded(QList< int > indexes)
Emitted after dataset groups are added.
 
QgsMesh3DDataBlock dataset3dValues(const QgsMeshDatasetIndex &index, int faceIndex, int count) const
Returns count 3D values of the dataset with global index and from valueIndex.
 
Tree item for display of the mesh dataset groups.
 
QgsMeshDatasetGroupTreeItem * clone() const
Clones the item.
 
void setPersistentDatasetGroup(const QString &uri)
Set parameters of the item in accordance with the persistent dataset group with uri.
 
int childCount() const
Returns the count of children.
 
int datasetGroupIndex() const
Returns the dataset group index.
 
QgsMeshDatasetGroupTreeItem * parentItem() const
Returns the parent item, nullptr if it is root item.
 
void removeChild(QgsMeshDatasetGroupTreeItem *item)
Removes and destroy a item child if exists.
 
void setDatasetGroup(QgsMeshDatasetGroup *datasetGroup)
Set parameters of the item in accordance with the dataset group.
 
void appendChild(QgsMeshDatasetGroupTreeItem *item)
Appends a child item.
 
QgsMeshDatasetGroupTreeItem * child(int row) const
Returns a child.
 
Abstract class that represents a dataset group.
 
bool isScalar() const
Returns whether the group contain scalar values.
 
bool checkValueCountPerDataset(int count) const
Returns whether all the datasets contain count values.
 
virtual QgsMeshDatasetMetadata datasetMetadata(int datasetIndex) const =0
Returns the metadata of the dataset with index datasetIndex.
 
QgsMeshDatasetGroupMetadata::DataType dataType() const
Returns the data type of the dataset group.
 
virtual void initialize()=0
Initialize the dataset group.
 
virtual int datasetCount() const =0
Returns the count of datasets in the group.
 
virtual QgsMeshDataset * dataset(int index) const =0
Returns the dataset with index.
 
An index that identifies the dataset group (e.g.
 
bool isValid() const
Returns whether index is valid, ie at least groups is set.
 
int group() const
Returns a group index.
 
int dataset() const
Returns a dataset index within group()
 
Interface for mesh datasets and dataset groups.
 
virtual Q_DECL_DEPRECATED bool persistDatasetGroup(const QString &path, const QgsMeshDatasetGroupMetadata &meta, const QVector< QgsMeshDataBlock > &datasetValues, const QVector< QgsMeshDataBlock > &datasetActive, const QVector< double > ×)
Creates a new dataset group from a data and persists it into a destination path.
 
virtual QgsMeshDatasetGroupMetadata datasetGroupMetadata(int groupIndex) const =0
Returns dataset group metadata.
 
virtual int datasetGroupCount() const =0
Returns number of datasets groups loaded.
 
std::unique_ptr< QgsMeshDataProviderTemporalCapabilities > mTemporalCapabilities
 
virtual bool addDataset(const QString &uri)=0
Associate dataset with the mesh.
 
Represents a single mesh dataset value.
 
virtual QgsMeshDataBlock datasetValues(bool isScalar, int valueIndex, int count) const =0
Returns count values from valueIndex.
 
virtual bool isActive(int faceIndex) const =0
Returns whether the face is active.
 
virtual QgsMeshDataBlock areFacesActive(int faceIndex, int count) const =0
Returns whether faces are active.
 
virtual QgsMeshDatasetValue datasetValue(int valueIndex) const =0
Returns the value with index valueIndex.
 
Represents a mesh layer supporting display of data on structured or unstructured meshes.
 
int meshFaceCount() const
Returns the faces count of the mesh frame.
 
int meshEdgeCount() const
Returns the edges count of the mesh frame.
 
int meshVertexCount() const
Returns the vertices count of the mesh frame.
 
Represents a dataset group calculated from a formula string.
 
A container for the context for various read/write operations on objects.
 
#define QgsDebugError(str)
 
#define INVALID_MESHLAYER_TIME