QPixmap GlyphRenderer::render(unsigned int pluginId) { if(_previews.find(pluginId) == _previews.end()) { _graph->getProperty<IntegerProperty>("viewShape")->setNodeValue(_node,pluginId); GlOffscreenRenderer *renderer = GlOffscreenRenderer::getInstance(); renderer->setViewPortSize(16,16); renderer->clearScene(); renderer->addGraphToScene(_graph); renderer->getScene()->centerScene(); renderer->getScene()->getGraphCamera().setZoomFactor(0.9); renderer->renderScene(false, true); QImage preview = renderer->getImage(); _previews[pluginId] = QPixmap::fromImage(preview); } return _previews[pluginId]; }
QPixmap EdgeExtremityGlyphRenderer::render(unsigned int pluginId) { if(_previews.find(pluginId) == _previews.end()) { _graph->getProperty<IntegerProperty>("viewTgtAnchorShape")->setEdgeValue(_edge,pluginId); GlOffscreenRenderer *renderer = GlOffscreenRenderer::getInstance(); renderer->setViewPortSize(16,16); renderer->clearScene(); renderer->addGraphToScene(_graph); GlGraphRenderingParameters renderingParamerters = renderer->getScene()->getGlGraphComposite()->getRenderingParameters(); renderingParamerters.setEdgeColorInterpolate(false); renderingParamerters.setEdgeSizeInterpolate(false); renderingParamerters.setViewArrow(true); renderer->getScene()->getGlGraphComposite()->setRenderingParameters(renderingParamerters); renderer->renderScene(true); QImage preview = renderer->getImage(); _previews[pluginId] = QPixmap::fromImage(preview); } return _previews[pluginId]; }
void PixelOrientedOverview::computePixelView(GlMainWidget *glWidget) { reset(false); if (clickLabel != nullptr) { delete clickLabel; clickLabel = nullptr; } if (backgroundRect != nullptr) { delete backgroundRect; backgroundRect = nullptr; } if (frame != nullptr) { delete frame; frame = nullptr; } if (frame2 != nullptr) { delete frame2; frame2 = nullptr; } Graph *graph = data->getTulipGraph(); unsigned int width = pixelOrientedMediator->getImageWidth(); unsigned int height = pixelOrientedMediator->getImageHeight(); GlProgressBar *glProgressBar = nullptr; if (glWidget != nullptr) { glProgressBar = new GlProgressBar(Coord(blCornerPos.getX() + width / 2, blCornerPos.getY() + height / 2), width, height, Color(0, 0, 255)); glProgressBar->setComment("Generating overview ..."); addGlEntity(glProgressBar, "progress bar"); } unsigned int currentStep = 0; unsigned int maxStep = graph->numberOfNodes(); unsigned int drawStep = maxStep / 10; set<int> xCoordSet; for (unsigned int i = 0; i < graph->numberOfNodes(); ++i) { node n = node(data->getItemIdAtRank(i)); pocore::Vec2i pos = pixelOrientedMediator->getPixelPosForRank(i); Coord nodeCoord = Coord(pos[0], pos[1], 0); xCoordSet.insert(pos[0]); pixelLayout->setNodeValue(n, nodeCoord); ++currentStep; if (glWidget != nullptr && currentStep % drawStep == 0) { glProgressBar->progress(currentStep, maxStep); glWidget->draw(); } } if (xCoordSet.size() < 2) return; set<int>::iterator it = xCoordSet.begin(); int x1 = *(it++); int x2 = *it; int size = x2 - x1; pixelSize->setAllNodeValue(Size(size, size, size)); overviewLabel->setColor(textColor); GlOffscreenRenderer *glOffscreenRenderer = GlOffscreenRenderer::getInstance(); glOffscreenRenderer->setViewPortSize(width, height); glOffscreenRenderer->clearScene(); glOffscreenRenderer->setSceneBackgroundColor(backgroundColor); glOffscreenRenderer->addGraphCompositeToScene(graphComposite); glOffscreenRenderer->renderScene(true); if (glWidget != nullptr) { glProgressBar->progress(maxStep, maxStep); glWidget->draw(); deleteGlEntity(glProgressBar); delete glProgressBar; } GLuint textureId = glOffscreenRenderer->getGLTexture(true); GlTextureManager::getInst().deleteTexture(textureName); GlTextureManager::getInst().registerExternalTexture(textureName, textureId); if (findGlEntity(dimName) == nullptr) { addGlEntity(new Gl2DRect(blCornerPos.getY() + pixelOrientedMediator->getImageHeight(), blCornerPos.getY(), blCornerPos.getX(), blCornerPos.getX() + pixelOrientedMediator->getImageWidth(), textureName), dimName); addGlEntity(overviewLabel, "overview label"); computeBoundingBox(); } overviewGen = true; }