diff --git a/ArchitectureColoredPainting.sln b/ArchitectureColoredPainting.sln index dbfe560..a700f6a 100644 --- a/ArchitectureColoredPainting.sln +++ b/ArchitectureColoredPainting.sln @@ -5,9 +5,9 @@ VisualStudioVersion = 17.2.32519.379 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ArchitectureColoredPainting", "ArchitectureColoredPainting\ArchitectureColoredPainting.vcxproj", "{3FE96A33-2BB7-4686-A710-3EB8E3BBD709}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FramelessHelperCore", "FramelessHelper\qmake\FramelessHelperCore.vcxproj", "{F1BC586E-F1ED-320C-899E-76CCB5660AE1}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FramelessHelperCore", "FramelessHelper\qmake\FramelessHelperCore\FramelessHelperCore.vcxproj", "{954D3D24-DF86-33A3-8867-D1735CCBDB10}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FramelessHelperWidgets", "FramelessHelper\qmake\FramelessHelperWidgets.vcxproj", "{61651EC8-A30E-3935-BD0C-A01AE3EE0AD9}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FramelessHelperWidgets", "FramelessHelper\qmake\FramelessHelperWidgets\FramelessHelperWidgets.vcxproj", "{E7A71E05-4AA5-31DB-A17D-542FC7BD83A3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -19,14 +19,14 @@ Global {3FE96A33-2BB7-4686-A710-3EB8E3BBD709}.Debug|x64.Build.0 = Debug|x64 {3FE96A33-2BB7-4686-A710-3EB8E3BBD709}.Release|x64.ActiveCfg = Release|x64 {3FE96A33-2BB7-4686-A710-3EB8E3BBD709}.Release|x64.Build.0 = Release|x64 - {F1BC586E-F1ED-320C-899E-76CCB5660AE1}.Debug|x64.ActiveCfg = Debug|x64 - {F1BC586E-F1ED-320C-899E-76CCB5660AE1}.Debug|x64.Build.0 = Debug|x64 - {F1BC586E-F1ED-320C-899E-76CCB5660AE1}.Release|x64.ActiveCfg = Release|x64 - {F1BC586E-F1ED-320C-899E-76CCB5660AE1}.Release|x64.Build.0 = Release|x64 - {61651EC8-A30E-3935-BD0C-A01AE3EE0AD9}.Debug|x64.ActiveCfg = Debug|x64 - {61651EC8-A30E-3935-BD0C-A01AE3EE0AD9}.Debug|x64.Build.0 = Debug|x64 - {61651EC8-A30E-3935-BD0C-A01AE3EE0AD9}.Release|x64.ActiveCfg = Release|x64 - {61651EC8-A30E-3935-BD0C-A01AE3EE0AD9}.Release|x64.Build.0 = Release|x64 + {954D3D24-DF86-33A3-8867-D1735CCBDB10}.Debug|x64.ActiveCfg = Debug|x64 + {954D3D24-DF86-33A3-8867-D1735CCBDB10}.Debug|x64.Build.0 = Debug|x64 + {954D3D24-DF86-33A3-8867-D1735CCBDB10}.Release|x64.ActiveCfg = Release|x64 + {954D3D24-DF86-33A3-8867-D1735CCBDB10}.Release|x64.Build.0 = Release|x64 + {E7A71E05-4AA5-31DB-A17D-542FC7BD83A3}.Debug|x64.ActiveCfg = Debug|x64 + {E7A71E05-4AA5-31DB-A17D-542FC7BD83A3}.Debug|x64.Build.0 = Debug|x64 + {E7A71E05-4AA5-31DB-A17D-542FC7BD83A3}.Release|x64.ActiveCfg = Release|x64 + {E7A71E05-4AA5-31DB-A17D-542FC7BD83A3}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj index 79ab108..88298bf 100644 --- a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj +++ b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj @@ -114,6 +114,7 @@ + @@ -122,10 +123,12 @@ + + @@ -179,10 +182,13 @@ + + + @@ -207,8 +213,8 @@ - - {61651ec8-a30e-3935-bd0c-a01ae3ee0ad9} + + {e7a71e05-4aa5-31db-a17d-542fc7bd83a3} diff --git a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters index 70e0c28..142c944 100644 --- a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters +++ b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters @@ -184,6 +184,15 @@ Source Files\Renderer\Painting + + Source Files\Renderer\Painting + + + Source Files\Renderer\Painting + + + Source Files\Renderer\Painting + @@ -377,6 +386,15 @@ Header Files\Renderer\Painting + + Header Files\Renderer\Painting + + + Header Files\Renderer\Painting + + + Header Files\Renderer\Painting + diff --git a/ArchitectureColoredPainting/Shaders/painting.comp b/ArchitectureColoredPainting/Shaders/painting.comp index 96fbdbd..46b31cc 100644 --- a/ArchitectureColoredPainting/Shaders/painting.comp +++ b/ArchitectureColoredPainting/Shaders/painting.comp @@ -898,12 +898,13 @@ void drawLine(in float d, in uint styleIndex, out vec4 elementColor, out vec2 me { elementColor = vec4(1); metallicRoughness = vec2(0.8); - switch(int(elementData[styleIndex+3])) + //switch(int(elementData[styleIndex+3])) + switch(0) { case 0: { - elementColor = vec4(elementData[styleIndex+7],elementData[styleIndex+8],elementData[styleIndex+9],1); - metallicRoughness = vec2(elementData[styleIndex+10],elementData[styleIndex+11]); + elementColor = vec4(unpackUnorm4x8(floatBitsToUint(elementData[styleIndex+2])).rgb,1); + metallicRoughness = vec2(unpackUnorm4x8(floatBitsToUint(elementData[styleIndex+1])).rg); break; } case 1: @@ -972,9 +973,10 @@ bool drawElement(uint elementIndex, vec2 localUV, out vec3 color, out vec2 metal } //uint styleIndex = bvhChildren[elementBvhRoot + elementBvhIndex].y; //uint elementType = bvhChildren[elementBvhRoot + elementBvhIndex].y; - float elementType = elementData[styleIndex]; + //float elementType = elementData[styleIndex]; + bool isFillStyle = elementData[styleIndex]<=0; // for(int i = 0; i<200;i++) - if (elementType == 0) //Ãæ + if (isFillStyle) //Ãæ { uint contourIndex = linesOffset + leftChild - 0x80000000; @@ -1015,22 +1017,25 @@ bool drawElement(uint elementIndex, vec2 localUV, out vec3 color, out vec2 metal { hitElement = true; elementColor = vec4(1,1,0,0); - if(elementData[styleIndex+1]==0) + + vec4 head = unpackUnorm4x8(floatBitsToUint(elementData[styleIndex])); + if(head.z==0) { - elementColor = vec4(elementData[styleIndex+2],elementData[styleIndex+3],elementData[styleIndex+4],0); - metallicRoughness = vec2(elementData[styleIndex+5],elementData[styleIndex+6]); + elementColor = vec4(unpackUnorm4x8(floatBitsToUint(elementData[styleIndex+1])).rgb,0); + metallicRoughness = head.xy; } } } - else if (elementType == 1) //Ïß + else //Ïß { - float strokeWidth = elementData[styleIndex+1]; + float strokeWidth = elementData[styleIndex]; uint contourIndex = linesOffset + leftChild - 0x80000000; float minDistance = 1e38; uint lineCount = elementIndexs[contourIndex]; - float lineType = elementData[styleIndex+4]; + //float lineType = elementData[styleIndex+4]; + float lineType = 2; vec2 p3Last = vec2(1e38); vec2 p2Last = vec2(1e38); int debugBegin = 0; @@ -1169,9 +1174,9 @@ void main() uint leftChild = bvhChildren[index].x; if (leftChild >= bvhLength) { - uint zIndex = bvhChildren[index].y / 65535; + uint zIndex = bvhChildren[index].y >> 18; + bvec2 flip = bvec2(bvhChildren[index].y & (1<<16), bvhChildren[index].y & (1<<17)); float angle = (float(bvhChildren[index].y) / 65535.0 - zIndex) * 2 * PI; - mat2 rotation = {{cos(angle), -sin(angle)}, {sin(angle), cos(angle)}}; vec2 localUV = uv - (bound.xy + bound.zw) / 2; localUV = rotation * localUV; @@ -1184,6 +1189,8 @@ void main() //debugBVH.bg += 0.5 * (localUV + vec2(1)); //debugBVH = vec3(0); + if(flip.x) localUV.x = -localUV.x; + if(flip.y) localUV.y = -localUV.y; vec3 elementColor; vec2 elementMetallicRoughness; if(drawElement(leftChild - 0x80000000, localUV, elementColor, elementMetallicRoughness, debugBVH)) diff --git a/ArchitectureColoredPainting/src/Renderer/Model.cpp b/ArchitectureColoredPainting/src/Renderer/Model.cpp index d648b44..b33f599 100644 --- a/ArchitectureColoredPainting/src/Renderer/Model.cpp +++ b/ArchitectureColoredPainting/src/Renderer/Model.cpp @@ -350,50 +350,54 @@ GLuint Renderer::Model::loadPainting(std::string path) std::make_shared(SvgParser("M377,459.61a11.26,11.26,0,0,1,11.27-11.27H696.12a11.27,11.27,0,0,0,11-8.62A359.84,359.84,0,0,0,708,280.56a11.26,11.26,0,0,0-11-8.73H388.27A11.26,11.26,0,0,1,377,260.57h0a11.26,11.26,0,0,1,11.27-11.26H683.71A11.32,11.32,0,0,0,694.28,234C649.8,113.69,542.57,23.85,412.3,4.12a11.22,11.22,0,0,0-12.76,11.17v158.9a11.26,11.26,0,0,0,11.26,11.27H583.12a11.32,11.32,0,0,0,9.26-17.75c-31.67-46.59-78.51-75.2-109.11-90.07a11.25,11.25,0,0,0-16.13,10.17V115.2a11.24,11.24,0,0,0,6.22,10.07l7.51,3.76a11.28,11.28,0,0,1,5,15.12h0a11.27,11.27,0,0,1-15.11,5l-20-10a11.27,11.27,0,0,1-6.22-10.07V54a11.27,11.27,0,0,1,14.62-10.75c5.11,1.59,125.66,40.35,172.24,149A11.27,11.27,0,0,1,621.11,208H388.27A11.26,11.26,0,0,1,377,196.73V11.36A11.32,11.32,0,0,0,365.89.08C363.34,0,360.79,0,358.22,0s-5.11,0-7.66.08a11.32,11.32,0,0,0-11.11,11.28V196.74A11.26,11.26,0,0,1,328.18,208H95.35A11.27,11.27,0,0,1,85,192.3c46.57-108.67,167.12-147.42,172.23-149A11.26,11.26,0,0,1,271.86,54v75.11a11.25,11.25,0,0,1-6.23,10.07l-20,10a11.27,11.27,0,0,1-15.11-5h0a11.26,11.26,0,0,1,5-15.11l7.52-3.76a11.27,11.27,0,0,0,6.22-10.07V87.82a11.25,11.25,0,0,0-16.14-10.16c-30.6,14.87-77.45,43.48-109.1,90.07a11.3,11.3,0,0,0,9.25,17.74H305.66a11.26,11.26,0,0,0,11.27-11.26V15.31A11.22,11.22,0,0,0,304.17,4.14C173.88,23.86,66.66,113.71,22.17,234a11.32,11.32,0,0,0,10.56,15.29H328.18a11.26,11.26,0,0,1,11.27,11.26v0a11.26,11.26,0,0,1-11.27,11.26H19.52a11.26,11.26,0,0,0-11,8.72,359.84,359.84,0,0,0,.83,159.16,11.26,11.26,0,0,0,11,8.61H328.18a11.26,11.26,0,0,1,11.27,11.27h0a11.26,11.26,0,0,1-11.27,11.26h-294a11.32,11.32,0,0,0-10.53,15.4C69,604.65,175.3,692.78,304.16,712.3a11.21,11.21,0,0,0,12.76-11.16V542.22A11.26,11.26,0,0,0,305.66,531h-166c-9.53,0-14.89,11.22-8.69,18.47,34.09,39.77,74.45,65.66,101.77,80.18a11.25,11.25,0,0,0,16.53-10V591a11.26,11.26,0,0,1,11.26-11.26h0A11.26,11.26,0,0,1,271.85,591v63.85A11.27,11.27,0,0,1,256.8,665.5c-4.45-1.59-109.58-40-171-139.9a11.27,11.27,0,0,1,9.59-17.17H328.18a11.26,11.26,0,0,1,11.27,11.26V705.08a11.32,11.32,0,0,0,11.11,11.28q3.82.07,7.66.08c2.57,0,5.12,0,7.67-.08A11.32,11.32,0,0,0,377,705.08V519.69a11.25,11.25,0,0,1,11.27-11.26H621.1a11.26,11.26,0,0,1,9.59,17.16c-61.46,99.87-166.59,138.3-171,139.9a11.27,11.27,0,0,1-15-10.61V591a11.26,11.26,0,0,1,11.26-11.26h0A11.26,11.26,0,0,1,467.14,591v28.6a11.25,11.25,0,0,0,16.53,10c27.33-14.53,67.68-40.42,101.77-80.19,6.2-7.23.85-18.46-8.69-18.46h-166a11.26,11.26,0,0,0-11.26,11.26V701.12a11.21,11.21,0,0,0,12.76,11.17c128.86-19.51,235.14-107.66,280.48-226a11.33,11.33,0,0,0-10.53-15.41h-294A11.25,11.25,0,0,1,377,459.61ZM35.27,399.53V316.9a11.26,11.26,0,0,1,11.27-11.26H669.92a11.25,11.25,0,0,1,11.26,11.26v82.63a11.25,11.25,0,0,1-11.26,11.26H46.54a11.27,11.27,0,0,1-11.27-11.26Z", 716.45, 716.44).parse()) }; - + //vector> style = { + // std::make_shared(std::vector{ + // //strokeStyle + // //stroke + // 1, + // //strokeWidth + // 0.02, + // //strokeEndType + // 0, //Ô²½Ç + // //strokeFillType + // 0, //µ¥É« + // //ÏßÀàÐÍ + // 0, //Ë«²à + // //ÏßÍâÃè±ß¿í¶È + // 0, + // //ÏßÍâÃè±ß·½Ê½ + // 0, //µ¥É« + // //strokeFillColorMetallicRoughness + // 1,0,1, 0,0.8, + // }), + // std::make_shared(std::vector{ + // //fillStyle + // //fill + // 0, + // //fillType + // 0, //µ¥É« + // //fillColorMetallicRoughness + // 240 / 255., 220 / 255., 160 / 255., 0.996, 0.18, + // }), + // std::make_shared(std::vector{ + // //fillStyle + // //fill + // 0, + // //fillType + // 0, //µ¥É« + // //fillColorMetallicRoughness + // 24 / 255., 220 / 255., 16 / 255., 0., 0.18, + // }), + //}; - vector> style = { - std::make_shared(std::vector{ - //strokeStyle - //stroke - 1, - //strokeWidth - 0.02, - //strokeEndType - 0, //Ô²½Ç - //strokeFillType - 0, //µ¥É« - //ÏßÀàÐÍ - 0, //Ë«²à - //ÏßÍâÃè±ß¿í¶È - 0, - //ÏßÍâÃè±ß·½Ê½ - 0, //µ¥É« - //strokeFillColorMetallicRoughness - 1,0,1, 0,0.8, - }), - std::make_shared(std::vector{ - //fillStyle - //fill - 0, - //fillType - 0, //µ¥É« - //fillColorMetallicRoughness - 240 / 255., 220 / 255., 160 / 255., 0.996, 0.18, - }), - std::make_shared(std::vector{ - //fillStyle - //fill - 0, - //fillType - 0, //µ¥É« - //fillColorMetallicRoughness - 24 / 255., 220 / 255., 16 / 255., 0., 0.18, - }), + vector> style = { + std::make_shared(), + std::make_shared() }; + vector> element = { - std::make_shared(Element{ contour[0], style[1]}), - std::make_shared(Element{ contour[1], style[0]}), + std::make_shared(Element{ contour[0], style[0]}), + std::make_shared(Element{ contour[1], style[1]}), std::make_shared(Element{ contour[2], style[0]}), }; Painting painting; @@ -406,9 +410,14 @@ GLuint Renderer::Model::loadPainting(std::string path) // //rootBvhTreeData.push_back(BvhTreeData(QVector4D(x, y, z, w), 0, encodeZIndexAngle(1, (float)rand() / RAND_MAX * 360))); // painting.addElement(element[i%3], QVector4D(x, y, z, w), (float)rand() / RAND_MAX * 360, 1); //} - painting.addElement(element[0], QVector4D(-0.8, -0.8, -0.2, -0.1), 0, 0); - painting.addElement(element[1], QVector4D(-0.7, 0.2, -0.2, 0.7), 0, 0); - painting.addElement(element[2], QVector4D(0.2, -0.8, 0.8, -0.1), 0, 0); + painting.addElement(*element[0], ElementTransform{ glm::vec2(-0.5,-0.45), glm::vec2(0.6,0.7), 0, glm::bvec2(true, false), 0 }); + painting.addElement(*element[1], ElementTransform{ glm::vec2(-0.45,0.45), glm::vec2(0.5,0.5), 0, glm::bvec2(false), 0 }); + painting.addElement(*element[2], ElementTransform{ glm::vec2(0.5,-0.45), glm::vec2(0.6,0.7), 0, glm::bvec2(false), 0 }); + + + //painting.addElement(element[0], QVector4D(-0.8, -0.8, -0.2, -0.1), 0, 0); + //painting.addElement(element[1], QVector4D(-0.7, 0.2, -0.2, 0.7), 0, 0); + //painting.addElement(element[2], QVector4D(0.2, -0.8, 0.8, -0.1), 0, 0); painting.generateBuffers(); ///////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/BaseStyle.cpp b/ArchitectureColoredPainting/src/Renderer/Painting/BaseStyle.cpp new file mode 100644 index 0000000..f690a9c --- /dev/null +++ b/ArchitectureColoredPainting/src/Renderer/Painting/BaseStyle.cpp @@ -0,0 +1,3 @@ +#include "BaseStyle.h" + +using namespace Renderer; \ No newline at end of file diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/BaseStyle.h b/ArchitectureColoredPainting/src/Renderer/Painting/BaseStyle.h new file mode 100644 index 0000000..b02a657 --- /dev/null +++ b/ArchitectureColoredPainting/src/Renderer/Painting/BaseStyle.h @@ -0,0 +1,33 @@ +#pragma once +#include +#include +#include +#include + +namespace Renderer +{ + /// Ïà¶Ô±ä»»£¬ÓÃÓÚÖÆ×÷ÒõÓ°µÈЧ¹û + struct TransformStyle + { + glm::vec2 translation = glm::vec2(0); + glm::vec2 scale = glm::vec2(1); + float rotation = 0; + glm::bvec2 flip = glm::bvec2(false); + }; + + enum class MaterialStyleType { kFill, kStroke }; + + class MaterialStyle + { + public: + virtual MaterialStyleType type() const = 0; + virtual std::vector encoded() const = 0; + virtual bool operator==(const MaterialStyle&) const = 0; + }; + + struct BaseStyle + { + std::shared_ptr transform; + std::shared_ptr material; + }; +} diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/Element.h b/ArchitectureColoredPainting/src/Renderer/Painting/Element.h index ac8361a..d4f887f 100644 --- a/ArchitectureColoredPainting/src/Renderer/Painting/Element.h +++ b/ArchitectureColoredPainting/src/Renderer/Painting/Element.h @@ -2,17 +2,24 @@ #include #include #include "Line.h" +#include "ElementStyle.h" namespace Renderer { - class Element - { - public: - std::vector bvhChildren; - std::vector bvhBound; - std::vector elementIndex; - std::vector points; + using Contour = std::vector>; - Element(std::vector> lines); + struct Element + { + std::shared_ptr contour; + std::shared_ptr style; + }; + + struct ElementTransform + { + glm::vec2 center; + glm::vec2 size; + float rotation; /// ½Ç¶ÈÖÆ + glm::bvec2 flip; + GLuint zIndex; }; } \ No newline at end of file diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/ElementStyle.cpp b/ArchitectureColoredPainting/src/Renderer/Painting/ElementStyle.cpp index 685165e..e65ce5f 100644 --- a/ArchitectureColoredPainting/src/Renderer/Painting/ElementStyle.cpp +++ b/ArchitectureColoredPainting/src/Renderer/Painting/ElementStyle.cpp @@ -1,18 +1,17 @@ #include "ElementStyle.h" +#include "MaterialStyleFill.h" +#include "MaterialStyleStroke.h" using namespace Renderer; -ElementStyle::ElementStyle(std::vector style) - :style(style) +std::vector Renderer::ElementStyleFillDemo::toBaseStyles() const { + return { BaseStyle(std::make_shared(), + std::make_shared(std::make_shared(QColor(0, 255, 0), 0, 0.8))) }; } -bool Renderer::ElementStyle::isLine() +std::vector Renderer::ElementStyleStrokeDemo::toBaseStyles() const { - return style[0]; -} - -std::vector ElementStyle::encoded() -{ - return style; + return { BaseStyle(std::make_shared(), + std::make_shared(0.02, StrokeType::kBothSides, StrokeEndType::kRound, std::make_shared(QColor(0, 0, 255), 0, 0.8))) }; } diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/ElementStyle.h b/ArchitectureColoredPainting/src/Renderer/Painting/ElementStyle.h index 18a61f4..53cb306 100644 --- a/ArchitectureColoredPainting/src/Renderer/Painting/ElementStyle.h +++ b/ArchitectureColoredPainting/src/Renderer/Painting/ElementStyle.h @@ -1,16 +1,31 @@ #pragma once #include #include +#include "BaseStyle.h" namespace Renderer { class ElementStyle { public: - ElementStyle(std::vector style); - bool isLine(); - std::vector encoded(); - private: - std::vector style; + /** + * @brief ½«Í¼ÔªÑùʽתΪÈô¸É»ù±¾Ñùʽ + * @return BaseStyleÊý×飬Êý×éϱê˳Ðò¼´ÎªzIndex˳Ðò£¬Êý×é´óС²»µÃ´óÓÚ10 + */ + virtual std::vector toBaseStyles() const = 0; + }; + + // TODO: ´ËΪʾÀý£¬½¨Òéдµ½Editor²¿·Ö±ãÓÚÓëUI°ó¶¨ + class ElementStyleFillDemo : public ElementStyle + { + public: + virtual std::vector toBaseStyles() const override; + }; + + // TODO: ´ËΪʾÀý£¬½¨Òéдµ½Editor²¿·Ö±ãÓÚÓëUI°ó¶¨ + class ElementStyleStrokeDemo : public ElementStyle + { + public: + virtual std::vector toBaseStyles() const override; }; } diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleFill.cpp b/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleFill.cpp new file mode 100644 index 0000000..889b72e --- /dev/null +++ b/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleFill.cpp @@ -0,0 +1,48 @@ +#include "MaterialStyleFill.h" + +using namespace Renderer; + +Renderer::FillPlain::FillPlain(QColor color, float metallic, float roughness) + : color(color), metallic(metallic), roughness(roughness) +{ +} + +MaterialFillType Renderer::FillPlain::type() const +{ + return MaterialFillType::kPlain; +} + +std::vector Renderer::FillPlain::encoded() const +{ + return { glm::uintBitsToFloat(glm::packUnorm4x8(glm::vec4(metallic, roughness, 0, 1))), + glm::uintBitsToFloat(glm::packUnorm4x8(glm::vec4(color.redF(), color.greenF(), color.blueF(), color.alphaF())))}; +} + +bool Renderer::FillPlain::operator==(const MaterialFill& m) const +{ + return type() == m.type() + && color == static_cast(m).color + && metallic == static_cast(m).metallic + && roughness == static_cast(m).roughness; +} + + +Renderer::MaterialStyleFill::MaterialStyleFill(std::shared_ptr materialFill) + : materialFill(materialFill) +{ +} + +MaterialStyleType Renderer::MaterialStyleFill::type() const +{ + return MaterialStyleType::kFill; +} + +std::vector Renderer::MaterialStyleFill::encoded() const +{ + return materialFill->encoded(); +} + +bool Renderer::MaterialStyleFill::operator==(const MaterialStyle& m) const +{ + return type() == m.type() && *materialFill == *static_cast(m).materialFill; +} diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleFill.h b/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleFill.h new file mode 100644 index 0000000..40e5c37 --- /dev/null +++ b/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleFill.h @@ -0,0 +1,41 @@ +#pragma once +#include "BaseStyle.h" + +namespace Renderer +{ + enum class MaterialFillType { kPlain, kLinearGradient, kRadialGradient }; + + class MaterialFill + { + public: + virtual MaterialFillType type() const = 0; + virtual std::vector encoded() const = 0; + virtual bool operator==(const MaterialFill&) const = 0; + }; + + class FillPlain : public MaterialFill + { + public: + FillPlain(QColor color, float metallic, float roughness); + virtual MaterialFillType type() const override; + virtual std::vector encoded() const override; + virtual bool operator==(const MaterialFill&) const override; + + QColor color; + float metallic; + float roughness; + }; + + class MaterialStyleFill : public MaterialStyle + { + public: + MaterialStyleFill(std::shared_ptr materialFill); + virtual MaterialStyleType type() const override; + virtual std::vector encoded() const override; + virtual bool operator==(const MaterialStyle&) const override; + protected: + std::shared_ptr materialFill; + }; + + +} diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleStroke.cpp b/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleStroke.cpp new file mode 100644 index 0000000..4948314 --- /dev/null +++ b/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleStroke.cpp @@ -0,0 +1,57 @@ +#include "MaterialStyleStroke.h" + +using namespace Renderer; + +Renderer::StrokePlain::StrokePlain(QColor color, float metallic, float roughness) + : color(color), metallic(metallic), roughness(roughness) +{ +} + +MaterialStrokeType Renderer::StrokePlain::type() const +{ + return MaterialStrokeType::kPlain; +} + +std::vector Renderer::StrokePlain::encoded() const +{ + return { glm::uintBitsToFloat(glm::packUnorm4x8(glm::vec4(metallic, roughness, 0, 0))), + glm::uintBitsToFloat(glm::packUnorm4x8(glm::vec4(color.redF(), color.greenF(), color.blueF(), color.alphaF()))) }; +} + +bool Renderer::StrokePlain::operator==(const MaterialStroke& m) const +{ + return type() == m.type() + && color == static_cast(m).color + && metallic == static_cast(m).metallic + && roughness == static_cast(m).roughness; +} + +Renderer::MaterialStyleStroke::MaterialStyleStroke(float width, StrokeType strokeType, StrokeEndType endType, std::shared_ptr materialStroke) + : width(width), strokeType(strokeType), endType(endType), materialStroke(materialStroke) +{ +} + +MaterialStyleType Renderer::MaterialStyleStroke::type() const +{ + return MaterialStyleType::kStroke; +} + +std::vector Renderer::MaterialStyleStroke::encoded() const +{ + std::vector v = { width }; + auto encoded = materialStroke->encoded(); + v.insert(v.end(), encoded.begin(), encoded.end()); + return v; +} + +bool Renderer::MaterialStyleStroke::operator==(const MaterialStyle& m) const +{ + return type() == m.type() && *materialStroke == *static_cast(m).materialStroke; +} + +float Renderer::MaterialStyleStroke::getWidth() const +{ + return width; +} + + diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleStroke.h b/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleStroke.h new file mode 100644 index 0000000..b9b8fbd --- /dev/null +++ b/ArchitectureColoredPainting/src/Renderer/Painting/MaterialStyleStroke.h @@ -0,0 +1,47 @@ +#pragma once +#include "BaseStyle.h" + +namespace Renderer +{ + enum class MaterialStrokeType { kPlain }; + + class MaterialStroke + { + public: + virtual MaterialStrokeType type() const = 0; + virtual std::vector encoded() const = 0; + virtual bool operator==(const MaterialStroke&) const = 0; + }; + + class StrokePlain : public MaterialStroke + { + public: + StrokePlain(QColor color, float metallic, float roughness); + virtual MaterialStrokeType type() const override; + virtual std::vector encoded() const override; + virtual bool operator==(const MaterialStroke&) const override; + + QColor color; + float metallic; + float roughness; + }; + + + enum class StrokeType { kBothSides = 2, kLeftSide = 1, kRightSide = 0 }; + enum class StrokeEndType { kRound }; + + class MaterialStyleStroke : public MaterialStyle + { + public: + MaterialStyleStroke(float width, StrokeType strokeType, StrokeEndType endType, std::shared_ptr materialStroke); + virtual MaterialStyleType type() const override; + virtual std::vector encoded() const override; + virtual bool operator==(const MaterialStyle&) const override; + float getWidth() const; + protected: + float width; + StrokeType strokeType; + StrokeEndType endType; + std::shared_ptr materialStroke; + }; +} diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/Painting.cpp b/ArchitectureColoredPainting/src/Renderer/Painting/Painting.cpp index 6fd5edc..5539faf 100644 --- a/ArchitectureColoredPainting/src/Renderer/Painting/Painting.cpp +++ b/ArchitectureColoredPainting/src/Renderer/Painting/Painting.cpp @@ -2,6 +2,7 @@ #include "../../SvgParser.h" #include "ShortCutTree.h" #include "LineTree.h" +#include "MaterialStyleStroke.h" #include using namespace Renderer; @@ -18,46 +19,80 @@ void Renderer::Painting::addElement(ElementWithTransform elementWithTransform) if (it == elementPool.end()) { auto element = elementWithTransform.element; - auto iter = contourPool.insert({ element->contour, {nullptr, nullptr} }).first; + auto iter = contourPool.insert({ element.contour, {nullptr, nullptr} }).first; - if (!element->style->isLine() && iter->second.first == nullptr) + switch (element.style->type()) { - qDebug() << "Build ShortCutTree---------------------------------------------------------------------------------------------------"; - ShortCutTree shortCutTree(maxLineCount); - shortCutTree.buildShortCutTree(*element->contour); - ContourBuffer elementBuffer; - std::vector bvhLeaves = shortCutTree.getPointLineAndBvhTree(elementBuffer.pointBuffer, elementBuffer.lineBuffer); - BvhTree bvhTree; - bvhTree.buildBvhTree(bvhLeaves.data(), bvhLeaves.size()); - bvhTree.getBvhArray(elementBuffer.bvhChildren, elementBuffer.bvhBounds); - iter->second.first = std::make_shared(elementBuffer); - qDebug() << "---------------------------------------------------------------------------------------------------------------------"; + case MaterialStyleType::kFill: + if (iter->second.first == nullptr) + { + qDebug() << "Build ShortCutTree---------------------------------------------------------------------------------------------------"; + ShortCutTree shortCutTree(maxLineCount); + shortCutTree.buildShortCutTree(*element.contour); + ContourBuffer elementBuffer; + std::vector bvhLeaves = shortCutTree.getPointLineAndBvhTree(elementBuffer.pointBuffer, elementBuffer.lineBuffer); + BvhTree bvhTree; + bvhTree.buildBvhTree(bvhLeaves.data(), bvhLeaves.size()); + bvhTree.getBvhArray(elementBuffer.bvhChildren, elementBuffer.bvhBounds); + iter->second.first = std::make_shared(elementBuffer); + qDebug() << "---------------------------------------------------------------------------------------------------------------------"; + } + break; + case MaterialStyleType::kStroke: + if (iter->second.second == nullptr) + { + qDebug() << "Build LineTree-------------------------------------------------------------------------------------------------------"; + LineTree lineTree(maxLineCount); + lineTree.buildLineTree(*element.contour, std::static_pointer_cast(element.style)->getWidth()); + ContourBuffer elementBuffer; + std::vector bvhLeaves = lineTree.getPointLineAndBvhTree(elementBuffer.pointBuffer, elementBuffer.lineBuffer); + BvhTree bvhTree; + bvhTree.buildBvhTree(bvhLeaves.data(), bvhLeaves.size()); + bvhTree.getBvhArray(elementBuffer.bvhChildren, elementBuffer.bvhBounds); + iter->second.second = std::make_shared(elementBuffer); + qDebug() << "---------------------------------------------------------------------------------------------------------------------"; + } + break; } - else if (element->style->isLine() && iter->second.second == nullptr) - { - qDebug() << "Build LineTree-------------------------------------------------------------------------------------------------------"; - LineTree lineTree(maxLineCount); - lineTree.buildLineTree(*element->contour, element->style->encoded()[1]); - ContourBuffer elementBuffer; - std::vector bvhLeaves = lineTree.getPointLineAndBvhTree(elementBuffer.pointBuffer, elementBuffer.lineBuffer); - BvhTree bvhTree; - bvhTree.buildBvhTree(bvhLeaves.data(), bvhLeaves.size()); - bvhTree.getBvhArray(elementBuffer.bvhChildren, elementBuffer.bvhBounds); - iter->second.second = std::make_shared(elementBuffer); - qDebug() << "---------------------------------------------------------------------------------------------------------------------"; - - - } - stylePool.insert({ element->style, 0 }); - elementPool.insert({ element, 0}); + stylePool.insert({ element.style, 0 }); + elementPool.insert({ element, 0 }); } elements.push_back(elementWithTransform); } +void Renderer::Painting::addElement(const Element& element, const ElementTransform& transform) +{ + auto contour = element.contour; + auto it = elementStyleMap.find(element.style); + if (it == elementStyleMap.end()) + { + std::vector baseStyles; + for (auto& style : element.style->toBaseStyles()) + { + auto [iter, _] = styleSet.insert(style.material); + baseStyles.push_back(BaseStyle{ style.transform, *iter }); + } + it = elementStyleMap.insert({ element.style, baseStyles }).first; + } + for (int i = 0; i < it->second.size(); i++) + { + auto& style = it->second[i]; + ElementTransform trans = transform; + trans.center += style.transform->translation; + trans.size *= style.transform->scale; + trans.rotation += style.transform->rotation; + trans.flip ^= style.transform->flip; + trans.zIndex = trans.zIndex * 10 + i; + addElement(ElementWithTransform{ BaseElement{element.contour, style.material}, BaseTransform(trans) }); + } +} + + + void Renderer::Painting::addElement(std::shared_ptr element, QVector4D bound, float rotation, int zIndex) { - addElement(ElementWithTransform{ element, bound, rotation, zIndex }); + } GLuint encodeZIndexRotation(GLuint zIndex, float rotation) @@ -65,11 +100,19 @@ GLuint encodeZIndexRotation(GLuint zIndex, float rotation) return GLuint(rotation / 360 * 0x10000 + zIndex * 0x10000); } +BvhTreeData Painting::encodeElementLeaf(ElementWithTransform e) +{ + QVector4D bound(e.transform.bound.x, e.transform.bound.y, e.transform.bound.z, e.transform.bound.w); + GLuint rightSon = GLuint(glm::mod(e.transform.rotation, 360.f) * (1 << 16)) + + (e.transform.flip.x << 16) + (e.transform.flip.y << 17) + (e.transform.zIndex << 18); + return BvhTreeData(bound, elementPool[e.element], rightSon); +} + void Painting::generateBuffers() { - qDebug() << elementPool.size(); - qDebug() << contourPool.size(); - qDebug() << stylePool.size(); + qDebug() << "Element Count: " << elementPool.size(); + qDebug() << "Coutour Count: " << contourPool.size(); + qDebug() << " Style Count: " << stylePool.size(); bvhChildren.clear(); @@ -85,10 +128,10 @@ void Painting::generateBuffers() } std::vector rootBvhTreeData; - for (auto& i:elements) + for (auto& i : elements) { - rootBvhTreeData.push_back(BvhTreeData(i.bound, elementPool[i.element], encodeZIndexRotation(i.zIndex, i.rotation))); - //rootBvhTreeData.push_back(BvhTreeData(i.bound, 1, encodeZIndexRotation(i.zIndex, i.rotation))); + rootBvhTreeData.push_back(encodeElementLeaf(i)); + //rootBvhTreeData.back().show(); } BvhTree rootBvhTree; rootBvhTree.buildBvhTree(rootBvhTreeData.data(), rootBvhTreeData.size()); @@ -117,8 +160,8 @@ void Painting::generateBuffers() for (auto& i : elementPool) { //qDebug() <<"element:" << i.second; - std::shared_ptr contourBuffer = i.first->style->isLine() ? contourPool[i.first->contour].second : contourPool[i.first->contour].first; - elementOffset.push_back({ contourBuffer->bvhOffset, stylePool[i.first->style], contourBuffer->pointsOffset, contourBuffer->linesOffset }); + std::shared_ptr contourBuffer = i.first.style->type()==MaterialStyleType::kStroke ? contourPool[i.first.contour].second : contourPool[i.first.contour].first; + elementOffset.push_back({ contourBuffer->bvhOffset, stylePool[i.first.style], contourBuffer->pointsOffset, contourBuffer->linesOffset }); //std::cout << std::format("{} {} {} {}\n", contourBuffer->bvhOffset, stylePool[i.first->style], contourBuffer->pointsOffset, contourBuffer->linesOffset); } } @@ -139,3 +182,16 @@ void Renderer::Painting::insertContourBuffer(std::shared_ptr buff bvhChildren.insert(bvhChildren.end(), buffer->bvhChildren.begin(), buffer->bvhChildren.end()); bvhBounds.insert(bvhBounds.end(), buffer->bvhBounds.begin(), buffer->bvhBounds.end()); } + +bool Renderer::BaseElement::operator<(const BaseElement& e) const +{ + return contour == e.contour ? style < e.style : contour < e.contour; +} + +Renderer::BaseTransform::BaseTransform(ElementTransform t) + : bound(glm::vec4(t.center - t.size / 2.f, t.center + t.size / 2.f)) + , rotation(t.rotation) + , flip(t.flip) + , zIndex(t.zIndex) +{ +} diff --git a/ArchitectureColoredPainting/src/Renderer/Painting/Painting.h b/ArchitectureColoredPainting/src/Renderer/Painting/Painting.h index e8ce576..496d879 100644 --- a/ArchitectureColoredPainting/src/Renderer/Painting/Painting.h +++ b/ArchitectureColoredPainting/src/Renderer/Painting/Painting.h @@ -1,28 +1,35 @@ #pragma once #include +#include #include +#include #include "Line.h" #include "BvhTree.h" #include "ElementStyle.h" -#include -//#include "Element.h" +#include "Element.h" namespace Renderer { - using Contour = std::vector>; - - struct Element + struct BaseElement { std::shared_ptr contour; - std::shared_ptr style; + std::shared_ptr style; + bool operator<(const BaseElement& e) const; + }; + + struct BaseTransform + { + glm::vec4 bound; + float rotation; + glm::bvec2 flip; + GLuint zIndex; + BaseTransform(ElementTransform t); }; struct ElementWithTransform { - std::shared_ptr element; - QVector4D bound; - float rotation; - int zIndex; + BaseElement element; + BaseTransform transform; }; struct ContourBuffer @@ -37,6 +44,18 @@ namespace Renderer GLuint bvhOffset; }; + struct CompareMaterialStyle + { + inline bool operator()(const std::shared_ptr& left, const std::shared_ptr& right) const + { + if (left == right || *left == *right) + return false; + else + return left < right; + } + }; + + class Painting { public: @@ -49,16 +68,19 @@ namespace Renderer Painting(); void addElement(ElementWithTransform element); + void addElement(const Element& element, const ElementTransform& transform); void addElement(std::shared_ptr element, QVector4D bound, float rotation, int zIndex); void generateBuffers(); GLuint getElementCount(); private: std::unordered_map, std::pair/*Ãæ*/, std::shared_ptr/*Ïß*/>> contourPool; - std::unordered_map, GLuint> stylePool; - std::map, GLuint> elementPool; + std::set, CompareMaterialStyle> styleSet; + std::unordered_map, std::vector> elementStyleMap; + std::unordered_map, GLuint> stylePool; + std::map elementPool; std::vector elements; void insertContourBuffer(std::shared_ptr buffer); - + BvhTreeData encodeElementLeaf(ElementWithTransform e); }; } diff --git a/FramelessHelper/qmake/.qmake.stash b/FramelessHelper/qmake/FramelessHelperCore/.qmake.stash similarity index 62% rename from FramelessHelper/qmake/.qmake.stash rename to FramelessHelper/qmake/FramelessHelperCore/.qmake.stash index 6978fc8..b04d932 100644 --- a/FramelessHelper/qmake/.qmake.stash +++ b/FramelessHelper/qmake/FramelessHelperCore/.qmake.stash @@ -1,23 +1,23 @@ QMAKE_CXX.QT_COMPILER_STDCXX = 199711L -QMAKE_CXX.QMAKE_MSC_VER = 1933 -QMAKE_CXX.QMAKE_MSC_FULL_VER = 193331630 +QMAKE_CXX.QMAKE_MSC_VER = 1934 +QMAKE_CXX.QMAKE_MSC_FULL_VER = 193431937 QMAKE_CXX.COMPILER_MACROS = \ QT_COMPILER_STDCXX \ QMAKE_MSC_VER \ QMAKE_MSC_FULL_VER QMAKE_CXX.INCDIRS = \ - "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\include" \ - "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\ATLMFC\\include" \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\include" \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\ATLMFC\\include" \ "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" \ - "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.19041.0\\ucrt" \ - "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\um" \ - "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\shared" \ - "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\winrt" \ - "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\cppwinrt" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" \ "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" QMAKE_CXX.LIBDIRS = \ - "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\ATLMFC\\lib\\x64" \ - "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\lib\\x64" \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\ATLMFC\\lib\\x64" \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\lib\\x64" \ "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\lib\\um\\x64" \ - "C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.19041.0\\ucrt\\x64" \ - "C:\\Program Files (x86)\\Windows Kits\\10\\\\lib\\10.0.19041.0\\\\um\\x64" + "C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.22000.0\\ucrt\\x64" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\lib\\10.0.22000.0\\\\um\\x64" diff --git a/FramelessHelper/qmake/FramelessHelperCore.pro b/FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.pro similarity index 94% rename from FramelessHelper/qmake/FramelessHelperCore.pro rename to FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.pro index c91662e..526567f 100644 --- a/FramelessHelper/qmake/FramelessHelperCore.pro +++ b/FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.pro @@ -1,9 +1,9 @@ QT += core core-private gui gui-private -CORE_PUB_INC_DIR = $$PWD/../include/FramelessHelper/Core +CORE_PUB_INC_DIR = $$PWD/../../include/FramelessHelper/Core CORE_PRIV_INC_DIR = $$CORE_PUB_INC_DIR/private -CORE_EXTRA_INC_DIR = $$PWD/inc/core -CORE_SRC_DIR = $$PWD/../src/core +CORE_EXTRA_INC_DIR = $$PWD/../inc/core +CORE_SRC_DIR = $$PWD/../../src/core DEFINES += \ FRAMELESSHELPER_CORE_STATIC diff --git a/FramelessHelper/qmake/FramelessHelperCore.vcxproj b/FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.vcxproj similarity index 78% rename from FramelessHelper/qmake/FramelessHelperCore.vcxproj rename to FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.vcxproj index 699fe08..735f6a0 100644 --- a/FramelessHelper/qmake/FramelessHelperCore.vcxproj +++ b/FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.vcxproj @@ -11,11 +11,11 @@ - {F1BC586E-F1ED-320C-899E-76CCB5660AE1} + {954D3D24-DF86-33A3-8867-D1735CCBDB10} FramelessHelperCore QtVS_v304 - 10.0.19041.0 - 10.0.19041.0 + 10.0.22000.0 + 10.0.22000.0 $(MSBuildProjectDirectory)\QtMsBuild @@ -78,7 +78,7 @@ - GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\include\FramelessHelper\Core;..\include\FramelessHelper\Core\private;inc\core;release;E:\VulkanSDK\1.3.216.0\include;%(AdditionalIncludeDirectories) + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\..\include\FramelessHelper\Core;..\..\include\FramelessHelper\Core\private;..\inc\core;release;E:\VulkanSDK\1.3.216.0\include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) release\ false @@ -121,7 +121,7 @@ msvc - D:/??2022/ArchitectureColoredPainting/FramelessHelper/qmake/$(Configuration)/moc_predefs.h + ./$(Configuration)/moc_predefs.h Moc'ing %(Identity)... output $(Configuration) @@ -137,7 +137,7 @@ - GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\include\FramelessHelper\Core;..\include\FramelessHelper\Core\private;inc\core;debug;E:\VulkanSDK\1.3.216.0\include;%(AdditionalIncludeDirectories) + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\..\include\FramelessHelper\Core;..\..\include\FramelessHelper\Core\private;..\inc\core;debug;E:\VulkanSDK\1.3.216.0\include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) debug\ false @@ -146,7 +146,7 @@ Sync debug\ Disabled - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;FRAMELESSHELPER_CORE_STATIC;QT_NO_CAST_TO_ASCII;QT_NO_CAST_FROM_ASCII;QT_NO_CAST_FROM_BYTEARRAY;QT_NO_URL_CAST_FROM_STRING;QT_NO_NARROWING_CONVERSIONS_IN_CONNECT;QT_NO_FOREACH;QT_USE_QSTRINGBUILDER;QT_USE_FAST_OPERATOR_PLUS;QT_DEPRECATED_WARNINGS;QT_DEPRECATED_WARNINGS_SINCE=0x070000;QT_WARN_DEPRECATED_UP_TO=0x070000;QT_DISABLE_DEPRECATED_BEFORE=0x070000;QT_DISABLE_DEPRECATED_UP_TO=0x070000;QT_NO_KEYWORDS;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;FRAMELESSHELPER_CORE_STATIC;%(PreprocessorDefinitions) false MultiThreadedDebugDLL true @@ -184,7 +184,7 @@ msvc - D:/??2022/ArchitectureColoredPainting/FramelessHelper/qmake/$(Configuration)/moc_predefs.h + ./$(Configuration)/moc_predefs.h Moc'ing %(Identity)... output $(Configuration) @@ -192,53 +192,53 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - - + + - - - + + + - + - + - + - + - + - + - - + + - + - + @@ -259,10 +259,10 @@ - + - - + + diff --git a/FramelessHelper/qmake/FramelessHelperCore.vcxproj.filters b/FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.vcxproj.filters similarity index 61% rename from FramelessHelper/qmake/FramelessHelperCore.vcxproj.filters rename to FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.vcxproj.filters index 6a1d510..d972081 100644 --- a/FramelessHelper/qmake/FramelessHelperCore.vcxproj.filters +++ b/FramelessHelper/qmake/FramelessHelperCore/FramelessHelperCore.vcxproj.filters @@ -37,102 +37,102 @@ - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files @@ -173,13 +173,13 @@ - + Resource Files - + Resource Files - + Resource Files diff --git a/FramelessHelper/qmake/FramelessHelperWidgets/.qmake.stash b/FramelessHelper/qmake/FramelessHelperWidgets/.qmake.stash new file mode 100644 index 0000000..b04d932 --- /dev/null +++ b/FramelessHelper/qmake/FramelessHelperWidgets/.qmake.stash @@ -0,0 +1,23 @@ +QMAKE_CXX.QT_COMPILER_STDCXX = 199711L +QMAKE_CXX.QMAKE_MSC_VER = 1934 +QMAKE_CXX.QMAKE_MSC_FULL_VER = 193431937 +QMAKE_CXX.COMPILER_MACROS = \ + QT_COMPILER_STDCXX \ + QMAKE_MSC_VER \ + QMAKE_MSC_FULL_VER +QMAKE_CXX.INCDIRS = \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\include" \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\ATLMFC\\include" \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" \ + "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" +QMAKE_CXX.LIBDIRS = \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\ATLMFC\\lib\\x64" \ + "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\lib\\x64" \ + "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\lib\\um\\x64" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.22000.0\\ucrt\\x64" \ + "C:\\Program Files (x86)\\Windows Kits\\10\\\\lib\\10.0.22000.0\\\\um\\x64" diff --git a/FramelessHelper/qmake/FramelessHelperWidgets.pro b/FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.pro similarity index 92% rename from FramelessHelper/qmake/FramelessHelperWidgets.pro rename to FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.pro index 0f1e999..fe8d3c3 100644 --- a/FramelessHelper/qmake/FramelessHelperWidgets.pro +++ b/FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.pro @@ -1,8 +1,8 @@ QT += widgets widgets-private -WIDGETS_PUB_INC_DIR = $$PWD/../include/FramelessHelper/Widgets +WIDGETS_PUB_INC_DIR = $$PWD/../../include/FramelessHelper/Widgets WIDGETS_PRIV_INC_DIR = $$WIDGETS_PUB_INC_DIR/private -WIDGETS_SRC_DIR = $$PWD/../src/widgets +WIDGETS_SRC_DIR = $$PWD/../../src/widgets DEFINES += \ FRAMELESSHELPER_WIDGETS_STATIC diff --git a/FramelessHelper/qmake/FramelessHelperWidgets.vcxproj b/FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.vcxproj similarity index 81% rename from FramelessHelper/qmake/FramelessHelperWidgets.vcxproj rename to FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.vcxproj index 1d7795e..411cfb0 100644 --- a/FramelessHelper/qmake/FramelessHelperWidgets.vcxproj +++ b/FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.vcxproj @@ -11,11 +11,11 @@ - {61651EC8-A30E-3935-BD0C-A01AE3EE0AD9} + {E7A71E05-4AA5-31DB-A17D-542FC7BD83A3} FramelessHelperWidgets QtVS_v304 - 10.0.19041.0 - 10.0.19041.0 + 10.0.22000.0 + 10.0.22000.0 $(MSBuildProjectDirectory)\QtMsBuild @@ -78,7 +78,7 @@ - GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\include\FramelessHelper\Widgets;..\include\FramelessHelper\Widgets\private;release;E:\VulkanSDK\1.3.216.0\include;%(AdditionalIncludeDirectories) + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\..\include\FramelessHelper\Widgets;..\..\include\FramelessHelper\Widgets\private;release;E:\VulkanSDK\1.3.216.0\include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) release\ false @@ -130,7 +130,7 @@ - ..\include\FramelessHelper\Widgets;..\include\FramelessHelper\Widgets\private;..\include\FramelessHelper\Core\..\..;..\include\FramelessHelper\Core;..\include\FramelessHelper\Core\private;inc\core;%(AdditionalIncludeDirectories) + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\..\include\FramelessHelper\Widgets;..\..\include\FramelessHelper\Widgets\private;debug;..\..\include;..\inc\core;..\..\include\FramelessHelper\Core;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) debug\ false @@ -139,7 +139,7 @@ Sync debug\ Disabled - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;FRAMELESSHELPER_WIDGETS_STATIC;QT_NO_CAST_TO_ASCII;QT_NO_CAST_FROM_ASCII;QT_NO_CAST_FROM_BYTEARRAY;QT_NO_URL_CAST_FROM_STRING;QT_NO_NARROWING_CONVERSIONS_IN_CONNECT;QT_NO_FOREACH;QT_USE_QSTRINGBUILDER;QT_USE_FAST_OPERATOR_PLUS;QT_DEPRECATED_WARNINGS;QT_DEPRECATED_WARNINGS_SINCE=0x070000;QT_WARN_DEPRECATED_UP_TO=0x070000;QT_DISABLE_DEPRECATED_BEFORE=0x070000;QT_DISABLE_DEPRECATED_UP_TO=0x070000;QT_NO_KEYWORDS;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;FRAMELESSHELPER_WIDGETS_STATIC;%(PreprocessorDefinitions) false MultiThreadedDebugDLL true @@ -178,42 +178,42 @@ - - - - - - - - + + + + + + + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + @@ -235,8 +235,8 @@ - - {f1bc586e-f1ed-320c-899e-76ccb5660ae1} + + {954d3d24-df86-33a3-8867-d1735ccbdb10} diff --git a/FramelessHelper/qmake/FramelessHelperWidgets.vcxproj.filters b/FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.vcxproj.filters similarity index 61% rename from FramelessHelper/qmake/FramelessHelperWidgets.vcxproj.filters rename to FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.vcxproj.filters index 428a464..58050a2 100644 --- a/FramelessHelper/qmake/FramelessHelperWidgets.vcxproj.filters +++ b/FramelessHelper/qmake/FramelessHelperWidgets/FramelessHelperWidgets.vcxproj.filters @@ -27,72 +27,72 @@ - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files diff --git a/FramelessHelper/qmake/core.vcxproj b/FramelessHelper/qmake/core.vcxproj deleted file mode 100644 index f8e45a9..0000000 --- a/FramelessHelper/qmake/core.vcxproj +++ /dev/null @@ -1,274 +0,0 @@ - - - - - Release - x64 - - - Debug - x64 - - - - {E5BE9C30-42FE-3F03-9A8E-F9C7795F516F} - - - QtVS_v304 - 10.0.19041.0 - 10.0.19041.0 - $(MSBuildProjectDirectory)\QtMsBuild - FramelessHelperCore - - - - v142 - release\ - false - NotSet - Application - release\ - core - - - v143 - debug\ - false - NotSet - StaticLibrary - debug\ - core - - - - - - - - - - - - - - - - - - debug\ - debug\ - core - true - - - release\ - release\ - core - true - false - - - 5.15.2_msvc2019_64 - core;core-private;gui;gui-private - - - 5.15.2_msvc2019_64 - core;core-private;gui;gui-private - - - - - - - GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\include\FramelessHelper\Core;..\include\FramelessHelper\Core\private;inc\core;release;E:\VulkanSDK\1.3.216.0\include;%(AdditionalIncludeDirectories) - -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) - release\ - false - None - 4577;4467;%(DisableSpecificWarnings) - Sync - release\ - MaxSpeed - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;FRAMELESSHELPER_CORE_STATIC;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) - false - - - MultiThreadedDLL - true - true - Level3 - true - - - user32.lib;gdi32.lib;shell32.lib;shell32.lib;%(AdditionalDependencies) - C:\openssl\lib;C:\Utils\my_sql\mysql-5.7.25-winx64\lib;C:\Utils\postgresql\pgsql\lib;%(AdditionalLibraryDirectories) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - false - true - false - true - $(OutDir)\core.exe - true - Windows - true - - - Unsigned - None - 0 - - - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;FRAMELESSHELPER_CORE_STATIC;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) - - - msvc - D:/??2022/ArchitectureColoredPainting/FramelessHelper/qmake/$(Configuration)/moc_predefs.h - Moc'ing %(Identity)... - output - $(Configuration) - moc_%(Filename).cpp - - - default - framelesshelpercore - Rcc'ing %(Identity)... - $(Configuration) - qrc_%(Filename).cpp - - - - - GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\include\FramelessHelper\Core;..\include\FramelessHelper\Core\private;inc\core;debug;E:\VulkanSDK\1.3.216.0\include;%(AdditionalIncludeDirectories) - -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) - debug\ - false - ProgramDatabase - 4577;4467;%(DisableSpecificWarnings) - Sync - debug\ - Disabled - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;FRAMELESSHELPER_CORE_STATIC;%(PreprocessorDefinitions) - false - MultiThreadedDebugDLL - true - true - Level3 - true - stdcpp17 - - - user32.lib;gdi32.lib;shell32.lib;shell32.lib;%(AdditionalDependencies) - C:\openssl\lib;C:\Utils\my_sql\mysql-5.7.25-winx64\lib;C:\Utils\postgresql\pgsql\lib;%(AdditionalLibraryDirectories) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - true - true - $(OutDir)\core.exe - true - Windows - true - - - Unsigned - None - 0 - - - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;FRAMELESSHELPER_CORE_STATIC;_DEBUG;%(PreprocessorDefinitions) - - - framelesshelpercore - default - Rcc'ing %(Identity)... - $(Configuration) - qrc_%(Filename).cpp - - - msvc - D:/??2022/ArchitectureColoredPainting/FramelessHelper/qmake/$(Configuration)/moc_predefs.h - Moc'ing %(Identity)... - output - $(Configuration) - moc_%(Filename).cpp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Document - true - $(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) - cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >debug\moc_predefs.h - Generate moc_predefs.h - debug\moc_predefs.h;%(Outputs) - - - Document - $(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) - cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h - Generate moc_predefs.h - release\moc_predefs.h;%(Outputs) - true - - - - - - - - - - - - - - \ No newline at end of file diff --git a/FramelessHelper/qmake/core.vcxproj.filters b/FramelessHelper/qmake/core.vcxproj.filters deleted file mode 100644 index 6a1d510..0000000 --- a/FramelessHelper/qmake/core.vcxproj.filters +++ /dev/null @@ -1,186 +0,0 @@ - - - - - {71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11} - cpp;c;cxx;moc;h;def;odl;idl;res; - - - {71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11} - cpp;c;cxx;moc;h;def;odl;idl;res; - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false - - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - - - - - - - - - - - - - - - - - - - Generated Files - - - Generated Files - - - - - - - - - - - - - - - Resource Files - - - Resource Files - - - Resource Files - - - \ No newline at end of file