1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-03 17:56:21 +03:00

0022847: DrawTrSurf: provide interface for configuring visualization properties in axonometric viewer

This commit is contained in:
SSV 2011-12-23 06:18:20 +00:00 committed by bugmaster
parent a33798d859
commit 445f326751
2 changed files with 329 additions and 101 deletions

View File

@ -82,13 +82,19 @@ is
---Purpose: Sets <G> in the variable <Name>. Overwrite the
-- variable if already set.
Set(Name : CString; G : Geometry from Geom);
Set(Name : CString; G : Geometry from Geom;
isSenseMarker : Boolean = Standard_True);
---Purpose: Sets <G> in the variable <Name>. Overwrite the
-- variable if already set.
-- isSenseMarker indicates whether to render the
-- sense glyph (arrow) for curves or not
Set(Name : CString; C : Curve from Geom2d);
Set(Name : CString; C : Curve from Geom2d;
isSenseMarker : Boolean = Standard_True);
---Purpose: Sets <C> in the variable <Name>. Overwrite the
-- variable if already set.
-- isSenseMarker indicates whether to render the
-- sense glyph (arrow) for curves or not
Set(Name : CString; T : Triangulation from Poly);
---Purpose: Sets <T> in the variable <Name>. Overwrite the

View File

@ -43,6 +43,7 @@
#include <gp_Ax2.hxx>
#include <gp_Trsf2d.hxx>
#include <Poly.hxx>
#include <TCollection_AsciiString.hxx>
static Draw_Color PntColor(Draw_rouge);
static Draw_Color CurvColor(Draw_jaune);
@ -63,6 +64,23 @@ static Standard_Integer DrawMode = 0;
static Standard_Integer NbUIsos = 10;
static Standard_Integer NbVIsos = 10;
static TCollection_AsciiString ColorsHint(
"The possible colors are: \n\
white, red, green, blue, cyan,\n\
golden, magenta, brown, orange, pink,\n\
salmon, violet, yellow, darkgreen, coral");
static TCollection_AsciiString MarkersHint(
"The possible markers are: \n\
square, diamond, x, plus, circle, circle_zoom");
//=======================================================================
//function : DrawTrSurf_CurveColor
//purpose : Sets new color for rendering of curves. Returns the
// previous one to keep possibility to restore the initial
// state
//=======================================================================
Standard_EXPORT Draw_Color DrawTrSurf_CurveColor(const Draw_Color col)
{
Draw_Color c = CurvColor;
@ -70,6 +88,34 @@ Standard_EXPORT Draw_Color DrawTrSurf_CurveColor(const Draw_Color col)
return c;
}
//=======================================================================
//function : DrawTrSurf_PointColor
//purpose : Sets new color for rendering of points. Returns the
// previous one to keep possibility to restore the initial
// state
//=======================================================================
Standard_EXPORT Draw_Color DrawTrSurf_PointColor(const Draw_Color col)
{
Draw_Color c = PntColor;
PntColor = col;
return c;
}
//=======================================================================
//function : DrawTrSurf_PointMarker
//purpose : Sets new marker for rendering of points. Returns the
// previous one to keep possibility to restore the initial
// state
//=======================================================================
Standard_EXPORT Draw_MarkerShape DrawTrSurf_PointMarker(const Draw_MarkerShape marker)
{
Draw_MarkerShape prev = PntShape;
PntShape = marker;
return prev;
}
//=======================================================================
//function : GetDrawable
//purpose :
@ -567,7 +613,8 @@ void DrawTrSurf::Set(const Standard_CString Name,
//purpose : Geometry from Geom
//=======================================================================
void DrawTrSurf::Set(const Standard_CString Name,
const Handle(Geom_Geometry)& G)
const Handle(Geom_Geometry)& G,
const Standard_Boolean isSenseMarker)
{
Handle(DrawTrSurf_Drawable) D;
if (!G.IsNull()) {
@ -600,7 +647,7 @@ void DrawTrSurf::Set(const Standard_CString Name,
if (Bez.IsNull() && BS.IsNull()) {
Handle(DrawTrSurf_Curve) DC =
new DrawTrSurf_Curve(C,CurvColor,Discret,Deflection,DrawMode);
new DrawTrSurf_Curve(C,CurvColor,Discret,Deflection,DrawMode,isSenseMarker);
D = DC;
}
}
@ -664,7 +711,8 @@ void DrawTrSurf::Set(const Standard_CString Name,
//purpose : Curve from Geom2d
//=======================================================================
void DrawTrSurf::Set(const Standard_CString Name,
const Handle(Geom2d_Curve)& C)
const Handle(Geom2d_Curve)& C,
const Standard_Boolean isSenseMarker)
{
Handle(DrawTrSurf_Drawable) D;
if (!C.IsNull()) {
@ -694,7 +742,7 @@ void DrawTrSurf::Set(const Standard_CString Name,
if (Bez.IsNull() && BS.IsNull()) {
Handle(DrawTrSurf_Curve2d) DC =
new DrawTrSurf_Curve2d(C,CurvColor,Discret);
new DrawTrSurf_Curve2d(C,CurvColor,Discret,isSenseMarker);
D = DC;
}
}
@ -958,71 +1006,98 @@ Handle(Poly_Polygon2D) DrawTrSurf::GetPolygon2D(Standard_CString& Name)
else
return D->Polygon2D();
}
//=======================================================================
//function : printColor
//purpose :
//=======================================================================
static void printColor(Draw_Interpretor& di, const Draw_Color& theColor)
{
switch ( theColor.ID() )
{
case Draw_blanc: di << "white " << "\n"; break;
case Draw_rouge: di << "red " << "\n"; break;
case Draw_vert: di << "green " << "\n"; break;
case Draw_bleu: di << "blue " << "\n"; break;
case Draw_cyan: di << "cyan " << "\n"; break;
case Draw_or: di << "golden " << "\n"; break;
case Draw_magenta: di << "magenta " << "\n"; break;
case Draw_marron: di << "brown " << "\n"; break;
case Draw_orange: di << "orange " << "\n"; break;
case Draw_rose: di << "pink " << "\n"; break;
case Draw_saumon: di << "salmon " << "\n"; break;
case Draw_violet: di << "violet " << "\n"; break;
case Draw_jaune: di << "yellow " << "\n"; break;
case Draw_kaki: di << "dark-olive green " << "\n"; break;
case Draw_corail: di << "coral " << "\n"; break;
}
}
//=======================================================================
//function : recognizeColor
//purpose :
//=======================================================================
static Draw_Color recognizeColor(const char* theColorStr,
const Draw_Color& theDefaultColor)
{
Draw_Color aResult = theDefaultColor;
if ( !strcasecmp(theColorStr,"white") )
aResult = Draw_blanc;
if ( !strcasecmp(theColorStr, "red") )
aResult = Draw_rouge;
if ( !strcasecmp(theColorStr, "green") )
aResult = Draw_vert;
if ( !strcasecmp(theColorStr, "blue") )
aResult = Draw_bleu;
if ( !strcasecmp(theColorStr, "cyan") )
aResult = Draw_cyan;
if ( !strcasecmp(theColorStr, "golden") )
aResult = Draw_or;
if ( !strcasecmp(theColorStr, "magenta") )
aResult = Draw_magenta;
if ( !strcasecmp(theColorStr, "brown") )
aResult = Draw_marron;
if ( !strcasecmp(theColorStr, "orange") )
aResult = Draw_orange;
if ( !strcasecmp(theColorStr, "pink") )
aResult = Draw_rose;
if ( !strcasecmp(theColorStr, "salmon") )
aResult = Draw_saumon;
if ( !strcasecmp(theColorStr, "violet") )
aResult = Draw_violet;
if ( !strcasecmp(theColorStr, "yellow") )
aResult = Draw_jaune;
if ( !strcasecmp(theColorStr, "darkgreen") )
aResult = Draw_kaki;
if ( !strcasecmp(theColorStr, "coral") )
aResult = Draw_corail;
return aResult;
}
//=======================================================================
//function : setcurvcolor
//purpose :
//=======================================================================
static Standard_Integer setcurvcolor(Draw_Interpretor& di, Standard_Integer n, const char** a)
static Standard_Integer setcurvcolor(Draw_Interpretor& di,
Standard_Integer n, const char** a)
{
Draw_Color col,savecol;
Draw_Color col, savecol;
savecol = DrawTrSurf_CurveColor(Draw_Color(Draw_jaune));
DrawTrSurf_CurveColor(savecol);
if (n < 2) {
switch (savecol.ID()) {
case Draw_blanc: di <<"blanc " << "\n"; break;
case Draw_rouge: di <<"rouge " << "\n"; break;
case Draw_vert: di <<"vert " << "\n"; break;
case Draw_bleu: di <<"bleu " << "\n"; break;
case Draw_cyan: di <<"cyan " << "\n"; break;
case Draw_or: di <<"or " << "\n"; break;
case Draw_magenta: di <<"magenta " << "\n"; break;
case Draw_marron: di <<"marron " << "\n"; break;
case Draw_orange: di <<"orange " << "\n"; break;
case Draw_rose: di <<"rose " << "\n"; break;
case Draw_saumon: di <<"saumon " << "\n"; break;
case Draw_violet: di <<"violet " << "\n"; break;
case Draw_jaune: di <<"jaune " << "\n"; break;
case Draw_kaki: di <<"kaki " << "\n"; break;
case Draw_corail: di <<"corail " << "\n"; break;
}
} else {
col = savecol;
if (!strcasecmp(a[1],"blanc"))
col = Draw_blanc;
if (!strcasecmp(a[1],"rouge"))
col = Draw_rouge;
if (!strcasecmp(a[1],"vert"))
col = Draw_vert;
if (!strcasecmp(a[1],"bleu"))
col = Draw_bleu;
if (!strcasecmp(a[1],"cyan"))
col = Draw_cyan;
if (!strcasecmp(a[1],"or"))
col = Draw_or;
if (!strcasecmp(a[1],"magenta"))
col = Draw_magenta;
if (!strcasecmp(a[1],"marron"))
col = Draw_marron;
if (!strcasecmp(a[1],"orange"))
col = Draw_orange;
if (!strcasecmp(a[1],"rose"))
col = Draw_rose;
if (!strcasecmp(a[1],"saumon"))
col = Draw_saumon;
if (!strcasecmp(a[1],"violet"))
col = Draw_violet;
if (!strcasecmp(a[1],"jaune"))
col = Draw_jaune;
if (!strcasecmp(a[1],"kaki"))
col = Draw_kaki;
if (!strcasecmp(a[1],"corail"))
col = Draw_corail;
if (n < 2)
{
printColor(di, savecol);
}
else {
col = recognizeColor(a[1], savecol);
DrawTrSurf_CurveColor(col);
}
return 0;
}
@ -1032,56 +1107,176 @@ static Standard_Integer setcurvcolor(Draw_Interpretor& di, Standard_Integer n, c
//purpose :
//=======================================================================
static Standard_Integer changecurvcolor(Draw_Interpretor& , Standard_Integer n, const char** a)
static Standard_Integer changecurvcolor(Draw_Interpretor&,
Standard_Integer n, const char** a)
{
Draw_Color col,savecol;
Draw_Color col, savecol;
savecol = DrawTrSurf_CurveColor(Draw_Color(Draw_jaune));
DrawTrSurf_CurveColor(savecol);
if (n < 3) return 1;
if ( n < 3 )
return 1;
col = savecol;
if (!strcasecmp(a[1],"blanc"))
col = Draw_blanc;
if (!strcasecmp(a[1],"rouge"))
col = Draw_rouge;
if (!strcasecmp(a[1],"vert"))
col = Draw_vert;
if (!strcasecmp(a[1],"bleu"))
col = Draw_bleu;
if (!strcasecmp(a[1],"cyan"))
col = Draw_cyan;
if (!strcasecmp(a[1],"or"))
col = Draw_or;
if (!strcasecmp(a[1],"magenta"))
col = Draw_magenta;
if (!strcasecmp(a[1],"marron"))
col = Draw_marron;
if (!strcasecmp(a[1],"orange"))
col = Draw_orange;
if (!strcasecmp(a[1],"rose"))
col = Draw_rose;
if (!strcasecmp(a[1],"saumon"))
col = Draw_saumon;
if (!strcasecmp(a[1],"violet"))
col = Draw_violet;
if (!strcasecmp(a[1],"jaune"))
col = Draw_jaune;
if (!strcasecmp(a[1],"kaki"))
col = Draw_kaki;
if (!strcasecmp(a[1],"corail"))
col = Draw_corail;
col = recognizeColor(a[1], savecol);
Handle(DrawTrSurf_Curve) D =
Handle(DrawTrSurf_Curve)::DownCast(Draw::Get(a[2]));
if (!D.IsNull()) {
Handle(DrawTrSurf_Curve) D = Handle(DrawTrSurf_Curve)::DownCast( Draw::Get(a[2]) );
if ( !D.IsNull() )
{
D->SetColor(col);
Draw::Repaint();
}
return 0;
}
//=======================================================================
//function : setpointcolor
//purpose :
//=======================================================================
static Standard_Integer setpointcolor(Draw_Interpretor& di,
Standard_Integer n, const char** a)
{
Draw_Color col, savecol;
savecol = DrawTrSurf_PointColor(Draw_Color(Draw_jaune));
DrawTrSurf_PointColor(savecol);
if (n < 2)
{
printColor(di, savecol);
}
else {
col = recognizeColor(a[1], savecol);
DrawTrSurf_PointColor(col);
}
return 0;
}
//=======================================================================
//function : changepointcolor
//purpose :
//=======================================================================
static Standard_Integer changepointcolor(Draw_Interpretor&,
Standard_Integer n, const char** a)
{
Draw_Color col, savecol;
savecol = DrawTrSurf_PointColor(Draw_Color(Draw_jaune));
DrawTrSurf_PointColor(savecol);
if ( n < 3 )
return 1;
col = recognizeColor(a[1], savecol);
Handle(DrawTrSurf_Point) D = Handle(DrawTrSurf_Point)::DownCast( Draw::Get(a[2]) );
if ( !D.IsNull() )
{
D->Color(col);
Draw::Repaint();
}
return 0;
}
//=======================================================================
//function : printMarker
//purpose :
//=======================================================================
static void printMarker(Draw_Interpretor& di, const Draw_MarkerShape& theMarker)
{
switch ( theMarker )
{
case Draw_Square: di << "square " << "\n"; break;
case Draw_Losange: di << "diamond " << "\n"; break;
case Draw_X: di << "x " << "\n"; break;
case Draw_Plus: di << "plus " << "\n"; break;
case Draw_Circle: di << "circle " << "\n"; break;
case Draw_CircleZoom: di << "circle_zoom " << "\n"; break;
}
}
//=======================================================================
//function : recognizeMarker
//purpose :
//=======================================================================
static Draw_MarkerShape recognizeMarker(const char* theMarkerStr,
const Draw_MarkerShape& theDefaultMarker)
{
Draw_MarkerShape aResult = theDefaultMarker;
if ( !strcasecmp(theMarkerStr, "square") )
aResult = Draw_Square;
if ( !strcasecmp(theMarkerStr, "diamond") )
aResult = Draw_Losange;
if ( !strcasecmp(theMarkerStr, "x") )
aResult = Draw_X;
if ( !strcasecmp(theMarkerStr, "plus") )
aResult = Draw_Plus;
if ( !strcasecmp(theMarkerStr, "circle") )
aResult = Draw_Circle;
if ( !strcasecmp(theMarkerStr, "circle_zoom") )
aResult = Draw_CircleZoom;
return aResult;
}
//=======================================================================
//function : setpointmarker
//purpose :
//=======================================================================
static Standard_Integer setpointmarker(Draw_Interpretor& di,
Standard_Integer n, const char** a)
{
Draw_MarkerShape mark, savemark;
savemark = DrawTrSurf_PointMarker(Draw_MarkerShape(Draw_Plus));
DrawTrSurf_PointMarker(savemark);
if ( n < 2 )
{
printMarker(di, savemark);
}
else {
mark = recognizeMarker(a[1], savemark);
DrawTrSurf_PointMarker(mark);
}
return 0;
}
//=======================================================================
//function : changepointmarker
//purpose :
//=======================================================================
static Standard_Integer changepointmarker(Draw_Interpretor&,
Standard_Integer n, const char** a)
{
Draw_MarkerShape mark, savemark;
savemark = DrawTrSurf_PointMarker(Draw_MarkerShape(Draw_Plus));
DrawTrSurf_PointMarker(savemark);
if ( n < 3 )
return 1;
mark = recognizeMarker(a[1], savemark);
Handle(DrawTrSurf_Point) D = Handle(DrawTrSurf_Point)::DownCast( Draw::Get(a[2]) );
if ( !D.IsNull() )
{
D->Shape(mark);
Draw::Repaint();
}
return 0;
}
//=======================================================================
//function : BasicCommands
@ -1136,13 +1331,40 @@ void DrawTrSurf::BasicCommands(Draw_Interpretor& theCommands)
"defle [names...] defle",
__FILE__,
draw,g);
theCommands.Add("setcurvcolor","setcurvcolor [color] : set curve color by default, or print the current curve color if no argument (this does not modify the color of pcurve)",
theCommands.Add("setcurvcolor",
TCollection_AsciiString("setcurvcolor [color] : set curve color\
by default, or print the current curve color if no argument (this does not modify\
the color of the curve)\n\n").Cat(ColorsHint).ToCString(),
__FILE__,setcurvcolor,g);
theCommands.Add("changecurvcolor","changecurvcolor color curve: change color of the curve",
theCommands.Add("changecurvcolor",
TCollection_AsciiString("changecurvcolor color curve: change\
color of the curve\n\n").Cat(ColorsHint).ToCString(),
__FILE__,changecurvcolor,g);
theCommands.Add("setpointcolor",
TCollection_AsciiString("setpointcolor [color] : set point color\
by default, or print the current point color if no argument (this does not modify\
the color of the point)\n\n").Cat(ColorsHint).ToCString(),
__FILE__,setpointcolor,g);
theCommands.Add("changepointcolor",
TCollection_AsciiString("changepointcolor color point: change\
color of the point\n\n").Cat(ColorsHint).ToCString(),
__FILE__,changepointcolor,g);
theCommands.Add("setpointmarker",
TCollection_AsciiString("setpointmarker [marker] : set point marker\
by default, or print the current point marker if no argument (this does not modify\
the marker of the point)\n\n").Cat(MarkersHint).ToCString(),
__FILE__,setpointmarker,g);
theCommands.Add("changepointmarker",
TCollection_AsciiString("changepointmarker marker point: change\
marker of the point\n\n").Cat(MarkersHint).ToCString(),
__FILE__,changepointmarker,g);
g = "Geometric tranformations";
theCommands.Add("translate",