void Foam::vtkPVFoam::convertMeshPatches ( vtkMultiBlockDataSet* output, int& blockNo ) { arrayRange& range = arrayRangePatches_; range.block(blockNo); // set output block label datasetNo = 0; // restart at dataset 0 const fvMesh& mesh = *meshPtr_; const polyBoundaryMesh& patches = mesh.boundaryMesh(); if (debug) { Info<< "<beg> Foam::vtkPVFoam::convertMeshPatches" << endl; printMemory(); } for (int partId = range.start(); partId < range.end(); ++partId) { if (!partStatus_[partId]) { continue; } const word patchName = getPartName(partId); labelHashSet patchIds(patches.patchSet(List<wordRe>(1, wordRe(patchName)))); if (debug) { Info<< "Creating VTK mesh for patches [" << patchIds <<"] " << patchName << endl; } vtkPolyData* vtkmesh = nullptr; if (patchIds.size() == 1) { vtkmesh = patchVTKMesh(patchName, patches[patchIds.begin().key()]); } else { // Patch group. Collect patch faces. label sz = 0; forAllConstIter(labelHashSet, patchIds, iter) { sz += patches[iter.key()].size(); } labelList meshFaceLabels(sz); sz = 0; forAllConstIter(labelHashSet, patchIds, iter) { const polyPatch& pp = patches[iter.key()]; forAll(pp, i) { meshFaceLabels[sz++] = pp.start()+i; } } UIndirectList<face> fcs(mesh.faces(), meshFaceLabels); uindirectPrimitivePatch pp(fcs, mesh.points()); vtkmesh = patchVTKMesh(patchName, pp); } if (vtkmesh) { AddToBlock(output, vtkmesh, range, datasetNo, patchName); vtkmesh->Delete(); partDataset_[partId] = datasetNo++; } }
void Entry::init(const QJsonObject& data) { _initBase(data); _createdAt = Tasty::parseDate(data.value("created_at").toString()); _url = data.value("entry_url").toString(); _isVotable = data.value("is_voteable").toBool(); _isFavoritable = data.value("can_favorite").toBool(Tasty::instance()->isAuthorized()); _isFavorited = data.value("is_favorited").toBool(); _isWatchable = data.value("can_watch").toBool(); _isWatched = data.value("is_watching").toBool(); _isPrivate = data.value("is_private").toBool(); _isFixed = data.value("fixed_state").toString() == "fixed"; auto fixDate = data.value("fixed_up_at").toString(); _fixedAt = QDateTime::fromString(fixDate.left(19), "yyyy-MM-ddTHH:mm:ss"); auto me = Tasty::instance()->me(); auto isMy = me && _author->id() == me->id(); _isDeletable = data.value("can_delete").toBool(isMy); _isEditable = data.value("can_edit").toBool(isMy); auto tlogData = data.value("tlog").toObject(); if (_tlog && tlogData.contains("slug")) _tlog->init(tlogData); else _tlog = new Tlog(tlogData, this); // if (data.contains("rating")) // { // if (_rating) // // else // _rating = new Rating(data.value("rating").toObject(), this); // } if (!_rating) _rating = new Rating(this); if (isLoading()) _rating->init(data.value("rating").toObject()); else _rating->setId(_id); _commentsCount = data.value("comments_count").toInt(); if (data.contains("title_truncated")) _truncatedTitle = data.value("title_truncated").toString(); else if (_truncatedTitle.isEmpty()) _truncatedTitle = Tasty::truncateHtml(_title, 100); if (data.contains("text_truncated")) _truncatedText = data.value("text_truncated").toString(); else if (_truncatedText.isEmpty()) _truncatedText = Tasty::truncateHtml(_text, 300); _source = data.value("source").toString(); // quote author delete _media; _media = _type == "video" ? new Media(data.value("iframely").toObject(), this) : nullptr; // music? // _imagePreview = data.value("preview_image").toObject(); QRegularExpression wordRe("\\s[^\\s]+\\s"); QRegularExpression tagRe("<[^>]*>"); // QRegularExpression wordRe("\\b\\w+\\b"); auto content = _title + _text; _wordCount = content.remove(tagRe).count(wordRe); _correctHtml(); pTasty->dataCache()->addEntry(sharedFromThis()); _commentsData = data.value("comments").toArray(); if (_commentsModel && _commentsModel->entryId() == _id) { _commentsModel->init(_commentsData, _commentsCount); _commentsData = QJsonArray(); } auto imageAttach = data.value("image_attachments").toArray(); delete _attachedImagesModel; _attachedImagesModel = new AttachedImagesModel(&imageAttach, this); _rating->reCalcBayes(); emit updated(); emit commentsCountChanged(); }