mirror of
https://github.com/leozide/leocad
synced 2024-12-25 21:58:23 +01:00
Consolidated light color properties.
This commit is contained in:
parent
4e09ceaf7d
commit
9d60160f6a
8 changed files with 141 additions and 136 deletions
|
@ -649,6 +649,11 @@ inline lcVector3 lcVector3FromColor(quint32 Color)
|
|||
return v;
|
||||
}
|
||||
|
||||
inline lcVector3 lcVector3FromQColor(QColor Color)
|
||||
{
|
||||
return lcVector3(Color.redF(), Color.greenF(), Color.blueF());
|
||||
}
|
||||
|
||||
inline lcVector4 lcVector4FromColor(quint32 Color)
|
||||
{
|
||||
lcVector4 v(LC_RGBA_RED(Color), LC_RGBA_GREEN(Color), LC_RGBA_BLUE(Color), LC_RGBA_ALPHA(Color));
|
||||
|
@ -661,6 +666,11 @@ inline quint32 lcColorFromVector3(const lcVector3& Color)
|
|||
return LC_RGB(roundf(Color[0] * 255), roundf(Color[1] * 255), roundf(Color[2] * 255));
|
||||
}
|
||||
|
||||
inline QColor lcQColorFromVector3(const lcVector3& Color)
|
||||
{
|
||||
return QColor::fromRgb(roundf(Color[0] * 255), roundf(Color[1] * 255), roundf(Color[2] * 255));
|
||||
}
|
||||
|
||||
inline float lcLuminescence(const lcVector3& Color)
|
||||
{
|
||||
return 0.2126f * Color[0] + 0.7152f * Color[1] + 0.0722f * Color[2];
|
||||
|
|
|
@ -3113,6 +3113,19 @@ void lcModel::SetCameraName(lcCamera* Camera, const QString& Name)
|
|||
gMainWindow->UpdateCameraMenu();
|
||||
}
|
||||
|
||||
void lcModel::SetLightColor(lcLight* Light, const lcVector3& Color)
|
||||
{
|
||||
if (Light->GetColor() == Color)
|
||||
return;
|
||||
|
||||
Light->SetColor(Color, mCurrentStep, gMainWindow->GetAddKeys());
|
||||
Light->UpdatePosition(mCurrentStep);
|
||||
|
||||
SaveCheckpoint(tr("Changing Light Color"));
|
||||
gMainWindow->UpdateSelectedObjects(false);
|
||||
UpdateAllViews();
|
||||
}
|
||||
|
||||
void lcModel::SetLightName(lcLight* Light, const QString &Name)
|
||||
{
|
||||
if (Light->GetName() == Name)
|
||||
|
|
|
@ -367,6 +367,8 @@ public:
|
|||
void SetCameraZNear(lcCamera* Camera, float ZNear);
|
||||
void SetCameraZFar(lcCamera* Camera, float ZFar);
|
||||
void SetCameraName(lcCamera* Camera, const QString& Name);
|
||||
|
||||
void SetLightColor(lcLight* Light, const lcVector3& Color);
|
||||
void SetLightName(lcLight* Light, const QString& Name);
|
||||
void UpdateLight(lcLight* Light, const lcLightProperties Props, int Property);
|
||||
|
||||
|
|
|
@ -44,11 +44,8 @@ lcLight::lcLight(const lcVector3& Position, const lcVector3& TargetPosition, lcL
|
|||
mPOVRayLight = false;
|
||||
mShadowless = false;
|
||||
mEnableCutoff = false;
|
||||
mAmbientColor = lcVector4(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
mDiffuseColor = lcVector4(0.8f, 0.8f, 0.8f, 1.0f);
|
||||
mSpecularColor = lcVector4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
mColor = lcVector3(1.0f, 1.0f, 1.0f);
|
||||
mAttenuation = lcVector3(1.0f, 0.0f, 0.0f);
|
||||
mLightColor = lcVector3(1.0f, 1.0f, 1.0f);
|
||||
mLightFactor[0] = LightType == lcLightType::Directional ? 11.4f : 0.25f;
|
||||
mLightFactor[1] = LightType == lcLightType::Area ? 0.25f : LightType == lcLightType::Spot ? 0.150f : 0.0f;
|
||||
mLightDiffuse = 1.0f;
|
||||
|
@ -66,11 +63,8 @@ lcLight::lcLight(const lcVector3& Position, const lcVector3& TargetPosition, lcL
|
|||
mPositionKeys.ChangeKey(mPosition, 1, true);
|
||||
mTargetPositionKeys.ChangeKey(mTargetPosition, 1, true);
|
||||
mUpVectorKeys.ChangeKey(mUpVector, 1, true);
|
||||
mAmbientColorKeys.ChangeKey(mAmbientColor, 1, true);
|
||||
mDiffuseColorKeys.ChangeKey(mDiffuseColor, 1, true);
|
||||
mSpecularColorKeys.ChangeKey(mSpecularColor, 1, true);
|
||||
mColorKeys.ChangeKey(mColor, 1, true);
|
||||
mAttenuationKeys.ChangeKey(mAttenuation, 1, true);
|
||||
mLightColorKeys.ChangeKey(mLightColor, 1, true);
|
||||
mLightFactorKeys.ChangeKey(mLightFactor, 1, true);
|
||||
mLightDiffuseKeys.ChangeKey(mLightDiffuse, 1, true);
|
||||
mLightSpecularKeys.ChangeKey(mLightSpecular, 1, true);
|
||||
|
@ -115,10 +109,10 @@ void lcLight::SaveLDraw(QTextStream& Stream) const
|
|||
Stream << QLatin1String("0 !LEOCAD LIGHT UP_VECTOR ") << mUpVector[0] << ' ' << mUpVector[1] << ' ' << mUpVector[2] << LineEnding;
|
||||
}
|
||||
|
||||
if (mLightColorKeys.GetSize() > 1)
|
||||
mLightColorKeys.SaveKeysLDraw(Stream, "LIGHT COLOR_RGB_KEY ");
|
||||
if (mColorKeys.GetSize() > 1)
|
||||
mColorKeys.SaveKeysLDraw(Stream, "LIGHT COLOR_KEY ");
|
||||
else
|
||||
Stream << QLatin1String("0 !LEOCAD LIGHT COLOR_RGB ") << mLightColor[0] << ' ' << mLightColor[1] << ' ' << mLightColor[2] << LineEnding;
|
||||
Stream << QLatin1String("0 !LEOCAD LIGHT COLOR ") << mColor[0] << ' ' << mColor[1] << ' ' << mColor[2] << LineEnding;
|
||||
|
||||
if (!mPOVRayLight)
|
||||
{
|
||||
|
@ -326,27 +320,29 @@ bool lcLight::ParseLDrawLine(QTextStream& Stream)
|
|||
Stream >> mPosition[0] >> mPosition[1] >> mPosition[2];
|
||||
mPositionKeys.ChangeKey(mPosition, 1, true);
|
||||
}
|
||||
else if (Token == QLatin1String("POSITION_KEY"))
|
||||
mPositionKeys.LoadKeysLDraw(Stream);
|
||||
else if (Token == QLatin1String("TARGET_POSITION"))
|
||||
{
|
||||
Stream >> mTargetPosition[0] >> mTargetPosition[1] >> mTargetPosition[2];
|
||||
mTargetPositionKeys.ChangeKey(mTargetPosition, 1, true);
|
||||
}
|
||||
else if (Token == QLatin1String("TARGET_POSITION_KEY"))
|
||||
mTargetPositionKeys.LoadKeysLDraw(Stream);
|
||||
else if (Token == QLatin1String("UP_VECTOR"))
|
||||
{
|
||||
Stream >> mUpVector[0] >> mUpVector[1] >> mUpVector[2];
|
||||
mUpVectorKeys.ChangeKey(mUpVector, 1, true);
|
||||
}
|
||||
else if (Token == QLatin1String("POSITION_KEY"))
|
||||
mPositionKeys.LoadKeysLDraw(Stream);
|
||||
else if (Token == QLatin1String("TARGET_POSITION_KEY"))
|
||||
mTargetPositionKeys.LoadKeysLDraw(Stream);
|
||||
else if (Token == QLatin1String("UP_VECTOR_KEY"))
|
||||
mUpVectorKeys.LoadKeysLDraw(Stream);
|
||||
else if (Token == QLatin1String("COLOR_RGB"))
|
||||
else if (Token == QLatin1String("COLOR"))
|
||||
{
|
||||
Stream >> mLightColor[0] >> mLightColor[1] >> mLightColor[2];
|
||||
mLightColorKeys.ChangeKey(mLightColor, 1, true);
|
||||
Stream >> mColor[0] >> mColor[1] >> mColor[2];
|
||||
mColorKeys.ChangeKey(mColor, 1, true);
|
||||
}
|
||||
else if (Token == QLatin1String("COLOR_KEY"))
|
||||
mColorKeys.LoadKeysLDraw(Stream);
|
||||
else if (Token == QLatin1String("POWER") || Token == QLatin1String("STRENGTH"))
|
||||
{
|
||||
if (mPOVRayLight)
|
||||
|
@ -461,8 +457,6 @@ bool lcLight::ParseLDrawLine(QTextStream& Stream)
|
|||
{
|
||||
mShadowless = true;
|
||||
}
|
||||
else if (Token == QLatin1String("COLOR_RGB_KEY"))
|
||||
mLightColorKeys.LoadKeysLDraw(Stream);
|
||||
else if ((Token == QLatin1String("POWER_KEY")) || (Token == QLatin1String("STRENGTH_KEY")))
|
||||
mSpotExponentKeys.LoadKeysLDraw(Stream);
|
||||
else if ((Token == QLatin1String("ANGLE_KEY")) || (Token == QLatin1String("RADIUS_KEY")) || (Token == QLatin1String("SIZE_KEY")) || (Token == QLatin1String("RADIUS_AND_SPOT_BLEND_KEY")))
|
||||
|
@ -562,10 +556,6 @@ void lcLight::UpdateLight(lcStep Step, lcLightProperties Props, int Property)
|
|||
case LC_LIGHT_SHAPE:
|
||||
mLightShape = Props.mLightShape;
|
||||
break;
|
||||
case LC_LIGHT_COLOR:
|
||||
mLightColor = Props.mLightColor;
|
||||
mLightColorKeys.ChangeKey(mLightColor, Step, false);
|
||||
break;
|
||||
case LC_LIGHT_FACTOR:
|
||||
if (Props.mPOVRayLight && mLightType == lcLightType::Area)
|
||||
{
|
||||
|
@ -841,16 +831,18 @@ void lcLight::MoveSelected(lcStep Step, bool AddKey, const lcVector3& Distance)
|
|||
}
|
||||
}
|
||||
|
||||
void lcLight::SetColor(const lcVector3& Color, lcStep Step, bool AddKey)
|
||||
{
|
||||
mColorKeys.ChangeKey(Color, Step, AddKey);
|
||||
}
|
||||
|
||||
void lcLight::InsertTime(lcStep Start, lcStep Time)
|
||||
{
|
||||
mPositionKeys.InsertTime(Start, Time);
|
||||
mTargetPositionKeys.InsertTime(Start, Time);
|
||||
mUpVectorKeys.InsertTime(Start, Time);
|
||||
mAmbientColorKeys.InsertTime(Start, Time);
|
||||
mDiffuseColorKeys.InsertTime(Start, Time);
|
||||
mSpecularColorKeys.InsertTime(Start, Time);
|
||||
mColorKeys.InsertTime(Start, Time);
|
||||
mAttenuationKeys.InsertTime(Start, Time);
|
||||
mLightColorKeys.InsertTime(Start, Time);
|
||||
mLightFactorKeys.InsertTime(Start, Time);
|
||||
mLightDiffuseKeys.InsertTime(Start, Time);
|
||||
mLightSpecularKeys.InsertTime(Start, Time);
|
||||
|
@ -867,11 +859,8 @@ void lcLight::RemoveTime(lcStep Start, lcStep Time)
|
|||
mPositionKeys.RemoveTime(Start, Time);
|
||||
mTargetPositionKeys.RemoveTime(Start, Time);
|
||||
mUpVectorKeys.RemoveTime(Start, Time);
|
||||
mAmbientColorKeys.RemoveTime(Start, Time);
|
||||
mDiffuseColorKeys.RemoveTime(Start, Time);
|
||||
mSpecularColorKeys.RemoveTime(Start, Time);
|
||||
mColorKeys.RemoveTime(Start, Time);
|
||||
mAttenuationKeys.RemoveTime(Start, Time);
|
||||
mLightColorKeys.RemoveTime(Start, Time);
|
||||
mLightFactorKeys.RemoveTime(Start, Time);
|
||||
mLightDiffuseKeys.RemoveTime(Start, Time);
|
||||
mLightSpecularKeys.RemoveTime(Start, Time);
|
||||
|
@ -888,11 +877,8 @@ void lcLight::UpdatePosition(lcStep Step)
|
|||
mPosition = mPositionKeys.CalculateKey(Step);
|
||||
mTargetPosition = mTargetPositionKeys.CalculateKey(Step);
|
||||
mUpVector = mUpVectorKeys.CalculateKey(Step);
|
||||
mAmbientColor = mAmbientColorKeys.CalculateKey(Step);
|
||||
mDiffuseColor = mDiffuseColorKeys.CalculateKey(Step);
|
||||
mSpecularColor = mSpecularColorKeys.CalculateKey(Step);
|
||||
mColor = mColorKeys.CalculateKey(Step);
|
||||
mAttenuation = mAttenuationKeys.CalculateKey(Step);
|
||||
mLightColor = mLightColorKeys.CalculateKey(Step);
|
||||
mLightFactor = mLightFactorKeys.CalculateKey(Step);
|
||||
mLightDiffuse = mLightDiffuseKeys.CalculateKey(Step);
|
||||
mLightSpecular = mLightSpecularKeys.CalculateKey(Step);
|
||||
|
@ -1455,21 +1441,12 @@ void lcLight::RemoveKeyFrames()
|
|||
mUpVectorKeys.RemoveAll();
|
||||
mUpVectorKeys.ChangeKey(mUpVector, 1, true);
|
||||
|
||||
mAmbientColorKeys.RemoveAll();
|
||||
mAmbientColorKeys.ChangeKey(mAmbientColor, 1, true);
|
||||
|
||||
mDiffuseColorKeys.RemoveAll();
|
||||
mDiffuseColorKeys.ChangeKey(mDiffuseColor, 1, true);
|
||||
|
||||
mSpecularColorKeys.RemoveAll();
|
||||
mSpecularColorKeys.ChangeKey(mSpecularColor, 1, true);
|
||||
mColorKeys.RemoveAll();
|
||||
mColorKeys.ChangeKey(mColor, 1, true);
|
||||
|
||||
mAttenuationKeys.RemoveAll();
|
||||
mAttenuationKeys.ChangeKey(mAttenuation, 1, true);
|
||||
|
||||
mLightColorKeys.RemoveAll();
|
||||
mLightColorKeys.ChangeKey(mLightColor, 1, true);
|
||||
|
||||
mLightFactorKeys.RemoveAll();
|
||||
mLightFactorKeys.ChangeKey(mLightFactor, 1, true);
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@ enum lcLightProperty
|
|||
{
|
||||
LC_LIGHT_NONE,
|
||||
LC_LIGHT_SHAPE,
|
||||
LC_LIGHT_COLOR,
|
||||
LC_LIGHT_TYPE,
|
||||
LC_LIGHT_FACTOR,
|
||||
LC_LIGHT_DIFFUSE,
|
||||
|
@ -61,7 +60,6 @@ enum lcLightProperty
|
|||
|
||||
struct lcLightProperties
|
||||
{
|
||||
lcVector3 mLightColor;
|
||||
lcVector2 mLightFactor;
|
||||
lcVector2 mAreaGrid;
|
||||
float mLightDiffuse;
|
||||
|
@ -306,7 +304,16 @@ public:
|
|||
void RemoveTime(lcStep Start, lcStep Time);
|
||||
|
||||
bool IsVisible() const
|
||||
{ return (mState & LC_LIGHT_HIDDEN) == 0; }
|
||||
{
|
||||
return (mState & LC_LIGHT_HIDDEN) == 0;
|
||||
}
|
||||
|
||||
void SetColor(const lcVector3& Color, lcStep Step, bool AddKey);
|
||||
|
||||
lcVector3 GetColor() const
|
||||
{
|
||||
return mColor;
|
||||
}
|
||||
|
||||
void SetName(const QString& Name)
|
||||
{
|
||||
|
@ -327,7 +334,6 @@ public:
|
|||
lcLightProperties GetLightProperties() const
|
||||
{
|
||||
lcLightProperties props;
|
||||
props.mLightColor = mLightColor;
|
||||
props.mLightFactor = mLightFactor;
|
||||
props.mLightDiffuse = mLightDiffuse;
|
||||
props.mLightSpecular = mLightSpecular;
|
||||
|
@ -349,11 +355,7 @@ public:
|
|||
lcVector3 mTargetPosition;
|
||||
lcVector3 mUpVector;
|
||||
|
||||
lcVector4 mAmbientColor;
|
||||
lcVector4 mDiffuseColor;
|
||||
lcVector4 mSpecularColor;
|
||||
lcVector3 mAttenuation;
|
||||
lcVector3 mLightColor;
|
||||
lcVector2 mLightFactor;
|
||||
lcVector2 mAreaGrid;
|
||||
lcVector2 mAreaSize;
|
||||
|
@ -375,15 +377,14 @@ public:
|
|||
QString mName;
|
||||
|
||||
protected:
|
||||
lcVector3 mColor;
|
||||
|
||||
lcObjectKeyArray<lcVector3> mPositionKeys;
|
||||
lcObjectKeyArray<lcVector3> mTargetPositionKeys;
|
||||
lcObjectKeyArray<lcVector3> mUpVectorKeys;
|
||||
lcObjectKeyArray<lcVector3> mColorKeys;
|
||||
|
||||
lcObjectKeyArray<lcVector4> mAmbientColorKeys;
|
||||
lcObjectKeyArray<lcVector4> mDiffuseColorKeys;
|
||||
lcObjectKeyArray<lcVector4> mSpecularColorKeys;
|
||||
lcObjectKeyArray<lcVector3> mAttenuationKeys;
|
||||
lcObjectKeyArray<lcVector3> mLightColorKeys;
|
||||
lcObjectKeyArray<lcVector2> mLightFactorKeys;
|
||||
lcObjectKeyArray<lcVector2> mAreaGridKeys;
|
||||
lcObjectKeyArray<float> mLightSpecularKeys;
|
||||
|
|
|
@ -2175,7 +2175,7 @@ bool Project::ExportPOVRay(const QString& FileName)
|
|||
const QString LightName = QString(Light->mName).replace(" ","_");
|
||||
LightType = Light->GetLightType();
|
||||
Shadowless = static_cast<int>(Light->mShadowless);
|
||||
LightColor = Light->mLightColor;
|
||||
LightColor = Light->GetColor();
|
||||
Power = Light->mPOVRayExponent;
|
||||
switch(LightType)
|
||||
{
|
||||
|
|
|
@ -222,9 +222,9 @@ lcQPropertiesTree::lcQPropertiesTree(QWidget *parent) :
|
|||
m_checkedIcon = drawCheckBox(true);
|
||||
m_uncheckedIcon = drawCheckBox(false);
|
||||
|
||||
m_delegate = new lcQPropertiesTreeDelegate(parent);
|
||||
m_delegate->setTreeWidget(this);
|
||||
setItemDelegate(m_delegate);
|
||||
mDelegate = new lcQPropertiesTreeDelegate(parent);
|
||||
mDelegate->setTreeWidget(this);
|
||||
setItemDelegate(mDelegate);
|
||||
|
||||
SetEmpty();
|
||||
|
||||
|
@ -264,7 +264,7 @@ void lcQPropertiesTree::keyPressEvent(QKeyEvent *event)
|
|||
case Qt::Key_Return:
|
||||
case Qt::Key_Enter:
|
||||
case Qt::Key_Space: // Trigger Edit
|
||||
if (!m_delegate->editedItem())
|
||||
if (!mDelegate->editedItem())
|
||||
{
|
||||
if (const QTreeWidgetItem *item = currentItem())
|
||||
{
|
||||
|
@ -299,7 +299,7 @@ void lcQPropertiesTree::mousePressEvent(QMouseEvent *event)
|
|||
|
||||
if (item)
|
||||
{
|
||||
if ((item != m_delegate->editedItem()) && (event->button() == Qt::LeftButton) && (header()->logicalIndexAt(event->pos().x()) == 1) &&
|
||||
if ((item != mDelegate->editedItem()) && (event->button() == Qt::LeftButton) && (header()->logicalIndexAt(event->pos().x()) == 1) &&
|
||||
((item->flags() & (Qt::ItemIsEditable | Qt::ItemIsEnabled)) == (Qt::ItemIsEditable | Qt::ItemIsEnabled)))
|
||||
editItem(item, 1);
|
||||
}
|
||||
|
@ -567,14 +567,14 @@ QWidget *lcQPropertiesTree::createEditor(QWidget *parent, QTreeWidgetItem *item)
|
|||
|
||||
case PropertyLightColor:
|
||||
{
|
||||
QPushButton *editor = new QPushButton(parent);
|
||||
QColor value = item->data(0, PropertyValueRole).value<QColor>();
|
||||
QPushButton *Editor = new QPushButton(parent);
|
||||
QColor Value = item->data(0, PropertyValueRole).value<QColor>();
|
||||
|
||||
updateLightColorEditor(editor, value);
|
||||
UpdateLightColorEditor(Editor, Value);
|
||||
|
||||
connect(editor, SIGNAL(clicked()), this, SLOT(slotColorButtonClicked()));
|
||||
connect(Editor, &QPushButton::clicked, this, &lcQPropertiesTree::LightColorButtonClicked);
|
||||
|
||||
return editor;
|
||||
return Editor;
|
||||
}
|
||||
|
||||
case PropertyColor:
|
||||
|
@ -649,26 +649,26 @@ void lcQPropertiesTree::updateColorEditor(QPushButton *editor, int value) const
|
|||
editor->setText(color->Name);
|
||||
}
|
||||
|
||||
void lcQPropertiesTree::updateLightColorEditor(QPushButton *editor, QColor color) const
|
||||
void lcQPropertiesTree::UpdateLightColorEditor(QPushButton* Editor, QColor Color) const
|
||||
{
|
||||
QImage img(12, 12, QImage::Format_ARGB32);
|
||||
img.fill(0);
|
||||
QImage Image(12, 12, QImage::Format_ARGB32);
|
||||
Image.fill(0);
|
||||
|
||||
QPainter painter(&img);
|
||||
painter.setCompositionMode(QPainter::CompositionMode_Source);
|
||||
painter.setPen(Qt::darkGray);
|
||||
painter.setBrush(color);
|
||||
painter.drawRect(0, 0, img.width() - 1, img.height() - 1);
|
||||
painter.end();
|
||||
QPainter Painter(&Image);
|
||||
Painter.setCompositionMode(QPainter::CompositionMode_Source);
|
||||
Painter.setPen(Qt::darkGray);
|
||||
Painter.setBrush(Color);
|
||||
Painter.drawRect(0, 0, Image.width() - 1, Image.height() - 1);
|
||||
Painter.end();
|
||||
|
||||
editor->setStyleSheet("Text-align:left");
|
||||
editor->setIcon(QPixmap::fromImage(img));
|
||||
editor->setText(color.name().toUpper());
|
||||
Editor->setStyleSheet("Text-align:left");
|
||||
Editor->setIcon(QPixmap::fromImage(Image));
|
||||
Editor->setText(Color.name().toUpper());
|
||||
}
|
||||
|
||||
void lcQPropertiesTree::slotToggled(bool Value)
|
||||
{
|
||||
QTreeWidgetItem* Item = m_delegate->editedItem();
|
||||
QTreeWidgetItem* Item = mDelegate->editedItem();
|
||||
lcModel* Model = gMainWindow->GetActiveModel();
|
||||
lcObject* Focus = Model->GetFocusObject();
|
||||
|
||||
|
@ -708,7 +708,7 @@ void lcQPropertiesTree::slotToggled(bool Value)
|
|||
void lcQPropertiesTree::slotReturnPressed()
|
||||
{
|
||||
QLineEdit* Editor = (QLineEdit*)sender();
|
||||
QTreeWidgetItem* Item = m_delegate->editedItem();
|
||||
QTreeWidgetItem* Item = mDelegate->editedItem();
|
||||
lcModel* Model = gMainWindow->GetActiveModel();
|
||||
|
||||
if (mWidgetMode == LC_PROPERTY_WIDGET_PIECE)
|
||||
|
@ -905,15 +905,17 @@ void lcQPropertiesTree::slotReturnPressed()
|
|||
}
|
||||
else if (Item == lightColorR || Item == lightColorG || Item == lightColorB)
|
||||
{
|
||||
lcVector3 Color = Light->GetColor();
|
||||
float Value = lcParseValueLocalized(Editor->text());
|
||||
if (Item == lightColorR)
|
||||
Props.mLightColor[0] = Value;
|
||||
else if (Item == lightColorG)
|
||||
Props.mLightColor[2] = Value;
|
||||
else if (Item == lightColorB)
|
||||
Props.mLightColor[1] = Value;
|
||||
|
||||
Model->UpdateLight(Light, Props, LC_LIGHT_COLOR);
|
||||
if (Item == lightColorR)
|
||||
Color[0] = Value;
|
||||
else if (Item == lightColorG)
|
||||
Color[2] = Value;
|
||||
else if (Item == lightColorB)
|
||||
Color[1] = Value;
|
||||
|
||||
Model->SetLightColor(Light, Color);
|
||||
}
|
||||
else if (Item == lightFactorA || Item == lightFactorB)
|
||||
{
|
||||
|
@ -991,7 +993,7 @@ void lcQPropertiesTree::slotReturnPressed()
|
|||
|
||||
void lcQPropertiesTree::slotSetValue(int Value)
|
||||
{
|
||||
QTreeWidgetItem* Item = m_delegate->editedItem();
|
||||
QTreeWidgetItem* Item = mDelegate->editedItem();
|
||||
lcModel* Model = gMainWindow->GetActiveModel();
|
||||
|
||||
if (mWidgetMode == LC_PROPERTY_WIDGET_PIECE)
|
||||
|
@ -1000,7 +1002,7 @@ void lcQPropertiesTree::slotSetValue(int Value)
|
|||
{
|
||||
Model->SetSelectedPiecesColorIndex(Value);
|
||||
|
||||
QPushButton *editor = (QPushButton*)m_delegate->editor();
|
||||
QPushButton *editor = (QPushButton*)mDelegate->editor();
|
||||
updateColorEditor(editor, Value);
|
||||
}
|
||||
else if (Item == partID)
|
||||
|
@ -1041,24 +1043,6 @@ void lcQPropertiesTree::slotSetValue(int Value)
|
|||
}
|
||||
}
|
||||
|
||||
void lcQPropertiesTree::slotSetColorValue(QColor Value)
|
||||
{
|
||||
lcModel* Model = gMainWindow->GetActiveModel();
|
||||
lcObject* Focus = Model->GetFocusObject();
|
||||
lcLight* Light = (Focus && Focus->IsLight()) ? (lcLight*)Focus : nullptr;
|
||||
if (Light)
|
||||
{
|
||||
float r = Value.red();
|
||||
float g = Value.green();
|
||||
float b = Value.blue();
|
||||
lcVector3 Color(r/255, g/255, b/255);
|
||||
|
||||
lcLightProperties Props = Light->GetLightProperties();
|
||||
Props.mLightColor = Color;
|
||||
Model->UpdateLight(Light, Props, LC_LIGHT_COLOR);
|
||||
}
|
||||
}
|
||||
|
||||
void lcQPropertiesTree::slotColorButtonClicked()
|
||||
{
|
||||
int ColorIndex = gDefaultColor;
|
||||
|
@ -1104,6 +1088,28 @@ void lcQPropertiesTree::slotColorButtonClicked()
|
|||
Popup->show();
|
||||
}
|
||||
|
||||
void lcQPropertiesTree::LightColorButtonClicked()
|
||||
{
|
||||
lcModel* Model = gMainWindow->GetActiveModel();
|
||||
lcObject* Focus = Model->GetFocusObject();
|
||||
lcLight* Light = (Focus && Focus->IsLight()) ? (lcLight*)Focus : nullptr;
|
||||
|
||||
if (!Light)
|
||||
return;
|
||||
|
||||
QColor Color = QColorDialog::getColor(lcQColorFromVector3(Light->GetColor()), this, tr("Select Light Color"));
|
||||
|
||||
if (!Color.isValid())
|
||||
return;
|
||||
|
||||
Model->SetLightColor(Light, lcVector3FromQColor(Color));
|
||||
|
||||
QPushButton* Editor = qobject_cast<QPushButton*>(mDelegate->editor());
|
||||
|
||||
if (Editor)
|
||||
UpdateLightColorEditor(Editor, Color);
|
||||
}
|
||||
|
||||
QTreeWidgetItem *lcQPropertiesTree::addProperty(QTreeWidgetItem *parent, const QString& label, PropertyType propertyType)
|
||||
{
|
||||
QTreeWidgetItem *newItem;
|
||||
|
@ -1452,7 +1458,7 @@ void lcQPropertiesTree::SetLight(lcObject* Focus)
|
|||
PropertyType SpotSizeProperty = PropertyFloatLightSpotSize;
|
||||
lcVector3 Position(0.0f, 0.0f, 0.0f);
|
||||
lcVector3 Target(0.0f, 0.0f, 0.0f);
|
||||
lcVector3 Color(0.0f, 0.0f, 0.0f);
|
||||
QColor Color(Qt::white);
|
||||
lcVector2 Factor(0.0f, 0.0f);
|
||||
lcVector2 AreaGrid(0.0f, 0.0f);
|
||||
|
||||
|
@ -1467,7 +1473,7 @@ void lcQPropertiesTree::SetLight(lcObject* Focus)
|
|||
Shadowless = Light->mShadowless;
|
||||
Position = Light->mPosition;
|
||||
Target = Light->mTargetPosition;
|
||||
Color = Light->mLightColor;
|
||||
Color = lcQColorFromVector3(Light->GetColor());
|
||||
Factor = Light->mLightFactor;
|
||||
LightType = Light->GetLightType();
|
||||
|
||||
|
@ -1594,9 +1600,9 @@ void lcQPropertiesTree::SetLight(lcObject* Focus)
|
|||
lightTargetZ = addProperty(lightTarget, tr("Z"), TargetProperty);
|
||||
}
|
||||
|
||||
// Light Colour
|
||||
// Light Color
|
||||
lightColor = addProperty(nullptr, tr("Color"), PropertyGroup);
|
||||
lightColorIcon = addProperty(lightColor, tr("Name"), PropertyLightColor);
|
||||
lightColorIcon = addProperty(lightColor, tr("Value"), PropertyLightColor);
|
||||
lightColorR = addProperty(lightColor, tr("Red"), PropertyFloat);
|
||||
lightColorG = addProperty(lightColor, tr("Green"), PropertyFloat);
|
||||
lightColorB = addProperty(lightColor, tr("Blue"), PropertyFloat);
|
||||
|
@ -1679,30 +1685,28 @@ void lcQPropertiesTree::SetLight(lcObject* Focus)
|
|||
lightTargetZ->setData(0, PropertyValueRole, Target[2]);
|
||||
}
|
||||
|
||||
QImage img(16, 16, QImage::Format_ARGB32);
|
||||
img.fill(0);
|
||||
QImage ColorImage(16, 16, QImage::Format_ARGB32);
|
||||
ColorImage.fill(0);
|
||||
|
||||
QColor RgbColor = QColor::fromRgb(int(Color[1]*255), int(Color[1]*255), int(Color[2]*255));
|
||||
|
||||
QPainter painter(&img);
|
||||
QPainter painter(&ColorImage);
|
||||
painter.setCompositionMode(QPainter::CompositionMode_Source);
|
||||
painter.setPen(Qt::darkGray);
|
||||
painter.setBrush(RgbColor);
|
||||
painter.drawRect(0, 0, img.width() - 1, img.height() - 1);
|
||||
painter.setBrush(Color);
|
||||
painter.drawRect(0, 0, ColorImage.width() - 1, ColorImage.height() - 1);
|
||||
painter.end();
|
||||
|
||||
lightColorIcon->setIcon(1, QIcon(QPixmap::fromImage(img)));
|
||||
lightColorIcon->setText(1, RgbColor.name().toUpper());
|
||||
lightColorIcon->setData(0, PropertyValueRole, RgbColor);
|
||||
lightColorIcon->setIcon(1, QIcon(QPixmap::fromImage(ColorImage)));
|
||||
lightColorIcon->setText(1, Color.name().toUpper());
|
||||
lightColorIcon->setData(0, PropertyValueRole, Color);
|
||||
|
||||
lightColorR->setText(1, lcFormatValueLocalized(Color[0]));
|
||||
lightColorR->setData(0, PropertyValueRole, Color[0]);
|
||||
lightColorR->setText(1, lcFormatValueLocalized(Color.redF()));
|
||||
lightColorR->setData(0, PropertyValueRole, Color.redF());
|
||||
lightColorR->setToolTip(1, tr("Red color using 0 to 1 decimal."));
|
||||
lightColorG->setText(1, lcFormatValueLocalized(Color[1]));
|
||||
lightColorG->setData(0, PropertyValueRole, Color[1]);
|
||||
lightColorG->setText(1, lcFormatValueLocalized(Color.greenF()));
|
||||
lightColorG->setData(0, PropertyValueRole, Color.greenF());
|
||||
lightColorG->setToolTip(1, tr("Green color using 0 to 1 decimal."));
|
||||
lightColorB->setText(1, lcFormatValueLocalized(Color[2]));
|
||||
lightColorB->setData(0, PropertyValueRole, Color[2]);
|
||||
lightColorB->setText(1, lcFormatValueLocalized(Color.blueF()));
|
||||
lightColorB->setData(0, PropertyValueRole, Color.blueF());
|
||||
lightColorB->setToolTip(1, tr("Blue color using 0 to 1 decimal."));
|
||||
|
||||
lightFormat->setText(1, Format);
|
||||
|
|
|
@ -62,14 +62,14 @@ protected slots:
|
|||
void slotReturnPressed();
|
||||
void slotSetValue(int value);
|
||||
void slotColorButtonClicked();
|
||||
void slotSetColorValue(QColor Value);
|
||||
void LightColorButtonClicked();
|
||||
|
||||
protected:
|
||||
void keyPressEvent(QKeyEvent *event) override;
|
||||
void mousePressEvent(QMouseEvent *event) override;
|
||||
void drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
|
||||
void updateColorEditor(QPushButton *editor, int value) const;
|
||||
void updateLightColorEditor(QPushButton *editor, QColor color) const;
|
||||
void UpdateLightColorEditor(QPushButton* Editor, QColor Color) const;
|
||||
|
||||
QTreeWidgetItem *addProperty(QTreeWidgetItem *parent, const QString& label, PropertyType propertyType);
|
||||
|
||||
|
@ -79,8 +79,6 @@ protected:
|
|||
void SetLight(lcObject* Focus);
|
||||
void SetMultiple();
|
||||
|
||||
void getPartProperties(lcPartProperties *properties);
|
||||
|
||||
lcLightType mLightType;
|
||||
int mLightShape;
|
||||
bool mPOVRayLight;
|
||||
|
@ -88,7 +86,7 @@ protected:
|
|||
lcPropertyWidgetMode mWidgetMode;
|
||||
lcObject* mFocus;
|
||||
|
||||
lcQPropertiesTreeDelegate *m_delegate;
|
||||
lcQPropertiesTreeDelegate* mDelegate;
|
||||
QIcon m_expandIcon;
|
||||
QIcon m_checkedIcon;
|
||||
QIcon m_uncheckedIcon;
|
||||
|
|
Loading…
Reference in a new issue