From a8e37df8ce9efb31022a68e7b17fef652137755f Mon Sep 17 00:00:00 2001 From: Leonardo Zide Date: Tue, 10 Mar 2026 21:11:40 -0700 Subject: [PATCH] Whitespace cleanup. --- common/camera.cpp | 30 +- common/camera.h | 2 +- common/group.cpp | 10 +- common/group.h | 14 +- common/lc_aboutdialog.cpp | 4 +- common/lc_blenderpreferences.cpp | 2 +- common/lc_categorydialog.h | 2 +- common/lc_colors.cpp | 2 +- common/lc_doublespinbox.cpp | 6 +- common/lc_filter.cpp | 50 +-- common/lc_findreplacewidget.cpp | 12 +- common/lc_groupdialog.cpp | 6 +- common/lc_instructionsdialog.cpp | 6 +- common/lc_ladderwidget.cpp | 4 +- common/lc_library.cpp | 6 +- common/lc_lxf.cpp | 2 +- common/lc_mesh.cpp | 2 +- common/lc_meshloader.cpp | 10 +- common/lc_minifigdialog.cpp | 8 +- common/lc_model.cpp | 609 +++++++++++++++--------------- common/lc_model.h | 16 +- common/lc_modelaction.cpp | 20 +- common/lc_modelaction.h | 10 +- common/lc_objectproperty.h | 4 +- common/lc_partselectionwidget.cpp | 18 +- common/lc_propertieswidget.cpp | 6 +- common/lc_shortcuts.cpp | 2 +- common/lc_string.cpp | 24 +- common/lc_synth.cpp | 4 +- common/lc_texture.cpp | 14 +- common/lc_thumbnailmanager.cpp | 8 +- common/lc_timelinewidget.cpp | 6 +- common/lc_view.cpp | 42 +-- common/lc_view.h | 2 +- common/lc_viewmanipulator.cpp | 2 +- common/lc_viewwidget.cpp | 2 +- common/lc_viewwidget.h | 2 +- common/light.cpp | 6 +- common/light.h | 4 +- common/minifig.cpp | 2 +- common/object.h | 22 +- common/piece.cpp | 18 +- common/piece.h | 4 +- common/project.cpp | 8 +- qt/lc_qeditgroupsdialog.cpp | 86 ++--- qt/lc_qeditgroupsdialog.h | 12 +- qt/lc_qimagedialog.h | 2 +- qt/lc_qpreferencesdialog.cpp | 4 +- qt/lc_qselectdialog.h | 2 +- qt/lc_qupdatedialog.h | 2 +- qt/lc_qutils.cpp | 16 +- qt/lc_renderdialog.cpp | 2 +- qt/qtmain.cpp | 4 +- 53 files changed, 580 insertions(+), 583 deletions(-) diff --git a/common/camera.cpp b/common/camera.cpp index ec60c24d..08e3f6b3 100644 --- a/common/camera.cpp +++ b/common/camera.cpp @@ -160,7 +160,7 @@ bool lcCamera::SetProjection(lcCameraProjection CameraProjection) if (GetProjection() == CameraProjection) return false; - + mProjection = CameraProjection; return true; @@ -427,7 +427,7 @@ void lcCamera::MoveSelected(lcStep Step, bool AddKey, const lcVector3& Distance) { mTargetPosition.ChangeKey(mTargetPosition + Distance, Step, AddKey); } - + if (FocusSection == LC_CAMERA_SECTION_UPVECTOR) { mUpVector.ChangeKey(lcNormalize(mUpVector + Distance), Step, AddKey); @@ -472,7 +472,7 @@ void lcCamera::Rotate(lcStep Step, bool AddKey, const lcMatrix33& RotationMatrix SetTargetPosition(Center + Distance, Step, AddKey); lcVector3 UpVector = mUpVector; - + UpVector = lcMul(UpVector, WorldToLocalMatrix); UpVector = lcMul(UpVector, NewLocalToWorldMatrix); @@ -565,7 +565,7 @@ void lcCamera::DrawInterface(lcContext* Context, const lcScene& Scene) const *CurVert++ = 0.0f; *CurVert++ = 0.0f; *CurVert++ = -Length; *CurVert++ = 0.0f; *CurVert++ = 25.0f; *CurVert++ = 0.0f; - const GLushort Indices[40 + 24 + 24 + 4 + 16] = + const GLushort Indices[40 + 24 + 24 + 4 + 16] = { 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, @@ -924,7 +924,7 @@ void lcCamera::RemoveKeyFrames() lcCameraHistoryState lcCamera::GetHistoryState([[maybe_unused]] const lcModel* Model) const { lcCameraHistoryState State; - + State.Id = mId; State.Hidden = mHidden; State.Simple = mSimple; @@ -936,7 +936,7 @@ lcCameraHistoryState lcCamera::GetHistoryState([[maybe_unused]] const lcModel* M State.TargetPosition = mTargetPosition; State.UpVector = mUpVector; State.Name = mName; - + return State; } @@ -1082,7 +1082,7 @@ void lcCamera::RemoveTime(lcStep Start, lcStep Time) void lcCamera::ZoomExtents(float AspectRatio, const lcVector3& Center, const std::vector& Points, lcStep Step, bool AddKey) { lcVector3 Position, TargetPosition; - + if (GetProjection() == lcCameraProjection::Orthographic) { float MinX = FLT_MAX, MaxX = -FLT_MAX, MinY = FLT_MAX, MaxY = -FLT_MAX; @@ -1096,28 +1096,28 @@ void lcCamera::ZoomExtents(float AspectRatio, const lcVector3& Center, const std MaxX = lcMax(MaxX, Point.x); MaxY = lcMax(MaxY, Point.y); } - + float Width = fabsf(MaxX - MinX); float Height = fabsf(MaxY - MinY); const lcVector3 ViewCenter = lcMul30(Center, mWorldView); - + float OffsetX = (fabsf(MaxX - ViewCenter.x) - fabsf(ViewCenter.x - MinX)) / 2.0f; float OffsetY = (fabsf(MaxY - ViewCenter.y) - fabsf(ViewCenter.y - MinY)) / 2.0f; lcVector3 ViewOffset(OffsetX, OffsetY, 0.0f); - + lcMatrix44 ViewWorldMatrix = lcMatrix44AffineInverse(mWorldView); ViewWorldMatrix.SetTranslation(lcVector3(0, 0, 0)); - + lcVector3 WorldOffset = lcMul30(ViewOffset, ViewWorldMatrix); - + if (Width > Height * AspectRatio) Height = Width / AspectRatio; const float f = Height / (m_fovy * (LC_PI / 180.0f)); const lcVector3 FrontVector(mTargetPosition - mPosition); - + TargetPosition = Center + WorldOffset; Position = TargetPosition - lcNormalize(FrontVector) * f; } @@ -1142,7 +1142,7 @@ void lcCamera::ZoomExtents(float AspectRatio, const lcVector3& Center, const std void lcCamera::ZoomRegion(float AspectRatio, const lcVector3& Position, const lcVector3& TargetPosition, const lcVector3* Corners, lcStep Step, bool AddKey) { lcVector3 NewPosition; - + if (GetProjection() == lcCameraProjection::Orthographic) { float MinX = FLT_MAX, MaxX = -FLT_MAX, MinY = FLT_MAX, MaxY = -FLT_MAX; @@ -1202,7 +1202,7 @@ void lcCamera::Zoom(float Distance, lcStep Step, bool AddKey) AddKey = false; mPosition.ChangeKey(mPosition + FrontVector, Step, AddKey); - + if (GetProjection() != lcCameraProjection::Orthographic) mTargetPosition.ChangeKey(mTargetPosition + FrontVector, Step, AddKey); diff --git a/common/camera.h b/common/camera.h index c2101781..f1fdc52a 100644 --- a/common/camera.h +++ b/common/camera.h @@ -43,7 +43,7 @@ struct lcCameraHistoryState lcObjectProperty TargetPosition; lcObjectProperty UpVector; QString Name; - + bool operator==(const lcCameraHistoryState& Other) const { return Id == Other.Id && Hidden == Other.Hidden && Simple == Other.Simple && Fovy == Other.Fovy && diff --git a/common/group.cpp b/common/group.cpp index a1df761e..2517f5c5 100644 --- a/common/group.cpp +++ b/common/group.cpp @@ -66,15 +66,15 @@ void lcGroup::CreateName(const std::vector>& Groups) lcGroupHistoryState lcGroup::GetHistoryState(const lcModel* Model) const { lcGroupHistoryState State; - + State.Id = mId; State.ParentIndex = ~0U; State.Name = mName; - + if (mGroup) { const std::vector>& Groups = Model->GetGroups(); - + for (size_t GroupIndex = 0; GroupIndex < Groups.size(); GroupIndex++) { if (Groups[GroupIndex].get() == mGroup) @@ -84,14 +84,14 @@ lcGroupHistoryState lcGroup::GetHistoryState(const lcModel* Model) const } } } - + return State; } void lcGroup::SetHistoryState(const lcGroupHistoryState& State, const lcModel* Model) { const std::vector>& Groups = Model->GetGroups(); - + mId = State.Id; mName = State.Name; mGroup = (State.ParentIndex < Groups.size()) ? Groups[State.ParentIndex].get() : nullptr; diff --git a/common/group.h b/common/group.h index 7eb6293d..ce758a75 100644 --- a/common/group.h +++ b/common/group.h @@ -9,7 +9,7 @@ struct lcGroupHistoryState lcGroupId Id; uint32_t ParentIndex; QString Name; - + bool operator==(const lcGroupHistoryState& Other) const { return Id == Other.Id && ParentIndex == Other.ParentIndex && Name == Other.Name; @@ -25,23 +25,23 @@ public: { return mGroup ? mGroup->GetTopGroup() : this; } - + lcGroupId GetId() const { return mId; } - + void FileLoad(lcFile* File); void CreateName(const std::vector>& Groups); - + lcGroupHistoryState GetHistoryState(const lcModel* Model) const; void SetHistoryState(const lcGroupHistoryState& State, const lcModel* Model); - + lcGroup* mGroup = nullptr; QString mName; - + protected: lcGroupId mId = static_cast(0); - + static lcGroupId mNextId; }; diff --git a/common/lc_aboutdialog.cpp b/common/lc_aboutdialog.cpp index d16729f2..12d41711 100644 --- a/common/lc_aboutdialog.cpp +++ b/common/lc_aboutdialog.cpp @@ -21,12 +21,12 @@ lcAboutDialog::lcAboutDialog(QWidget* Parent) QOpenGLContext* Context = Widget->context(); QOpenGLFunctions* Functions = Context->functions(); QSurfaceFormat Format = Context->format(); - + int ColorDepth = Format.redBufferSize() + Format.greenBufferSize() + Format.blueBufferSize() + Format.alphaBufferSize(); const QString QtVersionFormat = tr("Qt Version %1 (compiled with %2)\n\n"); const QString QtVersion = QtVersionFormat.arg(qVersion(), QT_VERSION_STR); - + const QString VersionFormat = tr("OpenGL Version %1 (GLSL %2)\n%3 - %4\n\n"); const QString GLVersion(reinterpret_cast(Functions->glGetString(GL_VERSION))); const QString ShaderVersion(reinterpret_cast(Functions->glGetString(GL_SHADING_LANGUAGE_VERSION))); diff --git a/common/lc_blenderpreferences.cpp b/common/lc_blenderpreferences.cpp index 25292a4d..f7993363 100644 --- a/common/lc_blenderpreferences.cpp +++ b/common/lc_blenderpreferences.cpp @@ -2720,7 +2720,7 @@ void lcBlenderPreferences::SaveSettings() lcSetProfileString(LC_PROFILE_BLENDER_VERSION, Value); const QString BlenderConfigDir = QString("%1/Blender/addons/%2/config").arg(gAddonPreferences->mDataDir, LC_BLENDER_ADDON_RENDER_FOLDER); - + Value = lcGetProfileString(LC_PROFILE_BLENDER_LDRAW_CONFIG_PATH); if (!Value.contains(LC_BLENDER_ADDON_RENDER_FOLDER)) { diff --git a/common/lc_categorydialog.h b/common/lc_categorydialog.h index ffcf0cbf..3fb1bac3 100644 --- a/common/lc_categorydialog.h +++ b/common/lc_categorydialog.h @@ -9,7 +9,7 @@ class lcCategoryDialog; class lcCategoryDialog : public QDialog { Q_OBJECT - + public: explicit lcCategoryDialog(QWidget* Parent, lcLibraryCategory* Category); virtual ~lcCategoryDialog(); diff --git a/common/lc_colors.cpp b/common/lc_colors.cpp index 262c5d21..39852d5c 100644 --- a/common/lc_colors.cpp +++ b/common/lc_colors.cpp @@ -422,7 +422,7 @@ QString lcGetColorToolTip(int ColorIndex) QPainter Painter(&Image); Painter.setPen(Qt::darkGray); - + if (Color->Code != LC_COLOR_NOCOLOR) Painter.drawRect(0, 0, Image.width() - 1, Image.height() - 1); else diff --git a/common/lc_doublespinbox.cpp b/common/lc_doublespinbox.cpp index e061c421..c10b9abb 100644 --- a/common/lc_doublespinbox.cpp +++ b/common/lc_doublespinbox.cpp @@ -219,7 +219,7 @@ bool lcDoubleSpinBox::event(QEvent* Event) else if (Event->type() == QEvent::ShortcutOverride) { QKeyEvent* KeyEvent = static_cast(Event); - + switch (KeyEvent->key()) { case Qt::Key_Up: @@ -228,12 +228,12 @@ bool lcDoubleSpinBox::event(QEvent* Event) case Qt::Key_PageDown: Event->accept(); return true; - + default: break; } } - + return QDoubleSpinBox::event(Event); } diff --git a/common/lc_filter.cpp b/common/lc_filter.cpp index a008a820..22b23e72 100644 --- a/common/lc_filter.cpp +++ b/common/lc_filter.cpp @@ -107,41 +107,41 @@ bool lcFilter::Match(const char* String) const } // Copyright 2018 IBM Corporation -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // -// Compares two text strings. Accepts '?' as a single-character wildcard. -// For each '*' wildcard, seeks out a matching sequence of any characters -// beyond it. Otherwise compares the strings a character at a time. +// Compares two text strings. Accepts '?' as a single-character wildcard. +// For each '*' wildcard, seeks out a matching sequence of any characters +// beyond it. Otherwise compares the strings a character at a time. // bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) { const char* WildSequence; // Points to prospective wild string match after '*' const char* TameSequence; // Points to prospective tame string match - + auto NotEquals=[](char a, char b) { // Lowercase the characters to be compared. if (a >= 'A' && a <= 'Z') a += ('a' - 'A'); - + if (b >= 'A' && b <= 'Z') b += ('a' - 'A'); return a != b; }; - // Find a first wildcard, if one exists, and the beginning of any + // Find a first wildcard, if one exists, and the beginning of any // prospectively matching sequence after it. do { @@ -157,7 +157,7 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) return true; // "ab" matches "ab*". } } - + return false; // "abcd" doesn't match "abc". } else @@ -172,12 +172,12 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) { continue; } - + if (!*Wild) { return true; // "abc*" matches "abcd". } - + // Search for the next prospective match. if (*Wild != '?') { @@ -189,7 +189,7 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) } } } - + // Keep fallback positions for retry in case of incomplete match. WildSequence = Wild; TameSequence = Tame; @@ -199,11 +199,11 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) { return false; // "abc" doesn't match "abd". } - + ++Wild; // Everything's a match, so far. ++Tame; } while (true); - + // Find any further wildcards and any further matching sequences. do { @@ -214,17 +214,17 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) { continue; } - + if (!*Wild) { return true; // "ab*c*" matches "abcd". } - + if (!*Tame) { return false; // "*bcd*" doesn't match "abc". } - + // Search for the next prospective match. if (*Wild != '?') { @@ -236,7 +236,7 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) } } } - + // Keep the new fallback positions. WildSequence = Wild; TameSequence = Tame; @@ -248,16 +248,16 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) { return false; // "*bcd" doesn't match "abc". } - + // A fine time for questions. while (*WildSequence == '?') { ++WildSequence; ++TameSequence; } - + Wild = WildSequence; - + // Fall back, but never so far again. while (NotEquals(*Wild, *(++TameSequence))) { @@ -266,10 +266,10 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) return false; // "*a*b" doesn't match "ac". } } - + Tame = TameSequence; } - + // Another check for the end, at the end. if (!*Tame) { @@ -282,7 +282,7 @@ bool lcFilter::FastWildCompare(const char* Tame, const char* Wild) return false; // "*bc" doesn't match "abcd". } } - + ++Wild; // Everything's still a match. ++Tame; } while (true); diff --git a/common/lc_findreplacewidget.cpp b/common/lc_findreplacewidget.cpp index a260fcf8..61afda3e 100644 --- a/common/lc_findreplacewidget.cpp +++ b/common/lc_findreplacewidget.cpp @@ -56,21 +56,21 @@ lcFindReplaceWidget::lcFindReplaceWidget(QWidget* Parent, lcModel* Model, bool R ReplaceColorPicker = new lcColorPicker(this, true); ReplaceColorPicker->setToolTip(tr("Replacement Color")); Layout->addWidget(ReplaceColorPicker, 1, 1); - + QPixmap Pixmap(1, 1); Pixmap.fill(QColor::fromRgba64(0, 0, 0, 0)); - + mReplacePartButton = new lcElidableToolButton(this); mReplacePartButton->setToolTip(tr("Replacement Part")); - + QSizePolicy PieceButtonSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); PieceButtonSizePolicy.setHorizontalStretch(2); PieceButtonSizePolicy.setVerticalStretch(0); mReplacePartButton->setSizePolicy(PieceButtonSizePolicy); - + mReplacePartButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); mReplacePartButton->setIcon(Pixmap); - + Layout->addWidget(mReplacePartButton, 1, 2); QToolButton* ReplaceNextButton = new QToolButton(this); @@ -166,7 +166,7 @@ void lcFindReplaceWidget::ReplaceButtonClicked() std::optional Result = lcShowPartSelectionPopup(Params.ReplacePieceInfo, std::vector>(), gDefaultColor, mReplacePartButton, mReplacePartButton->mapToGlobal(mReplacePartButton->rect().bottomLeft())); - + if (!Result.has_value()) return; diff --git a/common/lc_groupdialog.cpp b/common/lc_groupdialog.cpp index fd4cf056..e1de76ef 100644 --- a/common/lc_groupdialog.cpp +++ b/common/lc_groupdialog.cpp @@ -25,7 +25,7 @@ void lcGroupDialog::accept() QMessageBox::information(this, "LeoCAD", tr("Name cannot be empty.")); return; } - + for (const std::unique_ptr& Group : mGroups) { if (Group->mName == Name) @@ -33,8 +33,8 @@ void lcGroupDialog::accept() QMessageBox::information(this, "LeoCAD", tr("A group with this name already exists.")); return; } - } - + } + mName = Name; QDialog::accept(); diff --git a/common/lc_instructionsdialog.cpp b/common/lc_instructionsdialog.cpp index 8301a381..2e9b5ec6 100644 --- a/common/lc_instructionsdialog.cpp +++ b/common/lc_instructionsdialog.cpp @@ -291,7 +291,7 @@ lcInstructionsPropertiesWidget::lcInstructionsPropertiesWidget(QWidget* Parent, QWidget* CentralWidget = new QWidget(this); setWidget(CentralWidget); setWindowTitle(tr("Properties")); - + QGridLayout* Layout = new QGridLayout(CentralWidget); Layout->setContentsMargins(0, 0, 0, 0); @@ -343,7 +343,7 @@ void lcInstructionsPropertiesWidget::AddColorProperty(lcInstructionsPropertyType Pixmap.fill(Color); ColorButton->setIcon(Pixmap); }; - + UpdateButton(); connect(ColorButton, &QToolButton::clicked, [this, Type, UpdateButton]() @@ -651,7 +651,7 @@ void lcInstructionsDialog::Print(QPrinter* Printer) if (Printer->printerState() == QPrinter::Aborted || Printer->printerState() == QPrinter::Error) { delete Scene; - + return; } diff --git a/common/lc_ladderwidget.cpp b/common/lc_ladderwidget.cpp index fb24083b..9537e891 100644 --- a/common/lc_ladderwidget.cpp +++ b/common/lc_ladderwidget.cpp @@ -40,7 +40,7 @@ void lcLadderWidget::Show() if (Position.y() + HalfHeight > Desktop.bottom()) Position.setY(Desktop.bottom() - HalfHeight); - + move(Position); mLastMousePositionX = mapFromGlobal(QCursor::pos()).x(); @@ -97,7 +97,7 @@ void lcLadderWidget::UpdateMousePosition() { int CellHeight = height() / static_cast(mSteps.size()); int CurrentStep = MousePosition.y() / CellHeight; - + if (CurrentStep != mCurrentStep) { mCurrentStep = CurrentStep; diff --git a/common/lc_library.cpp b/common/lc_library.cpp index 2a9cf07c..5b07783f 100644 --- a/common/lc_library.cpp +++ b/common/lc_library.cpp @@ -1281,7 +1281,7 @@ bool lcPiecesLibrary::LoadPieceData(PieceInfo* Info) { char FileName[LC_MAXPATH]; lcDiskFile PieceFile; - + snprintf(FileName, sizeof(FileName), "parts/%s", Info->mFileName); PieceFile.SetFileName(mLibraryDir.absoluteFilePath(QLatin1String(FileName))); if (PieceFile.Open(QIODevice::ReadOnly)) @@ -1355,7 +1355,7 @@ void lcPiecesLibrary::GetPieceFile(const char* PieceName, std::functionmFileName); IncludeFile.SetFileName(mLibraryDir.absoluteFilePath(QLatin1String(FileName))); Found = IncludeFile.Open(QIODevice::ReadOnly); @@ -1530,7 +1530,7 @@ bool lcPiecesLibrary::LoadTexture(lcTexture* Texture) if (mZipFiles[static_cast(lcZipFileType::Official)]) { lcMemFile TextureFile; - + snprintf(FileName, sizeof(FileName), "ldraw/parts/textures/%s.png", Texture->mName); if (!mZipFiles[static_cast(lcZipFileType::Official)]->ExtractFile(FileName, TextureFile)) diff --git a/common/lc_lxf.cpp b/common/lc_lxf.cpp index 892e45eb..4299c844 100644 --- a/common/lc_lxf.cpp +++ b/common/lc_lxf.cpp @@ -185,7 +185,7 @@ bool lcImportLXFMLFile(const QString& FileData, std::vector& Pieces, s Pieces.push_back(Piece); NumBrickPieces++; } - + if (NumBrickPieces > 1) { std::vector Group; diff --git a/common/lc_mesh.cpp b/common/lc_mesh.cpp index 2222faa1..87b4e209 100644 --- a/common/lc_mesh.cpp +++ b/common/lc_mesh.cpp @@ -297,7 +297,7 @@ void lcMesh::ExportPOVRay(lcFile& File, const char* MeshName, const char** Color { const lcVertex* Verts = GetVertexData(); const IndexType* Indices = (IndexType*)mIndexData + Section->IndexOffset / sizeof(IndexType); - + if (NumSections > 1) File.WriteLine(" mesh {\n"); diff --git a/common/lc_meshloader.cpp b/common/lc_meshloader.cpp index 34fc6597..b302bc95 100644 --- a/common/lc_meshloader.cpp +++ b/common/lc_meshloader.cpp @@ -351,7 +351,7 @@ void lcMeshLoaderTypeData::AddMeshData(const lcMeshLoaderTypeData& Data, const l for (const lcMeshLoaderConditionalVertex& DataVertex : Data.mConditionalVertices) { lcVector3 Position[4]; - + Position[0] = lcMul31(DataVertex.Position[0], Transform); Position[1] = lcMul31(DataVertex.Position[1], Transform); Position[2] = lcMul31(DataVertex.Position[2], Transform); @@ -370,15 +370,15 @@ void lcMeshLoaderTypeData::AddMeshData(const lcMeshLoaderTypeData& Data, const l if (SrcSection->mMaterial->Type != lcMeshLoaderMaterialType::Solid) { lcMeshLoaderTextureParams DstTextureMap; - + if (TextureMap) DstTextureMap = *TextureMap; else DstTextureMap = *SrcSection->mMaterial; - + for (lcVector3& Point : DstTextureMap.Points) Point = lcMul31(Point, Transform); - + DstSection = AddSection(PrimitiveType, mMeshData->GetTexturedMaterial(ColorCode, DstTextureMap)); } else if (TextureMap && SrcSection->mPrimitiveType == LC_MESH_TRIANGLES) @@ -458,7 +458,7 @@ void lcMeshLoaderTypeData::AddMeshDataNoDuplicateCheck(const lcMeshLoaderTypeDat if (SrcSection->mMaterial->Type != lcMeshLoaderMaterialType::Solid) { lcMeshLoaderTextureParams DstTextureMap; - + if (TextureMap) DstTextureMap = *TextureMap; else diff --git a/common/lc_minifigdialog.cpp b/common/lc_minifigdialog.cpp index 13079adb..8b7bd5e4 100644 --- a/common/lc_minifigdialog.cpp +++ b/common/lc_minifigdialog.cpp @@ -134,9 +134,9 @@ lcMinifigDialog::lcMinifigDialog(QWidget* Parent) mMinifigWizard->Calculate(); mView->GetCamera()->SetViewpoint(lcVector3(0.0f, -270.0f, 90.0f)); mView->ZoomExtents(); - + ui->buttonBox->button(QDialogButtonBox::StandardButton::Ok)->setFocus(); - + connect(ui->TemplateComboBox, &QComboBox::currentTextChanged, this, &lcMinifigDialog::TemplateComboBoxCurrentTextChanged); connect(ui->TemplateSaveButton, &QPushButton::clicked, this, &lcMinifigDialog::TemplateSaveButtonClicked); connect(ui->TemplateDeleteButton, &QPushButton::clicked, this, &lcMinifigDialog::TemplateDeleteButtonClicked); @@ -196,7 +196,7 @@ void lcMinifigDialog::TemplateComboBoxCurrentTextChanged(const QString& Template UpdateTemplateCombo(); const lcMinifigTemplate& Template = Position->second; - + mView->MakeCurrent(); mMinifigWizard->LoadTemplate(TemplateName); @@ -387,7 +387,7 @@ void lcMinifigDialog::PieceButtonClicked() return; PieceInfo* NewPiece = Result.value(); - + SetCurrentTemplateModified(); UpdateTemplateCombo(); diff --git a/common/lc_model.cpp b/common/lc_model.cpp index c99b6452..27d84da0 100644 --- a/common/lc_model.cpp +++ b/common/lc_model.cpp @@ -1165,17 +1165,17 @@ void lcModel::Cut() { if (!AnyObjectsSelected()) return; - + Copy(); - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + RemoveSelectedObjects(); - + EndObjectEditAction(); EndActionSequence(tr("Cut")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateSelectedObjects(true); } @@ -1220,26 +1220,26 @@ void lcModel::Paste(bool PasteToCurrentStep) SelectedObjects.emplace_back(Piece.get()); } } - + if (PastedPieces.empty()) return; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + Merge(std::move(Model)); - + CalculateStep(mCurrentStep); - + EndObjectEditAction(); if (SelectedObjects.size() == 1) RecordSetSelectionAndFocusAction(std::vector(), SelectedObjects.front(), LC_PIECE_SECTION_POSITION, lcSelectionMode::Single); else RecordSetSelectionAndFocusAction(SelectedObjects, nullptr, 0, lcSelectionMode::Single); - + EndActionSequence(tr("Paste")); - + gMainWindow->UpdateTimeline(false, false); } @@ -1253,22 +1253,22 @@ void lcModel::DuplicateSelectedPieces() BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + std::vector NewPieces; lcPiece* Focus = nullptr; std::map GroupMap; - + std::function GetNewGroup = [this, &GroupMap, &GetNewGroup](lcGroup* Group) { const auto GroupIt = GroupMap.find(Group); - + if (GroupIt != GroupMap.end()) return GroupIt->second; else { lcGroup* Parent = Group->mGroup ? GetNewGroup(Group->mGroup) : nullptr; QString GroupName = Group->mName; - + while (!GroupName.isEmpty()) { const QChar Last = GroupName[GroupName.size() - 1]; @@ -1277,44 +1277,44 @@ void lcModel::DuplicateSelectedPieces() else break; } - + if (GroupName.isEmpty()) GroupName = Group->mName; - + lcGroup* NewGroup = AddGroup(GroupName, Parent); GroupMap[Group] = NewGroup; return NewGroup; } }; - + for (size_t PieceIndex = 0; PieceIndex < mPieces.size(); PieceIndex++) { const lcPiece* Piece = mPieces[PieceIndex].get(); - + if (!Piece->IsSelected()) continue; - + lcPiece* NewPiece = new lcPiece(*Piece); NewPiece->UpdatePosition(mCurrentStep); NewPieces.emplace_back(NewPiece); - + if (Piece->IsFocused()) Focus = NewPiece; - + PieceIndex++; AddPiece(std::unique_ptr(NewPiece), PieceIndex); - + lcGroup* Group = Piece->GetGroup(); if (Group) NewPiece->SetGroup(GetNewGroup(Group)); } - + EndObjectEditAction(); - + RecordSetSelectionAndFocusAction(NewPieces, Focus, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single); - + EndActionSequence(tr("Duplicate")); - + gMainWindow->UpdateTimeline(false, false); } @@ -1738,13 +1738,13 @@ void lcModel::SubModelAddBoundingBoxPoints(const lcMatrix44& WorldMatrix, std::v void lcModel::RecordSelectionAction(std::function Callback) { std::unique_ptr ModelActionSelection = std::make_unique(); - + ModelActionSelection->SaveStartState(this); - - Callback(); - + + Callback(); + ModelActionSelection->SaveEndState(this); - + if (ModelActionSelection->StateChanged()) mActionSequence.emplace_back(std::move(ModelActionSelection)); } @@ -1803,18 +1803,18 @@ template void lcModel::LoadObjectHistoryState(const std::vector& ObjectStates, std::vector>& Objects) { std::vector> NewObjects; - + NewObjects.reserve(ObjectStates.size()); - + for (const StateType& ObjectState : ObjectStates) { auto ObjectId = ObjectState.Id; bool Found = false; - + for (auto ObjectIt = Objects.begin(); ObjectIt != Objects.end(); ++ObjectIt) { ObjectType* Object = ObjectIt->get(); - + if (Object->GetId() == ObjectId) { NewObjects.emplace_back(std::move(*ObjectIt)); @@ -1823,17 +1823,17 @@ void lcModel::LoadObjectHistoryState(const std::vector& ObjectStates, break; } } - + if (!Found) NewObjects.emplace_back(new ObjectType()); } - + if constexpr(std::is_same_v) for (const std::unique_ptr& Camera : Objects) RemoveCameraFromViews(Camera.get()); - + Objects = std::move(NewObjects); - + for (size_t ObjectIndex = 0; ObjectIndex < Objects.size(); ObjectIndex++) Objects[ObjectIndex]->SetHistoryState(ObjectStates[ObjectIndex], this); } @@ -1849,10 +1849,7 @@ void lcModel::LoadHistoryState(const lcModelHistoryState& HistoryState) void lcModel::BeginObjectEditAction(lcModelActionEditMerge ModelActionEditMerge) { std::unique_ptr ModelActionObjectEdit = std::make_unique(ModelActionEditMerge); - - if (!ModelActionObjectEdit) - return; - + ModelActionObjectEdit->SaveStartState(this); mActionSequence.emplace_back(std::move(ModelActionObjectEdit)); @@ -1862,14 +1859,14 @@ void lcModel::EndObjectEditAction() { if (mActionSequence.empty()) return; - + lcModelActionObjectEdit* ModelActionObjectEdit = dynamic_cast(mActionSequence.back().get()); - + if (!ModelActionObjectEdit) return; - + ModelActionObjectEdit->SaveEndState(this); - + if (!ModelActionObjectEdit->StateChanged()) mActionSequence.pop_back(); } @@ -1898,7 +1895,7 @@ void lcModel::RecordModelPropertiesAction(const lcModelProperties& ModelProperti void lcModel::RunActionSequence(const std::vector>& ActionSequence, bool Apply) { bool SelectionChanged = false; - + auto RunAction=[this, &SelectionChanged](const lcModelAction* ModelAction, bool Apply) { if (!ModelAction) @@ -1908,7 +1905,7 @@ void lcModel::RunActionSequence(const std::vector ModelAction->LoadEndState(this); else ModelAction->LoadStartState(this); - + if (dynamic_cast(ModelAction)) { SelectionChanged = true; @@ -1932,14 +1929,14 @@ void lcModel::RunActionSequence(const std::vector for (auto ModelAction = ActionSequence.rbegin(); ModelAction != ActionSequence.rend(); ++ModelAction) RunAction(ModelAction->get(), false); } - + if (SelectionChanged) gMainWindow->UpdateSelectedObjects(true); - + gMainWindow->UpdateCurrentStep(); gMainWindow->UpdateTimeline(true, false); - - UpdateAllViews(); + + UpdateAllViews(); } void lcModel::BeginActionSequence() @@ -1951,14 +1948,14 @@ void lcModel::EndActionSequence(const QString& Description) { if (mActionSequence.empty()) return; - + if (mIsPreview) { mActionSequence.clear(); - + return; } - + bool CanMerge = false; if (mActionSequence.size() == 1 && !mUndoHistory.empty() && mUndoHistory.front()->ModelActions.size() == 1) @@ -2017,7 +2014,7 @@ void lcModel::RevertActionSequence() bool lcModel::IsModified() const { const lcModelHistoryEntry* FirstModifyAction = GetFirstUndoChange(); - + if (!FirstModifyAction) return mSavedHistory != nullptr; else @@ -2049,7 +2046,7 @@ const lcModelHistoryEntry* lcModel::GetFirstUndoChange() const for (const std::unique_ptr& UndoEntry : mUndoHistory) if (UndoEntry->ModelActions.size() != 1 || !dynamic_cast(UndoEntry->ModelActions.front().get())) return UndoEntry.get(); - + return nullptr; } @@ -2130,20 +2127,20 @@ void lcModel::InsertStep(lcStep Step) { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + for (const std::unique_ptr& Piece : mPieces) Piece->InsertTime(Step, 1); - + for (std::unique_ptr& Camera : mCameras) Camera->InsertTime(Step, 1); - + for (const std::unique_ptr& Light : mLights) Light->InsertTime(Step, 1); - - + + EndObjectEditAction(); EndActionSequence(tr("Insert Step")); - + SetCurrentStep(mCurrentStep); } @@ -2151,19 +2148,19 @@ void lcModel::RemoveStep(lcStep Step) { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + for (const std::unique_ptr& Piece : mPieces) Piece->RemoveTime(Step, 1); - + for (std::unique_ptr& Camera : mCameras) Camera->RemoveTime(Step, 1); - + for (const std::unique_ptr& Light : mLights) Light->RemoveTime(Step, 1); - + EndObjectEditAction(); EndActionSequence(tr("Remove Step")); - + SetCurrentStep(mCurrentStep); } @@ -2287,9 +2284,9 @@ void lcModel::UngroupSelection() if (SelectedGroups.empty()) { DiscardActionSequence(); - + QMessageBox::information(gMainWindow, tr("Ungroup Selection"), tr("No groups selected.")); - + return; } @@ -2329,13 +2326,13 @@ void lcModel::AddSelectedPiecesToGroup() break; } } - + if (!Group) return; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + for (const std::unique_ptr& Piece : mPieces) { if (Piece->IsFocused()) @@ -2346,39 +2343,39 @@ void lcModel::AddSelectedPiecesToGroup() } RemoveEmptyGroups(); - + EndObjectEditAction(); EndActionSequence(tr("Group")); - - gMainWindow->UpdateSelectedObjects(false); + + gMainWindow->UpdateSelectedObjects(false); } void lcModel::RemoveFocusPieceFromGroup() { bool Modified = false; - + for (const std::unique_ptr& Piece : mPieces) { if (Piece->IsFocused()) { Piece->SetGroup(nullptr); - + Modified = true; - + break; } } - + if (!Modified) { DiscardActionSequence(); - + return; } - + RemoveEmptyGroups(); - - EndObjectEditAction(); + + EndObjectEditAction(); EndActionSequence(tr("Ungroup")); } @@ -2388,50 +2385,50 @@ void lcModel::ShowEditGroupsDialog() if (Dialog.exec() != QDialog::Accepted) return; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + std::function UpdateGroups=[this, &UpdateGroups](const lcQEditGroupsDialog::GroupInfo& GroupInfo, lcGroup* ParentGroup) { lcGroup* Group = GroupInfo.Group; - + if (!Group) { Group = new lcGroup(); mGroups.emplace_back(Group); } - + Group->mName = GroupInfo.Name; Group->mGroup = ParentGroup; - + for (const lcQEditGroupsDialog::GroupInfo& ChildGroupInfo : GroupInfo.ChildGroups) UpdateGroups(ChildGroupInfo, Group); - + for (lcPiece* Piece : GroupInfo.ChildPieces) - Piece->SetGroup(Group); + Piece->SetGroup(Group); }; - + lcQEditGroupsDialog::GroupInfo GroupInfo = Dialog.GetGroups(); - + for (const lcQEditGroupsDialog::GroupInfo& ChildGroupInfo : GroupInfo.ChildGroups) UpdateGroups(ChildGroupInfo, nullptr); - + for (lcPiece* Piece : GroupInfo.ChildPieces) Piece->SetGroup(nullptr); - + RemoveEmptyGroups(); EndObjectEditAction(); - + if (mActionSequence.empty()) { DiscardActionSequence(); return; } - + RecordClearSelectionAction(); - + EndActionSequence(tr("Edit Groups")); gMainWindow->UpdateSelectedObjects(true); @@ -2624,10 +2621,10 @@ lcPiece* lcModel::AddPiece(PieceInfo* Info, quint32 Section) Piece->SetColorIndex(ColorIndex); AddPiece(Piece); }; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + if (Last) { std::vector TrainTracks; @@ -2666,20 +2663,20 @@ lcPiece* lcModel::AddPiece(PieceInfo* Info, quint32 Section) CreatePiece(Info, WorldMatrix, gMainWindow->mColorIndex); } - + if (!Piece) { DiscardActionSequence(); - + return nullptr; } - + EndObjectEditAction(); - + RecordSetSelectionAndFocusAction(std::vector(), Piece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single); EndActionSequence(tr("Add Piece")); - + gMainWindow->UpdateTimeline(false, false); return Piece; @@ -2688,35 +2685,35 @@ lcPiece* lcModel::AddPiece(PieceInfo* Info, quint32 Section) void lcModel::AddPiece(std::unique_ptr Piece, size_t PieceIndex) { const PieceInfo* Info = Piece->mPieceInfo; - + if (!Info->IsModel()) { const lcMesh* Mesh = Info->GetMesh(); - + if (Mesh && Mesh->mVertexCacheOffset == -1) lcGetPiecesLibrary()->mBuffersDirty = true; } - + mPieces.insert(mPieces.begin() + PieceIndex, std::move(Piece)); } size_t lcModel::AddPiece(lcPiece* Piece) { size_t PieceIndex; - + for (PieceIndex = 0; PieceIndex < mPieces.size(); PieceIndex++) { if (mPieces[PieceIndex]->GetStepShow() > Piece->GetStepShow()) { AddPiece(std::unique_ptr(Piece), PieceIndex); - + return PieceIndex; } } AddPiece(std::unique_ptr(Piece), PieceIndex); - - return PieceIndex; + + return PieceIndex; } void lcModel::FocusNextTrainTrack() @@ -2740,7 +2737,7 @@ void lcModel::FocusNextTrainTrack() ConnectionIndex = FocusSection - LC_PIECE_SECTION_TRAIN_TRACK_CONNECTION_FIRST; ConnectionIndex = (ConnectionIndex + 1) % TrainTrackInfo->GetConnections().size(); } - + BeginActionSequence(); RecordSetFocusAction(FocusPiece, LC_PIECE_SECTION_TRAIN_TRACK_CONNECTION_FIRST + ConnectionIndex, lcSelectionMode::Single); EndActionSequence(tr("Selection")); @@ -2767,7 +2764,7 @@ void lcModel::FocusPreviousTrainTrack() ConnectionIndex = FocusSection - LC_PIECE_SECTION_TRAIN_TRACK_CONNECTION_FIRST; ConnectionIndex = (ConnectionIndex + static_cast(TrainTrackInfo->GetConnections().size()) - 1) % TrainTrackInfo->GetConnections().size(); } - + BeginActionSequence(); RecordSetFocusAction(FocusPiece, LC_PIECE_SECTION_TRAIN_TRACK_CONNECTION_FIRST + ConnectionIndex, lcSelectionMode::Single); EndActionSequence(tr("Selection")); @@ -2822,22 +2819,22 @@ void lcModel::RotateFocusedTrainTrack(int Direction) if (!Transform) return; - + BeginActionSequence(); - + BeginObjectEditAction(lcModelActionEditMerge::None); - + FocusPiece->SetPosition(Transform.value().GetTranslation(), mCurrentStep, gMainWindow->GetAddKeys()); FocusPiece->SetRotation(lcMatrix33(Transform.value()), mCurrentStep, gMainWindow->GetAddKeys()); FocusPiece->UpdatePosition(mCurrentStep); - + EndObjectEditAction(); - + if ((FocusSection != LC_PIECE_SECTION_INVALID && FocusSection != LC_PIECE_SECTION_POSITION) || !TracksConnected) RecordSetFocusAction(FocusPiece, LC_PIECE_SECTION_TRAIN_TRACK_CONNECTION_FIRST + NewConnectionIndex, lcSelectionMode::Single); - + EndActionSequence(tr("Rotate")); - + gMainWindow->UpdateSelectedObjects(true); } @@ -2903,22 +2900,22 @@ void lcModel::DeleteSelectedObjects() return; } - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = RemoveSelectedObjects(); - + if (!Modified) { DiscardActionSequence(); - + return; - } - - EndObjectEditAction(); + } + + EndObjectEditAction(); EndActionSequence(tr("Delete")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateSelectedObjects(true); gMainWindow->UpdateInUseCategory(); @@ -2928,11 +2925,11 @@ void lcModel::ResetSelectedPiecesPivotPoint() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + for (const std::unique_ptr& Piece : mPieces) if (Piece->IsSelected()) Piece->ResetPivotPoint(); - + EndObjectEditAction(); EndActionSequence(tr("Reset Pivot Point")); } @@ -2941,7 +2938,7 @@ void lcModel::RemoveSelectedObjectsKeyFrames() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + for (const std::unique_ptr& Piece : mPieces) if (Piece->IsSelected()) Piece->RemoveKeyFrames(); @@ -2953,7 +2950,7 @@ void lcModel::RemoveSelectedObjectsKeyFrames() for (const std::unique_ptr& Light : mLights) if (Light->IsSelected()) Light->RemoveKeyFrames(); - + EndObjectEditAction(); EndActionSequence(tr("Remove Key Frames")); } @@ -2966,49 +2963,49 @@ void lcModel::InsertControlPoint() return; lcVector3 Start, End; - + gMainWindow->GetActiveView()->GetRayUnderPointer(Start, End); - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = Piece->InsertControlPoint(Start, End); - + if (!Modified) { DiscardActionSequence(); - + return; - } - - EndObjectEditAction(); + } + + EndObjectEditAction(); EndActionSequence(tr("Add Control Point")); - + gMainWindow->UpdateSelectedObjects(true); } void lcModel::RemoveFocusedControlPoint() { lcPiece* Piece = dynamic_cast(GetFocusObject()); - + if (!Piece) return; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = Piece->RemoveFocusedControlPoint(); - + if (!Modified) { DiscardActionSequence(); - + return; - } - - EndObjectEditAction(); + } + + EndObjectEditAction(); EndActionSequence(tr("Remove Control Point")); - + gMainWindow->UpdateSelectedObjects(true); } @@ -3016,7 +3013,7 @@ void lcModel::ShowSelectedPiecesEarlier() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + std::vector MovedPieces; for (auto PieceIt = mPieces.begin(); PieceIt != mPieces.end(); ) @@ -3053,10 +3050,10 @@ void lcModel::ShowSelectedPiecesEarlier() Piece->SetFileLine(-1); AddPiece(Piece); } - + EndObjectEditAction(); EndActionSequence(tr("Show Earlier")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateSelectedObjects(true); } @@ -3065,7 +3062,7 @@ void lcModel::ShowSelectedPiecesLater() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + std::vector MovedPieces; for (auto PieceIt = mPieces.begin(); PieceIt != mPieces.end(); ) @@ -3083,7 +3080,7 @@ void lcModel::ShowSelectedPiecesLater() MovedPieces.emplace_back(PieceIt->release()); PieceIt = mPieces.erase(PieceIt); - + continue; } } @@ -3094,7 +3091,7 @@ void lcModel::ShowSelectedPiecesLater() if (MovedPieces.empty()) { DiscardActionSequence(); - + return; } @@ -3103,10 +3100,10 @@ void lcModel::ShowSelectedPiecesLater() Piece->SetFileLine(-1); AddPiece(Piece); } - + EndObjectEditAction(); EndActionSequence(tr("Show Later")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateSelectedObjects(false); } @@ -3115,10 +3112,10 @@ void lcModel::SetPieceSteps(const std::vector>& Piec { if (PieceSteps.size() != mPieces.size()) return; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = false; for (size_t PieceIdx = 0; PieceIdx < PieceSteps.size(); PieceIdx++) @@ -3143,7 +3140,7 @@ void lcModel::SetPieceSteps(const std::vector>& Piec { EndObjectEditAction(); EndActionSequence(tr("Change Step")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateSelectedObjects(false); } @@ -3164,10 +3161,10 @@ void lcModel::MoveSelectionToModel(lcModel* Model) { if (!Model) return; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + std::vector Pieces; lcPiece* ModelPiece = nullptr; lcStep FirstStep = LC_STEP_MAX; @@ -3197,14 +3194,14 @@ void lcModel::MoveSelectionToModel(lcModel* Model) else PieceIndex++; } - + if (Pieces.empty()) { DiscardActionSequence(); return; } - + lcVector3 ModelCenter = (Min + Max) / 2.0f; ModelCenter.z += (Min.z - Max.z) / 2.0f; @@ -3223,13 +3220,13 @@ void lcModel::MoveSelectionToModel(lcModel* Model) ModelPiece->Initialize(lcMatrix44Translation(ModelCenter), FirstStep); ModelPiece->UpdatePosition(mCurrentStep); } - + EndObjectEditAction(); - + gMainWindow->UpdateTimeline(false, false); RecordSetSelectionAndFocusAction(std::vector(), ModelPiece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single); - + EndActionSequence(tr("Move to Model")); } @@ -3237,7 +3234,7 @@ void lcModel::InlineSelectedModels() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + std::vector NewPieces; bool Modified = false; @@ -3255,7 +3252,7 @@ void lcModel::InlineSelectedModels() mPieces.erase(mPieces.begin() + PieceIndex); lcModel* Model = Piece->mPieceInfo->GetModel(); - + Modified = true; for (const std::unique_ptr& ModelPiece : Model->mPieces) @@ -3285,18 +3282,18 @@ void lcModel::InlineSelectedModels() if (!Modified) { QMessageBox::information(gMainWindow, tr("LeoCAD"), tr("No models selected.")); - + DiscardActionSequence(); - + return; } - + EndObjectEditAction(); - + RecordSetSelectionAndFocusAction(NewPieces, nullptr, 0, lcSelectionMode::Single); EndActionSequence(tr("Inline Model")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateInUseCategory(); } @@ -3304,7 +3301,7 @@ void lcModel::InlineSelectedModels() void lcModel::RemoveCameraFromViews(lcCamera* Camera) { std::vector Views = lcView::GetModelViews(this); - + for (lcView* View : Views) if (Camera == View->GetCamera()) View->SetCamera(Camera, true); @@ -3336,7 +3333,7 @@ bool lcModel::RemoveSelectedObjects() if (Camera->IsSelected()) { RemoveCameraFromViews(Camera); - + RemovedCamera = true; CameraIt = mCameras.erase(CameraIt); } @@ -3690,7 +3687,7 @@ void lcModel::SetObjectsKeyFrame(const std::vector& Objects, lcObject { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = false; for (lcObject* Object : Objects) @@ -3703,7 +3700,7 @@ void lcModel::SetObjectsKeyFrame(const std::vector& Objects, lcObject { EndObjectEditAction(); EndActionSequence(KeyFrame ? tr("Add KeyFrame") : tr("Remove KeyFrame")); - + gMainWindow->UpdateSelectedObjects(false); } else @@ -3716,7 +3713,7 @@ void lcModel::SetSelectedPiecesColorIndex(int ColorIndex) { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = false; for (const std::unique_ptr& Piece : mPieces) @@ -3732,7 +3729,7 @@ void lcModel::SetSelectedPiecesColorIndex(int ColorIndex) { EndObjectEditAction(); EndActionSequence(tr("Paint")); - + gMainWindow->UpdateSelectedObjects(false); gMainWindow->UpdateTimeline(false, true); } @@ -3764,17 +3761,17 @@ void lcModel::SetSelectedPiecesStepShow(lcStep Step) if (MovedPieces.empty()) return; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + for (lcPiece* Piece : MovedPieces) { Piece->SetFileLine(-1); AddPiece(Piece); } - - EndObjectEditAction(); + + EndObjectEditAction(); EndActionSequence(tr("Set Show Step")); gMainWindow->UpdateTimeline(false, false); @@ -3784,10 +3781,10 @@ void lcModel::SetSelectedPiecesStepShow(lcStep Step) void lcModel::SetSelectedPiecesStepHide(lcStep Step) { bool Modified = false; - + BeginActionSequence(); - BeginObjectEditAction(lcModelActionEditMerge::None); - + BeginObjectEditAction(lcModelActionEditMerge::None); + for (const std::unique_ptr& Piece : mPieces) { if (Piece->IsSelected() && Piece->GetStepHide() != Step) @@ -3797,17 +3794,17 @@ void lcModel::SetSelectedPiecesStepHide(lcStep Step) Modified = true; } } - + if (!Modified) { DiscardActionSequence(); - + return; } - - EndObjectEditAction(); + + EndObjectEditAction(); EndActionSequence(tr("Set Hide Step")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateSelectedObjects(false); } @@ -3816,22 +3813,22 @@ void lcModel::SetCameraProjection(lcCamera* Camera, lcCameraProjection CameraPro { if (Camera->GetProjection() == CameraProjection) return; - + if (!Camera->IsSimple()) { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); } - + Camera->SetProjection(CameraProjection); Camera->UpdatePosition(mCurrentStep); - + if (!Camera->IsSimple()) { EndObjectEditAction(); EndActionSequence(tr("Change Projection")); } - + UpdateAllViews(); gMainWindow->UpdateSelectedObjects(false); } @@ -3842,7 +3839,7 @@ void lcModel::SetObjectsProperty(const std::vector& Objects, lcObject BeginObjectEditAction(static_cast(static_cast(lcModelActionEditMerge::PropertiesEdit) | static_cast(PropertyId))); bool Modified = false; - + for (lcObject* Object : Objects) { bool ObjectModified = Object->SetPropertyValue(PropertyId, mCurrentStep, gMainWindow->GetAddKeys(), Value); @@ -4369,7 +4366,7 @@ void lcModel::SetSelectionAndFocus(const std::vector& Objects, lcObje void lcModel::FocusOrDeselectObject(lcObject* Object, uint32_t Section, lcSelectionMode SelectionMode) { BeginActionSequence(); - + if (Object) { if (!Object->IsFocused(Section)) @@ -4381,7 +4378,7 @@ void lcModel::FocusOrDeselectObject(lcObject* Object, uint32_t Section, lcSelect { RecordSetFocusAction(nullptr, 0, SelectionMode); } - + EndActionSequence(tr("Selection")); } @@ -4450,10 +4447,10 @@ void lcModel::DeselectAllObjects() { for (const std::unique_ptr& Piece : mPieces) Piece->SetSelected(false); - + for (const std::unique_ptr& Camera : mCameras) Camera->SetSelected(false); - + for (const std::unique_ptr& Light : mLights) Light->SetSelected(false); } @@ -4464,7 +4461,7 @@ void lcModel::SetFocusedObject(lcObject* FocusObject, uint32_t FocusSection, lcS if (PreviousFocus) PreviousFocus->SetFocused(PreviousFocus->GetFocusSection(), false); - + if (FocusObject) { lcPiece* Piece = dynamic_cast(FocusObject); @@ -4489,9 +4486,9 @@ void lcModel::SetObjectsSelected(const std::vector& Objects, bool Sel { if (Object->IsSelected() == Selected) continue; - + Object->SetSelected(Selected); - + if (Object->IsPiece()) { lcPiece* Piece = dynamic_cast(Object); @@ -4515,32 +4512,32 @@ void lcModel::HideSelectedPieces() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = false; - + for (const std::unique_ptr& Piece : mPieces) { if (Piece->IsSelected() && !Piece->IsHidden()) { Piece->SetHidden(true); - + Modified = true; } } - + if (!Modified) { DiscardActionSequence(); - + return; } - + EndObjectEditAction(); - + RecordClearSelectionAction(); - + EndActionSequence(tr("Hide Pieces")); - + gMainWindow->UpdateTimeline(false, true); gMainWindow->UpdateSelectedObjects(true); } @@ -4549,29 +4546,29 @@ void lcModel::HideUnselectedPieces() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = false; - + for (const std::unique_ptr& Piece : mPieces) { if (!Piece->IsSelected() && !Piece->IsHidden()) { Piece->SetHidden(true); - + Modified = true; } } - + if (!Modified) { DiscardActionSequence(); - + return; - } - - EndObjectEditAction(); + } + + EndObjectEditAction(); EndActionSequence(tr("Hide Pieces")); - + gMainWindow->UpdateTimeline(false, true); gMainWindow->UpdateSelectedObjects(true); } @@ -4580,29 +4577,29 @@ void lcModel::UnhideSelectedPieces() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = false; - + for (const std::unique_ptr& Piece : mPieces) { if (Piece->IsSelected() && Piece->IsHidden()) { Piece->SetHidden(false); - + Modified = true; } } - + if (!Modified) { DiscardActionSequence(); - + return; } - EndObjectEditAction(); + EndObjectEditAction(); EndActionSequence(tr("Unhide Pieces")); - + gMainWindow->UpdateTimeline(false, true); gMainWindow->UpdateSelectedObjects(true); } @@ -4611,29 +4608,29 @@ void lcModel::UnhideAllPieces() { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + bool Modified = false; - + for (const std::unique_ptr& Piece : mPieces) { if (Piece->IsHidden()) { Piece->SetHidden(false); - + Modified = true; } } - + if (!Modified) { DiscardActionSequence(); - + return; } - - EndObjectEditAction(); + + EndObjectEditAction(); EndActionSequence(tr("Unhide Pieces")); - + gMainWindow->UpdateTimeline(false, true); gMainWindow->UpdateSelectedObjects(true); } @@ -4673,10 +4670,10 @@ void lcModel::FindReplacePiece(bool SearchForward, bool FindAll, bool Replace) size_t StartIndex = mPieces.size() - 1; int ReplacedCount = 0; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + if (!FindAll) { // We have to find the currently focused piece, in order to find next/prev match and (optionally) to replace it @@ -4745,9 +4742,9 @@ void lcModel::FindReplacePiece(bool SearchForward, bool FindAll, bool Replace) if (CurrentIndex == StartIndex) break; } - + EndObjectEditAction(); - + if (FindAll) RecordSetSelectionAndFocusAction(Selection, nullptr, 0, lcSelectionMode::Single); else @@ -4756,7 +4753,7 @@ void lcModel::FindReplacePiece(bool SearchForward, bool FindAll, bool Replace) if (ReplacedCount) { EndActionSequence(tr("Replace Piece(s)", "", ReplacedCount)); - + gMainWindow->UpdateSelectedObjects(false); gMainWindow->UpdateTimeline(false, true); } @@ -4849,9 +4846,9 @@ void lcModel::EndMouseTool(lcTool Tool, lcView* View, bool Accept) RevertActionSequence(); return; } - + const lcCamera* Camera = View->GetCamera(); - + switch (Tool) { case lcTool::Insert: @@ -4927,27 +4924,27 @@ void lcModel::InsertPieceToolClicked(const std::vector& Piece BeginObjectEditAction(lcModelActionEditMerge::None); lcPiece* Piece = nullptr; - + for (const lcInsertPieceInfo& PieceInfoTransform : PieceInfoTransforms) { Piece = new lcPiece(PieceInfoTransform.Info); - + Piece->Initialize(PieceInfoTransform.Transform, mCurrentStep); Piece->SetColorIndex(PieceInfoTransform.ColorIndex); Piece->UpdatePosition(mCurrentStep); - + AddPiece(Piece); } - + EndObjectEditAction(); - + RecordSetSelectionAndFocusAction(std::vector(), Piece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single); - + EndActionSequence(tr("Add Piece")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateInUseCategory(); - + UpdateTrainTrackConnections(Piece, false); } @@ -4955,16 +4952,16 @@ void lcModel::InsertCameraToolClicked(const lcVector3& Position) { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + lcCamera* Camera = new lcCamera(false, Position, GetSelectionOrModelCenter()); - + Camera->CreateName(mCameras); mCameras.emplace_back(Camera); - + EndObjectEditAction(); - + RecordSetSelectionAndFocusAction(std::vector(), Camera, LC_CAMERA_SECTION_POSITION, lcSelectionMode::Single); - + EndActionSequence(tr("Add Camera")); } @@ -4998,14 +4995,14 @@ void lcModel::InsertLightToolClicked(const lcVector3& Position, lcLightType Ligh BeginObjectEditAction(lcModelActionEditMerge::None); lcLight* Light = new lcLight(Position, LightType); - + Light->CreateName(mLights); mLights.emplace_back(Light); - + EndObjectEditAction(); - + RecordSetSelectionAndFocusAction(std::vector(), Light, LC_LIGHT_SECTION_POSITION, lcSelectionMode::Single); - + EndActionSequence(ActionName); } @@ -5115,10 +5112,10 @@ void lcModel::EraserToolClicked(lcObject* Object) { if (!Object) return; - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + switch (Object->GetType()) { case lcObjectType::Piece: @@ -5165,10 +5162,10 @@ void lcModel::EraserToolClicked(lcObject* Object) } break; } - + EndObjectEditAction(); EndActionSequence(tr("Delete")); - + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateSelectedObjects(true); } @@ -5189,7 +5186,7 @@ void lcModel::PaintToolClicked(lcObject* Object) EndObjectEditAction(); EndActionSequence(tr("Paint")); - + gMainWindow->UpdateSelectedObjects(false); gMainWindow->UpdateTimeline(false, true); } @@ -5243,21 +5240,21 @@ void lcModel::UpdateRollTool(lcCamera* Camera, float Mouse) void lcModel::ZoomRegionToolClicked(lcView* View, float AspectRatio, const lcVector3& Position, const lcVector3& TargetPosition, const lcVector3* Corners) { lcCamera* Camera = View->GetCamera(); - + if (!Camera->IsSimple()) { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); } - + Camera->ZoomRegion(AspectRatio, Position, TargetPosition, Corners, mCurrentStep, gMainWindow->GetAddKeys()); - + if (!Camera->IsSimple()) { EndObjectEditAction(); EndActionSequence(tr("Zoom")); } - + gMainWindow->UpdateSelectedObjects(false); UpdateAllViews(); } @@ -5275,13 +5272,13 @@ void lcModel::LookAt(lcCamera* Camera) else Center = lcVector3(0.0f, 0.0f, 0.0f); } - + if (!Camera->IsSimple()) { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); } - + Camera->Center(Center, mCurrentStep, gMainWindow->GetAddKeys()); gMainWindow->UpdateSelectedObjects(false); @@ -5301,9 +5298,9 @@ void lcModel::MoveCamera(lcCamera* Camera, const lcVector3& Direction) BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::KeyboardMoveCamera); } - + Camera->MoveRelative(Direction, mCurrentStep, gMainWindow->GetAddKeys()); - + gMainWindow->UpdateSelectedObjects(false); UpdateAllViews(); @@ -5332,18 +5329,18 @@ void lcModel::ZoomExtents(lcCamera* Camera, float Aspect, const lcMatrix44& Worl } const lcVector3 Center = (Min + Max) / 2.0f; - + if (!Camera->IsSimple()) { BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); } - + Camera->ZoomExtents(Aspect, Center, Points, mCurrentStep, gMainWindow ? gMainWindow->GetAddKeys() : false); if (!mIsPreview && gMainWindow) gMainWindow->UpdateSelectedObjects(false); - + UpdateAllViews(); if (!Camera->IsSimple()) @@ -5360,12 +5357,12 @@ void lcModel::Zoom(lcCamera* Camera, float Amount) BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::KeyboardZoom); } - + Camera->Zoom(Amount, mCurrentStep, gMainWindow->GetAddKeys()); if (!mIsPreview) gMainWindow->UpdateSelectedObjects(false); - + UpdateAllViews(); if (!Camera->IsSimple()) @@ -5432,12 +5429,12 @@ void lcModel::ShowArrayDialog() QMessageBox::information(gMainWindow, tr("LeoCAD"), tr("Array only has 1 element or less, no pieces added.")); return; } - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + std::vector NewPieces; - + for (int Step1 = 0; Step1 < Dialog.mCounts[0]; Step1++) { for (int Step2 = 0; Step2 < Dialog.mCounts[1]; Step2++) @@ -5465,32 +5462,32 @@ void lcModel::ShowArrayDialog() Position = lcVector3(ModelWorld.r[3].x, ModelWorld.r[3].y, ModelWorld.r[3].z); ModelWorld.SetTranslation(Position + Offset); - + lcPiece* NewPiece = new lcPiece(nullptr); NewPiece->SetPieceInfo(Piece->mPieceInfo, Piece->GetID(), true, true); NewPiece->Initialize(ModelWorld, mCurrentStep); NewPiece->SetColorIndex(Piece->GetColorIndex()); - + NewPieces.emplace_back(NewPiece); } } } } - + for (size_t PieceIdx = 0; PieceIdx < NewPieces.size(); PieceIdx++) { lcPiece* Piece = (lcPiece*)NewPieces[PieceIdx]; Piece->UpdatePosition(mCurrentStep); AddPiece(Piece); } - + EndObjectEditAction(); - + RecordAddToSelectionAction(NewPieces); - + EndActionSequence(tr("Piece Array")); - - gMainWindow->UpdateTimeline(false, false); + + gMainWindow->UpdateTimeline(false, false); } void lcModel::ShowMinifigDialog() @@ -5501,38 +5498,38 @@ void lcModel::ShowMinifigDialog() return; gMainWindow->GetActiveView()->MakeCurrent(); - + BeginActionSequence(); BeginObjectEditAction(lcModelActionEditMerge::None); - + lcGroup* Group = AddGroup(tr("Minifig #"), nullptr); std::vector Pieces; lcMinifig& Minifig = Dialog.mMinifigWizard->mMinifig; - + Pieces.reserve(LC_MFW_NUMITEMS); - + for (int PartIndex = 0; PartIndex < LC_MFW_NUMITEMS; PartIndex++) { if (!Minifig.Parts[PartIndex]) continue; - + lcPiece* Piece = new lcPiece(Minifig.Parts[PartIndex]); - + Piece->Initialize(Minifig.Matrices[PartIndex], mCurrentStep); Piece->SetColorIndex(Minifig.ColorIndices[PartIndex]); Piece->SetGroup(Group); AddPiece(Piece); Piece->UpdatePosition(mCurrentStep); - + Pieces.emplace_back(Piece); } - + EndObjectEditAction(); - + RecordSetSelectionAndFocusAction(Pieces, nullptr, 0, lcSelectionMode::Single); - + EndActionSequence(tr("Add Minifig")); - + gMainWindow->UpdateTimeline(false, false); } diff --git a/common/lc_model.h b/common/lc_model.h index 6de134d1..3ff14421 100644 --- a/common/lc_model.h +++ b/common/lc_model.h @@ -135,10 +135,10 @@ public: { return mActive; } - + bool IsModified() const; void SetSaved(); - + bool GetPieceWorldMatrix(lcPiece* Piece, lcMatrix44& ParentWorldMatrix) const; bool IncludesModel(const lcModel* Model) const; void CreatePieceInfo(Project* Project); @@ -225,12 +225,12 @@ public: void ShowNextStep(); void InsertStep(lcStep Step); void RemoveStep(lcStep Step); - + template void LoadObjectHistoryState(const std::vector& ObjectStates, std::vector>& Objects); void LoadHistoryState(const lcModelHistoryState& HistoryState); void SetModelProperties(const lcModelProperties& ModelProperties); - + lcPiece* AddPiece(PieceInfo* Info, quint32 Section); void AddPiece(std::unique_ptr Piece, size_t PieceIndex); void DeleteSelectedObjects(); @@ -266,7 +266,7 @@ public: bool LoadInventory(const QByteArray& Inventory); int SplitMPD(QIODevice& Device); void Merge(std::unique_ptr Other); - + void SetMinifig(const lcMinifig& Minifig); void SetPreviewPieceInfo(PieceInfo* Info, int ColorIndex); @@ -314,7 +314,7 @@ public: void GetPartsListForStep(lcStep Step, int DefaultColorIndex, lcPartsList& PartsList, bool Cumulative) const; void GetModelParts(const lcMatrix44& WorldMatrix, int DefaultColorIndex, std::vector& ModelParts) const; void GetSelectionInformation(int* Flags, std::vector& Selection, lcObject** Focus) const; - + void ClearSelection(); void SetSelectionAndFocus(const std::vector& Selection, lcObject* Focus, quint32 Section, lcSelectionMode SelectionMode); void FocusOrDeselectObject(lcObject* Object, uint32_t Section, lcSelectionMode SelectionMode); @@ -391,7 +391,7 @@ public: protected: void DeleteModel(); - + void RecordSelectionAction(std::function Callback); void RecordClearSelectionAction(); void RecordSetFocusAction(lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode); @@ -416,7 +416,7 @@ protected: void RemoveEmptyGroups(); bool RemoveSelectedObjects(); void RemoveCameraFromViews(lcCamera* Camera); - + std::vector GetSelectionModePieces(lcSelectionMode SelectionMode, const lcPiece* SelectedPiece) const; void DeselectAllObjects(); void SetFocusedObject(lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode); diff --git a/common/lc_modelaction.cpp b/common/lc_modelaction.cpp index 8d698b29..81609e0b 100644 --- a/common/lc_modelaction.cpp +++ b/common/lc_modelaction.cpp @@ -110,7 +110,7 @@ void lcModelActionSelection::LoadState(const lcModelActionSelectionState& State, lcPiece* Piece = Pieces[PieceIndex].get(); Piece->SetSelected(State.PieceSelection[PieceIndex]); - + if (State.FocusObjectType == lcObjectType::Piece && State.FocusIndex == PieceIndex) Piece->SetFocused(State.FocusSection, true); else @@ -122,7 +122,7 @@ void lcModelActionSelection::LoadState(const lcModelActionSelectionState& State, lcCamera* Camera = Cameras[CameraIndex].get(); Camera->SetSelected(State.CameraSelection[CameraIndex]); - + if (State.FocusObjectType == lcObjectType::Camera && State.FocusIndex == CameraIndex) Camera->SetFocused(State.FocusSection, true); else @@ -134,7 +134,7 @@ void lcModelActionSelection::LoadState(const lcModelActionSelectionState& State, lcLight* Light = Lights[LightIndex].get(); Light->SetSelected(State.LightSelection[LightIndex]); - + if (State.FocusObjectType == lcObjectType::Light && State.FocusIndex == LightIndex) Light->SetFocused(State.FocusSection, true); else @@ -159,22 +159,22 @@ lcModelActionObjectEdit::~lcModelActionObjectEdit() void lcModelActionObjectEdit::SaveState(lcModelHistoryState& State, const lcModel* Model) { const std::vector>& Groups = Model->GetGroups(); - + for (const std::unique_ptr& Group : Groups) State.Groups.emplace_back(Group->GetHistoryState(Model)); - + const std::vector>& Pieces = Model->GetPieces(); - + for (const std::unique_ptr& Piece : Pieces) State.Pieces.emplace_back(Piece->GetHistoryState(Model)); - + const std::vector>& Cameras = Model->GetCameras(); - + for (const std::unique_ptr& Camera : Cameras) State.Cameras.emplace_back(Camera->GetHistoryState(Model)); - + const std::vector>& Lights = Model->GetLights(); - + for (const std::unique_ptr& Light : Lights) State.Lights.emplace_back(Light->GetHistoryState(Model)); } diff --git a/common/lc_modelaction.h b/common/lc_modelaction.h index 1d3624bd..9a00eda7 100644 --- a/common/lc_modelaction.h +++ b/common/lc_modelaction.h @@ -10,7 +10,7 @@ class lcModelAction public: lcModelAction() = default; virtual ~lcModelAction() = default; - + virtual void SaveStartState(const lcModel* Model) = 0; virtual void SaveEndState(const lcModel* Model) = 0; virtual void LoadStartState(lcModel* Model) const = 0; @@ -51,7 +51,7 @@ class lcModelActionSelection : public lcModelAction public: lcModelActionSelection() = default; virtual ~lcModelActionSelection() = default; - + void SaveStartState(const lcModel* Model) override; void SaveEndState(const lcModel* Model) override; void LoadStartState(lcModel* Model) const override; @@ -61,7 +61,7 @@ public: protected: static void SaveState(lcModelActionSelectionState& State, const lcModel* Model); static void LoadState(const lcModelActionSelectionState& State, lcModel* Model); - + lcModelActionSelectionState mStartState; lcModelActionSelectionState mEndState; }; @@ -98,7 +98,7 @@ class lcModelActionObjectEdit: public lcModelAction public: lcModelActionObjectEdit(lcModelActionEditMerge ModelActionEditMerge); virtual ~lcModelActionObjectEdit(); - + void SaveStartState(const lcModel* Model) override; void SaveEndState(const lcModel* Model) override; void LoadStartState(lcModel* Model) const override; @@ -111,7 +111,7 @@ public: protected: static void SaveState(lcModelHistoryState& State, const lcModel* Model); static void LoadState(const lcModelHistoryState& State, lcModel* Model); - + lcModelHistoryState mStartState; lcModelHistoryState mEndState; lcModelActionEditMerge mMerge; diff --git a/common/lc_objectproperty.h b/common/lc_objectproperty.h index 071232f2..432863c5 100644 --- a/common/lc_objectproperty.h +++ b/common/lc_objectproperty.h @@ -68,12 +68,12 @@ class lcObjectProperty { public: lcObjectProperty() = default; - + explicit lcObjectProperty(const T& DefaultValue) : mValue(DefaultValue) { } - + operator const T& () const { return mValue; diff --git a/common/lc_partselectionwidget.cpp b/common/lc_partselectionwidget.cpp index 267094a5..11e1bd48 100644 --- a/common/lc_partselectionwidget.cpp +++ b/common/lc_partselectionwidget.cpp @@ -249,7 +249,7 @@ void lcPartSelectionListModel::SetCustomParts(const std::vectormFileName).contains(FilterRx)); } - + mListView->setRowHidden((int)PartIdx, !Visible); } } @@ -662,7 +662,7 @@ void lcPartSelectionListView::SetCurrentPart(PieceInfo* Info) { setCurrentIndex(Index); scrollTo(Index, QAbstractItemView::EnsureVisible); - } + } } void lcPartSelectionListView::SetNoIcons() @@ -771,13 +771,13 @@ void lcPartSelectionListView::SetIconSize(int Size) { setIconSize(QSize(Size, Size)); lcSetProfileInt(LC_PROFILE_PARTS_LIST_ICONS, Size); - + #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) float DeviceScale = devicePixelRatioF(); #else float DeviceScale = devicePixelRatio(); #endif - + mListModel->SetIconSize(Size, DeviceScale); UpdateViewMode(); @@ -990,18 +990,18 @@ void lcPartSelectionWidget::SetCategory(lcPartCategoryType Type, int Index) { QTreeWidgetItem* Item = mCategoriesWidget->topLevelItem(Row); lcPartCategoryType ItemType = static_cast(Item->data(0, static_cast(lcPartCategoryRole::Type)).toInt()); - + if (ItemType != Type) continue; - + if (Type == lcPartCategoryType::Palette || Type == lcPartCategoryType::Category) { int ItemIndex = Item->data(0, static_cast(lcPartCategoryRole::Index)).toInt(); - + if (ItemIndex != Index) continue; } - + mCategoriesWidget->setCurrentItem(Item); break; } diff --git a/common/lc_propertieswidget.cpp b/common/lc_propertieswidget.cpp index 558ee4ea..1b66da2b 100644 --- a/common/lc_propertieswidget.cpp +++ b/common/lc_propertieswidget.cpp @@ -469,7 +469,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V void lcPropertiesWidget::UpdateFloat(lcObjectPropertyId PropertyId, float Value) { lcDoubleSpinBox* Widget = qobject_cast(mPropertyWidgets[static_cast(PropertyId)].Editor); - + if (Widget) { QSignalBlocker Blocker(Widget); @@ -1083,7 +1083,7 @@ void lcPropertiesWidget::PieceIdButtonClicked() PieceInfo* Info = Partial ? nullptr : static_cast(Value.value()); std::tie(Value, Partial) = GetUpdateValue(lcObjectPropertyId::PieceColor); - + int ColorIndex = Partial ? gDefaultColor : Value.toInt(); std::optional Result = lcShowPartSelectionPopup(Info, std::vector>(), ColorIndex, PieceIdButton, PieceIdButton->mapToGlobal(PieceIdButton->rect().bottomLeft())); @@ -1314,7 +1314,7 @@ void lcPropertiesWidget::SetPiece(const std::vector& Selection, lcObj if (!Model) return; - + Model->GetMoveRotateTransform(Position, RelativeRotation); UpdateFloat(lcObjectPropertyId::ObjectPositionX, Position[0]); diff --git a/common/lc_shortcuts.cpp b/common/lc_shortcuts.cpp index 2cab2cdb..a23fa732 100644 --- a/common/lc_shortcuts.cpp +++ b/common/lc_shortcuts.cpp @@ -173,7 +173,7 @@ bool lcMouseShortcuts::Save(const QString& FileName) return false; QTextStream Stream(&File); - + for (const QString& Shortcut : std::as_const(Shortcuts)) Stream << Shortcut << QLatin1String("\n"); diff --git a/common/lc_string.cpp b/common/lc_string.cpp index 0e5cfa57..9a9939f9 100644 --- a/common/lc_string.cpp +++ b/common/lc_string.cpp @@ -4,7 +4,7 @@ char* lcstrcasestr(const char* s, const char* find) { char c, sc; - + if ((c = *find++) != 0) { c = tolower((unsigned char)c); @@ -26,7 +26,7 @@ char* lcstrupr(char* string) { for (char* c = string; *c; c++) *c = toupper(*c); - + return string; } @@ -34,19 +34,19 @@ size_t lcstrcpy(char* dest, const char* source, size_t size) { if (size == 0) return 0; - + for (size_t i = 0; i < size; i++) { dest[i] = source[i]; - + if (source[i] == '\0') { return i; } } - + dest[--size] = '\0'; - + return size; } @@ -56,16 +56,16 @@ size_t lcstrcat(char* dest, const char* source, size_t size) const char* s = source; size_t n = size; size_t dlen; - + while (n-- != 0 && *d != '\0') d++; - + dlen = d - dest; n = size - dlen; - + if (n == 0) return(dlen + strlen(s)); - + while (*s != '\0') { if (n != 1) @@ -75,8 +75,8 @@ size_t lcstrcat(char* dest, const char* source, size_t size) } s++; } - + *d = '\0'; - + return (dlen + (s - source)); } diff --git a/common/lc_synth.cpp b/common/lc_synth.cpp index a4429dd3..86c17e5b 100644 --- a/common/lc_synth.cpp +++ b/common/lc_synth.cpp @@ -1187,7 +1187,7 @@ void lcSynthInfoFlexibleAxle::AddParts(lcMemFile& File, lcLibraryMeshData& MeshD char Line[256]; const int NumEdgeParts = 6; - lcMatrix33 EdgeTransforms[6] = + lcMatrix33 EdgeTransforms[6] = { lcMatrix33(lcVector3(-1.0f, 0.0f, 0.0f), lcVector3(0.0f, -5.0f, 0.0f), lcVector3(0.0f, 0.0f, 1.0f)), lcMatrix33(lcVector3( 0.0f, 1.0f, 0.0f), lcVector3(1.0f, 0.0f, 0.0f), lcVector3(0.0f, 0.0f, -1.0f)), @@ -1282,7 +1282,7 @@ void lcSynthInfoFlexibleAxle::AddParts(lcMemFile& File, lcLibraryMeshData& MeshD for (size_t SectionIndex = 1; SectionIndex < Sections.size() - 1; SectionIndex++) { const int Indices[] = { 1, 3, 5, 8, 10, 12, 15, 17, 19, 22, 24, 26 }; - + for (int VertexIdx = 0; VertexIdx < 12; VertexIdx++) { *IndexBuffer++ = BaseLinesVertex + Indices[VertexIdx]; diff --git a/common/lc_texture.cpp b/common/lc_texture.cpp index 1ea7a055..92d91e8e 100644 --- a/common/lc_texture.cpp +++ b/common/lc_texture.cpp @@ -174,13 +174,13 @@ bool lcTexture::Load(const QString& FileName, int Flags) if (!Image.FileLoad(FileName)) return false; - + mLoading = true; - + SetImage(std::move(Image), Flags); mLoading = false; - + return true; } @@ -190,13 +190,13 @@ bool lcTexture::Load(lcMemFile& File, int Flags) if (!Image.FileLoad(File)) return false; - + mLoading = true; - + SetImage(std::move(Image), Flags); - + mLoading = false; - + return true; } diff --git a/common/lc_thumbnailmanager.cpp b/common/lc_thumbnailmanager.cpp index 8d488dfb..b90bda6d 100644 --- a/common/lc_thumbnailmanager.cpp +++ b/common/lc_thumbnailmanager.cpp @@ -121,7 +121,7 @@ void lcThumbnailManager::DrawThumbnail(lcPartThumbnailId ThumbnailId, lcPartThum IconName = ":/resources/part_flexible.png"; else if (Info->GetTrainTrackInfo()) IconName = ":/resources/part_traintrack.png"; - + if (IconName) { QPainter Painter(&Image); @@ -146,11 +146,11 @@ void lcThumbnailManager::DrawThumbnail(lcPartThumbnailId ThumbnailId, lcPartThum Painter.drawImage(QPoint(0, 0), Icon); Painter.end(); } - + Image.setDevicePixelRatio(Thumbnail.DeviceScale); - + float ScaledSize = Thumbnail.Size * Thumbnail.DeviceScale; - + Thumbnail.Pixmap = QPixmap::fromImage(Image).scaled(ScaledSize, ScaledSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); mLibrary->ReleasePieceInfo(Info); diff --git a/common/lc_timelinewidget.cpp b/common/lc_timelinewidget.cpp index f3122dc8..cd80eff3 100644 --- a/common/lc_timelinewidget.cpp +++ b/common/lc_timelinewidget.cpp @@ -247,7 +247,7 @@ void lcTimelineWidget::Update(bool Clear, bool UpdateItems) StepItem = topLevelItem(Step - 1); PieceItemIndex = 0; } - + UpdateCurrentStepItem(); blockSignals(Blocked); @@ -553,10 +553,10 @@ void lcTimelineWidget::ItemSelectionChanged() } Model->SetSelectionAndFocus(Selection, CurrentPiece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single); - + mIgnoreUpdates = false; blockSignals(Blocked); - + UpdateSelection(); } diff --git a/common/lc_view.cpp b/common/lc_view.cpp index 3972d83b..46f96077 100644 --- a/common/lc_view.cpp +++ b/common/lc_view.cpp @@ -267,7 +267,7 @@ lcMatrix44 lcView::GetTileProjectionMatrix(int CurrentRow, int CurrentColumn, in double ImageLeft, ImageRight, ImageBottom, ImageTop, Near, Far; double AspectRatio = (double)ImageWidth / (double)ImageHeight; - + if (mCamera->GetProjection() == lcCameraProjection::Orthographic) { float OrthoHeight = mCamera->GetOrthoHeight() / 2.0f; @@ -300,7 +300,7 @@ lcMatrix44 lcView::GetTileProjectionMatrix(int CurrentRow, int CurrentColumn, in double Right = Left + (ImageRight - ImageLeft) * CurrentTileWidth / ImageWidth; double Bottom = ImageBottom + (ImageTop - ImageBottom) * (CurrentRow * mHeight) / ImageHeight; double Top = Bottom + (ImageTop - ImageBottom) * CurrentTileHeight / ImageHeight; - + if (mCamera->GetProjection() == lcCameraProjection::Orthographic) return lcMatrix44Ortho(Left, Right, Bottom, Top, Near, Far); else @@ -807,7 +807,7 @@ bool lcView::BeginRenderToImage(int Width, int Height) { lcContext* Context = lcContext::GetGlobalOffscreenContext(); GLint MaxTexture; - + Context->glGetIntegerv(GL_MAX_TEXTURE_SIZE, &MaxTexture); MaxTexture = qMin(MaxTexture, 2048); @@ -1153,7 +1153,7 @@ void lcView::DrawViewport() const float Scale = GetUIScale(); float Width = mWidth / Scale; float Height = mHeight / Scale; - + mContext->SetWorldMatrix(lcMatrix44Identity()); mContext->SetViewMatrix(lcMatrix44Translation(lcVector3(0.375, 0.375, 0.0))); mContext->SetProjectionMatrix(lcMatrix44Ortho(0.0f, Width, 0.0f, Height, -1.0f, 1.0f)); @@ -1268,7 +1268,7 @@ void lcView::DrawAxes() const TranslationMatrix = lcMatrix44Translation(lcVector3(mWidth - 36, mHeight - 36, 0.0f) / Scale); break; } - + lcMatrix44 WorldViewMatrix = mCamera->mWorldView; WorldViewMatrix.SetTranslation(lcVector3(0, 0, 0)); @@ -1523,18 +1523,18 @@ void lcView::DrawGrid() if (Preferences.mDrawGridLines) VertexBufferSize += 2 * (MaxX - MinX + MaxY - MinY + 2) * 3 * sizeof(float); - + float* Verts = nullptr; - + if (VertexBufferSize) { Verts = static_cast(malloc(VertexBufferSize)); - + if (!Verts) return; - + float* CurVert = Verts; - + if (Preferences.mDrawGridStuds) { float Left = MinX * 20.0f * Spacing; @@ -1544,36 +1544,36 @@ void lcView::DrawGrid() float Z = 0; float U = (MaxX - MinX) * Spacing; float V = (MaxY - MinY) * Spacing; - + *CurVert++ = Left; *CurVert++ = Top; *CurVert++ = Z; *CurVert++ = 0.0f; *CurVert++ = V; - + *CurVert++ = Right; *CurVert++ = Top; *CurVert++ = Z; *CurVert++ = U; *CurVert++ = V; - + *CurVert++ = Left; *CurVert++ = Bottom; *CurVert++ = Z; *CurVert++ = 0.0f; *CurVert++ = 0.0f; - + *CurVert++ = Right; *CurVert++ = Bottom; *CurVert++ = Z; *CurVert++ = U; *CurVert++ = 0.0f; } - + if (Preferences.mDrawGridLines) { float LineSpacing = Spacing * 20.0f; - + for (int Step = MinX; Step < MaxX + 1; Step++) { *CurVert++ = Step * LineSpacing; @@ -1583,7 +1583,7 @@ void lcView::DrawGrid() *CurVert++ = MaxY * LineSpacing; *CurVert++ = 0.0f; } - + for (int Step = MinY; Step < MaxY + 1; Step++) { *CurVert++ = MinX * LineSpacing; @@ -1726,7 +1726,7 @@ float lcView::GetOverlayScale() const lcVector3 Point = UnprojectPoint(ScreenPos); lcVector3 Dist(Point - WorldMatrix.GetTranslation()); - + return Dist.Length() * 5.0f * GetUIScale(); } @@ -1896,7 +1896,7 @@ void lcView::SetCameraProjection(lcCameraProjection CameraProjection) else { lcModel* ActiveModel = GetActiveModel(); - + if (ActiveModel) ActiveModel->SetCameraProjection(mCamera, CameraProjection); } @@ -2571,10 +2571,10 @@ void lcView::OnButtonDown(lcTrackButton TrackButton) case lcTrackTool::Camera: { ActiveModel->InsertCameraToolClicked(GetCameraLightInsertPosition()); - + if ((mMouseModifiers & Qt::ControlModifier) == 0) gMainWindow->SetTool(lcTool::Select); - + mToolClicked = true; UpdateTrackTool(); } diff --git a/common/lc_view.h b/common/lc_view.h index 4f087bc6..c1f926ed 100644 --- a/common/lc_view.h +++ b/common/lc_view.h @@ -263,7 +263,7 @@ public: void ShowContextMenu() const; bool CloseFindReplaceDialog(); void ShowFindReplaceWidget(bool Replace); - + float GetUIScale() const; float GetOverlayScale() const; lcVector3 GetMoveDirection(const lcVector3& Direction) const; diff --git a/common/lc_viewmanipulator.cpp b/common/lc_viewmanipulator.cpp index 2a154162..e64a17b9 100644 --- a/common/lc_viewmanipulator.cpp +++ b/common/lc_viewmanipulator.cpp @@ -515,7 +515,7 @@ void lcViewManipulator::DrawTrainTrack(lcPiece* Piece, lcContext* Context, lcTra else if (TrackTool == lcTrackTool::RotateTrainTrackLeft) { Context->DrawIndexedPrimitives(GL_TRIANGLES, 96, GL_UNSIGNED_SHORT, (108 + 360 + 12) * 2); - + if (CanAdd) Context->DrawIndexedPrimitives(GL_TRIANGLES, 72, GL_UNSIGNED_SHORT, (108 + 360 + 12 + 192) * 2); diff --git a/common/lc_viewwidget.cpp b/common/lc_viewwidget.cpp index e3bc292d..823f3bc7 100644 --- a/common/lc_viewwidget.cpp +++ b/common/lc_viewwidget.cpp @@ -78,7 +78,7 @@ void lcViewWidget::initializeGL() void lcViewWidget::resizeGL(int Width, int Height) { const float Scale = GetDeviceScale(); - + mView->SetSize(Width * Scale, Height * Scale); } diff --git a/common/lc_viewwidget.h b/common/lc_viewwidget.h index ab905b5d..af177aad 100644 --- a/common/lc_viewwidget.h +++ b/common/lc_viewwidget.h @@ -23,7 +23,7 @@ public: return devicePixelRatio(); #endif } - + protected: void initializeGL() override; void resizeGL(int Width, int Height) override; diff --git a/common/light.cpp b/common/light.cpp index 7ab89c79..bfc16e03 100644 --- a/common/light.cpp +++ b/common/light.cpp @@ -496,7 +496,7 @@ void lcLight::MoveSelected(lcStep Step, bool AddKey, const lcVector3& Distance, WorldMatrix.Orthonormalize(); SetRotation(WorldMatrix, Step, AddKey); - + mWorldMatrix = lcMatrix44(WorldMatrix, mWorldMatrix.GetTranslation()); } } @@ -1250,7 +1250,7 @@ bool lcLight::SetPropertyValue(lcObjectPropertyId PropertyId, lcStep Step, bool case lcObjectPropertyId::LightColor: return SetColor(Value.value(), Step, AddKey); - + case lcObjectPropertyId::LightBlenderPower: return SetBlenderPower(Value.toFloat(), Step, AddKey); @@ -1514,7 +1514,7 @@ void lcLight::RemoveKeyFrames() lcLightHistoryState lcLight::GetHistoryState([[maybe_unused]] const lcModel* Model) const { lcLightHistoryState State; - + State.Id = mId; State.Hidden = mHidden; State.Name = mName; diff --git a/common/light.h b/common/light.h index 7b0cd8fa..a5012ae2 100644 --- a/common/light.h +++ b/common/light.h @@ -52,7 +52,7 @@ struct lcLightHistoryState lcObjectProperty AreaSizeY; lcObjectProperty POVRayAreaGridX; lcObjectProperty POVRayAreaGridY; - + bool operator==(const lcLightHistoryState& Other) const { return Id == Other.Id && Hidden == Other.Hidden && Name == Other.Name && LightType == Other.LightType && @@ -365,7 +365,7 @@ protected: lcObjectProperty mAreaSizeY = lcObjectProperty(250.0f); lcObjectProperty mPOVRayAreaGridX = lcObjectProperty(2); lcObjectProperty mPOVRayAreaGridY = lcObjectProperty(2); - + lcVector3 mTargetMovePosition = lcVector3(0.0f, 0.0f, 0.0f); lcMatrix44 mWorldMatrix; diff --git a/common/minifig.cpp b/common/minifig.cpp index 1dc80d5f..fa783c7b 100644 --- a/common/minifig.cpp +++ b/common/minifig.cpp @@ -154,7 +154,7 @@ void MinifigWizard::ParseSettings(lcFile& Settings) int Flags; if (sscanf(NameEnd, "%d %g %g %g %g %g %g %g %g %g %g %g %g", - &Flags, &Mat[0], &Mat[1], &Mat[2], &Mat[3], &Mat[4], &Mat[5], &Mat[6], + &Flags, &Mat[0], &Mat[1], &Mat[2], &Mat[3], &Mat[4], &Mat[5], &Mat[6], &Mat[7], &Mat[8], &Mat[9], &Mat[10], &Mat[11]) != 13) continue; diff --git a/common/object.h b/common/object.h index 7a30339e..7392eb1c 100644 --- a/common/object.h +++ b/common/object.h @@ -90,35 +90,35 @@ public: { return mObjectType; } - + lcObjectId GetId() const { return mId; } - + bool IsSelected() const { return mSelected; } - + void SetSelected(bool Selected) { mSelected = Selected; - + if (!Selected) mFocusedSection = LC_OBJECT_SECTION_INVALID; } - + bool IsFocused() const { return mFocusedSection != LC_OBJECT_SECTION_INVALID; } - + bool IsFocused(quint32 Section) const { return mFocusedSection == Section; } - + void SetFocused(quint32 Section, bool Focused) { if (Focused) @@ -129,12 +129,12 @@ public: else mFocusedSection = LC_OBJECT_SECTION_INVALID; } - + quint32 GetFocusSection() const { return mFocusedSection; } - + virtual void UpdatePosition(lcStep Step) = 0; virtual quint32 GetAllowedTransforms() const = 0; virtual lcVector3 GetSectionPosition(quint32 Section) const = 0; @@ -151,12 +151,12 @@ public: private: lcObjectType mObjectType; - + protected: bool mHidden = false; bool mSelected = false; quint32 mFocusedSection = LC_OBJECT_SECTION_INVALID; lcObjectId mId = static_cast(0); - + static lcObjectId mNextId; }; diff --git a/common/piece.cpp b/common/piece.cpp index 4000ed06..1958825b 100644 --- a/common/piece.cpp +++ b/common/piece.cpp @@ -918,7 +918,7 @@ void lcPiece::RemoveKeyFrames() lcPieceHistoryState lcPiece::GetHistoryState(const lcModel* Model) const { lcPieceHistoryState State; - + State.Id = mId; State.Hidden = mHidden; State.FileLine = mFileLine; @@ -933,9 +933,9 @@ lcPieceHistoryState lcPiece::GetHistoryState(const lcModel* Model) const State.ControlPoints = mControlPoints; State.Position = mPosition; State.Rotation = mRotation; - + const std::vector>& Groups = Model->GetGroups(); - + if (mGroup) { for (size_t GroupIndex = 0; GroupIndex < Groups.size(); GroupIndex++) @@ -947,14 +947,14 @@ lcPieceHistoryState lcPiece::GetHistoryState(const lcModel* Model) const } } } - + return State; } void lcPiece::SetHistoryState(const lcPieceHistoryState& State, const lcModel* Model) { const std::vector>& Groups = Model->GetGroups(); - + mId = State.Id; mHidden = State.Hidden; mFileLine = State.FileLine; @@ -969,13 +969,13 @@ void lcPiece::SetHistoryState(const lcPieceHistoryState& State, const lcModel* M mControlPoints = State.ControlPoints; mPosition = State.Position; mRotation = State.Rotation; - + PieceInfo* Info = lcGetPiecesLibrary()->FindPiece(mID.toLatin1(), nullptr, true, false); - + SetPieceInfo(Info, mID, true, false); - + UpdateMesh(); - + // std::vector mTrainTrackConnections; } diff --git a/common/piece.h b/common/piece.h index 934fe9d4..914bd038 100644 --- a/common/piece.h +++ b/common/piece.h @@ -21,7 +21,7 @@ struct lcPieceControlPoint { lcMatrix44 Transform; float Scale; - + bool operator==(const lcPieceControlPoint& Other) const { return Transform == Other.Transform && Scale == Other.Scale; @@ -44,7 +44,7 @@ struct lcPieceHistoryState std::vector ControlPoints; lcObjectProperty Position; lcObjectProperty Rotation; - + bool operator==(const lcPieceHistoryState& Other) const { return Id == Other.Id && Hidden == Other.Hidden && FileLine == Other.FileLine && PieceId == Other.PieceId && diff --git a/common/project.cpp b/common/project.cpp index 0b2eecf8..02908455 100644 --- a/common/project.cpp +++ b/common/project.cpp @@ -268,10 +268,10 @@ lcModel* Project::CreateNewModel(bool ShowModel) SetActiveModel(mModels.back().get(), true); lcView* ActiveView = gMainWindow ? gMainWindow->GetActiveView() : nullptr; - + if (ActiveView) ActiveView->GetCamera()->SetViewpoint(lcViewpoint::Home); - + if (gMainWindow) gMainWindow->UpdateTitle(); } @@ -1182,7 +1182,7 @@ bool Project::Export3DStudio(const QString& FileName) File.WriteU16(0x4130); // CHK_MSH_MAT_GROUP File.WriteU32(6 + MaterialNameLength + 1 + 2 + 2 * Section->NumIndices / 3); - + snprintf(MaterialName, sizeof(MaterialName), "Material%03d", MaterialIndex); File.WriteBuffer(MaterialName, MaterialNameLength + 1); @@ -1900,7 +1900,7 @@ std::pair Project::ExportPOVRay(const QString& FileName) float FloorDiffuse = POVRayOptions.FloorDiffuse; const char* FloorLocation; const char* FloorAxis; - + if (POVRayOptions.FloorAxis == 0) { FloorAxis = "x"; diff --git a/qt/lc_qeditgroupsdialog.cpp b/qt/lc_qeditgroupsdialog.cpp index 3a4f2a5d..1e08715e 100644 --- a/qt/lc_qeditgroupsdialog.cpp +++ b/qt/lc_qeditgroupsdialog.cpp @@ -14,21 +14,21 @@ public: : QItemDelegate(Parent) { } - + void setModelData(QWidget* Editor, QAbstractItemModel* Model, const QModelIndex& Index) const { QLineEdit* LineEdit = qobject_cast(Editor); - + if (!LineEdit->isModified()) return; QString Text = LineEdit->text().trimmed(); - + lcQEditGroupsDialog* Dialog = qobject_cast(parent()); - + if (Dialog && !Dialog->CanRenameGroup(Text)) return; - + QItemDelegate::setModelData(Editor, Model, Index); } }; @@ -39,13 +39,13 @@ lcQEditGroupsDialog::lcQEditGroupsDialog(QWidget* Parent, const lcModel* Model) ui = new Ui::lcQEditGroupsDialog; ui->setupUi(this); - + QPushButton* NewGroup = ui->buttonBox->addButton(tr("&New Group"), QDialogButtonBox::ActionRole); connect(NewGroup, &QPushButton::clicked, this, &lcQEditGroupsDialog::NewGroupClicked); PopulateTree(); - + ui->treeWidget->setItemDelegate(new lcEditGroupsDialogDelegate(this)); ui->treeWidget->expandAll(); } @@ -59,67 +59,67 @@ bool lcQEditGroupsDialog::CanRenameGroup(const QString& Text) const { if (Text.isEmpty()) return false; - + std::function ScanGroups = [&ScanGroups, &Text](QTreeWidgetItem* ParentItem) { for (int ChildIndex = 0; ChildIndex < ParentItem->childCount(); ChildIndex++) { QTreeWidgetItem* ChildItem = ParentItem->child(ChildIndex); - + if (ChildItem->data(0, GroupRole).value()) { if (ChildItem->text(0) == Text || !ScanGroups(ChildItem)) return false; } } - + return true; }; - + return ScanGroups(ui->treeWidget->invisibleRootItem()); } void lcQEditGroupsDialog::NewGroupClicked() { QTreeWidgetItem* CurrentItem = ui->treeWidget->currentItem(); - + if (CurrentItem && CurrentItem->data(0, PieceRole).value()) CurrentItem = CurrentItem->parent(); - + if (!CurrentItem) CurrentItem = ui->treeWidget->invisibleRootItem(); - + QString Prefix = tr("Group #"); int MaxIndex = 0; - + std::function ScanGroups = [&ScanGroups, &Prefix, &MaxIndex](QTreeWidgetItem* ParentItem) { for (int ChildIndex = 0; ChildIndex < ParentItem->childCount(); ChildIndex++) { QTreeWidgetItem* ChildItem = ParentItem->child(ChildIndex); - + if (ChildItem->data(0, GroupRole).value()) { QString Name = ChildItem->text(0); - + if (Name.startsWith(Prefix)) { bool Ok = false; int GroupNumber = Name.mid(Prefix.length()).toInt(&Ok); - + if (Ok && GroupNumber > MaxIndex) MaxIndex = GroupNumber; } - + ScanGroups(ChildItem); } - } + } }; - + ScanGroups(ui->treeWidget->invisibleRootItem()); - + QString Name = Prefix + QString::number(MaxIndex + 1); - + QTreeWidgetItem* GroupItem = new QTreeWidgetItem(CurrentItem, QStringList(Name)); GroupItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsEditable); GroupItem->setData(0, GroupRole, QVariant::fromValue(LC_GROUPDIALOG_NEW_GROUP)); @@ -129,27 +129,27 @@ void lcQEditGroupsDialog::NewGroupClicked() lcQEditGroupsDialog::GroupInfo lcQEditGroupsDialog::GetGroupInfo(QTreeWidgetItem* ParentItem) const { lcQEditGroupsDialog::GroupInfo GroupInfo; - + GroupInfo.Name = ParentItem->text(0); - + uintptr_t GroupPointer = ParentItem->data(0, GroupRole).value(); GroupInfo.Group = (GroupPointer == LC_GROUPDIALOG_NEW_GROUP) ? nullptr : reinterpret_cast(GroupPointer); - + for (int ChildIndex = 0; ChildIndex < ParentItem->childCount(); ChildIndex++) { QTreeWidgetItem* ChildItem = ParentItem->child(ChildIndex); - + if (ChildItem->data(0, GroupRole).value()) GroupInfo.ChildGroups.emplace_back(GetGroupInfo(ChildItem)); else { lcPiece* Piece = reinterpret_cast(ChildItem->data(0, PieceRole).value()); - + if (Piece) GroupInfo.ChildPieces.push_back(Piece); } - } - + } + return GroupInfo; } @@ -163,33 +163,33 @@ void lcQEditGroupsDialog::PopulateTree() const std::vector>& Groups = mModel->GetGroups(); std::unordered_map AddedGroups; std::vector GroupsToAdd; - + AddedGroups[nullptr] = ui->treeWidget->invisibleRootItem(); - + auto CreateGroupItem = [&AddedGroups](lcGroup* Group) { QTreeWidgetItem* ParentItem = AddedGroups.find(Group->mGroup)->second; - + if (!ParentItem) return false; - + QTreeWidgetItem* GroupItem = new QTreeWidgetItem(ParentItem, QStringList(Group->mName)); GroupItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsEditable); GroupItem->setData(0, GroupRole, QVariant::fromValue((uintptr_t)Group)); - + AddedGroups[Group] = GroupItem; - + return true; }; - + for (const std::unique_ptr& Group : Groups) if (!CreateGroupItem(Group.get())) GroupsToAdd.push_back(Group.get()); - + while (!GroupsToAdd.empty()) { size_t GroupCount = GroupsToAdd.size(); - + for (auto GroupIt = GroupsToAdd.begin(); GroupIt != GroupsToAdd.end();) { if (CreateGroupItem(*GroupIt)) @@ -197,17 +197,17 @@ void lcQEditGroupsDialog::PopulateTree() else ++GroupIt; } - + if (GroupCount == GroupsToAdd.size()) break; } - + const std::vector>& Pieces = mModel->GetPieces(); - + for (const std::unique_ptr& Piece : Pieces) { QTreeWidgetItem* ParentItem = AddedGroups.find(Piece->GetGroup())->second; - + if (ParentItem) { QTreeWidgetItem* PieceItem = new QTreeWidgetItem(ParentItem, QStringList(Piece->GetName())); diff --git a/qt/lc_qeditgroupsdialog.h b/qt/lc_qeditgroupsdialog.h index b4f7286a..11dd7cd8 100644 --- a/qt/lc_qeditgroupsdialog.h +++ b/qt/lc_qeditgroupsdialog.h @@ -7,11 +7,11 @@ class lcQEditGroupsDialog; class lcQEditGroupsDialog : public QDialog { Q_OBJECT - + public: lcQEditGroupsDialog(QWidget* Parent, const lcModel* Model); virtual ~lcQEditGroupsDialog(); - + struct GroupInfo { QString Name; @@ -19,10 +19,10 @@ public: std::vector ChildGroups; std::vector ChildPieces; }; - + GroupInfo GetGroups() const; bool CanRenameGroup(const QString& Text) const; - + protected slots: void NewGroupClicked(); @@ -32,10 +32,10 @@ protected: PieceRole = Qt::UserRole, GroupRole }; - + GroupInfo GetGroupInfo(QTreeWidgetItem* ParentItem) const; void PopulateTree(); - + Ui::lcQEditGroupsDialog* ui = nullptr; const lcModel* mModel = nullptr; }; diff --git a/qt/lc_qimagedialog.h b/qt/lc_qimagedialog.h index 4ef8855e..1cd94144 100644 --- a/qt/lc_qimagedialog.h +++ b/qt/lc_qimagedialog.h @@ -9,7 +9,7 @@ class lcQImageDialog; class lcQImageDialog : public QDialog { Q_OBJECT - + public: lcQImageDialog(QWidget* Parent); ~lcQImageDialog(); diff --git a/qt/lc_qpreferencesdialog.cpp b/qt/lc_qpreferencesdialog.cpp index 0813b6ff..e41346cc 100644 --- a/qt/lc_qpreferencesdialog.cpp +++ b/qt/lc_qpreferencesdialog.cpp @@ -101,7 +101,7 @@ lcQPreferencesDialog::lcQPreferencesDialog(QWidget* Parent, lcPreferencesDialogO ui->ConditionalLinesCheckBox->setChecked(false); ui->ConditionalLinesCheckBox->setEnabled(false); } - + lcViewWidget* Widget = gMainWindow->GetActiveView()->GetWidget(); QOpenGLContext* Context = Widget->context(); QOpenGLFunctions* Functions = Context->functions(); @@ -912,7 +912,7 @@ void lcQPreferencesDialog::updateCommandList() qsizetype pos = identifier.indexOf(QLatin1Char('.')); qsizetype subPos = identifier.indexOf(QLatin1Char('.'), pos + 1); - + if (subPos == -1) subPos = pos; diff --git a/qt/lc_qselectdialog.h b/qt/lc_qselectdialog.h index 63059b25..fbdff6e1 100644 --- a/qt/lc_qselectdialog.h +++ b/qt/lc_qselectdialog.h @@ -9,7 +9,7 @@ class lcQSelectDialog; class lcQSelectDialog : public QDialog { Q_OBJECT - + public: lcQSelectDialog(QWidget* Parent, lcModel* Model); ~lcQSelectDialog(); diff --git a/qt/lc_qupdatedialog.h b/qt/lc_qupdatedialog.h index 1038c91b..a2f4fdd5 100644 --- a/qt/lc_qupdatedialog.h +++ b/qt/lc_qupdatedialog.h @@ -14,7 +14,7 @@ void lcDoInitialUpdateCheck(); class lcQUpdateDialog : public QDialog { Q_OBJECT - + public: explicit lcQUpdateDialog(QWidget* Parent, bool InitialUpdate); ~lcQUpdateDialog(); diff --git a/qt/lc_qutils.cpp b/qt/lc_qutils.cpp index fe003e7d..ee944023 100644 --- a/qt/lc_qutils.cpp +++ b/qt/lc_qutils.cpp @@ -152,14 +152,14 @@ void lcQTreeWidgetColumnStretcher::SectionResized(int LogicalIndex, int OldSize, { Q_UNUSED(OldSize) - if (LogicalIndex == mColumnToStretch) - { - QHeaderView* HeaderView = qobject_cast(parent()); - - if (HeaderView->isVisible()) - mInteractiveResize = true; - - mStretchWidth = NewSize; + if (LogicalIndex == mColumnToStretch) + { + QHeaderView* HeaderView = qobject_cast(parent()); + + if (HeaderView->isVisible()) + mInteractiveResize = true; + + mStretchWidth = NewSize; } } diff --git a/qt/lc_renderdialog.cpp b/qt/lc_renderdialog.cpp index a32411a2..47835910 100644 --- a/qt/lc_renderdialog.cpp +++ b/qt/lc_renderdialog.cpp @@ -175,7 +175,7 @@ bool lcRenderDialog::PromptCancel() { if (!mProcess) return true; - + if (QMessageBox::question(this, tr("Cancel Render"), tr("Are you sure you want to cancel the current render?"), QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) return false; diff --git a/qt/qtmain.cpp b/qt/qtmain.cpp index df739ae2..bf59102c 100644 --- a/qt/qtmain.cpp +++ b/qt/qtmain.cpp @@ -27,7 +27,7 @@ static TCHAR gMinidumpPath[_MAX_PATH]; static LONG WINAPI lcSehHandler(PEXCEPTION_POINTERS exceptionPointers) -{ +{ if (IsDebuggerPresent()) return EXCEPTION_CONTINUE_SEARCH; @@ -203,7 +203,7 @@ int main(int argc, char *argv[]) #ifdef LC_LDRAW_LIBRARY_PATH LibraryPaths += qMakePair(QString::fromLatin1(LC_LDRAW_LIBRARY_PATH), false); #endif - + setlocale(LC_NUMERIC, "C"); lcStartupMode StartupMode = Application.Initialize(LibraryPaths);