[Gui] fixes for NaviCube parameters

- add missing routines to save default values

- also fix color read in (transparency was read in wrong order)
This commit is contained in:
Uwe
2023-02-25 18:20:56 +01:00
parent 4adf98e369
commit faca6b2e40
3 changed files with 68 additions and 10 deletions

View File

@@ -208,7 +208,7 @@ public:
QColor m_TextColor;
QColor m_HiliteColor;
QColor m_ButtonColor;
QColor m_FrontFaceColor;
QColor m_FrontColor;
QColor m_BorderColor;
int m_HiliteId = 0;
bool m_MouseDown = false;
@@ -292,11 +292,36 @@ void NaviCube::setFontSize(int size)
m_NaviCubeImplementation->m_CubeTextSize = size;
}
void NaviCube::setTextColor(QColor TextColor)
{
m_NaviCubeImplementation->m_TextColor = TextColor;
}
void NaviCube::setFrontColor(QColor FrontColor)
{
m_NaviCubeImplementation->m_FrontColor = FrontColor;
}
void NaviCube::setHiliteColor(QColor HiliteColor)
{
m_NaviCubeImplementation->m_HiliteColor = HiliteColor;
}
void NaviCube::setButtonColor(QColor ButtonColor)
{
m_NaviCubeImplementation->m_ButtonColor = ButtonColor;
}
void NaviCube::setBorderWidth(double BorderWidth)
{
m_NaviCubeImplementation->m_BorderWidth = BorderWidth;
}
void NaviCube::setBorderColor(QColor BorderColor)
{
m_NaviCubeImplementation->m_BorderColor = BorderColor;
}
QString NaviCube::getDefaultSansserifFont()
{
// Windows versions since 2017 have the 'Bahnschrift' font (a condensed
@@ -375,18 +400,28 @@ void NaviCubeImplementation::OnChange(ParameterGrp::SubjectType& rCaller,
const auto& rGrp = static_cast<ParameterGrp&>(rCaller);
if (strcmp(reason, "TextColor") == 0) {
m_TextColor.setRgba(rGrp.GetUnsigned(reason, QColor(0, 0, 0, 255).rgba()));
// the colors are stored in the form RRGGBBAA as unsigned long
// QColor expects the form AARRGGBB therefore we must make a shift in writing to QColor
unsigned long col = rGrp.GetUnsigned(reason, 255);
// 255 is RRR,GGG,BBB,AAA: 0,0,0,255
QColor textColor((col >> 24) & 0xff, (col >> 16) & 0xff, (col >> 8) & 0xff, col & 0xff);
m_TextColor = textColor;
}
else if (strcmp(reason, "FrontColor") == 0) {
m_FrontFaceColor.setRgba(rGrp.GetUnsigned(reason, QColor(226, 233, 239, 192).rgba()));
unsigned long col = rGrp.GetUnsigned(reason, 3806916544);
// 3236096495 is RRR,GGG,BBB,AAA: 226,233,239,192
QColor frontColor((col >> 24) & 0xff, (col >> 16) & 0xff, (col >> 8) & 0xff, col & 0xff);
m_FrontColor = frontColor;
}
else if (strcmp(reason, "HiliteColor") == 0) {
m_HiliteColor.setRgba(rGrp.GetUnsigned(reason, QColor(170, 226, 255, 255).rgba()));
unsigned long col = rGrp.GetUnsigned(reason, 2867003391);
// 2867003391 is RRR,GGG,BBB,AAA: 170,226,255,255
QColor hiliteColor((col >> 24) & 0xff, (col >> 16) & 0xff, (col >> 8) & 0xff, col & 0xff);
m_HiliteColor = hiliteColor;
}
else if (strcmp(reason, "ButtonColor") == 0) {
// the color is stored in the form ARRGGBB thus we cannot read in using .rgba()
unsigned long col = rGrp.GetUnsigned("ButtonColor", 3806916480);
// 3806916480 is AAA,RRR,GGG,BBB: 128,226,233,239
unsigned long col = rGrp.GetUnsigned(reason, 3806916480);
// 3806916480 is RRR,GGG,BBB,AAA: 226,233,239,128
QColor buttonColor(
(col >> 24) & 0xff, (col >> 16) & 0xff, (col >> 8) & 0xff, col & 0xff);
m_ButtonColor = buttonColor;
@@ -407,7 +442,10 @@ void NaviCubeImplementation::OnChange(ParameterGrp::SubjectType& rCaller,
m_BorderWidth = rGrp.GetFloat(reason, 1.1);
}
else if (strcmp(reason, "BorderColor") == 0) {
m_BorderColor.setRgba(rGrp.GetUnsigned(reason, QColor(50, 50, 50, 255).rgba()));
unsigned long col = rGrp.GetUnsigned(reason, 842150655);
// 842150655 is RRR,GGG,BBB,AAA: 50,50,50,255
QColor borderColor((col >> 24) & 0xff, (col >> 16) & 0xff, (col >> 8) & 0xff, col & 0xff);
m_BorderColor = borderColor;
}
else if (strcmp(reason, "FontSize") == 0) {
m_CubeTextSize = rGrp.GetInt(reason, getDefaultFontSize());
@@ -800,7 +838,7 @@ void NaviCubeImplementation::addFace(float gap, const Vector3f& x, const Vector3
pickId,
pickTex,
m_Textures[pickTex],
m_FrontFaceColor,
m_FrontColor,
1);
m_Faces.push_back(FaceFront);

View File

@@ -52,7 +52,12 @@ public:
void setNaviStepByTurn(int steps);
void setFont(std::string font);
void setFontSize(int size);
void setButtonColor(QColor buttonColor);
void setTextColor(QColor TextColor);
void setFrontColor(QColor FrontColor);
void setHiliteColor(QColor HiliteColor);
void setButtonColor(QColor ButtonColor);
void setBorderWidth(double BorderWidth);
void setBorderColor(QColor BorderColor);
static QString getDefaultSansserifFont();
int getDefaultFontSize();
static void setNaviCubeCommands(const std::vector<std::string>& cmd);

View File

@@ -402,9 +402,24 @@ void View3DInventor::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
"FontString", NaviCube::getDefaultSansserifFont().toStdString().c_str());
_viewer->getNavigationCube()->setFont(font);
}
else if (strcmp(Reason, "TextColor") == 0) {
_viewer->getNavigationCube()->setTextColor(rGrp.GetUnsigned("TextColor", 255));
}
else if (strcmp(Reason, "FrontColor") == 0) {
_viewer->getNavigationCube()->setFrontColor(rGrp.GetUnsigned("FrontColor", 3806916544));
}
else if (strcmp(Reason, "HiliteColor") == 0) {
_viewer->getNavigationCube()->setHiliteColor(rGrp.GetUnsigned("HiliteColor", 2867003391));
}
else if (strcmp(Reason, "ButtonColor") == 0) {
_viewer->getNavigationCube()->setButtonColor(rGrp.GetUnsigned("ButtonColor", 3806916480));
}
else if (strcmp(Reason, "BorderWidth") == 0) {
_viewer->getNavigationCube()->setBorderWidth(rGrp.GetFloat("BorderWidth", 1.1));
}
else if (strcmp(Reason, "BorderColor") == 0) {
_viewer->getNavigationCube()->setBorderColor(rGrp.GetUnsigned("BorderColor", 842150655));
}
else if (strcmp(Reason,"UseVBO") == 0) {
_viewer->setEnabledVBO(rGrp.GetBool("UseVBO", false));
}