Teuchos::ArrayRCP<Teuchos::ArrayRCP<const ST>> getLocalData (const Teuchos::RCP<const Thyra_MultiVector>& mv) { Teuchos::ArrayRCP<Teuchos::ArrayRCP<const ST>> data(mv->domain()->dim()); for (int i=0; i<mv->domain()->dim(); ++i) { data[i] = getLocalData(mv->col(i)); } return data; }
void ImageShadowNode::updateLocalData() { const auto &imageSource = getImageSource(); const auto ¤tLocalData = getLocalData(); if (currentLocalData) { assert(std::dynamic_pointer_cast<const ImageLocalData>(currentLocalData)); auto currentImageLocalData = std::static_pointer_cast<const ImageLocalData>(currentLocalData); if (currentImageLocalData->getImageSource() == imageSource) { // Same `imageSource` is already in `localData`, // no need to (re)request an image resource. return; } } // Now we are about to mutate the Shadow Node. ensureUnsealed(); auto imageRequest = imageManager_->requestImage(imageSource); auto imageLocalData = std::make_shared<ImageLocalData>(imageSource, std::move(imageRequest)); setLocalData(imageLocalData); }
void ImageData::updateData(const Util::Bitmap & _bitmap) { if(_bitmap.getPixelFormat() != getBitmap()->getPixelFormat()){ WARN("updateData: Different pixel formats!"); return; } std::copy(_bitmap.data(), _bitmap.data() + std::min<size_t>(_bitmap.getDataSize(), getBitmap()->getDataSize()), getLocalData()); dataChanged(); }
bool ImageData::uploadGLTexture() { if( textureId==0 ) textureId = Draw::generateTextureId(); if( textureId==0 ) return false; Draw::uploadTexture(textureId,bitmap->getWidth(),bitmap->getHeight(),bitmap->getPixelFormat(),getLocalData()); dataHasChanged=false; return true; }