void CustomVisualizer::setDocumentPath(const std::string& path) { m_docPath.setValue(path); const auto realPath = panda::helper::system::DataRepository.findFile(path); auto doc = panda::serialization::readFile(realPath, parentDocument()->getGUI()); std::unique_ptr<panda::VisualizerDocument> visuDoc; auto visuDocRaw = dynamic_cast<panda::VisualizerDocument*>(doc.get()); if (visuDocRaw) { visuDoc.reset(visuDocRaw); doc.release(); } else throw helper::Exception("CustomVisualizer needs a VisualizerDocument"); m_initialized = false; m_visualizerDocument = std::move(visuDoc); m_inputData = DataFactory::create(m_visualizerDocument->visualizerType(), "input", "The data to visualize on the graph view", this); m_visualizedData = m_inputData.get(); addData(m_inputData.get()); addInput(*m_inputData); m_docInputData = m_visualizerDocument->getData("visualizerData"); }
void LayerContainer::insertLayerRaw(Layer* layer, int index) { if ( layer->parentDocument() != parentDocument() ) parentDocument()->registerElement(layer); onInsertLayer(layer); if ( index < 0 || index >= layers_.size() ) layers_.append(layer); else layers_.insert(index, layer); connect(layer, &LayerContainer::layerAdded, this, &LayerContainer::layerAdded); connect(layer, &LayerContainer::layerRemoved, this, &LayerContainer::layerRemoved); emit layerAdded(layer, this, index); }
DocumentInit::DocumentInit(const KURL& url, Frame* frame, WeakPtr<Document> contextDocument, HTMLImport* import) : m_url(url) , m_frame(frame) , m_parent(parentDocument(frame)) , m_owner(ownerDocument(frame)) , m_contextDocument(contextDocument) , m_import(import) , m_createNewRegistrationContext(false) { }
DocumentInit::DocumentInit(const KURL& url, LocalFrame* frame, WeakPtrWillBeRawPtr<Document> contextDocument, HTMLImportsController* importsController) : m_url(url) , m_frame(frame) , m_parent(parentDocument(frame)) , m_owner(ownerDocument(frame)) , m_contextDocument(contextDocument) , m_importsController(importsController) , m_createNewRegistrationContext(false) , m_shouldReuseDefaultView(frame && frame->shouldReuseDefaultView(url)) { }
virtual void onInitParticles(Particles& particles) { const float time = parentDocument()->getAnimationTime(); int oldNb = birth.size(); int newNb = oldNb + particles.size(); birth.resize(newNb); std::uniform_real_distribution<float> dist(0, variation.getValue()); for(int i=oldNb; i<newNb; ++i) birth[i] = time - dist(gen); // Giving them negative age based on the variation value }
bool LayerContainer::removeLayer(Layer* layer) { int index = layerIndex(layer); if ( index < 0 || index > layers_.size() ) return false; parentDocument()->pushCommand(new command::RemoveLayer( tr("Remove Layer"), this, layer, index )); return true; }
virtual Indices filterParticles(const Particles&) { Indices indices; const float time = parentDocument()->getAnimationTime(); int nb = birth.size(); float age = maxAge.getValue(); for(int i=0; i<nb; ++i) { if(time >= birth[i] + age) indices.insert(i); } return indices; }
void LayerContainer::insertLayer(document::Layer* layer, int index) { parentDocument()->pushCommand(new command::AddLayer( tr("Add Layer"), this, layer, index )); }