mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +03:00
0023015: TKOpenGl redesign regression in text printing
Changes: - the lost code block for scaling text restored; - the color attributes fixed.
This commit is contained in:
parent
d3d42376d5
commit
34a44cbd3b
@ -3,13 +3,14 @@
|
|||||||
// Author: Sergey ZERCHANINOV
|
// Author: Sergey ZERCHANINOV
|
||||||
// Copyright: OPEN CASCADE 2011
|
// Copyright: OPEN CASCADE 2011
|
||||||
|
|
||||||
|
#include <OpenGl_tgl_all.hxx>
|
||||||
#include <OpenGl_Display.hxx>
|
#include <OpenGl_Display.hxx>
|
||||||
|
|
||||||
#include <TCollection_AsciiString.hxx>
|
#include <TCollection_AsciiString.hxx>
|
||||||
#include <TCollection_HAsciiString.hxx>
|
#include <TCollection_HAsciiString.hxx>
|
||||||
|
|
||||||
#include <OpenGl_FontMgr.hxx>
|
#include <OpenGl_FontMgr.hxx>
|
||||||
|
#include <OpenGl_PrinterContext.hxx>
|
||||||
#include <OpenGl_AspectText.hxx>
|
#include <OpenGl_AspectText.hxx>
|
||||||
|
|
||||||
#ifdef HAVE_GL2PS
|
#ifdef HAVE_GL2PS
|
||||||
@ -554,6 +555,22 @@ void OpenGl_Display::RenderText (const wchar_t* str, const int is2d, const float
|
|||||||
|
|
||||||
if( !aspect->IsZoomable() )
|
if( !aspect->IsZoomable() )
|
||||||
{
|
{
|
||||||
|
#ifdef WNT
|
||||||
|
// if the context has assigned printer context, use it's parameters
|
||||||
|
OpenGl_PrinterContext* aPrinterContext =
|
||||||
|
OpenGl_PrinterContext::GetPrinterContext( GET_GL_CONTEXT() );
|
||||||
|
if( aPrinterContext )
|
||||||
|
{
|
||||||
|
// get printing scaling in x and y dimensions
|
||||||
|
GLfloat aTextScalex = 1, aTextScaley = 1;
|
||||||
|
aPrinterContext->GetScale( aTextScalex, aTextScaley );
|
||||||
|
|
||||||
|
// text should be scaled in all directions with same
|
||||||
|
// factor to save its proportions, so use height (y) scaling
|
||||||
|
// as it is better for keeping text/3d graphics proportions
|
||||||
|
glScalef( aTextScaley, aTextScaley, aTextScaley );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
glScaled( h, h, h );
|
glScaled( h, h, h );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1173,6 +1173,12 @@ D = -[Px,Py,Pz] dot |Nx|
|
|||||||
if (!myGraduatedTrihedron.IsNull())
|
if (!myGraduatedTrihedron.IsNull())
|
||||||
myGraduatedTrihedron->Render(AWorkspace);
|
myGraduatedTrihedron->Render(AWorkspace);
|
||||||
|
|
||||||
|
// The applied aspects should be reset to make it possible to
|
||||||
|
// update gl state and bring it into line with currently set
|
||||||
|
// aspects by reapplying them. Reset should be done, because
|
||||||
|
// the glPopAttrib() will return original gl state while the
|
||||||
|
// internal TKOpenGl state stills unchanged.
|
||||||
|
AWorkspace->ResetAppliedAspect();
|
||||||
glPopAttrib(); // GL_FOG_BIT | GL_LIGHTING_BIT | GL_ENABLE_BIT
|
glPopAttrib(); // GL_FOG_BIT | GL_LIGHTING_BIT | GL_ENABLE_BIT
|
||||||
|
|
||||||
// Restore face culling
|
// Restore face culling
|
||||||
|
@ -146,6 +146,9 @@ public:
|
|||||||
const OpenGl_AspectMarker* AspectMarker (const Standard_Boolean theWithApply);
|
const OpenGl_AspectMarker* AspectMarker (const Standard_Boolean theWithApply);
|
||||||
const OpenGl_AspectText* AspectText (const Standard_Boolean theWithApply);
|
const OpenGl_AspectText* AspectText (const Standard_Boolean theWithApply);
|
||||||
|
|
||||||
|
//! Clear the applied aspect state.
|
||||||
|
void ResetAppliedAspect();
|
||||||
|
|
||||||
//// RELATED TO FONTS ////
|
//// RELATED TO FONTS ////
|
||||||
|
|
||||||
int FindFont (const char* theFontName,
|
int FindFont (const char* theFontName,
|
||||||
|
@ -623,3 +623,17 @@ const OpenGl_AspectText * OpenGl_Workspace::AspectText(const Standard_Boolean Wi
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : ResetAppliedAspect
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void OpenGl_Workspace::ResetAppliedAspect()
|
||||||
|
{
|
||||||
|
AspectLine_applied = NULL;
|
||||||
|
AspectFace_applied = NULL;
|
||||||
|
AspectMarker_applied = NULL;
|
||||||
|
AspectText_applied = NULL;
|
||||||
|
TextParam_applied = NULL;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user