diff --git a/4_L0.json b/4_L0.json
new file mode 100644
index 0000000..2465bb6
--- /dev/null
+++ b/4_L0.json
@@ -0,0 +1,424 @@
+{
+ "background-color": "#b7a386",
+ "elements": [
+ {
+ "data": {
+ "include": "../svg/2.svg"
+ },
+ "name": "ababa",
+ "type": "svg-file"
+ },
+ {
+ "data": {
+ "reference-layer": "0.0"
+ },
+ "name": "ababa-group",
+ "type": "group"
+ },
+ {
+ "data": {
+ "include": "../svg/0.svg"
+ },
+ "name": "ababa2",
+ "type": "svg-file"
+ },
+ {
+ "data": {
+ "include": "D:/BigC2022/temp/ArchitectureColoredPainting/svg/4_L0-fill.svg"
+ },
+ "name": "4_L0-fill.svg",
+ "type": "svg-file"
+ }
+ ],
+ "height": 1080,
+ "project-name": "样例1",
+ "root-layer": {
+ "children": [
+ {
+ "children": [
+ {
+ "element": 3,
+ "is-folder": false,
+ "name": "4_L0",
+ "styles": [
+ {
+ "material": "AH8A/2pkiv8=",
+ "type": "fill"
+ },
+ {
+ "enableEachSideIndependent": true,
+ "left": "AADAQAEAJJwAf///9dKG/w==",
+ "right": "AADgQAAACpw=",
+ "type": "stroke"
+ }
+ ],
+ "transform": {
+ "offset": {
+ "x": -230,
+ "y": -533
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 0.32341007644113307,
+ "y": 0.32341007644113307
+ }
+ }
+ }
+ ],
+ "is-folder": true,
+ "name": "GroupFolderExample",
+ "referenced-by": 1,
+ "transform": {
+ "offset": {
+ "x": 50,
+ "y": 50
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "aaaa2",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 127,
+ "y": -109
+ },
+ "rotation": 90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "aaaa3",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 232,
+ "y": 17
+ },
+ "rotation": 180,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "aaaa4",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 103,
+ "y": 130
+ },
+ "rotation": 270,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "bbbb1",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 197,
+ "y": 265
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "bbbb2",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 323,
+ "y": 156
+ },
+ "rotation": 90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "bbbb3",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 432,
+ "y": 285
+ },
+ "rotation": 180,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "bbbb4",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 302,
+ "y": 399
+ },
+ "rotation": 270,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "cccc1",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 467,
+ "y": 71
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "cccc2",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 361,
+ "y": -70
+ },
+ "rotation": 90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "cccc3",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 273,
+ "y": -211
+ },
+ "rotation": 180,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "cccc4",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 574,
+ "y": 198
+ },
+ "rotation": 270,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "dddd1",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 33,
+ "y": -231
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "dddd2",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 55,
+ "y": 352
+ },
+ "rotation": 90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "dddd3",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": -40,
+ "y": 220
+ },
+ "rotation": 180,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "dddd4",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 0,
+ "y": 0
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "eeee1",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 0,
+ "y": 0
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "eeee2",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": -149,
+ "y": 85
+ },
+ "rotation": 90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "eeee3",
+ "styles": [
+ ],
+ "transform": {
+ "offset": {
+ "x": 166,
+ "y": 482
+ },
+ "rotation": 180,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ }
+ ],
+ "is-folder": true,
+ "name": "root",
+ "referenced-by": null,
+ "transform": {
+ "offset": {
+ "x": 8,
+ "y": 20
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1.7159367435419115,
+ "y": 1.7159367435419115
+ }
+ }
+ },
+ "width": 1080
+}
diff --git a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj
index 8123b4a..d7932a1 100644
--- a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj
+++ b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj
@@ -104,6 +104,7 @@
+
@@ -203,6 +204,7 @@
+
diff --git a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters
index 598564d..22b36f7 100644
--- a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters
+++ b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters
@@ -261,6 +261,9 @@
Source Files
+
+ Source Files
+
@@ -525,6 +528,9 @@
Header Files
+
+ Header Files
+
diff --git a/ArchitectureColoredPainting/res/Shaders/painting.comp b/ArchitectureColoredPainting/res/Shaders/painting.comp
index 6e166cf..324e093 100644
--- a/ArchitectureColoredPainting/res/Shaders/painting.comp
+++ b/ArchitectureColoredPainting/res/Shaders/painting.comp
@@ -1409,7 +1409,7 @@ void main()
imageStore(gBaseColor, pixelLocation, vec4(color.rgb, 1));
imageStore(gMetallicRoughness, pixelLocation, vec4(metallicRoughness, 0, 1));
- //return;
+ return;
if (/*color.a!=-1&&*/ debugBVH == vec3(0))
{
// imageStore(gBaseColor, pixelLocation, vec4(vec3(1, 1, 0),1));
diff --git a/ArchitectureColoredPainting/src/Editor/DataManager/ProjectDataManager.cpp b/ArchitectureColoredPainting/src/Editor/DataManager/ProjectDataManager.cpp
new file mode 100644
index 0000000..1bddf5a
--- /dev/null
+++ b/ArchitectureColoredPainting/src/Editor/DataManager/ProjectDataManager.cpp
@@ -0,0 +1,38 @@
+#include "ProjectDataManager.h"
+
+using namespace std;
+
+ProjectDataManager* ProjectDataManager::instance = nullptr;
+
+ProjectDataManager* ProjectDataManager::Instance()
+{
+ if (instance == nullptr)
+ instance = new ProjectDataManager();
+ return instance;
+}
+
+void ProjectDataManager::addProjectData(ProjectData data)
+{
+ projectDataList.push_back(data);
+}
+
+void ProjectDataManager::setZoom(double x, double y, EditorWidgetItem* item)
+{
+ for (auto& data : projectDataList) {
+ if (data.item == item) {
+ data.zoomX = x;
+ data.zoomY = y;
+ return;
+ }
+ }
+}
+
+QPointF ProjectDataManager::getZoomByPainterDeivce(QPaintDevice* device)
+{
+ for (auto& data : projectDataList) {
+ if (data.item->previewWindow == device) {
+ return QPointF(data.zoomX, data.zoomY);
+ }
+ }
+ return QPointF(1, 1);
+}
diff --git a/ArchitectureColoredPainting/src/Editor/DataManager/ProjectDataManager.h b/ArchitectureColoredPainting/src/Editor/DataManager/ProjectDataManager.h
new file mode 100644
index 0000000..8c5ffbf
--- /dev/null
+++ b/ArchitectureColoredPainting/src/Editor/DataManager/ProjectDataManager.h
@@ -0,0 +1,30 @@
+#pragma once
+#include