0027258: Configuration - generate built-in replacement for mandatory resource files

Generation of header files from resource files was added to CMake and genproj procedures.

Message_MsgFile has been extended with new method ::LoadFromString()
for loading messages from embedded resources.
Message_MsgFile::LoadFromString() is now a preferred way
for loading message resources by application
as alternative to environment variables.

TObje/TObj.msg is now embedded into TObj_Application.cxx.
TObj_Application now loads its global messages
on instantiation of the first class instance.

UnitsAPI/Lexi_Expr.dat now completely embedded into Units_Lexicon.cxx.
UnitsAPI/Units.dat now embedded into Units_UnitsDictionary.cxx
but can be regenerated from resource file.
The definition of the following units have been removed:
benne à charbon, calorie (diététique).

Unused message files XSMessage/IGES.us and IGES.fr have been removed.
Related code IGESData.cxx has been removed as well.

XSMessage/XSTEP.us is now embedded into Interface_StaticStandards.cxx
and used for fallback initialization in case when file resources
defined by CSF_XSMessage environment variable are missing.

SHMessage/SHAPE.us is now embedded into ShapeExtend.cxx
and used for fallback initialization in case when file resources
defined by CSF_XHMessage environment variable are missing.
Duplicating code has been removed from ShapeProcess_OperLibrary.cxx.

Shaders/Declarations.glsl and Shaders/DeclarationsImpl.glsl
are now embedded into OpenGl_ShaderProgram.cxx.
CSF_ShadersDirectory is no more required for using OCCT 3D Viewer.

Ray-Tracing GLSL programs from Shaders are now embedded into OpenGl_View_Raytrace.cxx.
File resources are still used instead of embedded programs
when CSF_ShadersDirectory is defined, but this functionality
is intended for OCCT development.

Enumeration Graphic3d_ShaderProgram::ShaderName_Phong
demonstrating custom GLSL program usage has been removed.
This commit is contained in:
ski
2016-10-28 14:29:58 +03:00
committed by apn
parent 30f5e1a74b
commit ee5befae97
62 changed files with 5075 additions and 2137 deletions

View File

@@ -271,35 +271,67 @@ Standard_Boolean Message_MsgFile::LoadFile (const Standard_CString theFileName)
//=======================================================================
//function : LoadFromEnv
//purpose :
//purpose :
//=======================================================================
void Message_MsgFile::LoadFromEnv
(const Standard_CString envname,
const Standard_CString filename,
const Standard_CString ext)
Standard_Boolean Message_MsgFile::LoadFromEnv (const Standard_CString theEnvName,
const Standard_CString theFileName,
const Standard_CString theLangExt)
{
Standard_CString extname = ext;
TCollection_AsciiString extstr;
if (!extname || extname[0] == '\0') {
OSD_Environment extenv("CSF_LANGUAGE");
extstr = extenv.Value();
extname = extstr.ToCString();
}
if (!extname || extname[0] == '\0') extname = "us";
TCollection_AsciiString filestr(filename);
if (envname && envname[0] != '\0') {
OSD_Environment envenv(envname);
TCollection_AsciiString envstr = envenv.Value();
if (envstr.Length() > 0) {
if (envstr.Value(envstr.Length()) != '/') filestr.Insert (1,'/');
filestr.Insert (1,envstr.ToCString());
TCollection_AsciiString aLangExt (theLangExt != NULL ? theLangExt : "");
if (aLangExt.IsEmpty())
{
OSD_Environment aLangEnv ("CSF_LANGUAGE");
aLangExt = aLangEnv.Value();
if (aLangExt.IsEmpty())
{
aLangExt = "us";
}
}
if (extname[0] != '.') filestr.AssignCat ('.');
filestr.AssignCat (extname);
Message_MsgFile::LoadFile (filestr.ToCString());
TCollection_AsciiString aFilePath (theFileName);
if (theEnvName != NULL
&& theEnvName[0] != '\0')
{
OSD_Environment aNameEnv (theEnvName);
TCollection_AsciiString aNameEnvStr = aNameEnv.Value();
if (!aNameEnvStr.IsEmpty())
{
if (aNameEnvStr.Value (aNameEnvStr.Length()) != '/')
{
aFilePath.Insert (1, '/');
}
aFilePath.Insert (1, aNameEnvStr);
}
}
if (aLangExt.Value (1) != '.')
{
aFilePath.AssignCat ('.');
}
aFilePath.AssignCat (aLangExt);
return Message_MsgFile::LoadFile (aFilePath.ToCString());
}
//=======================================================================
//function : LoadFromString
//purpose :
//=======================================================================
Standard_Boolean Message_MsgFile::LoadFromString (const Standard_CString theContent,
const Standard_Integer theLength)
{
Standard_Integer aStringSize = theLength >= 0 ? theLength : (Standard_Integer )strlen (theContent);
NCollection_Buffer aBuffer (NCollection_BaseAllocator::CommonBaseAllocator());
if (aStringSize <= 0 || !aBuffer.Allocate (aStringSize + 2))
{
return Standard_False;
}
memcpy (aBuffer.ChangeData(), theContent, aStringSize);
aBuffer.ChangeData()[aStringSize + 0] = '\0';
aBuffer.ChangeData()[aStringSize + 1] = '\0';
char* anMsgBuffer = reinterpret_cast<char*>(aBuffer.ChangeData());
return ::loadFile (anMsgBuffer);
}
//=======================================================================