コード例 #1
0
ファイル: ObjectView.cpp プロジェクト: bchretien/spheretree
bool CObjectView::saveEPS(const char *fileName){
  SELECT_CONTEXT();

  //  to use GL2PS
  FILE *f = fopen(fileName, "w");
  if (!f)
    return false;

  int buffsize = 0, state = GL2PS_OVERFLOW;
  while( state == GL2PS_OVERFLOW ){ 
    buffsize += 1024*1024;
    TRACE("bufferSize set to %d\n", buffsize);

    gl2psBeginPage("GRB", "GRB", GL2PS_BSP_SORT /*GL2PS_SIMPLE_SORT*/, GL2PS_NONE /*GL2PS_OCCLUSION_CULL*/,
                   GL_RGBA, 0, NULL, buffsize, f);
    gl2psLineWidth(1);
    gl2psPointSize(1);

    setupPerspective();
    drawScene(NULL, -1);

    state = gl2psEndPage();
    }
  fclose(f);

  UNSELECT_CONTEXT();
  return true;
}
コード例 #2
0
ファイル: drawMesh.cpp プロジェクト: cycheung/gmsh
void drawContext::drawMesh()
{
  if(!CTX::instance()->mesh.draw) return;

  // make sure to flag any model-dependent post-processing view as
  // changed if the underlying mesh has, before resetting the changed
  // flag
  if(CTX::instance()->mesh.changed){
    for(unsigned int i = 0; i < GModel::list.size(); i++)
      for(unsigned int j = 0; j < PView::list.size(); j++)
        if(PView::list[j]->getData()->hasModel(GModel::list[i]))
          PView::list[j]->setChanged(true);
  }

  glPointSize((float)CTX::instance()->mesh.pointSize);
  gl2psPointSize((float)(CTX::instance()->mesh.pointSize *
                         CTX::instance()->print.epsPointSizeFactor));

  glLineWidth((float)CTX::instance()->mesh.lineWidth);
  gl2psLineWidth((float)(CTX::instance()->mesh.lineWidth *
                         CTX::instance()->print.epsLineWidthFactor));

  if(CTX::instance()->mesh.lightTwoSide)
    glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
  else
    glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);

  if(!CTX::instance()->clipWholeElements){
    for(int i = 0; i < 6; i++)
      if(CTX::instance()->mesh.clip & (1 << i))
        glEnable((GLenum)(GL_CLIP_PLANE0 + i));
      else
        glDisable((GLenum)(GL_CLIP_PLANE0 + i));
  }

  for(unsigned int i = 0; i < GModel::list.size(); i++){
    GModel *m = GModel::list[i];
    m->fillVertexArrays();
    if(m->getVisibility() && isVisible(m)){
      int status = m->getMeshStatus();
      if(status >= 0)
        std::for_each(m->firstVertex(), m->lastVertex(), drawMeshGVertex(this));
      if(status >= 1)
        std::for_each(m->firstEdge(), m->lastEdge(), drawMeshGEdge(this));
      if(status >= 2){
        beginFakeTransparency();
        std::for_each(m->firstFace(), m->lastFace(), drawMeshGFace(this));
        endFakeTransparency();
      }
      if(status >= 3)
        std::for_each(m->firstRegion(), m->lastRegion(), drawMeshGRegion(this));
    }
  }

  CTX::instance()->mesh.changed = 0;

  for(int i = 0; i < 6; i++)
    glDisable((GLenum)(GL_CLIP_PLANE0 + i));
}
コード例 #3
0
ファイル: gfx_grid.c プロジェクト: jurabr/ufem
int femGfxDrawGrid(void)
{
  long n ;
  long i ;
  double x, y, z ;

  if ((plotProp.Select == AF_YES)&&(plotProp.SelStuff != GFX_SELE_GRID))
  {
    return(AF_OK) ; /* nothing to do */
  }

  n = pick_grid_siz_x * pick_grid_siz_y ;
  if (n <= 0) {return(AF_OK);}

	glPointSize(GFX_SMALLPOINT);
#ifdef USE_GL2PS
	if (plotProp.PlotToFile == AF_YES){gl2psPointSize(GFX_SMALLPOINT);}
#endif

  for (i=0; i<n; i++) 
  { 
    pick_grid_compute_xyz(i, &x, &y, &z) ; 
   

    if ((plotProp.SelStuff == GFX_SELE_GRID)&&(plotProp.Select == AF_YES))
    { 
      if (plotProp.Select == AF_YES) 
      { 
        glPushName((GLuint)i) ; 
      }
    }

	  glBegin(GL_POINTS);
      glColor4f(
        plotProp.gridColor[0],
        plotProp.gridColor[1],
        plotProp.gridColor[2],
        plotProp.gridColor[3]
        ); 

	    glVertex3f( PoSX(x), PoSY(y), PoSZ(z));
	  glEnd();
    
    if (plotProp.Select == AF_YES)
    { 
      glPopName() ; 
    }

  }
  return(AF_OK);
}
コード例 #4
0
ファイル: gfx_disp.c プロジェクト: jurabr/ufem
void afDispSymbol(
		 double  Size, 
		 long    Dir, 
		 double  x, 
		 double  y, 
		 double  z, 
		 long    Num, 
		 float   r,
		 float   g,
		 float   b,
		 float   tr)
{ 
	double S,F;
	
	F = (plotProp.Max-plotProp.Min)/30.0;
	S = F/4.0;
	
  glLoadIdentity();
  glTranslatef(x,y,z);

 	switch (Dir)
  {
		/* u:  */
    case 1:
    case 15:
    case 29:
			glRotatef(180,0,1,0); break;
    case 2:
    case 16:
    case 30:
			glRotatef(270,0,0,1); break;
    case 3:
    case 17:
    case 31:
			glRotatef(90,0,1,0); break;
		/* rot: */
    case 4:
    case 18:
    case 32:
			glRotatef(180,0,0,1); break;
    case 5:
    case 19:
    case 33:
			glRotatef(270,0,0,1); break;
    case 6:
    case 20:
    case 34:
			glRotatef(90,0,1,0); break;
    case 7: 
			glRotatef(180,0,1,0);
      break;

    default: glLoadIdentity(); return; break;
  }


	glColor4f(r,g,b,tr);

	if ((Dir>=15)&&(Dir<=20)) { glColor4f(1.0, 0.6, 0.3,  1.0) ; }
	if ((Dir>=29)&&(Dir<=34)) { glColor4f(0.6, 0.6, 1.0,  1.0) ; }
	
	if (plotProp.PlotToFile == AF_YES) 
  { 
#ifdef USE_GL2PS
    gl2psPointSize(4); 
#endif
  }
	else 
  { 
    glPointSize(4); 
  }

	glBegin(GL_POINTS);
	  glVertex3f(0,0,0);
	glEnd();

	if (plotProp.PlotToFile == AF_YES) 
  { 
#ifdef USE_GL2PS
    gl2psPointSize(1); 
#endif
  }
	else 
  { 
    glPointSize(1); 
  }

	/* translations */
	if ( (Dir <= 3) || ((Dir>=15)&&(Dir<=17)) || ((Dir>=29)&&(Dir<=31)) ) 
	{

			
	  if (plotProp.PlotToFile == AF_YES) 
    { 
#ifdef USE_GL2PS
      gl2psLineWidth(2); 
#endif
    }
	  else 
    { 
      glLineWidth(2); 
    }

	  glBegin(GL_LINE_STRIP);
	    glVertex3f(0,0,0);
	    glVertex3f(F+0,0,0);
	  glEnd();
    
	  if (plotProp.PlotToFile == AF_YES) 
    { 
#ifdef USE_GL2PS
      gl2psLineWidth(1); 
#endif
    }
	  else 
    { 
      glLineWidth(1); 
    }

	  glBegin(GL_TRIANGLE_FAN);
	    glVertex3f(0.7*F,0,0);
	    glVertex3f(F,S,S);
	    glVertex3f(F,-S,S);
	    glVertex3f(F,-S,-S);
	    glVertex3f(F,S,-S);
	    glVertex3f(F,S,S);
	  glEnd();
	}
	else /* rotations */
	{
	  if (plotProp.PlotToFile == AF_YES) 
    { 
#ifdef USE_GL2PS
      gl2psLineWidth(2); 
#endif
    }
	  else 
    { 
      glLineWidth(2); 
    }

    if (Dir == 7) /* temperature */
    {
	    glBegin(GL_POINTS);
	      glVertex3f(0,0,0);
	    glEnd();
    }
    else
    {

		glBegin(GL_POLYGON);
	    glVertex3f( 0.4*F, 0.3*F,-0.2*F);
	    glVertex3f(-0.4*F, 0.3*F,-0.2*F);
	    glVertex3f(-0.4*F, 0.3*F, 0.2*F);
	    glVertex3f( 0.4*F, 0.3*F, 0.2*F);
		glEnd();

		glBegin(GL_POLYGON);
	    glVertex3f( 0.4*F,-0.3*F,-0.2*F);
	    glVertex3f(-0.4*F,-0.3*F,-0.2*F);
	    glVertex3f(-0.4*F,-0.3*F, 0.2*F);
	    glVertex3f( 0.4*F,-0.3*F, 0.2*F);
		glEnd();

		glBegin(GL_POLYGON);
	    glVertex3f( 0.4*F,-0.3*F,-0.2*F);
	    glVertex3f(-0.4*F,-0.3*F,-0.2*F);
	    glVertex3f(-0.4*F, 0.3*F,-0.2*F);
	    glVertex3f( 0.4*F, 0.3*F,-0.2*F);
		glEnd();

		glBegin(GL_POLYGON);
	    glVertex3f( 0.4*F,-0.2*F, 0.2*F);
	    glVertex3f(-0.4*F,-0.2*F, 0.2*F);
	    glVertex3f(-0.4*F, 0.2*F, 0.2*F);
	    glVertex3f( 0.4*F, 0.2*F, 0.2*F);
		glEnd();

		/*    */
		glBegin(GL_POLYGON);
	    glVertex3f(0,-0.2*F,-0.2*F);
	    glVertex3f(0,-0.2*F, 0.2*F);
	    glVertex3f(0, 0.2*F, 0.2*F);
	    glVertex3f(0, 0.2*F,-0.2*F);
		glEnd();
    }
	
	  if (plotProp.PlotToFile == AF_YES) 
    { 
#ifdef USE_GL2PS
      gl2psLineWidth(2); 
#endif
    }
	  else 
    { 
      glLineWidth(2); 
    }
  }


  if (plotProp.Select != AF_YES)
  {
    /* disp number: */
	  if (plotProp.dispNumber == AF_YES)
	  {
		  femPlotInt(Num,F+0,0,0,NULL);
	  }

	  /* disp size: */
	  if (plotProp.dispSize == AF_YES)
	  {
		  femPlotDouble(fabs(Size),F+0,0,0,NULL);
	  }
  }
}
コード例 #5
0
ファイル: gfx_disp.c プロジェクト: jurabr/ufem
/* TODO: symbol for stiffness TODO */
void afStiffSymbol(
		 double  Size, 
		 long    Dir, 
		 double  x, 
		 double  y, 
		 double  z, 
		 long    Num, 
		 float   r,
		 float   g,
		 float   b,
		 float   tr)
{ 
	double S,F;

	F = (plotProp.Max-plotProp.Min)/30.0;
	S = F/4.0;

	
  glLoadIdentity();
  glTranslatef(x,y,z);

	switch (Dir)
  {
		/* u:  */
    case 8:
    case 22:
    case 36:
			glRotatef(180,0,1,0); break;
    case 9:
    case 23:
    case 37:
			glRotatef(270,0,0,1); break;
    case 10:
    case 24:
    case 38:
			glRotatef(90,0,1,0); break;
		/* rot: */
    case 11:
    case 25:
    case 39:
			glRotatef(180,0,0,1); break;
    case 12:
    case 26:
    case 40:
			glRotatef(270,0,0,1); break;
    case 13:
    case 27:
    case 41:
			glRotatef(90,0,1,0); break;

    default: glLoadIdentity(); return; break;
  }

	if (fabs(Size) <= FEM_ZERO) {return;}
	
	glColor4f(r,g,b,tr);

	if ((Dir>=22)&&(Dir<=27)) { glColor4f(1.0, 0.6, 0.3,  1.0) ; }
	if ((Dir>=36)&&(Dir<=41)) { glColor4f(0.6, 0.6, 1.0,  1.0) ; }

	
	if (plotProp.PlotToFile == AF_YES) 
  { 
#ifdef USE_GL2PS
    gl2psPointSize(4); 
#endif
  }
	else 
  { 
    glPointSize(4); 
  }

	glBegin(GL_POINTS);
	  glVertex3f(0,0,0);
	glEnd();

	if (plotProp.PlotToFile == AF_YES) 
  { 
#ifdef USE_GL2PS
    gl2psPointSize(1); 
#endif
  }
	else 
  { 
    glPointSize(1); 
  }

	
	/* translation stiffnesses */
	if ( ((Dir >= 8)&&(Dir <=10)) || ((Dir>=22)&&(Dir<=24)) || ((Dir>=36)&&(Dir<=38)) ) 
	{
	  if (plotProp.PlotToFile == AF_YES) 
    { 
#ifdef USE_GL2PS
      gl2psLineWidth(2); 
#endif
    }
	  else 
    { 
      glLineWidth(2); 
    }

	  glBegin(GL_LINE_STRIP);
	    glVertex3f(0,0,0);
	    glVertex3f(F+0,0,0);
	  glEnd();
    
	  if (plotProp.PlotToFile == AF_YES) 
    { 
#ifdef USE_GL2PS
      gl2psLineWidth(1); 
#endif
    }
	  else 
    { 
      glLineWidth(1); 
    }

	  glBegin(GL_TRIANGLE_FAN);
	    glVertex3f(0.7*F,0,0);
	    glVertex3f(F,S,S);
	    glVertex3f(F,-S,S);
	    glVertex3f(F,-S,-S);
	    glVertex3f(F,S,-S);
	    glVertex3f(F,S,S);
	  glEnd();
		
  	glBegin(GL_TRIANGLE_FAN);
	    glVertex3f(0.7*F,0,0);
	    glVertex3f(0.4*F,S,S);
	    glVertex3f(0.4*F,-S,S);
	    glVertex3f(0.4*F,-S,-S);
	    glVertex3f(0.4*F,S,-S);
	    glVertex3f(0.4*F,S,S);
	  glEnd();

		glBegin(GL_TRIANGLE_FAN);
	    glVertex3f(0.1*F,0,0);
	    glVertex3f(0.4*F,S,S);
	    glVertex3f(0.4*F,-S,S);
	    glVertex3f(0.4*F,-S,-S);
	    glVertex3f(0.4*F,S,-S);
	    glVertex3f(0.4*F,S,S);
	  glEnd();

	}
	else /* rotations */
	{
	  if (plotProp.PlotToFile == AF_YES) 
    { 
#ifdef USE_GL2PS
      gl2psLineWidth(2); 
#endif
    }
	  else 
    { 
      glLineWidth(2); 
    }

#if 0
		glBegin(GL_POLYGON);
	    glVertex3f( 0.4*F, 0.3*F,-0.2*F);
	    glVertex3f(-0.4*F, 0.3*F,-0.2*F);
	    glVertex3f(-0.4*F, 0.3*F, 0.2*F);
	    glVertex3f( 0.4*F, 0.3*F, 0.2*F);
		glEnd();

		glBegin(GL_POLYGON);
	    glVertex3f( 0.4*F,-0.3*F,-0.2*F);
	    glVertex3f(-0.4*F,-0.3*F,-0.2*F);
	    glVertex3f(-0.4*F,-0.3*F, 0.2*F);
	    glVertex3f( 0.4*F,-0.3*F, 0.2*F);
		glEnd();

		glBegin(GL_POLYGON);
	    glVertex3f( 0.4*F,-0.3*F,-0.2*F);
	    glVertex3f(-0.4*F,-0.3*F,-0.2*F);
	    glVertex3f(-0.4*F, 0.3*F,-0.2*F);
	    glVertex3f( 0.4*F, 0.3*F,-0.2*F);
		glEnd();

		glBegin(GL_POLYGON);
	    glVertex3f( 0.4*F,-0.2*F, 0.2*F);
	    glVertex3f(-0.4*F,-0.2*F, 0.2*F);
	    glVertex3f(-0.4*F, 0.2*F, 0.2*F);
	    glVertex3f( 0.4*F, 0.2*F, 0.2*F);
		glEnd();

		/*    */
		glBegin(GL_POLYGON);
	    glVertex3f(0,-0.2*F,-0.2*F);
	    glVertex3f(0,-0.2*F, 0.2*F);
	    glVertex3f(0, 0.2*F, 0.2*F);
	    glVertex3f(0, 0.2*F,-0.2*F);
		glEnd();
#else
		glBegin(GL_POLYGON);
	    glVertex3f(0,-0.3*F,-0.3*F);
	    glVertex3f(0, 0.3*F, 0.3*F);
	    glVertex3f(0.5*F, 0.3*F, 0.3*F);
	    glVertex3f(0.5*F,-0.3*F,-0.3*F);
		glEnd();

		glBegin(GL_POLYGON);
	    glVertex3f(0,-0.3*F, 0.3*F);
	    glVertex3f(0, 0.3*F,-0.3*F);
	    glVertex3f(0.5*F,-0.3*F, 0.3*F);
	    glVertex3f(0.5*F, 0.3*F,-0.3*F);
		glEnd();

#endif
	
	  if (plotProp.PlotToFile == AF_YES) 
    { 
#ifdef USE_GL2PS
      gl2psLineWidth(2); 
#endif
    }
	  else 
    { 
      glLineWidth(2); 
    }
  }


  if (plotProp.Select != AF_YES)
  {
    /* disp number: */
	  if (plotProp.dispNumber == AF_YES)
	  {
		  femPlotInt(Num,F+0,0,0,NULL);
	  }

	  /* disp size: */
	  if (plotProp.dispSize == AF_YES)
	  {
		  femPlotDouble(fabs(Size),F+0,0,0,NULL);
	  }
  }
}
コード例 #6
0
ファイル: gl2psTest.c プロジェクト: hirokemono/Kemorin_MHD
void extras()
{
  glColor3f(1., 0., 0.);

  glPointSize(1.);
  gl2psPointSize(1.);
  glBegin(GL_POINTS);
  glVertex3f(-1., 1.0, 0.);
  glEnd();

  glPointSize(3.);
  gl2psPointSize(3.);
  glBegin(GL_POINTS);
  glVertex3f(-0.8, 1.0, 0.);
  glEnd();

  glPointSize(5.);
  gl2psPointSize(5.);
  glBegin(GL_POINTS);
  glVertex3f(-0.6, 1.0, 0.);
  glEnd();

  glPointSize(7.);
  gl2psPointSize(7.);
  glBegin(GL_POINTS);
  glVertex3f(-0.4, 1.0, 0.);
  glEnd();

  glLineWidth(1.);
  gl2psLineWidth(1.);
  glBegin(GL_LINES);
  glVertex3f(-0.2, 1.05, 0.);
  glVertex3f(0.2, 1.05, 0.);
  glEnd();

  glEnable(GL_LINE_STIPPLE);
  glLineStipple(1, 0x087F);
  gl2psEnable(GL2PS_LINE_STIPPLE);
  glBegin(GL_LINES);
  glVertex3f(-0.2, 0.95, 0.);
  glVertex3f(0.2, 0.95, 0.);
  glEnd();
  glDisable(GL_LINE_STIPPLE);
  gl2psDisable(GL2PS_LINE_STIPPLE);

  glLineWidth(3.);
  gl2psLineWidth(3.);
  glBegin(GL_LINES);
  glVertex3f(0.4, 1.05, 0.);
  glVertex3f(0.8, 1.05, 0.);
  glEnd();

  glEnable(GL_LINE_STIPPLE);
  glLineStipple(2, 0x0F0F);
  /* glLineStipple(1, 0xAAAA); */
  gl2psEnable(GL2PS_LINE_STIPPLE);
  glBegin(GL_LINES);
  glVertex3f(0.4, 0.95, 0.);
  glVertex3f(0.8, 0.95, 0.);
  glEnd();
  glDisable(GL_LINE_STIPPLE);
  gl2psDisable(GL2PS_LINE_STIPPLE);

  glPointSize(1);
  gl2psPointSize(1);
  glLineWidth(1);
  gl2psLineWidth(1);
}