mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
Corrected text alignment
This commit is contained in:
@@ -425,8 +425,8 @@ void AIS_Dimension::getLabelSizes (const TCollection_ExtendedString& theLabel,
|
|||||||
theSymbolWidth = 0;
|
theSymbolWidth = 0;
|
||||||
theSymbolHeight = 0;
|
theSymbolHeight = 0;
|
||||||
|
|
||||||
|
const Handle(Prs3d_TextAspect)& aTextAspect = myDrawer->DimensionAspect()->TextAspect();
|
||||||
Handle(Graphic3d_AspectText3d) anAspectText = myDrawer->TextAspect()->Aspect();
|
const Handle(Graphic3d_AspectText3d)& anAspectText = aTextAspect->Aspect();
|
||||||
Quantity_Color aColor;
|
Quantity_Color aColor;
|
||||||
Standard_CString aFontName;
|
Standard_CString aFontName;
|
||||||
Standard_Real anExpFactor, aSpace;
|
Standard_Real anExpFactor, aSpace;
|
||||||
@@ -434,7 +434,7 @@ void AIS_Dimension::getLabelSizes (const TCollection_ExtendedString& theLabel,
|
|||||||
|
|
||||||
// Initialize font with specific settings.
|
// Initialize font with specific settings.
|
||||||
Font_FTFont aFont;
|
Font_FTFont aFont;
|
||||||
aFont.Init (aFontName, anAspectText->GetTextFontAspect(), myDrawer->TextAspect()->Height(), 96);
|
aFont.Init (aFontName, anAspectText->GetTextFontAspect(), aTextAspect->Height(), 96);
|
||||||
|
|
||||||
Font_FTFont::Rect aBndBox;
|
Font_FTFont::Rect aBndBox;
|
||||||
|
|
||||||
@@ -542,7 +542,7 @@ void AIS_Dimension::DrawText (const Handle(Prs3d_Presentation)& thePresentation,
|
|||||||
Standard_Real aSymbolWidth = 0.0;
|
Standard_Real aSymbolWidth = 0.0;
|
||||||
Standard_Real aSymbolHeight = 0.0;
|
Standard_Real aSymbolHeight = 0.0;
|
||||||
getLabelSizes (theText, aWidth, aHeight, aSymbolWidth, aSymbolHeight);
|
getLabelSizes (theText, aWidth, aHeight, aSymbolWidth, aSymbolHeight);
|
||||||
|
aWidth += aSymbolWidth;
|
||||||
// Compute label offsets
|
// Compute label offsets
|
||||||
Standard_Real aMarginSize = aFontHeight * THE_3D_TEXT_MARGIN;
|
Standard_Real aMarginSize = aFontHeight * THE_3D_TEXT_MARGIN;
|
||||||
Standard_Real aCenterHOffset = 0.0;
|
Standard_Real aCenterHOffset = 0.0;
|
||||||
@@ -575,6 +575,7 @@ void AIS_Dimension::DrawText (const Handle(Prs3d_Presentation)& thePresentation,
|
|||||||
case LabelPosition_Right : aCenterHOffset = aWidth / 2.0 + aMarginSize; break;
|
case LabelPosition_Right : aCenterHOffset = aWidth / 2.0 + aMarginSize; break;
|
||||||
case LabelPosition_Left : aCenterHOffset = -aWidth / 2.0 - aMarginSize; break;
|
case LabelPosition_Left : aCenterHOffset = -aWidth / 2.0 - aMarginSize; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (aVLabelPos)
|
switch (aVLabelPos)
|
||||||
{
|
{
|
||||||
case LabelPosition_FirstLine:
|
case LabelPosition_FirstLine:
|
||||||
@@ -582,6 +583,7 @@ void AIS_Dimension::DrawText (const Handle(Prs3d_Presentation)& thePresentation,
|
|||||||
if (myTypeOfLabel == TOL_Text && aHeight > aHeightOfLine)
|
if (myTypeOfLabel == TOL_Text && aHeight > aHeightOfLine)
|
||||||
{
|
{
|
||||||
aCenterVOffset = aHeight / 2.0 - aHeightOfLine;
|
aCenterVOffset = aHeight / 2.0 - aHeightOfLine;
|
||||||
|
aSymbolVOffset = aCenterVOffset - aHeightOfLine / 2.0 + aMarginSize;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -590,6 +592,7 @@ void AIS_Dimension::DrawText (const Handle(Prs3d_Presentation)& thePresentation,
|
|||||||
if (myTypeOfLabel == TOL_Text && aHeight > aHeightOfLine)
|
if (myTypeOfLabel == TOL_Text && aHeight > aHeightOfLine)
|
||||||
{
|
{
|
||||||
aCenterVOffset = aHeightOfLine - aHeight / 2.0 ;
|
aCenterVOffset = aHeightOfLine - aHeight / 2.0 ;
|
||||||
|
aSymbolVOffset = aCenterVOffset - aHeight + aHeightOfLine / 2.0 - aMarginSize;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -618,7 +621,7 @@ void AIS_Dimension::DrawText (const Handle(Prs3d_Presentation)& thePresentation,
|
|||||||
gp_Dir aTextDir = (aHLabelPos == LabelPosition_Left ? -theTextDir : theTextDir);
|
gp_Dir aTextDir = (aHLabelPos == LabelPosition_Left ? -theTextDir : theTextDir);
|
||||||
|
|
||||||
// Compute shape offset transformation
|
// Compute shape offset transformation
|
||||||
Standard_Real aShapeHOffset = aCenterHOffset - aWidth / 2.0 /*+ aSymbolWidth*/;
|
Standard_Real aShapeHOffset = aCenterHOffset - aWidth / 2.0 + aSymbolWidth / 2.0;
|
||||||
Standard_Real aShapeVOffset = aCenterVOffset - aHeight / 2.0;
|
Standard_Real aShapeVOffset = aCenterVOffset - aHeight / 2.0;
|
||||||
|
|
||||||
// center shape in its bounding box (suppress border spacing added by FT_Font)
|
// center shape in its bounding box (suppress border spacing added by FT_Font)
|
||||||
@@ -643,19 +646,23 @@ void AIS_Dimension::DrawText (const Handle(Prs3d_Presentation)& thePresentation,
|
|||||||
aTextPlaneTrsf.SetTransformation (aTextCoordSystem, gp_Ax3 (gp::XOY()));
|
aTextPlaneTrsf.SetTransformation (aTextCoordSystem, gp_Ax3 (gp::XOY()));
|
||||||
aTextShape.Move (aTextPlaneTrsf);
|
aTextShape.Move (aTextPlaneTrsf);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!aSymbolShape.IsNull())
|
if (!aSymbolShape.IsNull())
|
||||||
{
|
{
|
||||||
|
aSymbolVOffset += aYalign - aHeight / 2.0;
|
||||||
|
|
||||||
// Modify transformation for a special symbol relative! to the main text
|
// Modify transformation for a special symbol relative! to the main text
|
||||||
anOffsetTrsf.SetTranslation (gp::Origin(), gp_Pnt (aShapeHOffset - aSymbolWidth, aSymbolVOffset - aHeight / 2.0 + aYalign, 0.0));
|
anOffsetTrsf.SetTranslation (gp::Origin(), gp_Pnt (aShapeHOffset - aSymbolWidth, aSymbolVOffset, 0.0));
|
||||||
aSymbolShape.Move (anOffsetTrsf);
|
aSymbolShape.Move (anOffsetTrsf);
|
||||||
aSymbolShape.Move (aTextPlaneTrsf);
|
aSymbolShape.Move (aTextPlaneTrsf);
|
||||||
}
|
}
|
||||||
|
|
||||||
// set text flipping anchors
|
|
||||||
|
// Set text flipping anchors
|
||||||
gp_Trsf aCenterOffsetTrsf;
|
gp_Trsf aCenterOffsetTrsf;
|
||||||
gp_Pnt aCenterOffset (aCenterHOffset, aCenterVOffset, 0.0);
|
gp_Pnt aCenterOffset (aCenterHOffset, aCenterVOffset, 0.0);
|
||||||
aCenterOffsetTrsf.SetTranslation (gp::Origin(), aCenterOffset);
|
aCenterOffsetTrsf.SetTranslation (gp::Origin(), aCenterOffset);
|
||||||
|
|
||||||
gp_Pnt aCenterOfLabel (gp::Origin());
|
gp_Pnt aCenterOfLabel (gp::Origin());
|
||||||
aCenterOfLabel.Transform (aCenterOffsetTrsf);
|
aCenterOfLabel.Transform (aCenterOffsetTrsf);
|
||||||
aCenterOfLabel.Transform (aTextPlaneTrsf);
|
aCenterOfLabel.Transform (aTextPlaneTrsf);
|
||||||
@@ -692,7 +699,7 @@ void AIS_Dimension::DrawText (const Handle(Prs3d_Presentation)& thePresentation,
|
|||||||
|
|
||||||
mySelectionGeom.TextPos = aCenterOfLabel;
|
mySelectionGeom.TextPos = aCenterOfLabel;
|
||||||
mySelectionGeom.TextDir = aTextDir;
|
mySelectionGeom.TextDir = aTextDir;
|
||||||
mySelectionGeom.TextWidth = aWidth + aSymbolWidth + aMarginSize * 2.0;
|
mySelectionGeom.TextWidth = aWidth + aMarginSize * 2.0;
|
||||||
mySelectionGeom.TextHeight = aHeight + aSymbolHeight;
|
mySelectionGeom.TextHeight = aHeight + aSymbolHeight;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -1203,7 +1210,7 @@ void AIS_Dimension::DrawLinearDimension (const Handle(Prs3d_Presentation)& thePr
|
|||||||
Prs3d_Root::NewGroup (thePresentation);
|
Prs3d_Root::NewGroup (thePresentation);
|
||||||
|
|
||||||
DrawArrow (thePresentation, aSecondArrowBegin, aSecondArrowDir);
|
DrawArrow (thePresentation, aSecondArrowBegin, aSecondArrowDir);
|
||||||
if (!theIsOneSide)
|
if (!theIsOneSide && theToDrawDimensionLine)
|
||||||
{
|
{
|
||||||
DrawArrow (thePresentation, aFirstArrowBegin, aFirstArrowDir);
|
DrawArrow (thePresentation, aFirstArrowBegin, aFirstArrowDir);
|
||||||
}
|
}
|
||||||
@@ -1216,9 +1223,12 @@ void AIS_Dimension::DrawLinearDimension (const Handle(Prs3d_Presentation)& thePr
|
|||||||
// add extension lines for external arrows
|
// add extension lines for external arrows
|
||||||
Prs3d_Root::NewGroup (thePresentation);
|
Prs3d_Root::NewGroup (thePresentation);
|
||||||
|
|
||||||
DrawExtension (thePresentation, aDimensionAspect->ArrowTailSize(),
|
if (theToDrawDimensionLine)
|
||||||
aFirstArrowEnd, aFirstExtensionDir,
|
{
|
||||||
THE_EMPTY_LABEL, 0.0, theMode, LabelPosition_None);
|
DrawExtension (thePresentation, aDimensionAspect->ArrowTailSize(),
|
||||||
|
aFirstArrowEnd, aFirstExtensionDir,
|
||||||
|
THE_EMPTY_LABEL, 0.0, theMode, LabelPosition_None);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@@ -17,7 +17,7 @@ vcircle aCircle aCircleP1 aCircleP2 aCircleP3 0
|
|||||||
|
|
||||||
#Check all text and arrow positions
|
#Check all text and arrow positions
|
||||||
vdimension aDim1 -radius -shapes aCircle -text 3d -plane zox -label hfit -arrow external -hidedimline
|
vdimension aDim1 -radius -shapes aCircle -text 3d -plane zox -label hfit -arrow external -hidedimline
|
||||||
vdimension aDim2 -radius -shapes aCircle -circleparam 20 -text 3d -plane zox -label vcenter -arrow external -hidedimline
|
vdimension aDim2 -radius -shapes aCircle -circleparam 20 -text 3d -plane zox -label right -arrow external -hidedimline
|
||||||
vdimension aDim3 -radius -shapes aCircle -circleparam 40 -text 3d -plane zox -label vcenter -arrow internal -hidedimline
|
vdimension aDim3 -radius -shapes aCircle -circleparam 40 -text 3d -plane zox -label vcenter -arrow internal -hidedimline
|
||||||
vdimension aDim3 -radius -shapes aCircle -circleparam 40 -text 3d -plane zox -label hfit -arrow internal -hidedimline
|
vdimension aDim3 -radius -shapes aCircle -circleparam 40 -text 3d -plane zox -label hfit -arrow internal -hidedimline
|
||||||
vfit
|
vfit
|
||||||
|
@@ -16,9 +16,11 @@ vpoint aCircleP3 120 0 60
|
|||||||
vcircle aCircle aCircleP1 aCircleP2 aCircleP3 0
|
vcircle aCircle aCircleP1 aCircleP2 aCircleP3 0
|
||||||
|
|
||||||
#Check all text and arrow positions
|
#Check all text and arrow positions
|
||||||
vdimension aDim1 -radius -shapes aCircle -circleparam 20 -text 3d -label right -arrow external -hidedimline -valuetext "+2.0\n-3.0\nThickness" -aligntext 1.0 0.0 0.0 -segment 15 -label left firstline
|
vdimension aDim1 -radius -shapes aCircle -circleparam 10 -text 3d -label right -arrow external -hidedimline -valuetext "+2.0\n-3.0\nThickness" -aligntext 1.0 0.0 0.0 -segment 15 -label left firstline
|
||||||
vdimension aDim2 -diameter -shapes aCircle -circleparam 5 -text 3d -label right -arrow external -hidedimline -valuetext "+2.0\n-3.0" -aligntext 1.0 0.0 0.0 -segment 15 -label left firstline
|
vdimension aDim2 -diameter -shapes aCircle -circleparam 5 -text 3d -label right -arrow external -hidedimline -valuetext "+4.0\n -6.0" -aligntext 1.0 0.0 0.0 -segment 15 -label left firstline
|
||||||
|
vdimension aDim3 -radius -shapes aCircle -circleparam 20 -text 3d -plane zox -label right -arrow external -hidedimline
|
||||||
|
vdimension aDim4 -radius -shapes aCircle -circleparam 40 -text 3d -plane zox -label vcenter -arrow internal -hidedimline
|
||||||
|
vdimparam aDim3 -text 6
|
||||||
vfit
|
vfit
|
||||||
|
|
||||||
#finalize and dump
|
#finalize and dump
|
||||||
|
Reference in New Issue
Block a user