0031709: Draw Harness - move methods ViewerTest::ParseOnOff()/ParseColor() to package...
[occt.git] / src / Draw / Draw.hxx
index e718316..2af5196 100644 (file)
 #ifndef _Draw_HeaderFile
 #define _Draw_HeaderFile
 
-#include <Standard.hxx>
-#include <Standard_DefineAlloc.hxx>
+#include <Draw_Interpretor.hxx>
+#include <Quantity_ColorRGBA.hxx>
 #include <Standard_Handle.hxx>
 
-#include <Draw_Interpretor.hxx>
-#include <Standard_Boolean.hxx>
-#include <Standard_CString.hxx>
-#include <Standard_Real.hxx>
-#include <Standard_Integer.hxx>
-class TCollection_AsciiString;
-class Draw_Drawable3D;
-class Draw_ProgressIndicator;
 class Draw_Drawable3D;
-class Draw_Drawable2D;
-class Draw_Color;
-class Draw_Display;
-class Draw_Segment3D;
-class Draw_Segment2D;
-class Draw_Marker3D;
-class Draw_Marker2D;
-class Draw_Axis3D;
-class Draw_Axis2D;
-class Draw_Text3D;
-class Draw_Text2D;
-class Draw_Circle3D;
-class Draw_Circle2D;
-class Draw_Number;
-class Draw_Chronometer;
-class Draw_Grid;
-class Draw_Box;
 class Draw_ProgressIndicator;
-class Draw_Printer;
-
 
 //! MAQUETTE DESSIN MODELISATION
 class Draw 
@@ -58,9 +31,22 @@ public:
 
   DEFINE_STANDARD_ALLOC
 
-  
-  Standard_EXPORT static void Load (Draw_Interpretor& theDI, const TCollection_AsciiString& theKey, const TCollection_AsciiString& theResourceFileName, TCollection_AsciiString& theDefaultsDirectory, TCollection_AsciiString& theUserDefaultsDirectory, const Standard_Boolean Verbose = Standard_False);
-  
+  //! (Re)Load a Draw Harness plugin.
+  //! @param theDI  [in] [out] Tcl interpretor to append loaded commands
+  //! @param theKey [in] plugin code name to be resolved in resource file
+  //! @param theResourceFileName   [in] description file name
+  //! @param theDefaultsDirectory  [in] default folder for looking description file
+  //! @param theUserDefaultsDirectory [in] user folder for looking description file
+  //! @param theIsVerbose [in] print verbose messages
+  Standard_EXPORT static void Load (Draw_Interpretor& theDI,
+                                    const TCollection_AsciiString& theKey,
+                                    const TCollection_AsciiString& theResourceFileName,
+                                    const TCollection_AsciiString& theDefaultsDirectory,
+                                    const TCollection_AsciiString& theUserDefaultsDirectory,
+                                    const Standard_Boolean theIsVerbose = Standard_False);
+
+public: //! @name Tcl variables management tools
+
   //! Sets a variable. Display it if <Disp> is true.
   Standard_EXPORT static void Set (const Standard_CString Name, const Handle(Draw_Drawable3D)& D, const Standard_Boolean Disp);
   
@@ -91,15 +77,17 @@ public:
   
   //! Sets a TCL sting variable
   Standard_EXPORT static void Set (const Standard_CString Name, const Standard_CString val);
+
+public: //! @name argument parsing tools
   
   //! Converts numeric expression, that can involve DRAW
   //! variables, to real value.
   Standard_EXPORT static Standard_Real Atof (const Standard_CString Name);
 
   //! Converts the numeric expression, that can involve DRAW variables, to a real value
-  //! @param theExpressionString the strings that containes the expression involving DRAW variables to be parsed
+  //! @param theExpressionString the strings that contains the expression involving DRAW variables to be parsed
   //! @param theParsedRealValue a real value that is a result of parsing
-  //! @return true if parsing was successfull, or false otherwise
+  //! @return true if parsing was successful, or false otherwise
   Standard_EXPORT static bool ParseReal (const Standard_CString theExpressionString, Standard_Real& theParsedRealValue);
 
   //! Converts numeric expression, that can involve DRAW
@@ -108,12 +96,91 @@ public:
   Standard_EXPORT static Standard_Integer Atoi (const Standard_CString Name);
 
   //! Converts the numeric expression, that can involve DRAW variables, to an integer value
-  //! @param theExpressionString the strings that containes the expression involving DRAW variables to be parsed
+  //! @param theExpressionString the strings that contains the expression involving DRAW variables to be parsed
   //! @param theParsedIntegerValue an integer value that is a result of parsing
-  //! @return true if parsing was successfull, or false otherwise
+  //! @return true if parsing was successful, or false otherwise
   Standard_EXPORT static bool ParseInteger (const Standard_CString theExpressionString,
                                             Standard_Integer&      theParsedIntegerValue);
 
+  //! Parses RGB(A) color argument(s) specified within theArgVec[0], theArgVec[1], theArgVec[2] and theArgVec[3].
+  //! Handles either color specified by name (single argument) or by RGB(A) components (3-4 arguments) in range 0..1.
+  //! The result is stored in theColor on success.
+  //!
+  //! Usage code sample for command argument in form "cmd -color {ColorName|R G B [A]|ColorHex}":
+  //! @code
+  //!   for (int anArgIter = 1; anArgIter < theNbArgs; ++anArgIter)
+  //!   {
+  //!     TCollection_AsciiString aParam (theArgVec[anArgIter]);
+  //!     aParam.LowerCase();
+  //!     if (aParam == "-color")
+  //!     {
+  //!       Quantity_ColorRGBA aColor;
+  //!       Standard_Integer aNbParsed = Draw::ParseColor (theArgNb  - anArgIter - 1,
+  //!                                                      theArgVec + anArgIter + 1, aColor);
+  //!       anArgIter += aNbParsed;
+  //!       if (aNbParsed == 0) { std::cerr << "Syntax error at '" << aParam << "'"; return 1; }
+  //!       // process color
+  //!     }
+  //!   }
+  //! @endcode
+  //!
+  //! @param theArgNb  [in] number of available arguments in theArgVec (array limits)
+  //! @param theArgVec [in] argument list
+  //! @param theColor [out] retrieved color
+  //! @return number of handled arguments (1, 2, 3 or 4) or 0 on syntax error
+  static Standard_Integer ParseColor (const Standard_Integer   theArgNb,
+                                      const char* const* const theArgVec,
+                                      Quantity_ColorRGBA&      theColor)
+  {
+    return parseColor (theArgNb, theArgVec, theColor, true);
+  }
+
+  //! Parses RGB color argument(s).
+  //! @param theArgNb  [in] number of available arguments in theArgVec (array limits)
+  //! @param theArgVec [in] argument list
+  //! @param theColor [out] retrieved color
+  //! @return number of handled arguments (1 or 3) or 0 on syntax error.
+  static Standard_Integer ParseColor (const Standard_Integer   theArgNb,
+                                      const char* const* const theArgVec,
+                                      Quantity_Color&          theColor)
+  {
+    Quantity_ColorRGBA anRgba;
+    const Standard_Integer aNbParsed = parseColor (theArgNb, theArgVec, anRgba, false);
+    if (aNbParsed != 0)
+    {
+      theColor = anRgba.GetRGB();
+    }
+    return aNbParsed;
+  }
+
+  //! Parses boolean argument. Handles either flag specified by 0|1 or on|off.
+  //!
+  //! Usage code sample for command argument in form "cmd -usefeature [on|off|1|0]=on":
+  //! @code
+  //!   for (int anArgIter = 1; anArgIter < theNbArgs; ++anArgIter)
+  //!   {
+  //!     TCollection_AsciiString aParam (theArgVec[anArgIter]);
+  //!     aParam.LowerCase();
+  //!     if (aParam == "-usefeature")
+  //!     {
+  //!       bool toUseFeature = true;
+  //!       if (anArgIter + 1 < theNbArgs && Draw::ParseOnOff (theArgVec[anArgIter + 1]))
+  //!       {
+  //!         ++anArgIter;
+  //!       }
+  //!       // process feature
+  //!     }
+  //!   }
+  //! @endcode
+  //!
+  //! @param theArg   [in] argument value
+  //! @param theIsOn [out] decoded Boolean flag
+  //! @return FALSE on syntax error
+  Standard_EXPORT static Standard_Boolean ParseOnOff (Standard_CString  theArg,
+                                                      Standard_Boolean& theIsOn);
+
+public:
+
   //! Returns last graphic selection description.
   Standard_EXPORT static void LastPick (Standard_Integer& view, Standard_Integer& X, Standard_Integer& Y, Standard_Integer& button);
   
@@ -125,7 +192,9 @@ public:
   
   //! gets progress indicator
   Standard_EXPORT static Handle(Draw_ProgressIndicator) GetProgressBar();
-  
+
+public: //! @name methods loading standard command sets
+
   //! Defines all Draw commands
   Standard_EXPORT static void Commands (Draw_Interpretor& I);
   
@@ -152,35 +221,16 @@ protected:
   Standard_EXPORT static Handle(Draw_Drawable3D) getDrawable (Standard_CString& theName,
                                                               Standard_Boolean theToAllowPick);
 
-private:
-
-friend class Draw_Drawable3D;
-friend class Draw_Drawable2D;
-friend class Draw_Color;
-friend class Draw_Display;
-friend class Draw_Segment3D;
-friend class Draw_Segment2D;
-friend class Draw_Marker3D;
-friend class Draw_Marker2D;
-friend class Draw_Axis3D;
-friend class Draw_Axis2D;
-friend class Draw_Text3D;
-friend class Draw_Text2D;
-friend class Draw_Circle3D;
-friend class Draw_Circle2D;
-friend class Draw_Number;
-friend class Draw_Chronometer;
-friend class Draw_Grid;
-friend class Draw_Box;
-friend class Draw_ProgressIndicator;
-friend class Draw_Printer;
+  //! Parses RGB(A) color argument(s) specified within theArgVec[0], theArgVec[1], theArgVec[2] and theArgVec[3].
+  //! Handles either color specified by name (single argument)
+  //! or by RGB(A) components (3-4 arguments) in range 0..1.
+  //! The result is stored in theColor on success.
+  //! Returns number of handled arguments (1, 2, 3 or 4) or 0 on syntax error.
+  Standard_EXPORT static Standard_Integer parseColor (Standard_Integer    theArgNb,
+                                                      const char* const*  theArgVec,
+                                                      Quantity_ColorRGBA& theColor,
+                                                      bool                theToParseAlpha);
 
 };
 
-
-
-
-
-
-
 #endif // _Draw_HeaderFile