Esempio n. 1
0
GLboolean GLFont::justify(double width, double height, double adjx, double adjy, const RenderContext& rc) {
  GLdouble pos[4], pos2[4];
  double basex = 0.0, basey = 0.0, scaling = 1.0;
  GLboolean valid;
  gl2ps_centering = GL2PS_TEXT_BL;
  
  if (adjx > 0) {

    if (rc.gl2psActive > GL2PS_NONE) scaling = GL2PS_SCALING;
     
    if ( adjx > 0.25 && rc.gl2psActive == GL2PS_POSITIONAL) {
      if (adjx < 0.75) {
        basex = 0.5;
        gl2ps_centering = GL2PS_TEXT_B;
      } else {
        basex = 1.0;
        gl2ps_centering = GL2PS_TEXT_BR;
      }
    }
  }  

  if ((adjx != basex) || (adjy != basey)) {
    glGetDoublev(GL_CURRENT_RASTER_POSITION, pos);    
    pos[0] = pos[0] - scaling*width*(adjx-basex); 
    pos[1] = pos[1] - scaling*height*(adjy-basey);
    gluUnProject( pos[0], pos[1], pos[2], rc.modelview, rc.projection, rc.viewport, pos2, pos2 + 1, pos2 + 2);
    glRasterPos3dv(pos2);
  }
  
  glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, &valid);
  return valid;
}
Esempio n. 2
0
void CMeshVertex::MakeSureDisplayListExists() {
    if(m_gl_list)return;

    m_gl_list = glGenLists(1);

    glNewList(m_gl_list, GL_COMPILE);

    HeeksColor(255, 0, 128).glColor();
    glRasterPos3dv(vertex().GetPtr());

    glEndList();
}
Esempio n. 3
0
File: g_render.c Progetto: aosm/X11
void __glXDisp_RasterPos3dv(GLbyte *pc)
{

#ifdef __GLX_ALIGN64
	if ((unsigned long)(pc) & 7) {
	    __GLX_MEM_COPY(pc-4, pc, 24);
	    pc -= 4;
	}
#endif
	glRasterPos3dv( 
		(GLdouble *)(pc + 0)
	);
}
Esempio n. 4
0
void CProfile::glCommands(bool select, bool marked, bool no_color)
{
	CSketchOp::glCommands(select, marked, no_color);

	if(marked && !no_color)
	{
		{
			// draw roll on point
			if(!m_profile_params.m_auto_roll_on)
			{
				glColor3ub(0, 200, 200);
				glRasterPos3dv(m_profile_params.m_roll_on_point);
				glBitmap(16, 16, 8, 8, 10.0, 0.0, cross16);
			}
			// draw roll off point
			if(!m_profile_params.m_auto_roll_on)
			{
				glColor3ub(255, 128, 0);
				glRasterPos3dv(m_profile_params.m_roll_off_point);
				glBitmap(16, 16, 8, 8, 10.0, 0.0, cross16);
			}
			// draw start point
			if(m_profile_params.m_start_given)
			{
				glColor3ub(128, 0, 255);
				glRasterPos3dv(m_profile_params.m_start);
				glBitmap(16, 16, 8, 8, 10.0, 0.0, cross16);
			}
			// draw end point
			if(m_profile_params.m_end_given)
			{
				glColor3ub(200, 200, 0);
				glRasterPos3dv(m_profile_params.m_end);
				glBitmap(16, 16, 8, 8, 10.0, 0.0, cross16);
			}
		}
	}
}
void drawSegments(GLenum mode) {
	UINT id, i;
	if(mode == GL_SELECT){
		glInitNames();	
		glPushName(0);
	}
	for(id = 1; id < nSegments; id++){
		SEGMENT *segment = &list[id];
		if(segment->type == CAGD_SEGMENT_UNUSED)
			continue;
		if(!segment->visible)
			continue;
		if(mode == GL_SELECT)
			glLoadName(id);
		glColor3ubv(segment->color);
		switch(segment->type) {
			case CAGD_SEGMENT_POINT:
				glPointSize(3);
				glBegin(GL_POINTS);
				glVertex3dv((GLdouble *)segment->where);
				glEnd();
				break;
			case CAGD_SEGMENT_POLYLINE:
			case CAGD_SEGMENT_WCIRCLE:
				glBegin(GL_LINE_STRIP);
				for(i = 0; i < segment->length; i++)
					glVertex3dv((GLdouble *)&segment->where[i]);
				glEnd();
				break;
			case CAGD_SEGMENT_TEXT:
				if(mode == GL_SELECT)
					break;
				glRasterPos3dv((GLdouble *)segment->where);
				break;
			case CAGD_SEGMENT_CTLPLYGN:
				glBegin(GL_LINE_STRIP);
				for(i = 0; i < segment->length; i++)
					glVertex3dv((GLdouble *)&segment->where[i]);
				glEnd();
				glPointSize(3);
				glBegin(GL_POINTS);
				for(i = 0; i < segment->length; i++)
					glVertex3dv((GLdouble *)&segment->where[i]);
				glEnd();
		}
	}
}
Esempio n. 6
0
/////////////////////////////////////////////////////////
// Render
//
void GEMglRasterPos3dv :: render(GemState *state)
{
  glRasterPos3dv (v);
}
Esempio n. 7
0
//================================================================
  int GLBT_disp_vc () {
//================================================================
// display VectorSelector
// GL_mode_draw_select = 


  int     i1;
  GLuint  gli;
  double  lv;
  char    s1[32];
  Point   pt1, pt2, pt3, pt4, pt5, pt6, pt7, ptu;
  Vector  vc1;


  // printf("GLBT_disp_vc\n");

 
  if(GL_mode_draw_select == GR_MODE_2DSELECT) gli = 1;
  else                                        gli = 0;
    // printf(" gli=%d\n",gli);


  // fit size
  lv = GLBT_VC_LEN;


  // X = 1,2
  pt1 = UT3D_PT_NUL;
  pt1.x += lv;
  pt2 = UT3D_PT_NUL;
  pt2.x -= lv;

  // Y = 3,4
  pt3 = UT3D_PT_NUL;
  pt3.y += lv;
  pt4 = UT3D_PT_NUL;
  pt4.y -= lv;

  // Z = 5,6
  pt5 = UT3D_PT_NUL;
  pt5.z += lv;
  pt6 = UT3D_PT_NUL;
  pt6.z -= lv;



  glPushMatrix ();

  // move to GLBT_ori, rotate GL_angZ, GL_angX;
  GLBT_view_set ();


    // X
    if(gli) glLoadName(1);  // DB_VCX_IND   // GL-ID's must be positive
  // glNewList ((GLuint)30, GL_COMPILE_AND_EXECUTE);
    glColor3fv   (glColx);
    glBegin (GL_LINES);
      glVertex3dv ((double*)&UT3D_PT_NUL);
      glVertex3dv ((double*)&pt1);
    glEnd ();
  // glEndList ();

    if(gli) glLoadName(4);   // DB_VCIX_IND
    glBegin (GL_LINES);
      glVertex3dv ((double*)&UT3D_PT_NUL);
      glVertex3dv ((double*)&pt2);
    glEnd ();


    // Y
    glColor3fv   (glColy);
    if(gli) glLoadName(2);          // DB_VCY_IND
    glBegin (GL_LINES);
      glVertex3dv ((double*)&UT3D_PT_NUL);
      glVertex3dv ((double*)&pt3);
    glEnd ();

    if(gli) glLoadName(5);        // DB_VCIY_IND
    glBegin (GL_LINES);
      glVertex3dv ((double*)&UT3D_PT_NUL);
      glVertex3dv ((double*)&pt4);
    glEnd ();


    // Z
    glColor3fv   (glColz);
    if(gli) glLoadName(3);         // DB_VCZ_IND
    glBegin (GL_LINES);
      glVertex3dv ((double*)&UT3D_PT_NUL);
      glVertex3dv ((double*)&pt5);
    glEnd ();

    if(gli) glLoadName(6);         // DB_VCIZ_IND
    glBegin (GL_LINES);
      glVertex3dv ((double*)&UT3D_PT_NUL);
      glVertex3dv ((double*)&pt6);
    glEnd ();


    //----- display characters x y for StandardVectors ----------
    // display x y   see APT_disp_TxtA
    glColor3fv   (glColx);
    glRasterPos3dv ((double*)&pt1);
    glCallList ((GLuint)120);           // "x"

    glColor3fv   (glColy);
    glRasterPos3dv ((double*)&pt3);
    glCallList ((GLuint)121);           // "y"


    //----- display defined DB-Vector dbi=GLBT_vcSelStat ----------
    if(GLBT_vcSelStat > 0) {

      vc1 = DB_GetVector ((long)GLBT_vcSelStat);
      UT3D_vc_setLength (&vc1, &vc1, lv);
        // UT3D_stru_dump (Typ_VC, &vc1, " D%d",GLBT_vcSelStat);

      glColor3fv   (glColv);
      if(gli) glLoadName(7);
      glBegin (GL_LINES);
        glVertex3dv ((double*)&UT3D_PT_NUL);
        glVertex3dv ((double*)&vc1);
      glEnd ();


      //----- display ID of defined DB-Vector dbi=GLBT_vcSelStat ----------
      // glColor3fv   (glColv);
      glRasterPos3dv ((double*)&vc1);
      // strcpy(s1, "D21");
      sprintf(s1, "D%d",GLBT_vcSelStat);
      i1 = strlen(s1);
      glCallLists (i1, GL_UNSIGNED_BYTE, (GLubyte*)s1);
    }



    glPopMatrix ();


  return 0;

}
Esempio n. 8
0
//================================================================
  int GLBT_test__ () {
//================================================================
      // gl must be open !  GL_DrawSymB gets clipped if outside

  int          i1, iLen;
  long         gli, dli;
  char         *cBuf;
  float        *fBuf;
  double       lux, luy, sx,sy,sz;
  Point        pts, ptu;
  // GLfloat pos[4];
  GLfloat fCol=0.5f;

  printf("========================================= GLBT_test__\n");

  // glEnable (GL_LIGHTING);
  glDisable (GL_LIGHTING);
  glDepthFunc (GL_ALWAYS);
  // glDepthFunc (GL_NOTEQUAL);


  //----------------------------------------------------------------
/*
  // dli = -2L;
  // gli = GL_fix_DL_ind (&dli);
  // glNewList (gli, GL_COMPILE);
    glColor3f (1.f, 1.f, 0.f);       // gelb
    // get screenPos of GLBT_ori
    // GL_ptSc_ptUc (&pts, &GLBT_ori);
    // pts = GLBT_ori;
    sx = GL_Scr_Siz_X;
    sx -= 100;
    sy = 100;
    UT3D_pt_3db (&pts, sx, sy, 0.);
    GL_ptUc_ptSc (&ptu, &pts);
       UT3D_stru_dump (Typ_PT, &ptu, "  ptu: ");
    glBegin (GL_QUADS);
    glVertex3dv ((double*)&ptu);
    ptu.x += 10.;
    glVertex3dv ((double*)&ptu);
    ptu.y += 10.;
    glVertex3dv ((double*)&ptu);
    ptu.x -= 10.;
    glVertex3dv ((double*)&ptu);
    glEnd ();
*/

  //----------------------------------------------------------------
  // place buttons from right to left; 
  // posEnd = Y-value of startPosition of last button (screenCoords).



    sx = GL_Scr_Siz_X;
    sx -= 100;
    sy = 100;
    UT3D_pt_3db (&pts, sx, sy, 0.);
    // GL_ptUc_ptSc (&ptu, &pts);
      // UT3D_stru_dump (Typ_PT, &ptu, " ptu:");
    glRasterPos3dv ((double*)&pts);

  // glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
  // GL_DispTag1 (100, 12, ATT_COL_YELLOW);

  GL_Disp_tag2D (80, 12, GL_GREEN);

  // disp text
  // glColor4f (0.f, 1.f, 0.f, 1.f);    // USELESS! Text always black ..
  GL_Disp_txt2D ("Test");


  //----------------------------------------------------------------
/*
  // test disp vector-rectangle
  UT3D_stru_dump (Typ_PT, &GLBT_ori, "GLBT_ori");
  // GL_DrawSymB (&dl1, ATT_COL_RED, SYM_SQU_B, &GLBT_ori);
  pt1 = GLBT_ori;

  // move the symbol along x and y
  lux = -200. / (GL_Scale * GL_fakt);  // get usercoords
  luy =   50. / (GL_Scale * GL_fakt);
  UT3D_pt_trapt2vc2len (&pt1, &GLBT_ori, GL_eyeY, lux, GL_eyeZ, luy);
    UT3D_stru_dump (Typ_PT,  &pt1, " pt1: ");

  GL_DrawSymV (&dl1, SYM_SQUARE, ATT_COL_RED, &pt1, 1.);
*/


  //----------------------------------------------------------------
  // test display plane-selector
  // GLBT_vcSelStat = 0;
  // GLBT_plnSelStat = 1;
  // GLBT_dispVcPln ();

// glEnable (GL_LIGHTING);


  return 0;

}
Esempio n. 9
0
//================================================================
  int GLBT_but_disp () {
//================================================================
// display all defined 2D-buttons

  int      btNr;
  int      i1, tWidth;
  double   scl, tw, th, sx;
  float    fscl;
  char     *bTx; //cBuf[32];
  Point    ptu;
  GLuint   gli;



  // printf("GLBT_but_disp\n");
  // printf("  GLTXA_sizBX=%d GLTXA_sizBY=%d GL2D_Scale=%f GL_fakt=%f\n",
          // GLTXA_sizBX,GLTXA_sizBY,GL2D_Scale,GL_fakt);


  fscl = 1. / GL2D_Scale;
  scl = GL2D_Scale;

  // get th = tagHeight in pixels
  th = GLTXA_sizBY;

  btNr = I2D_iNr;


  //----------------------------------------------------------------

  // set color for text (must be set before glRasterPos3dv)
  glColor3f (0.f, 0.f, 0.f);


  // get startPosition for buttons
  // get ptu = LR-windowCorner in userCoords
  UT3D_pt_3db (&ptu, GL_Scr_Siz_X - (GLBT_POS_ORI * 2), 2, 0.);
    // UT3D_stru_dump (Typ_PT, &ptu, " ptu:");

  // set GL-rasterPos = ptu
  glRasterPos3dv ((double*)&ptu);

  // sx = half charWidth in pixels
  sx = GLTXA_sizCX / 2; 


  // disp buttons. Startpos is 
  for(i1=0; i1<btNr; ++i1) {

    // get bTx = text
    bTx = I2D_txtTab[i1];

    // get tWidth = total width of tag in pixels
    tWidth = (strlen(bTx) + 1) * GLTXA_sizBX;

    // move GL-rasterPosition to left - tagWidth + 1 char gap
    GL2D_pos_move (-tWidth - GLTXA_sizBX, 0);
    // save the current color & rasterPosition
    GL2D_pos_set ();

    // disp button
    tw = tWidth; // * scl;
    glPixelZoom (1.f, 1.f);
    GL_Disp_tag2D ((int)tw, (int)th, GL_GREEN);

    // move GL-rasterPosition 0.5 char right and 4 pix up
    GL2D_pos_move (sx, 4);

    // display text bTx
    glPixelZoom (fscl, fscl);
    GL_Disp_txt2D (bTx);

    // restore color & rasterPosition
    GL2D_pos_get ();
  }


  return 0;

}
Esempio n. 10
0
// :%s/\(void \)\(gl[A-Z,a-z,0-9]\+\)\(us\)\(v\)( const GLushort \*\(v\) );/template< > inline \1\2\4< Vector3<unsigned short> >	( const Vector3<unsigned short> \5 )	{	\2\3\4(\5);		};/
template< > inline void glRasterPos3v< Vector3r >	( const Vector3r v )		{	glRasterPos3dv((double*)&v);		};
Esempio n. 11
0
M(void, glRasterPos3dv, jobject v) {
	glRasterPos3dv(BUFF(GLdouble, v));
}
Esempio n. 12
0
void HVertex::glCommands(bool select, bool marked, bool no_color){
	// don't render anything, but put a point for selection
	glRasterPos3dv(m_point);
}
Esempio n. 13
0
Python CProfile::AppendTextToProgram(CMachineState *pMachineState, bool finishing_pass)
{
	Python python;

	CTool *pTool = CTool::Find( m_tool_number );
	if (pTool == NULL)
	{
		if(!finishing_pass)wxMessageBox(_T("Cannot generate GCode for profile without a tool assigned"));
		return(python);
	} // End if - then

	if(!finishing_pass || m_profile_params.m_only_finishing_pass)
	{
		python << CDepthOp::AppendTextToProgram(pMachineState);

		if(m_profile_params.m_auto_roll_on || m_profile_params.m_auto_roll_off)
		{
			python << _T("roll_radius = float(");
			python << m_profile_params.m_auto_roll_radius / theApp.m_program->m_units;
			python << _T(")\n");
		}
	}

	if(finishing_pass)
	{
		python << _T("feedrate_hv(") << m_profile_params.m_finishing_h_feed_rate / theApp.m_program->m_units << _T(", ");
		python << m_speed_op_params.m_vertical_feed_rate / theApp.m_program->m_units << _T(")\n");
		python << _T("flush_nc()\n");
		python << _T("offset_extra = 0.0\n");
		python << _T("step_down = ") << m_profile_params.m_finishing_step_down << _T("\n");
	}
	else
	{
		python << _T("offset_extra = ") << m_profile_params.m_offset_extra / theApp.m_program->m_units << _T("\n");
	}

	CProfileParams::eCutMode cut_mode = finishing_pass ? m_profile_params.m_finishing_cut_mode : m_profile_params.m_cut_mode;

#ifdef OP_SKETCHES_AS_CHILDREN
	for(std::list<HeeksObj*>::iterator It = m_objects.begin(); It != m_objects.end(); It++)
	{
		// write a kurve definition
		HeeksObj* object = *It;
		if((object == NULL) || (object->GetType() != SketchType) || (object->GetNumChildren() == 0))continue;
#else
	for (std::list<int>::iterator It = m_sketches.begin(); It != m_sketches.end(); It++)
    {
		HeeksObj* object = heeksCAD->GetIDObject(SketchType, *It);
		if((object == NULL) || (object->GetNumChildren() == 0))continue;
#endif

		HeeksObj* re_ordered_sketch = NULL;
		SketchOrderType sketch_order = heeksCAD->GetSketchOrder(object);
		if(sketch_order == SketchOrderTypeBad)
		{
			re_ordered_sketch = object->MakeACopy();
			heeksCAD->ReOrderSketch(re_ordered_sketch, SketchOrderTypeReOrder);
			object = re_ordered_sketch;
		}

		if(sketch_order == SketchOrderTypeMultipleCurves || sketch_order == SketchOrderHasCircles)
		{
			std::list<HeeksObj*> new_separate_sketches;
			heeksCAD->ExtractSeparateSketches(object, new_separate_sketches, false);
			for(std::list<HeeksObj*>::iterator It = new_separate_sketches.begin(); It != new_separate_sketches.end(); It++)
			{
				HeeksObj* one_curve_sketch = *It;
				python << AppendTextForOneSketch(one_curve_sketch, pMachineState, cut_mode).c_str();
				delete one_curve_sketch;
			}
		}
		else
		{
			python << AppendTextForOneSketch(object, pMachineState, cut_mode).c_str();
		}

		if(re_ordered_sketch)
		{
			delete re_ordered_sketch;
		}
	}

	return python;
} // End AppendTextToProgram() method

static unsigned char cross16[32] = {0x80, 0x01, 0x40, 0x02, 0x20, 0x04, 0x10, 0x08, 0x08, 0x10, 0x04, 0x20, 0x02, 0x40, 0x01, 0x80, 0x01, 0x80, 0x02, 0x40, 0x04, 0x20, 0x08, 0x10, 0x10, 0x08, 0x20, 0x04, 0x40, 0x02, 0x80, 0x01};

void CProfile::glCommands(bool select, bool marked, bool no_color)
{
	CDepthOp::glCommands(select, marked, no_color);

	if(marked && !no_color)
	{
		if(GetNumSketches() == 1)
		{
			// draw roll on point
			if(!m_profile_params.m_auto_roll_on)
			{
				glColor3ub(0, 200, 200);
				glRasterPos3dv(m_profile_params.m_roll_on_point);
				glBitmap(16, 16, 8, 8, 10.0, 0.0, cross16);
			}
			// draw roll off point
			if(!m_profile_params.m_auto_roll_on)
			{
				glColor3ub(255, 128, 0);
				glRasterPos3dv(m_profile_params.m_roll_off_point);
				glBitmap(16, 16, 8, 8, 10.0, 0.0, cross16);
			}
			// draw start point
			if(m_profile_params.m_start_given)
			{
				glColor3ub(128, 0, 255);
				glRasterPos3dv(m_profile_params.m_start);
				glBitmap(16, 16, 8, 8, 10.0, 0.0, cross16);
			}
			// draw end point
			if(m_profile_params.m_end_given)
			{
				glColor3ub(200, 200, 0);
				glRasterPos3dv(m_profile_params.m_end);
				glBitmap(16, 16, 8, 8, 10.0, 0.0, cross16);
			}
		}
	}
}