コード例 #1
0
ファイル: GlyphRenderer.cpp プロジェクト: mneumann/tulip
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];
}
コード例 #2
0
ファイル: GlyphRenderer.cpp プロジェクト: mneumann/tulip
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];
}
コード例 #3
0
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;
}