vtkSmartPointer<vtkAlgorithm> GlyphMagnitudeColorMapping::createFilter(AbstractVisualizedData & visualizedData, unsigned int port) { if (port != 0) { return vtkSmartPointer<vtkPassThrough>::New(); } const auto filterIt = m_filters.find(&visualizedData); // Return already created filter (in this case, visualizedData is valid for this mapping) if (filterIt != m_filters.end()) { return filterIt->second; } // Check if the mapping can be applied to the provided visualization const auto glyphMappingDataIt = m_glyphMappingData.find(static_cast<RenderedData3D *>(&visualizedData)); if (glyphMappingDataIt == m_glyphMappingData.end()) { return vtkSmartPointer<vtkPassThrough>::New(); } // Create the mapping pipeline assert(glyphMappingDataIt->second); auto & glyphMappingData = *glyphMappingDataIt->second; auto norm = vtkSmartPointer<vtkVectorNorm>::New(); norm->SetInputConnection(glyphMappingData.vectorDataOutputPort()); auto assignVectors = vtkSmartPointer<vtkAssignAttribute>::New(); assignVectors->Assign(m_vectorName.toUtf8().data(), vtkDataSetAttributes::VECTORS, vtkAssignAttribute::POINT_DATA); assignVectors->SetInputConnection(norm->GetOutputPort()); auto setArrayName = vtkSmartPointer<ArrayChangeInformationFilter>::New(); setArrayName->EnableRenameOn(); setArrayName->SetArrayName(s_normScalarsName); setArrayName->SetAttributeType(vtkDataSetAttributes::SCALARS); setArrayName->SetAttributeLocation(IndexType::points); setArrayName->SetInputConnection(assignVectors->GetOutputPort()); m_filters[&visualizedData] = setArrayName; return setArrayName; }
void Array3DEvent::LoadFromXml(gd::Project & project, const TiXmlElement * elem) { if ( elem->FirstChildElement( "Conditions" ) != NULL ) gd::EventsListSerialization::OpenConditions(project, conditions, elem->FirstChildElement( "Conditions" )); else std::cout << "Aucune informations sur les conditions d'un évènement"; if ( elem->FirstChildElement( "Actions" ) != NULL ) gd::EventsListSerialization::OpenActions(project, actions, elem->FirstChildElement( "Actions" )); else std::cout << "Aucune informations sur les actions d'un évènement"; if ( elem->FirstChildElement( "Events" ) != NULL ) gd::EventsListSerialization::LoadEventsFromXml(project, events, elem->FirstChildElement( "Events" )); std::string arrayName_; GD_CURRENT_ELEMENT_LOAD_ATTRIBUTE_STRING("name", arrayName_); SetArrayName(arrayName_); }