1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-10 18:51:21 +03:00
occt/src/Vrml/Vrml_Material.cxx
dpasukhi a5a7b3185b Coding - Apply .clang-format formatting #286
Update empty method guards to new style with regex (see PR).
Used clang-format 18.1.8.
New actions to validate code formatting is added.
Update .clang-format with disabling of include sorting.
  It is temporary changes, then include will be sorted.
Apply formatting for /src and /tools folder.
The files with .hxx,.cxx,.lxx,.h,.pxx,.hpp,*.cpp extensions.
2025-01-26 00:43:57 +00:00

250 lines
8.5 KiB
C++

// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <Standard_Type.hxx>
#include <Vrml_Material.hxx>
IMPLEMENT_STANDARD_RTTIEXT(Vrml_Material, Standard_Transient)
Vrml_Material::Vrml_Material(const Handle(Quantity_HArray1OfColor)& aAmbientColor,
const Handle(Quantity_HArray1OfColor)& aDiffuseColor,
const Handle(Quantity_HArray1OfColor)& aSpecularColor,
const Handle(Quantity_HArray1OfColor)& aEmissiveColor,
const Handle(TColStd_HArray1OfReal)& aShininess,
const Handle(TColStd_HArray1OfReal)& aTransparency)
{
myAmbientColor = aAmbientColor;
myDiffuseColor = aDiffuseColor;
mySpecularColor = aSpecularColor;
myEmissiveColor = aEmissiveColor;
Standard_Integer i;
for (i = aShininess->Lower(); i <= aShininess->Upper(); i++)
{
if (aShininess->Value(i) < 0. || aShininess->Value(i) > 1.)
{
throw Standard_Failure("The value of aShininess is out of range (0 - 1)");
}
}
myShininess = aShininess;
for (i = aTransparency->Lower(); i <= aTransparency->Upper(); i++)
{
if (aTransparency->Value(i) < 0. || aTransparency->Value(i) > 1.)
{
throw Standard_Failure("The value of aTransparency is out of range (0 - 1)");
}
}
myTransparency = aTransparency;
}
Vrml_Material::Vrml_Material()
{
myAmbientColor =
new Quantity_HArray1OfColor(1, 1, Quantity_Color(0.2, 0.2, 0.2, Quantity_TOC_sRGB));
myDiffuseColor =
new Quantity_HArray1OfColor(1, 1, Quantity_Color(0.8, 0.8, 0.8, Quantity_TOC_sRGB));
mySpecularColor = new Quantity_HArray1OfColor(1, 1, Quantity_NOC_BLACK);
myEmissiveColor = new Quantity_HArray1OfColor(1, 1, Quantity_NOC_BLACK);
myShininess = new TColStd_HArray1OfReal(1, 1, 0.2);
myTransparency = new TColStd_HArray1OfReal(1, 1, 0);
}
void Vrml_Material::SetAmbientColor(const Handle(Quantity_HArray1OfColor)& aAmbientColor)
{
myAmbientColor = aAmbientColor;
}
Handle(Quantity_HArray1OfColor) Vrml_Material::AmbientColor() const
{
return myAmbientColor;
}
void Vrml_Material::SetDiffuseColor(const Handle(Quantity_HArray1OfColor)& aDiffuseColor)
{
myDiffuseColor = aDiffuseColor;
}
Handle(Quantity_HArray1OfColor) Vrml_Material::DiffuseColor() const
{
return myDiffuseColor;
}
void Vrml_Material::SetSpecularColor(const Handle(Quantity_HArray1OfColor)& aSpecularColor)
{
mySpecularColor = aSpecularColor;
}
Handle(Quantity_HArray1OfColor) Vrml_Material::SpecularColor() const
{
return mySpecularColor;
}
void Vrml_Material::SetEmissiveColor(const Handle(Quantity_HArray1OfColor)& aEmissiveColor)
{
myEmissiveColor = aEmissiveColor;
}
Handle(Quantity_HArray1OfColor) Vrml_Material::EmissiveColor() const
{
return myEmissiveColor;
}
void Vrml_Material::SetShininess(const Handle(TColStd_HArray1OfReal)& aShininess)
{
Standard_Integer i;
for (i = aShininess->Lower(); i <= aShininess->Upper(); i++)
{
if (aShininess->Value(i) < 0. || aShininess->Value(i) > 1.)
{
throw Standard_Failure("The value of aShininess is out of range (0 - 1)");
}
}
myShininess = aShininess;
}
Handle(TColStd_HArray1OfReal) Vrml_Material::Shininess() const
{
return myShininess;
}
void Vrml_Material::SetTransparency(const Handle(TColStd_HArray1OfReal)& aTransparency)
{
Standard_Integer i;
for (i = aTransparency->Lower(); i <= aTransparency->Upper(); i++)
{
if (aTransparency->Value(i) < 0. || aTransparency->Value(i) > 1.)
{
throw Standard_Failure("The value of aTransparency is out of range (0 - 1)");
}
}
myTransparency = aTransparency;
}
Handle(TColStd_HArray1OfReal) Vrml_Material::Transparency() const
{
return myTransparency;
}
Standard_OStream& Vrml_Material::Print(Standard_OStream& anOStream) const
{
NCollection_Vec3<Standard_Real> aColor_sRGB;
Standard_Integer i;
anOStream << "Material {\n";
if (myAmbientColor->Length() != 1
|| Abs(myAmbientColor->Value(myAmbientColor->Lower()).Red() - 0.2) > 0.0001
|| Abs(myAmbientColor->Value(myAmbientColor->Lower()).Green() - 0.2) > 0.0001
|| Abs(myAmbientColor->Value(myAmbientColor->Lower()).Blue() - 0.2) > 0.0001)
{
anOStream << " ambientColor [\n\t";
for (i = myAmbientColor->Lower(); i <= myAmbientColor->Upper(); i++)
{
myAmbientColor->Value(i).Values(aColor_sRGB.r(),
aColor_sRGB.g(),
aColor_sRGB.b(),
Quantity_TOC_sRGB);
anOStream << aColor_sRGB.r() << ' ' << aColor_sRGB.g() << ' ' << aColor_sRGB.b();
if (i < myAmbientColor->Length())
anOStream << ",\n\t"; // ,,,,,,,,,,
}
anOStream << " ]\n";
}
if (myDiffuseColor->Length() != 1
|| Abs(myDiffuseColor->Value(myDiffuseColor->Lower()).Red() - 0.8) > 0.0001
|| Abs(myDiffuseColor->Value(myDiffuseColor->Lower()).Green() - 0.8) > 0.0001
|| Abs(myDiffuseColor->Value(myDiffuseColor->Lower()).Blue() - 0.8) > 0.0001)
{
anOStream << " diffuseColor [\n\t";
for (i = myDiffuseColor->Lower(); i <= myDiffuseColor->Upper(); i++)
{
myDiffuseColor->Value(i).Values(aColor_sRGB.r(),
aColor_sRGB.g(),
aColor_sRGB.b(),
Quantity_TOC_sRGB);
anOStream << aColor_sRGB.r() << ' ' << aColor_sRGB.g() << ' ' << aColor_sRGB.b();
if (i < myDiffuseColor->Length())
anOStream << ",\n\t";
}
anOStream << " ]\n";
}
if (mySpecularColor->Length() != 1
|| Abs(mySpecularColor->Value(mySpecularColor->Lower()).Red() - 0) > 0.0001
|| Abs(mySpecularColor->Value(mySpecularColor->Lower()).Green() - 0) > 0.0001
|| Abs(mySpecularColor->Value(mySpecularColor->Lower()).Blue() - 0) > 0.0001)
{
anOStream << " specularColor [\n\t";
for (i = mySpecularColor->Lower(); i <= mySpecularColor->Upper(); i++)
{
mySpecularColor->Value(i).Values(aColor_sRGB.r(),
aColor_sRGB.g(),
aColor_sRGB.b(),
Quantity_TOC_sRGB);
anOStream << aColor_sRGB.r() << ' ' << aColor_sRGB.g() << ' ' << aColor_sRGB.b();
if (i < mySpecularColor->Length())
anOStream << ",\n\t";
}
anOStream << " ]\n";
}
if (myEmissiveColor->Length() != 1
|| Abs(myEmissiveColor->Value(myEmissiveColor->Lower()).Red() - 0) > 0.0001
|| Abs(myEmissiveColor->Value(myEmissiveColor->Lower()).Green() - 0) > 0.0001
|| Abs(myEmissiveColor->Value(myEmissiveColor->Lower()).Blue() - 0) > 0.0001)
{
anOStream << " emissiveColor [\n\t";
for (i = myEmissiveColor->Lower(); i <= myEmissiveColor->Upper(); i++)
{
myEmissiveColor->Value(i).Values(aColor_sRGB.r(),
aColor_sRGB.g(),
aColor_sRGB.b(),
Quantity_TOC_sRGB);
anOStream << aColor_sRGB.r() << ' ' << aColor_sRGB.g() << ' ' << aColor_sRGB.b();
if (i < myEmissiveColor->Length())
anOStream << ",\n\t";
}
anOStream << " ]\n";
}
if (myShininess->Length() != 1 || Abs(myShininess->Value(myShininess->Lower()) - 0.2) > 0.0001)
{
anOStream << " shininess\t\t[ ";
for (i = myShininess->Lower(); i <= myShininess->Upper(); i++)
{
anOStream << myShininess->Value(i);
if (i < myShininess->Length())
anOStream << ", ";
}
anOStream << " ]\n";
}
if (myTransparency->Length() != 1
|| Abs(myTransparency->Value(myTransparency->Lower()) - 0) > 0.0001)
{
anOStream << " transparency\t[ ";
for (i = myTransparency->Lower(); i <= myTransparency->Upper(); i++)
{
anOStream << myTransparency->Value(i);
if (i < myTransparency->Length())
anOStream << ", ";
}
anOStream << " ]\n";
}
anOStream << "}\n";
return anOStream;
}