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; }
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(); }
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) ); }
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(); } } }
///////////////////////////////////////////////////////// // Render // void GEMglRasterPos3dv :: render(GemState *state) { glRasterPos3dv (v); }
//================================================================ 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; }
//================================================================ 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; }
//================================================================ 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; }
// :%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); };
M(void, glRasterPos3dv, jobject v) { glRasterPos3dv(BUFF(GLdouble, v)); }
void HVertex::glCommands(bool select, bool marked, bool no_color){ // don't render anything, but put a point for selection glRasterPos3dv(m_point); }
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); } } } }