-// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
{
Handle(Prs3d_TextAspect) anAsp = myDrawer->TextAspect();
Font_FTFont aFont;
+#if OCC_VERSION_LARGE >= 0x070400FF
+ Font_FTFontParams aFontParams;
+ aFontParams.PointSize = (unsigned int)anAsp->Height();
+ aFontParams.Resolution = GetContext()->CurrentViewer()->DefaultRenderingParams().Resolution;
+ if ( aFont.FindAndInit(anAsp->Aspect()->Font().ToCString(),
+ anAsp->Aspect()->GetTextFontAspect(),
+ aFontParams) )
+#else
unsigned int aResolution = GetContext()->CurrentViewer()->DefaultRenderingParams().Resolution;
if ( aFont.Init( anAsp->Aspect()->Font().ToCString(),
anAsp->Aspect()->GetTextFontAspect(),
- (unsigned int)anAsp->Height(),
- aResolution ) )
+ (unsigned int)anAsp->Height(),
+ aResolution ) ) // deprecated API, to be removed (see above)
+#endif
{
const NCollection_String aText( (Standard_Utf16Char* )myText.ToExtString() );
const Font_Rect aFontRect = aFont.BoundingBox( aText, Graphic3d_HTA_CENTER, Graphic3d_VTA_CENTER );
myTextDPI( 0 )
{
// graphical resources for drawing text and underline
+#if OCC_VERSION_LARGE >= 0x07040000
+ myTextParams = new Graphic3d_Text( theTextHeight );
+ myTextParams->SetText( myText.ToCString() );
+ myTextParams->SetHorizontalAlignment ( Graphic3d_HTA_CENTER );
+ myTextParams->SetVerticalAlignment ( Graphic3d_VTA_CENTER );
+ myTextDraw = new OpenGl_Text( myTextParams );
+#else
myTextParams.Height = theTextHeight;
myTextParams.HAlign = Graphic3d_HTA_CENTER;
myTextParams.VAlign = Graphic3d_VTA_CENTER;
myTextDraw = new OpenGl_Text( myText.ToCString(), OpenGl_Vec3(), myTextParams );
+#endif
myTextLineDraw = new OpenGl_PrimitiveArray( theDriver );
// graphical resources for drawing extension line and marker
const unsigned int aDPI = theWorkspace->View()->RenderingParams().Resolution;
if (myTextDPI != aDPI)
{
-#if OCC_VERSION_LARGE <= 0x07030000
- const OpenGl_AspectText* anAspect = theWorkspace->AspectText();
-#else
const OpenGl_Aspects* anAspect = theWorkspace->Aspects();
-#endif
// getting string size will also initialize font library
+#if OCC_VERSION_LARGE >= 0x07070000
+ Font_Hinting aFH = theWorkspace->View()->RenderingParams().FontHinting;
+ myTextDraw->StringSize( aContext,
+ myText, *anAspect, myTextParams->Height(), aDPI, aFH,
+ myTextSize.x, myTextSize.a, myTextSize.d );
+#else
myTextDraw->StringSize( aContext,
- myText, *anAspect, myTextParams, aDPI,
+ myText, *anAspect, myTextParams->Height(), aDPI,
myTextSize.x, myTextSize.a, myTextSize.d );
+#endif
myTextDPI = aDPI;
myTextSize.y = myTextSize.a - myTextSize.d;
- switch (myTextParams.HAlign)
+
+ switch ( myTextParams->HorizontalAlignment() )
{
case Graphic3d_HTA_LEFT: myTextUnderline.x() = 0.f; break;
case Graphic3d_HTA_CENTER: myTextUnderline.x() = -myTextSize.x / 2.f; break;
default:
break;
}
- switch (myTextParams.VAlign)
+
+ switch ( myTextParams->VerticalAlignment() )
{
case Graphic3d_VTA_TOPFIRSTLINE:
case Graphic3d_VTA_TOP: myTextUnderline.y() = -myTextSize.y; break;
{
Handle(Graphic3d_PresentationAttributes) empty;
theWorkspace->SetHighlightStyle(empty);
-#if OCC_VERSION_LARGE <= 0x07030000
- theWorkspace->ApplyAspectLine();
-#else
theWorkspace->ApplyAspects();
-#endif
}
GLint myOldDepthMode = 0;
// to avoid jittering when dragging text
myTextDraw->SetPosition( OpenGl_Vec3( static_cast<float>( myAISObject->myPosition.X() ),
static_cast<float>( myAISObject->myPosition.Y() ),
- static_cast<float>( myAISObject->myPosition.Z() ) ) );
+ static_cast<float>( myAISObject->myPosition.Z() ) ) ); // todo: deprecated OCCT API
}
myTextDraw->Render( theWorkspace );
// ------------------------------------------------------------
OpenGl_Vec4 aCenter (0.f, 0.f, 0.f, 1.f);
+# if OCC_VERSION_LARGE >= 0x07040000
+ switch ( myTextParams->HorizontalAlignment() )
+#else
switch (myTextParams.HAlign)
+#endif
{
case Graphic3d_HTA_LEFT: aCenter.x() = myTextSize.x / 2.f; break;
case Graphic3d_HTA_CENTER: aCenter.x() = 0.f; break;
case Graphic3d_HTA_RIGHT: aCenter.x() = -myTextSize.x / 2.f; break;
default: break;
}
+# if OCC_VERSION_LARGE >= 0x07040000
+ switch ( myTextParams->VerticalAlignment() )
+#else
switch (myTextParams.VAlign)
+#endif
{
case Graphic3d_VTA_TOPFIRSTLINE:
case Graphic3d_VTA_TOP: aCenter.y() = -myTextSize.y / 2.f; break;