0022972: Eliminate macro definitions that has compiler-provided analogs (WNT and...
[occt.git] / src / DPrsStd / DPrsStd.cxx
CommitLineData
b311480e 1// Created on: 1998-06-29
2// Created by: Denis PASCAL
3// Copyright (c) 1998-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
7fd59977 17
7fd59977 18#include <AppStd_Application.hxx>
42cf5bc1 19#include <DDataStd.hxx>
20#include <DDF.hxx>
21#include <DDocStd.hxx>
22#include <DNaming.hxx>
23#include <DPrsStd.hxx>
24#include <Draw.hxx>
25#include <Draw_Interpretor.hxx>
26#include <Draw_PluginMacro.hxx>
7fd59977 27#include <OSD_Directory.hxx>
42cf5bc1 28#include <OSD_Environment.hxx>
7fd59977 29#include <OSD_File.hxx>
42cf5bc1 30#include <OSD_Path.hxx>
31#include <TCollection_AsciiString.hxx>
7fd59977 32
42cf5bc1 33//#include <AppStdL_Application.hxx>
7fd59977 34// avoid warnings on 'extern "C"' functions returning C++ classes
57c28b61 35#ifdef _MSC_VER
7fd59977 36#pragma warning(4:4190)
37#endif
38//static Handle(AppStdL_Application) stdApp;
39static Handle(AppStd_Application) stdApp;
40//=======================================================================
41//function : AllComands
42//purpose :
43//=======================================================================
44
45void DPrsStd::AllCommands (Draw_Interpretor& theCommands)
46{
47 static Standard_Boolean done = Standard_False;
48 if (done) return;
49 done = Standard_True;
50
51 // APPLICATION
52 if (stdApp.IsNull()) stdApp = new AppStd_Application ();//new AppStdL_Application ();
53
54 DPrsStd::AISPresentationCommands(theCommands);
55 DPrsStd::AISViewerCommands(theCommands);
56 //DPrsStd::BasicCommands(theCommands);
57}
58
59//==============================================================================
60// Found standard CAF Plugin
61//==============================================================================
62static Standard_Boolean FoundCAFPlugin () {
63
64 // Define Environment Variable
65
66 char *plugin, *casroot, *standard;
67 plugin = getenv("CSF_PluginDefaults");
68 standard = getenv("CSF_StandardDefaults");
69 casroot = getenv("CASROOT");
70 Standard_Boolean hasPlugin = Standard_False;
71 TCollection_AsciiString PluginName ;
72 if ( !plugin ) {
73 if ( casroot ) {
74 PluginName = TCollection_AsciiString (casroot);
75 PluginName+="/src/StdResource" ;
76 hasPlugin = Standard_True ;
77 }
78 } else {
79 PluginName = TCollection_AsciiString (plugin);
80 hasPlugin = Standard_True ;
81 }
82 if ( hasPlugin ) {
83 OSD_Path aPath ( PluginName );
84 OSD_Directory aDir(aPath);
85 if ( aDir.Exists () ) {
86 TCollection_AsciiString PluginFileName = PluginName + "/Plugin" ;
87 OSD_File PluginFile ( PluginFileName );
88 if ( PluginFile.Exists() ) {
89 if (!plugin) {
90 OSD_Environment PluginEnv ( "CSF_PluginDefaults" , PluginName );
91 PluginEnv.Build();
92 if ( PluginEnv.Failed() ) {
93 cout << " Problem when initialise CSF_PluginDefaults whith " << PluginName.ToCString() << endl;
94 }
95 }
96 if (!standard) {
97 OSD_Environment StandardEnv ( "CSF_StandardDefaults" , PluginName );
98 StandardEnv .Build();
99 if ( StandardEnv.Failed() ) {
100 cout << " Problem when initialise CSF_StandardDefaults whith " << PluginName.ToCString() << endl;
101 }
102 }
103 } else {
104 hasPlugin = Standard_False;
105 }
106 } else {
107 hasPlugin = Standard_False;
108 }
109 }
110
111 if ( !hasPlugin ) {
112 cout << " an environement variable named : CSF_PluginDefaults is mandatory to use OCAF " <<endl;
113 Standard_Failure::Raise ( "an environement variable named : CSF_PluginDefaults is mandatory to use OCAF" );
114 }
115
116 return hasPlugin ;
117}
118
119//==============================================================================
120// DPrsStd::Factory
121//==============================================================================
122void DPrsStd::Factory(Draw_Interpretor& theDI)
123{
124 if(!FoundCAFPlugin())
125 return;
126
127 static Standard_Boolean DPrsStdFactoryDone = Standard_False;
128 if (DPrsStdFactoryDone) return;
129 DPrsStdFactoryDone = Standard_True;
130
131 DDF::AllCommands(theDI);
132 DNaming::AllCommands(theDI);
133 DDataStd::AllCommands(theDI);
134 DPrsStd::AllCommands(theDI);
135 DDocStd::AllCommands(theDI);
0797d9d3 136#ifdef OCCT_DEBUG
7fd59977 137 cout << "Draw Plugin : All DF commands are loaded" << endl;
138#endif
139}
140
141// Declare entry point PLUGINFACTORY
142DPLUGIN(DPrsStd)