From 3672dea7c5c49f3ae8d64fb6e0ba3d8dfd62db0d Mon Sep 17 00:00:00 2001 From: szv <szv@opencascade.com> Date: Thu, 9 Jan 2014 15:49:16 +0400 Subject: [PATCH] 0024523: Colors and layers are lost during loopback test (read-write-read) Command XGetShapeColor corrected to return generic color --- src/XDEDRAW/XDEDRAW_Colors.cxx | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/XDEDRAW/XDEDRAW_Colors.cxx b/src/XDEDRAW/XDEDRAW_Colors.cxx index 60d4ba50c2..7b3c1a94ce 100644 --- a/src/XDEDRAW/XDEDRAW_Colors.cxx +++ b/src/XDEDRAW/XDEDRAW_Colors.cxx @@ -38,7 +38,7 @@ static Standard_Integer setColor (Draw_Interpretor& di, Standard_Integer argc, const char** argv) { - if (argc <6) { + if (argc < 6) { di<<"Use: "<<argv[0]<<" Doc {Label|Shape} R G B [curve|surf]"<<"\n"; return 1; } @@ -51,8 +51,7 @@ static Standard_Integer setColor (Draw_Interpretor& di, Standard_Integer argc, c Quantity_Color Col ( Draw::Atof(argv[3]), Draw::Atof(argv[4]), Draw::Atof(argv[5]), Quantity_TOC_RGB ); Handle(XCAFDoc_ColorTool) myColors = XCAFDoc_DocumentTool::ColorTool(Doc->Main()); - XCAFDoc_ColorType ctype = ( argc <=6 ? XCAFDoc_ColorGen : - argv[6][0] == 's' ? XCAFDoc_ColorSurf : XCAFDoc_ColorCurv ); + const XCAFDoc_ColorType ctype = ( argc <= 6 ? XCAFDoc_ColorGen : ( argv[6][0] == 's' ? XCAFDoc_ColorSurf : XCAFDoc_ColorCurv ) ); if ( !aLabel.IsNull() ) { myColors->SetColor ( aLabel, Col, ctype ); } @@ -88,8 +87,8 @@ static Standard_Integer getColor (Draw_Interpretor& di, Standard_Integer argc, c static Standard_Integer getShapeColor (Draw_Interpretor& di, Standard_Integer argc, const char** argv) { - if (argc!=4) { - di<<"Use: "<<argv[0]<<" Doc Label ColorType(s/c)"<<"\n"; + if (argc < 3) { + di<<"Use: "<<argv[0]<<" Doc Label [curve|surf]"<<"\n"; return 1; } Handle(TDocStd_Document) Doc; @@ -98,15 +97,21 @@ static Standard_Integer getShapeColor (Draw_Interpretor& di, Standard_Integer ar TDF_Label aLabel; TDF_Tool::Label(Doc->GetData(), argv[2], aLabel); + if ( aLabel.IsNull() ) { + di << " no such label in document\n"; + return 1; + } + Handle(XCAFDoc_ColorTool) myColors = XCAFDoc_DocumentTool::ColorTool(Doc->Main()); + const XCAFDoc_ColorType ctype = ( argc <= 3 ? XCAFDoc_ColorGen : ( argv[3][0] == 's' ? XCAFDoc_ColorSurf : XCAFDoc_ColorCurv ) ); + Quantity_Color col; - - if ( !myColors->GetColor(aLabel, argv[3][0] == 's' ? XCAFDoc_ColorSurf : XCAFDoc_ColorCurv, col) ) return 0; - + if ( !myColors->GetColor(aLabel, ctype, col) ) return 0; + TCollection_AsciiString Entry; Entry = col.StringName ( col.Name() ); di << Entry.ToCString(); - + return 0; }