コード例 #1
0
ファイル: WbpSceneExporter.cpp プロジェクト: CueMol/cuemol2
void WbpSceneExporter::write()
{
  MqoDisplayContext *pmqodc = MB_NEW MqoDisplayContext();

  m_mqoRelPath = makeRelSubPath("mqo");

  LString str_wbppath = getPath();
  LString str_mqopath = getPath("mqo");

  // Mqo substream
  qlib::OutStream *pOutMqo = createOutStream("mqo");

  ScenePtr pScene = getClient();

  CameraPtr pCam = getCamera();
  qlib::ensureNotNull(pCam.get());

  pmqodc->init(pOutMqo);
  
  pmqodc->setGradSteps(m_nGradSteps);
  pmqodc->setClipZ(m_bUseClipZ);
  pmqodc->setPerspective(m_bPerspective);
  pmqodc->setBgColor(pScene->getBgColor());

  double zoom = pCam->getZoom();
  pmqodc->setZoom(zoom);
  pmqodc->setSlabDepth(pCam->getSlabDepth());
  pmqodc->setViewDist(pCam->getCamDist());

  pmqodc->loadIdent();
  pmqodc->rotate(pCam->m_rotQuat);
  pmqodc->translate(-(pCam->m_center));
  
  // calc line width factor
  if (pScene->getViewCount()>0) {
    ViewPtr pView = pScene->beginView()->second;
    double wpix = pView->getWidth();
    pmqodc->setLineScale(zoom/wpix);
  }

  pScene->display(pmqodc);

  // cleanup the created streams
  pOutMqo->close();
  delete pOutMqo;

  // Write wbp main stream
  // Enter the context
  {
    m_pdc = pmqodc;
    AutoStyleCtxt style_ctxt(pScene->getUID());
    writeWbp();
    m_pdc = NULL;
  }

  delete pmqodc;
}