Merge branch 'dev' into 'hotfix-history'
# Conflicts: # src/Layer/PaintingArea.h
@@ -5,7 +5,7 @@
|
||||
#---------------------------------------------------------------------------
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
PROJECT_NAME = IntelliPhoto
|
||||
PROJECT_NUMBER = 0.6
|
||||
PROJECT_NUMBER = 0.7
|
||||
PROJECT_BRIEF =
|
||||
PROJECT_LOGO =
|
||||
OUTPUT_DIRECTORY = docs
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="256"
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="circle-tool.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient36">
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop32" />
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop34" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient36"
|
||||
id="linearGradient38"
|
||||
x1="147.98735"
|
||||
y1="176.19795"
|
||||
x2="-13.131983"
|
||||
y2="106.49742"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="166.94289"
|
||||
inkscape:cy="125.27289"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<circle
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="circle4578"
|
||||
cx="33.78162"
|
||||
cy="263.02939"
|
||||
r="2.5985863" />
|
||||
<circle
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.11666656;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4602"
|
||||
cx="33.781624"
|
||||
cy="263.50183"
|
||||
r="26.316593" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
@@ -1,109 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="256"
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="eraser-tool.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
inkscape:export-filename="C:\Users\pauln\tool1.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient36">
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop32" />
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop34" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient36"
|
||||
id="linearGradient38"
|
||||
x1="147.98735"
|
||||
y1="176.19795"
|
||||
x2="-13.131983"
|
||||
y2="106.49742"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="154.79235"
|
||||
inkscape:cy="136.37674"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="g4716"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<g
|
||||
id="g4716">
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.54304647;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4775"
|
||||
width="59.058777"
|
||||
height="57.168896"
|
||||
x="4.2522316"
|
||||
y="234.16145" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:16.96439552;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 64.539433,248.9069 -8.315476,0.24173 c 0,0 -13.890625,31.06218 -29.576635,22.72253"
|
||||
id="path4777"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:#ffaaaa;stroke-width:19.02600098;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4779"
|
||||
width="3.5923276"
|
||||
height="18.439137"
|
||||
x="100.56355"
|
||||
y="236.22752"
|
||||
transform="matrix(0.96477278,0.26308456,-0.30397854,0.95267888,0,0)" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.4 KiB |
@@ -1,194 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="256"
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="flood-fill-tool.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4746">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4742" />
|
||||
<stop
|
||||
style="stop-color:#ff0000;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4744" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient36">
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop32" />
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop34" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient36"
|
||||
id="linearGradient38"
|
||||
x1="147.98735"
|
||||
y1="176.19795"
|
||||
x2="-13.131983"
|
||||
y2="106.49742"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4746"
|
||||
id="linearGradient4748"
|
||||
x1="278.75943"
|
||||
y1="55.545975"
|
||||
x2="278.70905"
|
||||
y2="102.68295"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="178.00664"
|
||||
inkscape:cy="120.50274"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="g4716"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<g
|
||||
id="g4716">
|
||||
<rect
|
||||
style="fill:url(#linearGradient4748);fill-opacity:1;stroke:#000000;stroke-width:2.54346728;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4736"
|
||||
width="20.992056"
|
||||
height="38.493938"
|
||||
x="268.06161"
|
||||
y="65.299561"
|
||||
transform="matrix(0.37877425,0.9254891,-0.96183685,0.2736236,0,0)" />
|
||||
<rect
|
||||
y="199.89908"
|
||||
x="116.56168"
|
||||
height="29.387648"
|
||||
width="34.49033"
|
||||
id="rect4710"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.11666656;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
transform="rotate(22.139383)" />
|
||||
<ellipse
|
||||
ry="3.6608384"
|
||||
rx="17.12623"
|
||||
cy="229.80646"
|
||||
cx="133.85408"
|
||||
id="path4712"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.07105064;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
transform="rotate(22.139383)" />
|
||||
<rect
|
||||
style="fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:0.57643586;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4722"
|
||||
width="6.4093542"
|
||||
height="5.9942107"
|
||||
x="106.55282"
|
||||
y="220.71335"
|
||||
transform="matrix(0.89502052,0.44602497,-0.31493366,0.94911369,0,0)"
|
||||
ry="2.9971054" />
|
||||
<rect
|
||||
ry="4.9373565"
|
||||
transform="matrix(0.76230952,0.64721263,-0.19117303,0.98155635,0,0)"
|
||||
y="211.36087"
|
||||
x="91.973289"
|
||||
height="9.8747129"
|
||||
width="7.5251632"
|
||||
id="rect4726"
|
||||
style="fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:0.80167449;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<rect
|
||||
style="fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:0.68775666;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4728"
|
||||
width="6.9141498"
|
||||
height="7.9099746"
|
||||
x="106.98909"
|
||||
y="208.27184"
|
||||
transform="matrix(0.82967592,0.55824535,-0.238658,0.97110368,0,0)"
|
||||
ry="3.9549873" />
|
||||
<rect
|
||||
style="fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:0.83867002;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4732"
|
||||
width="7.7389083"
|
||||
height="10.508647"
|
||||
x="99.318977"
|
||||
y="206.74135"
|
||||
transform="matrix(0.74125487,0.67122367,-0.1796405,0.98373233,0,0)"
|
||||
ry="5.2543235" />
|
||||
<rect
|
||||
ry="4.9687924"
|
||||
transform="matrix(0.76020136,0.64968753,-0.18996354,0.98179115,0,0)"
|
||||
y="213.06801"
|
||||
x="82.413681"
|
||||
height="9.9375849"
|
||||
width="7.5460315"
|
||||
id="rect4734"
|
||||
style="fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:0.80533689;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<rect
|
||||
ry="2.9971054"
|
||||
transform="matrix(0.89502052,0.44602497,-0.31493366,0.94911369,0,0)"
|
||||
y="219.89731"
|
||||
x="128.72516"
|
||||
height="5.9942107"
|
||||
width="6.4093542"
|
||||
id="rect4738"
|
||||
style="fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:0.57643586;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<rect
|
||||
style="fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:0.61344987;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4740"
|
||||
width="6.5649834"
|
||||
height="6.6277919"
|
||||
x="107.49622"
|
||||
y="215.86592"
|
||||
transform="matrix(0.87380318,0.48627976,-0.28482771,0.95857873,0,0)"
|
||||
ry="3.3138959" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.3 KiB |
@@ -1,169 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="256"
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="magic-wand-tool.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient36">
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop32" />
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop34" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient36"
|
||||
id="linearGradient38"
|
||||
x1="147.98735"
|
||||
y1="176.19795"
|
||||
x2="-13.131983"
|
||||
y2="106.49742"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="154.79235"
|
||||
inkscape:cy="122.64559"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="g4716"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<g
|
||||
id="g4716">
|
||||
<g
|
||||
id="g4767"
|
||||
transform="translate(-4.5357143,7.0870536)">
|
||||
<rect
|
||||
transform="rotate(45)"
|
||||
ry="1.889881"
|
||||
y="137.33192"
|
||||
x="203.35738"
|
||||
height="53.483627"
|
||||
width="10.299852"
|
||||
id="rect4758"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.7175684;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<rect
|
||||
transform="rotate(45)"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.8319869;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4760"
|
||||
width="9.7328882"
|
||||
height="2.8348179"
|
||||
x="203.64085"
|
||||
y="148.6712" />
|
||||
<rect
|
||||
transform="rotate(45)"
|
||||
y="141.20618"
|
||||
x="203.64085"
|
||||
height="2.8348179"
|
||||
width="9.7328882"
|
||||
id="rect4762"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.8319869;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:2.11666656;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4769"
|
||||
sodipodi:sides="5"
|
||||
sodipodi:cx="44.223213"
|
||||
sodipodi:cy="239.92558"
|
||||
sodipodi:r1="8.624361"
|
||||
sodipodi:r2="4.3121805"
|
||||
sodipodi:arg1="1.0040671"
|
||||
sodipodi:arg2="1.6323856"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 48.853421,247.20162 -4.895624,-2.97203 -5.223697,2.348 1.313744,-5.57442 -3.847298,-4.24246 5.707563,-0.47315 2.845937,-4.96999 2.213724,5.28201 5.606183,1.17083 -4.339406,3.73761 z"
|
||||
inkscape:transform-center-x="2.6385383"
|
||||
inkscape:transform-center-y="1.2565374"
|
||||
transform="rotate(-21.763247,66.493886,211.70978)" />
|
||||
<path
|
||||
transform="matrix(-0.16940831,-0.61726905,0.61726905,-0.16940831,-99.981719,307.02239)"
|
||||
inkscape:transform-center-y="1.5995691"
|
||||
inkscape:transform-center-x="-0.47805579"
|
||||
d="m 48.853421,247.20162 -4.895624,-2.97203 -5.223697,2.348 1.313744,-5.57442 -3.847298,-4.24246 5.707563,-0.47315 2.845937,-4.96999 2.213724,5.28201 5.606183,1.17083 -4.339406,3.73761 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:arg2="1.6323856"
|
||||
sodipodi:arg1="1.0040671"
|
||||
sodipodi:r2="4.3121805"
|
||||
sodipodi:r1="8.624361"
|
||||
sodipodi:cy="239.92558"
|
||||
sodipodi:cx="44.223213"
|
||||
sodipodi:sides="5"
|
||||
id="path4771"
|
||||
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:2.11666656;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:2.11666656;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4773"
|
||||
sodipodi:sides="5"
|
||||
sodipodi:cx="44.223213"
|
||||
sodipodi:cy="239.92558"
|
||||
sodipodi:r1="8.624361"
|
||||
sodipodi:r2="4.3121805"
|
||||
sodipodi:arg1="1.0040671"
|
||||
sodipodi:arg2="1.6323856"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 48.853421,247.20162 -4.895624,-2.97203 -5.223697,2.348 1.313744,-5.57442 -3.847298,-4.24246 5.707563,-0.47315 2.845937,-4.96999 2.213724,5.28201 5.606183,1.17083 -4.339406,3.73761 z"
|
||||
inkscape:transform-center-x="0.0027046201"
|
||||
inkscape:transform-center-y="1.1149197"
|
||||
transform="matrix(0.25199367,-0.58840415,0.58840415,0.25199367,-99.952707,231.42813)" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.0 KiB |
@@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="256"
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="pen-tool.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient36">
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop32" />
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop34" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient36"
|
||||
id="linearGradient38"
|
||||
x1="147.98735"
|
||||
y1="176.19795"
|
||||
x2="-13.131983"
|
||||
y2="106.49742"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="376.91553"
|
||||
inkscape:cy="52.667178"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke-width:0.79907227"
|
||||
inkscape:transform-center-x="2.1805457"
|
||||
inkscape:transform-center-y="0.23135325"
|
||||
d="m 64.660259,230.98439 c -1.469539,1.22623 -3.009608,0.3208 -4.479147,2.55438 l -35.355186,29.81232 20.997146,4.03437 16.236587,-28.5477 c 2.650564,-3.49373 1.675561,-4.59875 2.6006,-7.85337 z"
|
||||
id="path16"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<ellipse
|
||||
style="fill:#000000;fill-opacity:1;stroke-width:0.2446842"
|
||||
id="path19"
|
||||
ry="4.8653927"
|
||||
rx="10.959454"
|
||||
cy="259.34927"
|
||||
cx="70.703522"
|
||||
transform="matrix(0.99175335,0.12816118,-0.13566218,0.99075515,0,0)" />
|
||||
<path
|
||||
style="fill:url(#linearGradient38);fill-opacity:1;stroke:none;stroke-width:1.1613673px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 19.935603,103.02103 C 11.487015,114.14384 3.7900432,116.38626 5.1066573,144.52297 7.9154345,204.54791 22.091131,264.29315 75.056641,251.85938 127.52071,239.54339 188.58555,194.70704 177.64844,158.85742 c -12.48014,3.63122 -34.362,10.63187 -51.541,8.65662 -12.43758,-1.43999 -33.957254,-24.02776 -43.821058,-27.9929 -2.739296,6.28676 5.637281,36.28371 -21.584814,27.90384 -62.9196406,-19.36876 11.109787,-93.171912 16.121057,-90.16515 0,0 -33.485263,-5.047889 -56.887022,25.7612 z"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,0,229.26665)"
|
||||
id="path23"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssccccscs" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.8 KiB |
@@ -1,125 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="256"
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="plain-tool.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
inkscape:stockid="DotM"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="DotM"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path907"
|
||||
d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
transform="scale(0.4) translate(7.4, 1)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="261.75556"
|
||||
inkscape:cy="104.85714"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<g
|
||||
id="g1146"
|
||||
transform="translate(-0.34017738,0.11425859)">
|
||||
<rect
|
||||
y="241.43747"
|
||||
x="17.575891"
|
||||
height="41.388393"
|
||||
width="33.828869"
|
||||
id="rect839"
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path841"
|
||||
d="m 54.820853,239.89272 8.097875,-7.30482"
|
||||
style="fill:none;stroke:#ffd42a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1123"
|
||||
d="m 15.612022,286.57635 -8.0978753,7.30482"
|
||||
style="fill:none;stroke:#ffd42a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#ffd42a;stroke:#ffd42a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 13.592835,239.89272 5.4949601,232.5879"
|
||||
id="path1125"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffd42a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 54.820853,285.50457 8.097875,7.30482"
|
||||
id="path1127"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1129"
|
||||
d="M 56.318451,261.65921 H 63.31101"
|
||||
style="fill:none;stroke:#ffd42a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffd42a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 6.0476177,261.65921 H 13.040177"
|
||||
id="path1131"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1133"
|
||||
d="m 34.773809,286.79463 v 7.55952"
|
||||
style="fill:#ffd42a;fill-opacity:1;stroke:#ffd42a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#ffd42a;fill-opacity:1;stroke:#ffd42a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 34.773809,231.04315 v 7.55952"
|
||||
id="path1135"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.9 KiB |
@@ -1,117 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="256"
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="polygon-tool.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient36">
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop32" />
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop34" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient36"
|
||||
id="linearGradient38"
|
||||
x1="147.98735"
|
||||
y1="176.19795"
|
||||
x2="-13.131983"
|
||||
y2="106.49742"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="107.4786"
|
||||
inkscape:cy="125.27289"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<path
|
||||
style="fill:#ff0000;stroke:#000000;stroke-width:2.11666667;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:0"
|
||||
d="M 6.7090773,250.6979 61.137648,243.51635 60.47619,288.87349 10.205357,286.13317 22.867559,260.33629 Z"
|
||||
id="path4590"
|
||||
inkscape:connector-curvature="0" />
|
||||
<circle
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4572"
|
||||
cx="4.5829611"
|
||||
cy="249.98918"
|
||||
r="2.5985863" />
|
||||
<circle
|
||||
r="2.5985863"
|
||||
cy="243.5636"
|
||||
cx="61.090405"
|
||||
id="circle4574"
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<circle
|
||||
r="2.5985863"
|
||||
cy="260.38354"
|
||||
cx="22.914806"
|
||||
id="circle4576"
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<circle
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="circle4588"
|
||||
cx="9.0241814"
|
||||
cy="286.84189"
|
||||
r="2.5985863" />
|
||||
<circle
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="circle4578"
|
||||
cx="60.523441"
|
||||
cy="288.82626"
|
||||
r="2.5985863" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.7 KiB |
@@ -1,101 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="256"
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="rectangle-tool.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient36">
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop32" />
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop34" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient36"
|
||||
id="linearGradient38"
|
||||
x1="147.98735"
|
||||
y1="176.19795"
|
||||
x2="-13.131983"
|
||||
y2="106.49742"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="107.4786"
|
||||
inkscape:cy="125.27289"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect56"
|
||||
width="54.995537"
|
||||
height="38.648064"
|
||||
x="6.1421127"
|
||||
y="243.04388" />
|
||||
<circle
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4572"
|
||||
cx="6.3783484"
|
||||
cy="243.5636"
|
||||
r="2.5985863" />
|
||||
<circle
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="circle4578"
|
||||
cx="61.090405"
|
||||
cy="281.7392"
|
||||
r="2.5985863" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.9 KiB |
@@ -10,5 +10,6 @@
|
||||
<file>icons/line-tool.svg</file>
|
||||
<file>icons/flood-fill-tool.svg</file>
|
||||
<file>icons/plain-tool.svg</file>
|
||||
<file>icons/gradient-tool.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -9,35 +9,119 @@
|
||||
#include <QPushButton>
|
||||
#include <QSpinBox>
|
||||
|
||||
/*!
|
||||
* \brief The IntelliInputDialog class is a customized Input Dialog to get Integers
|
||||
*/
|
||||
class IntelliInputDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
/*!
|
||||
* \brief IntelliInputDialog is the baisc constructor to for the InputDialog
|
||||
* \param Title - Title of the Input Dialog.
|
||||
* \param Label - A Label for the Iput Dialog, to show further information.
|
||||
* \param value - The standart value in the Input Box.
|
||||
* \param minValue - The minimal value to read.
|
||||
* \param maxValue - The maximal value to read.
|
||||
* \param step - The step size of Values.
|
||||
* \param ok - A check if the input was okay
|
||||
*/
|
||||
IntelliInputDialog(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool* ok = nullptr);
|
||||
|
||||
|
||||
/*!
|
||||
* \brief getInt is a static funktion ´, which creates an Input Dialog and gets an Integer.
|
||||
* \param Title - Title of the Input Dialog.
|
||||
* \param Label - A Label for the Iput Dialog, to show further information.
|
||||
* \param value - The standart value in the Input Box.
|
||||
* \param minValue - The minimal value to read.
|
||||
* \param maxValue - The maximal value to read.
|
||||
* \param step - The step size of Values.
|
||||
* \param ok - A check if the input was okay
|
||||
* \return
|
||||
*/
|
||||
static int getInt(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool* ok = nullptr);
|
||||
|
||||
public slots:
|
||||
/*!
|
||||
* \brief slotCloseEvent is a slot for catching the close Event.
|
||||
*/
|
||||
void slotCloseEvent();
|
||||
|
||||
/*!
|
||||
* \brief slotEingabe is a slot for catching the Input Event.
|
||||
*/
|
||||
void slotEingabe();
|
||||
|
||||
private:
|
||||
/*!
|
||||
* \brief createInputBox creates an Input Box for reading values.
|
||||
* \param Title - Title of the Input Dialog.
|
||||
* \param Label - A Label for the Iput Dialog, to show further information.
|
||||
* \param value - The standart value in the Input Box.
|
||||
* \param minValue - The minimal value to read.
|
||||
* \param maxValue - The maximal value to read.
|
||||
* \param step - The step size of Values.
|
||||
*/
|
||||
void createInputBox(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1);
|
||||
|
||||
/*!
|
||||
* \brief createConnections connects the close and Eingabe slot.
|
||||
*/
|
||||
void createConnections();
|
||||
|
||||
/*!
|
||||
* \brief setInputBoxStyle
|
||||
*/
|
||||
void setInputBoxStyle();
|
||||
|
||||
/*!
|
||||
* \brief valueInt the variable where the input is saved.
|
||||
*/
|
||||
int valueInt;
|
||||
|
||||
/*!
|
||||
* \brief Layout to place als gui event onto.
|
||||
*/
|
||||
QGridLayout* Layout;
|
||||
|
||||
/*!
|
||||
* \brief ButtonBox is a gui elment for the button.
|
||||
*/
|
||||
QDialogButtonBox* ButtonBox;
|
||||
|
||||
/*!
|
||||
* \brief notClosed saves the value, if the InputDialog is closed.
|
||||
*/
|
||||
bool* notClosed;
|
||||
|
||||
/*!
|
||||
* \brief Linesize to standarize the line size.
|
||||
*/
|
||||
const QSize Linesize = QSize(150,20);
|
||||
|
||||
/*!
|
||||
* \brief Buttonsize to standarize the button size.
|
||||
*/
|
||||
const QSize Buttonsize = QSize(72,20);
|
||||
|
||||
/*!
|
||||
* \brief InputLabel a gui element for a label.
|
||||
*/
|
||||
QLabel* InputLabel;
|
||||
|
||||
/*!
|
||||
* \brief Input a gui element for a SpinBox.
|
||||
*/
|
||||
QSpinBox* Input;
|
||||
|
||||
/*!
|
||||
* \brief okButton a gui element for the ok Button.
|
||||
*/
|
||||
QPushButton* okButton;
|
||||
|
||||
/*!
|
||||
* \brief cancelButton a gui element for the cancel button.
|
||||
*/
|
||||
QPushButton* cancelButton;
|
||||
};
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#include <QCloseEvent>
|
||||
#include <QDebug>
|
||||
#include <string>
|
||||
#include <QScreen>
|
||||
#include <QGuiApplication>
|
||||
|
||||
// IntelliPhotoGui constructor
|
||||
IntelliPhotoGui::IntelliPhotoGui(){
|
||||
@@ -20,7 +22,7 @@ IntelliPhotoGui::IntelliPhotoGui(){
|
||||
setIntelliStyle();
|
||||
// Size the app
|
||||
resize(600,600);
|
||||
showMaximized();
|
||||
showMaximized();
|
||||
setDefaultValues();
|
||||
}
|
||||
|
||||
@@ -143,7 +145,7 @@ void IntelliPhotoGui::slotChangeDim(){
|
||||
|
||||
// Change dimension
|
||||
if (ok1&&ok2) {
|
||||
paintingArea->setLayerDimensions(width,height);
|
||||
paintingArea->setCanvasDimensions(width,height);
|
||||
UpdateGui();
|
||||
}
|
||||
}
|
||||
@@ -155,7 +157,7 @@ void IntelliPhotoGui::slotDeleteLayer(){
|
||||
// "delete Layer" is the title of the window
|
||||
// the next tr is the text to display
|
||||
// Define the standard Value, min, max, step and ok button
|
||||
int layerNumber = IntelliInputDialog::getInt("Delete Layer", "Number:", paintingArea->getNumberOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
|
||||
int layerNumber = IntelliInputDialog::getInt("Delete Layer", "Number:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
|
||||
|
||||
// Create New Layer
|
||||
if(ok1) {
|
||||
@@ -172,7 +174,7 @@ void IntelliPhotoGui::slotSetActiveAlpha(){
|
||||
// the next tr is the text to display
|
||||
// Define the standard Value, min, max, step and ok button
|
||||
|
||||
int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getNumberOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
|
||||
int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
|
||||
|
||||
// "New Alpha" is the title of the window
|
||||
int alpha = IntelliInputDialog::getInt("Layer to set on", "Alpha:", 255, 0, 255, 1, &ok2);
|
||||
@@ -191,7 +193,7 @@ void IntelliPhotoGui::slotSetPolygon(){
|
||||
// "Layer to set on" is the title of the window
|
||||
// the next tr is the text to display
|
||||
// Define the standard Value, min, max, step and ok button
|
||||
int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getNumberOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
|
||||
int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
|
||||
|
||||
if (ok1)
|
||||
{
|
||||
@@ -243,15 +245,15 @@ void IntelliPhotoGui::slotSetActiveLayer(){
|
||||
}
|
||||
}
|
||||
|
||||
void IntelliPhotoGui::slotUpdateRenderSettingsOn(){
|
||||
void IntelliPhotoGui::slotUpdateFastRenderSettingsOn(){
|
||||
paintingArea->setRenderSettings(true);
|
||||
FastRendererLabel->setText("Fast Render: On");
|
||||
FastRendererLabel->setText("Fast Render: On");
|
||||
UpdateGui();
|
||||
}
|
||||
|
||||
void IntelliPhotoGui::slotUpdateRenderSettingsOff(){
|
||||
void IntelliPhotoGui::slotUpdateFastRenderSettingsOff(){
|
||||
paintingArea->setRenderSettings(false);
|
||||
FastRendererLabel->setText("Fast Render: Off");
|
||||
FastRendererLabel->setText("Fast Render: Off");
|
||||
UpdateGui();
|
||||
}
|
||||
|
||||
@@ -306,8 +308,8 @@ void IntelliPhotoGui::slotCreateFloodFillTool(){
|
||||
}
|
||||
|
||||
void IntelliPhotoGui::slotCreateGradientTool(){
|
||||
GradientButton->setChecked(true);
|
||||
paintingArea->createGradientTool();
|
||||
GradientButton->setChecked(true);
|
||||
paintingArea->createGradientTool();
|
||||
}
|
||||
|
||||
// Open an about dialog
|
||||
@@ -330,9 +332,10 @@ void IntelliPhotoGui::slotEnterPressed(){
|
||||
paintingArea->Toolsettings.setInnerAlpha(string.toInt());
|
||||
}
|
||||
|
||||
void IntelliPhotoGui::slotResetTools(){
|
||||
void IntelliPhotoGui::slotResetToolButtons(){
|
||||
CircleButton->setChecked(false);
|
||||
FloodFillButton->setChecked(false);
|
||||
GradientButton->setChecked(false);
|
||||
LineButton->setChecked(false);
|
||||
PenButton->setChecked(false);
|
||||
PlainButton->setChecked(false);
|
||||
@@ -424,7 +427,7 @@ void IntelliPhotoGui::createActions(){
|
||||
connect(actionCreateNewShapedLayer, SIGNAL(triggered()), this, SLOT(slotCreateNewShapedLayer()));
|
||||
|
||||
// Delete New Layer action and tie to IntelliPhotoGui::deleteLayer()
|
||||
actionDeleteLayer = new QAction(tr("&Delete Layer..."), this);
|
||||
actionDeleteLayer = new QAction(tr("&Delete Layer"), this);
|
||||
actionDeleteLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_D));
|
||||
connect(actionDeleteLayer, SIGNAL(triggered()), this, SLOT(slotDeleteLayer()));
|
||||
|
||||
@@ -433,50 +436,50 @@ void IntelliPhotoGui::createActions(){
|
||||
connect(actionChangeDim, SIGNAL(triggered()), this, SLOT(slotChangeDim()));
|
||||
connect(dimCanvas, SIGNAL(clicked()), this, SLOT(slotChangeDim()));
|
||||
|
||||
actionSetActiveLayer = new QAction(tr("&set Active"), this);
|
||||
actionSetActiveLayer = new QAction(tr("&Set Active"), this);
|
||||
actionSetActiveLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
|
||||
connect(actionSetActiveLayer, SIGNAL(triggered()), this, SLOT(slotSetActiveLayer()));
|
||||
|
||||
actionSetActiveAlpha = new QAction(tr("&set Alpha"), this);
|
||||
actionSetActiveAlpha = new QAction(tr("&Set Alpha"), this);
|
||||
actionSetActiveAlpha->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_A));
|
||||
connect(actionSetActiveAlpha, SIGNAL(triggered()), this, SLOT(slotSetActiveAlpha()));
|
||||
|
||||
actionSetPolygon = new QAction(tr("&set new Polygondata"), this);
|
||||
actionSetPolygon = new QAction(tr("&Set Polygon Data"), this);
|
||||
actionSetPolygon->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_P));
|
||||
connect(actionSetPolygon, SIGNAL(triggered()), this, SLOT(slotSetPolygon()));
|
||||
|
||||
actionMovePositionUp = new QAction(tr("&move Up"), this);
|
||||
actionMovePositionUp = new QAction(tr("&Move Up"), this);
|
||||
actionMovePositionUp->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Up));
|
||||
connect(actionMovePositionUp, SIGNAL(triggered()), this, SLOT(slotPositionMoveUp()));
|
||||
|
||||
actionMovePositionDown = new QAction(tr("&move Down"), this);
|
||||
actionMovePositionDown = new QAction(tr("&Move Down"), this);
|
||||
actionMovePositionDown->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Down));
|
||||
connect(actionMovePositionDown, SIGNAL(triggered()), this, SLOT(slotPositionMoveDown()));
|
||||
|
||||
actionMovePositionLeft = new QAction(tr("&move Left"), this);
|
||||
actionMovePositionLeft = new QAction(tr("&Move Left"), this);
|
||||
actionMovePositionLeft->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Left));
|
||||
connect(actionMovePositionLeft, SIGNAL(triggered()), this, SLOT(slotPositionMoveLeft()));
|
||||
|
||||
actionMovePositionRight = new QAction(tr("&move Right"), this);
|
||||
actionMovePositionRight = new QAction(tr("&Move Right"), this);
|
||||
actionMovePositionRight->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Right));
|
||||
connect(actionMovePositionRight, SIGNAL(triggered()), this, SLOT(slotPositionMoveRight()));
|
||||
|
||||
actionMoveLayerUp = new QAction(tr("&move Layer Up"), this);
|
||||
actionMoveLayerUp = new QAction(tr("&Move Forth"), this);
|
||||
actionMoveLayerUp->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_Up));
|
||||
connect(actionMoveLayerUp, SIGNAL(triggered()), this, SLOT(slotMoveLayerUp()));
|
||||
|
||||
actionMoveLayerDown = new QAction(tr("&move Layer Down"), this);
|
||||
actionMoveLayerDown = new QAction(tr("&Move Back"), this);
|
||||
actionMoveLayerDown->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_Down));
|
||||
connect(actionMoveLayerDown, SIGNAL(triggered()), this, SLOT(slotMoveLayerDown()));
|
||||
|
||||
//Create Update RenderSettings Actions here
|
||||
actionUpdateRenderSettingsOn = new QAction(tr("&On"), this);
|
||||
actionUpdateRenderSettingsOn->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_A));
|
||||
connect(actionUpdateRenderSettingsOn, SIGNAL(triggered()),this, SLOT(slotUpdateRenderSettingsOn()));
|
||||
actionUpdateFastRenderSettingsOn = new QAction(tr("&On"), this);
|
||||
actionUpdateFastRenderSettingsOn->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_A));
|
||||
connect(actionUpdateFastRenderSettingsOn, SIGNAL(triggered()),this, SLOT(slotUpdateFastRenderSettingsOn()));
|
||||
|
||||
actionUpdateRenderSettingsOff = new QAction(tr("&Off"), this);
|
||||
actionUpdateRenderSettingsOff->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_D));
|
||||
connect(actionUpdateRenderSettingsOff, SIGNAL(triggered()),this, SLOT(slotUpdateRenderSettingsOff()));
|
||||
actionUpdateFastRenderSettingsOff = new QAction(tr("&Off"), this);
|
||||
actionUpdateFastRenderSettingsOff->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_D));
|
||||
connect(actionUpdateFastRenderSettingsOff, SIGNAL(triggered()),this, SLOT(slotUpdateFastRenderSettingsOff()));
|
||||
|
||||
//Create Color Actions here
|
||||
actionColorPickerFirstColor = new QAction(tr("&Main"), this);
|
||||
@@ -497,79 +500,78 @@ void IntelliPhotoGui::createActions(){
|
||||
//Create Tool actions down here
|
||||
actionCreatePlainTool = new QAction(tr("&Plain"), this);
|
||||
actionCreatePlainTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_P));
|
||||
connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
|
||||
connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
|
||||
connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotCreatePlainTool()));
|
||||
|
||||
|
||||
actionCreatePenTool = new QAction(tr("&Pen"),this);
|
||||
actionCreatePenTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_S));
|
||||
connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
|
||||
connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
|
||||
connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotCreatePenTool()));
|
||||
|
||||
actionCreateLineTool = new QAction(tr("&Line"), this);
|
||||
actionCreateLineTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_L));
|
||||
connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
|
||||
connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
|
||||
connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotCreateLineTool()));
|
||||
|
||||
actionCreateCircleTool = new QAction(tr("&Circle"), this);
|
||||
actionCreateCircleTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_C));
|
||||
connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
|
||||
connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
|
||||
connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotCreateCircleTool()));
|
||||
|
||||
actionCreateRectangleTool = new QAction(tr("&Rectangle"), this);
|
||||
actionCreateRectangleTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_R));
|
||||
connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
|
||||
connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
|
||||
connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotCreateRectangleTool()));
|
||||
|
||||
actionCreatePolygonTool = new QAction(tr("&Polygon"), this);
|
||||
actionCreatePolygonTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_V));
|
||||
connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
|
||||
connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
|
||||
connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotCreatePolygonTool()));
|
||||
|
||||
actionCreateFloodFillTool = new QAction(tr("&FloodFill"), this);
|
||||
actionCreateFloodFillTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_F));
|
||||
connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
|
||||
connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
|
||||
connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotCreateFloodFillTool()));
|
||||
|
||||
actionCreateGradientTool = new QAction(tr("&Gradient"),this);
|
||||
connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
|
||||
connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotCreateGradientTool()));
|
||||
actionCreateGradientTool = new QAction(tr("&Gradient"),this);
|
||||
actionCreateGradientTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_G));
|
||||
connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
|
||||
connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotCreateGradientTool()));
|
||||
|
||||
// Create about action and tie to IntelliPhotoGui::about()
|
||||
actionAboutDialog = new QAction(tr("&About"), this);
|
||||
actionAboutDialog->setShortcut(Qt::Key_F2);
|
||||
actionAboutDialog = new QAction(tr("&About"), this);
|
||||
connect(actionAboutDialog, SIGNAL(triggered()), this, SLOT(slotAboutDialog()));
|
||||
|
||||
// Create about Qt action and tie to IntelliPhotoGui::aboutQt()
|
||||
actionAboutQtDialog = new QAction(tr("About &Qt"), this);
|
||||
actionAboutQtDialog->setShortcut(Qt::Key_F3);
|
||||
actionAboutQtDialog = new QAction(tr("About &Qt"), this);
|
||||
connect(actionAboutQtDialog, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
|
||||
|
||||
connect(EditLineWidth, SIGNAL(returnPressed()), this, SLOT(slotEnterPressed()));
|
||||
connect(EditLineInnerAlpha, SIGNAL(returnPressed()), this, SLOT(slotEnterPressed()));
|
||||
|
||||
connect(CircleButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||
connect(CircleButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
|
||||
connect(CircleButton, SIGNAL(clicked()), this, SLOT(slotCreateCircleTool()));
|
||||
|
||||
connect(FloodFillButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||
connect(FloodFillButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
|
||||
connect(FloodFillButton, SIGNAL(clicked()), this, SLOT(slotCreateFloodFillTool()));
|
||||
|
||||
connect(GradientButton, SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||
connect(GradientButton, SIGNAL(clicked()), this, SLOT(slotCreateGradientTool()));
|
||||
connect(GradientButton, SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
|
||||
connect(GradientButton, SIGNAL(clicked()), this, SLOT(slotCreateGradientTool()));
|
||||
|
||||
connect(LineButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||
connect(LineButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
|
||||
connect(LineButton, SIGNAL(clicked()), this, SLOT(slotCreateLineTool()));
|
||||
|
||||
connect(PenButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||
connect(PenButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
|
||||
connect(PenButton, SIGNAL(clicked()), this, SLOT(slotCreatePenTool()));
|
||||
|
||||
connect(PlainButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||
connect(PlainButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
|
||||
connect(PlainButton, SIGNAL(clicked()), this, SLOT(slotCreatePlainTool()));
|
||||
|
||||
connect(PolygonButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||
connect(PolygonButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
|
||||
connect(PolygonButton, SIGNAL(clicked()), this, SLOT(slotCreatePolygonTool()));
|
||||
|
||||
connect(RectangleButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||
connect(RectangleButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
|
||||
connect(RectangleButton, SIGNAL(clicked()), this, SLOT(slotCreateRectangleTool()));
|
||||
|
||||
actionSetWidth = new QAction(tr("&Set Width"),this);
|
||||
@@ -580,11 +582,11 @@ void IntelliPhotoGui::createActions(){
|
||||
actionSetInnerAlpha->setShortcut(QKeySequence(Qt::ALT + Qt::Key_A));
|
||||
connect(actionSetInnerAlpha, SIGNAL(triggered()), this, SLOT(slotSetInnerAlpha()));
|
||||
|
||||
actionGoBack = new QAction(tr("&Go back"),this);
|
||||
actionGoBack = new QAction(tr("&Undo"),this);
|
||||
actionGoBack->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Z));
|
||||
connect(actionGoBack, SIGNAL(triggered()), this, SLOT(slotGoBack()));
|
||||
|
||||
actionGoForward = new QAction(tr("&Go forward"),this);
|
||||
actionGoForward = new QAction(tr("&Redo"),this);
|
||||
actionGoForward->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Y));
|
||||
connect(actionGoForward, SIGNAL(triggered()), this, SLOT(slotGoForward()));
|
||||
}
|
||||
@@ -603,13 +605,13 @@ void IntelliPhotoGui::createMenus(){
|
||||
fileMenu->addSeparator();
|
||||
fileMenu->addAction(actionExit);
|
||||
|
||||
//Attach all actions to Render Settings
|
||||
// Attach all actions to Render Settings
|
||||
renderMenu = new QMenu(tr("&Fast Renderer"), this);
|
||||
renderMenu->addAction(actionUpdateRenderSettingsOn);
|
||||
renderMenu->addAction(actionUpdateRenderSettingsOff);
|
||||
renderMenu->addAction(actionUpdateFastRenderSettingsOn);
|
||||
renderMenu->addAction(actionUpdateFastRenderSettingsOff);
|
||||
|
||||
//Attach all Layer Creations to Menu
|
||||
layerCreationMenu = new QMenu(tr("&Create new Layer"), this);
|
||||
// Attach all Layer Creations to Menu
|
||||
layerCreationMenu = new QMenu(tr("&Create Layer"), this);
|
||||
layerCreationMenu->addAction(actionCreateNewRasterLayer);
|
||||
layerCreationMenu->addAction(actionCreateNewShapedLayer);
|
||||
|
||||
@@ -630,41 +632,37 @@ void IntelliPhotoGui::createMenus(){
|
||||
layerMenu->addSeparator();
|
||||
layerMenu->addAction(actionDeleteLayer);
|
||||
|
||||
//Attach all Color Options
|
||||
// Attach all Color Options
|
||||
colorMenu = new QMenu(tr("&Color"), this);
|
||||
colorMenu->addAction(actionColorPickerFirstColor);
|
||||
colorMenu->addAction(actionColorPickerSecondColor);
|
||||
colorMenu->addAction(actionColorSwap);
|
||||
|
||||
//Attach all Tool Creation Actions
|
||||
toolCreationMenu = new QMenu(tr("&Drawingtools"), this);
|
||||
// Attach all Tool Creation Actions
|
||||
toolCreationMenu = new QMenu(tr("&Tool Selection"), this);
|
||||
toolCreationMenu->addAction(actionCreateCircleTool);
|
||||
toolCreationMenu->addAction(actionCreateFloodFillTool);
|
||||
toolCreationMenu->addAction(actionCreateGradientTool);
|
||||
toolCreationMenu->addAction(actionCreateFloodFillTool);
|
||||
toolCreationMenu->addAction(actionCreateGradientTool);
|
||||
toolCreationMenu->addAction(actionCreateLineTool);
|
||||
toolCreationMenu->addAction(actionCreatePenTool);
|
||||
toolCreationMenu->addAction(actionCreatePlainTool);
|
||||
toolCreationMenu->addAction(actionCreatePolygonTool);
|
||||
toolCreationMenu->addAction(actionCreateRectangleTool);
|
||||
|
||||
//Attach all Tool Setting Actions
|
||||
toolSettingsMenu = new QMenu(tr("&Toolsettings"), this);
|
||||
// Attach all Tool Setting Actions
|
||||
toolSettingsMenu = new QMenu(tr("&Tool Settings"), this);
|
||||
toolSettingsMenu->addAction(actionSetWidth);
|
||||
toolSettingsMenu->addAction(actionSetInnerAlpha);
|
||||
|
||||
//Attach all Tool Options
|
||||
// Attach all Tool Options
|
||||
toolMenu = new QMenu(tr("&Tools"), this);
|
||||
toolMenu->addMenu(toolCreationMenu);
|
||||
toolMenu->addMenu(toolSettingsMenu);
|
||||
toolMenu->addSeparator();
|
||||
toolMenu->addMenu(colorMenu);
|
||||
toolMenu->addMenu(toolSettingsMenu);
|
||||
|
||||
// Attach all actions to Options
|
||||
optionMenu = new QMenu(tr("&Options"), this);
|
||||
optionMenu->addAction(actionGoBack);
|
||||
optionMenu->addAction(actionGoForward);
|
||||
optionMenu->addMenu(layerMenu);
|
||||
optionMenu->addMenu(toolMenu);
|
||||
optionMenu->addAction(actionGoForward);
|
||||
optionMenu->addSeparator();
|
||||
optionMenu->addMenu(renderMenu);
|
||||
optionMenu->addAction(actionChangeDim);
|
||||
@@ -677,6 +675,9 @@ void IntelliPhotoGui::createMenus(){
|
||||
// Add menu items to the menubar
|
||||
menuBar()->addMenu(fileMenu);
|
||||
menuBar()->addMenu(optionMenu);
|
||||
menuBar()->addMenu(layerMenu);
|
||||
menuBar()->addMenu(toolMenu);
|
||||
menuBar()->addMenu(colorMenu);
|
||||
menuBar()->addMenu(helpMenu);
|
||||
}
|
||||
|
||||
@@ -694,6 +695,11 @@ void IntelliPhotoGui::createGui(){
|
||||
paintingArea = new PaintingArea(1280, 720);
|
||||
paintingArea->guiReference = this;
|
||||
|
||||
QScreen *screen = QGuiApplication::primaryScreen();
|
||||
QRect screenGeometry = screen->geometry();
|
||||
Buttonsize.setWidth(screenGeometry.width()/20);
|
||||
Buttonsize.setHeight(screenGeometry.height()/20);
|
||||
|
||||
preview = QPixmap(":/Icons/Buttons/icons/circle-tool.svg");
|
||||
CircleButton = new QPushButton();
|
||||
CircleButton->setFixedSize(Buttonsize);
|
||||
@@ -708,7 +714,7 @@ void IntelliPhotoGui::createGui(){
|
||||
FloodFillButton->setIconSize(Buttonsize);
|
||||
FloodFillButton->setCheckable(true);
|
||||
|
||||
preview = QPixmap(":/Icons/Buttons/icons/icon.png");
|
||||
preview = QPixmap(":/Icons/Buttons/icons/gradient-tool.svg");
|
||||
GradientButton = new QPushButton();
|
||||
GradientButton->setFixedSize(Buttonsize);
|
||||
GradientButton->setIcon(preview);
|
||||
@@ -786,10 +792,10 @@ void IntelliPhotoGui::createGui(){
|
||||
SwitchColorButton->setIcon(preview);
|
||||
SwitchColorButton->setIconSize(QSize(Buttonsize.width() * 2,Buttonsize.height()));
|
||||
|
||||
ActiveLayerLine = new QLabel();
|
||||
QString string = QString("Active Layer: %1").arg(paintingArea->getNumberOfActiveLayer() + 1);
|
||||
ActiveLayerLine->setText(string);
|
||||
ActiveLayerLine->setFixedSize(Buttonsize.width() * 2 + 10,(Buttonsize.height() * 2) / 3);
|
||||
ActiveLayerLabel = new QLabel();
|
||||
QString string = QString("Active Layer: %1").arg(paintingArea->getIndexOfActiveLayer() + 1);
|
||||
ActiveLayerLabel->setText(string);
|
||||
ActiveLayerLabel->setFixedSize(Buttonsize.width() * 2 + 10,(Buttonsize.height() * 2) / 3);
|
||||
|
||||
IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
|
||||
if(activePicture) {
|
||||
@@ -813,9 +819,9 @@ void IntelliPhotoGui::createGui(){
|
||||
QString String = QString("%1x%2").arg(paintingArea->Canvas->width()).arg(paintingArea->Canvas->height());
|
||||
dimCanvas->setText(String);
|
||||
|
||||
FastRendererLabel = new QLabel();
|
||||
FastRendererLabel->setFixedSize(Buttonsize.width() * 2 + 15,(Buttonsize.height() * 2) / 3);
|
||||
FastRendererLabel->setText("Fast Render: On");
|
||||
FastRendererLabel = new QLabel();
|
||||
FastRendererLabel->setFixedSize(Buttonsize.width() * 2 + 15,(Buttonsize.height() * 2) / 3);
|
||||
FastRendererLabel->setText("Fast Render: On");
|
||||
|
||||
ScrollArea = new QScrollArea(this);
|
||||
ScrollArea->setBackgroundRole(QPalette::Dark);
|
||||
@@ -832,7 +838,7 @@ void IntelliPhotoGui::createGui(){
|
||||
mainLayout->addWidget(PlainButton,3,2,1,1);
|
||||
mainLayout->addWidget(PolygonButton,3,3,1,1);
|
||||
mainLayout->addWidget(RectangleButton,4,2,1,1);
|
||||
mainLayout->addWidget(GradientButton,4,3,1,1);
|
||||
mainLayout->addWidget(GradientButton,4,3,1,1);
|
||||
mainLayout->addWidget(WidthLine,5,2,1,2);
|
||||
mainLayout->addWidget(EditLineWidth,6,2,1,2);
|
||||
mainLayout->addWidget(innerAlphaLine,7,2,1,2);
|
||||
@@ -840,11 +846,11 @@ void IntelliPhotoGui::createGui(){
|
||||
mainLayout->addWidget(FirstColorButton,9,2,1,1);
|
||||
mainLayout->addWidget(SecondColorButton,9,3,1,1);
|
||||
mainLayout->addWidget(SwitchColorButton,10,2,1,2);
|
||||
mainLayout->addWidget(ActiveLayerLine,11,2,1,2);
|
||||
mainLayout->addWidget(ActiveLayerLabel,11,2,1,2);
|
||||
mainLayout->addWidget(ActiveLayerImageLabel,12,2,1,2);
|
||||
mainLayout->addWidget(dimActive,13,2,1,2);
|
||||
mainLayout->addWidget(dimCanvas,14,2,1,2);
|
||||
mainLayout->addWidget(FastRendererLabel,15,2,1,2);
|
||||
mainLayout->addWidget(FastRendererLabel,15,2,1,2);
|
||||
mainLayout->setHorizontalSpacing(0);
|
||||
|
||||
}
|
||||
@@ -925,8 +931,8 @@ void IntelliPhotoGui::setToolWidth(int value){
|
||||
}
|
||||
|
||||
void IntelliPhotoGui::UpdateGui(){
|
||||
QString string = QString("Active Layer: %1").arg(paintingArea->getNumberOfActiveLayer() + 1);
|
||||
ActiveLayerLine->setText(string);
|
||||
QString string = QString("Active Layer: %1").arg(paintingArea->getIndexOfActiveLayer() + 1);
|
||||
ActiveLayerLabel->setText(string);
|
||||
|
||||
IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
|
||||
if(activePicture) {
|
||||
@@ -950,8 +956,8 @@ void IntelliPhotoGui::UpdateGui(){
|
||||
|
||||
if(paintingArea->layerBundle.size() != 0) {
|
||||
string = QString("%1x%2").arg(paintingArea->layerBundle[static_cast<size_t>
|
||||
(paintingArea->getNumberOfActiveLayer())].width).arg(paintingArea->layerBundle[static_cast<size_t>
|
||||
(paintingArea->getNumberOfActiveLayer())].height);
|
||||
(paintingArea->getIndexOfActiveLayer())].width).arg(paintingArea->layerBundle[static_cast<size_t>
|
||||
(paintingArea->getIndexOfActiveLayer())].height);
|
||||
dimActive->setText(string);
|
||||
}
|
||||
else{
|
||||
|
||||
@@ -43,8 +43,15 @@ public:
|
||||
*/
|
||||
IntelliPhotoGui();
|
||||
|
||||
/*!
|
||||
* \brief UpdateGui a function to update all gui elements.
|
||||
*/
|
||||
void UpdateGui();
|
||||
|
||||
/*!
|
||||
* \brief setToolWidth stes a width to the tool
|
||||
* \param value - the width of the tool
|
||||
*/
|
||||
void setToolWidth(int value);
|
||||
|
||||
protected:
|
||||
@@ -54,182 +61,591 @@ protected:
|
||||
void closeEvent(QCloseEvent*event) override;
|
||||
|
||||
private slots:
|
||||
|
||||
/*!
|
||||
* \brief slotOpen opens a new image
|
||||
*/
|
||||
void slotOpen();
|
||||
|
||||
/*!
|
||||
* \brief slotSave saves the current canvas
|
||||
*/
|
||||
void slotSave();
|
||||
|
||||
// layer slots here
|
||||
/*!
|
||||
* \brief slotCreateNewRasterLayer creates a new rasterImage
|
||||
*/
|
||||
void slotCreateNewRasterLayer();
|
||||
|
||||
/*!
|
||||
* \brief slotCreateNewShapedLayer creates a new shapedImage
|
||||
*/
|
||||
void slotCreateNewShapedLayer();
|
||||
|
||||
/*!
|
||||
* \brief slotDeleteLayer deletes a layer
|
||||
*/
|
||||
void slotDeleteLayer();
|
||||
|
||||
/*!
|
||||
* \brief slotSetActiveLayer sets a layer to be active
|
||||
*/
|
||||
void slotSetActiveLayer();
|
||||
|
||||
/*!
|
||||
* \brief slotSetActiveAlpha stes the alpha value of the active layer
|
||||
*/
|
||||
void slotSetActiveAlpha();
|
||||
|
||||
/*!
|
||||
* \brief slotSetPolygon sets a polygon to the active layer
|
||||
*/
|
||||
void slotSetPolygon();
|
||||
|
||||
/*!
|
||||
* \brief slotPositionMoveUp moves the current layer to the front
|
||||
*/
|
||||
void slotPositionMoveUp();
|
||||
|
||||
/*!
|
||||
* \brief slotPositionMoveDown moves the crrent layer to the back
|
||||
*/
|
||||
void slotPositionMoveDown();
|
||||
|
||||
/*!
|
||||
* \brief slotPositionMoveLeft moves the current layer left
|
||||
*/
|
||||
void slotPositionMoveLeft();
|
||||
|
||||
/*!
|
||||
* \brief slotPositionMoveRight moves the current layer right
|
||||
*/
|
||||
void slotPositionMoveRight();
|
||||
|
||||
/*!
|
||||
* \brief slotMoveLayerUp moves the current layer up
|
||||
*/
|
||||
void slotMoveLayerUp();
|
||||
|
||||
/*!
|
||||
* \brief slotMoveLayerDown moves the current layer down
|
||||
*/
|
||||
void slotMoveLayerDown();
|
||||
|
||||
void slotUpdateRenderSettingsOn();
|
||||
void slotUpdateRenderSettingsOff();
|
||||
/*!
|
||||
* \brief slotUpdateFastRenderSettingsOn activates the fast renderer
|
||||
*/
|
||||
void slotUpdateFastRenderSettingsOn();
|
||||
|
||||
/*!
|
||||
* \brief slotUpdateFastRenderSettingsOff deactivates the fast render
|
||||
*/
|
||||
void slotUpdateFastRenderSettingsOff();
|
||||
|
||||
/*!
|
||||
* \brief slotSetFirstColor sets the first color
|
||||
*/
|
||||
void slotSetFirstColor();
|
||||
|
||||
/*!
|
||||
* \brief slotSetSecondColor sets the second color
|
||||
*/
|
||||
void slotSetSecondColor();
|
||||
|
||||
/*!
|
||||
* \brief slotSwapColor swaps first and second color
|
||||
*/
|
||||
void slotSwapColor();
|
||||
|
||||
/*!
|
||||
* \brief slotCreatePenTool creates the pen tool
|
||||
*/
|
||||
void slotCreatePenTool();
|
||||
|
||||
/*!
|
||||
* \brief slotCreatePlainTool creates the plain tool
|
||||
*/
|
||||
void slotCreatePlainTool();
|
||||
|
||||
/*!
|
||||
* \brief slotCreateLineTool creates the line tool
|
||||
*/
|
||||
void slotCreateLineTool();
|
||||
|
||||
/*!
|
||||
* \brief slotCreateRectangleTool creates the rectangle tool
|
||||
*/
|
||||
void slotCreateRectangleTool();
|
||||
|
||||
/*!
|
||||
* \brief slotCreateCircleTool creates the cricle tool
|
||||
*/
|
||||
void slotCreateCircleTool();
|
||||
|
||||
/*!
|
||||
* \brief slotCreatePolygonTool creates the polygon tool
|
||||
*/
|
||||
void slotCreatePolygonTool();
|
||||
|
||||
/*!
|
||||
* \brief slotCreateFloodFillTool creates the floodfill tool
|
||||
*/
|
||||
void slotCreateFloodFillTool();
|
||||
|
||||
/*!
|
||||
* \brief slotCreateGradientTool creates the gradient tool
|
||||
*/
|
||||
void slotCreateGradientTool();
|
||||
|
||||
/*!
|
||||
* \brief slotAboutDialog displays the about dialog
|
||||
*/
|
||||
void slotAboutDialog();
|
||||
|
||||
/*!
|
||||
* \brief slotChangeDim changes the dimension of the canvas
|
||||
*/
|
||||
void slotChangeDim();
|
||||
|
||||
/*!
|
||||
* \brief slotEnterPressed read current input of input boxes, and adjusts settings
|
||||
*/
|
||||
void slotEnterPressed();
|
||||
|
||||
/*!
|
||||
* \brief slotSetWidth sets the width of the tool
|
||||
*/
|
||||
void slotSetWidth();
|
||||
|
||||
/*!
|
||||
* \brief slotSetInnerAlpha sets the inner alpha of the tool
|
||||
*/
|
||||
void slotSetInnerAlpha();
|
||||
|
||||
void slotResetTools();
|
||||
/*!
|
||||
* \brief slotResetTools resets all tool Buttons to unclikced
|
||||
*/
|
||||
void slotResetToolButtons();
|
||||
|
||||
/*!
|
||||
* \brief slotGoBack undoes the last action
|
||||
*/
|
||||
void slotGoBack();
|
||||
|
||||
/*!
|
||||
* \brief slotGoForward redoes the last action
|
||||
*/
|
||||
void slotGoForward();
|
||||
|
||||
private:
|
||||
|
||||
//setup functions for gui
|
||||
/*!
|
||||
* \brief createActions creates all actions
|
||||
*/
|
||||
void createActions();
|
||||
|
||||
/*!
|
||||
* \brief createMenus creates all menus
|
||||
*/
|
||||
void createMenus();
|
||||
|
||||
/*!
|
||||
* \brief createGui sets up the gui
|
||||
*/
|
||||
void createGui();
|
||||
|
||||
/*!
|
||||
* \brief setIntelliStyle sets the stylesheet of the gui
|
||||
*/
|
||||
void setIntelliStyle();
|
||||
|
||||
// Will check if changes have occurred since last save
|
||||
/*!
|
||||
* \brief maybeSave chekcs if the canvas has unsaved work
|
||||
* \return return true if there is unsaved work, false otherwise
|
||||
*/
|
||||
bool maybeSave();
|
||||
// Opens the Save dialog and saves
|
||||
|
||||
/*!
|
||||
* \brief saveFile saves the canvas
|
||||
* \param fileFormat the ileformat to save into
|
||||
* \return true if saving worked, false otherwise
|
||||
*/
|
||||
bool saveFile(const QByteArray &fileFormat);
|
||||
|
||||
//basic to set tool values to begin
|
||||
/*!
|
||||
* \brief setDefaultValues sets basic tool values
|
||||
*/
|
||||
void setDefaultValues();
|
||||
|
||||
// What we'll draw on
|
||||
/*!
|
||||
* \brief paintingArea the logic manager of the backbone
|
||||
*/
|
||||
PaintingArea* paintingArea;
|
||||
|
||||
//used to display a preview of the active layer
|
||||
/*!
|
||||
* \brief preview a small pixmap to show the active layer
|
||||
*/
|
||||
QPixmap preview;
|
||||
|
||||
//size of all buttons
|
||||
const QSize Buttonsize = QSize(35,35);
|
||||
/*!
|
||||
* \brief Buttonsize the size of all standard buttons
|
||||
*/
|
||||
QSize Buttonsize;
|
||||
|
||||
//buttons used for gui
|
||||
/*!
|
||||
* \brief CircleButton for creating a circle Tool
|
||||
*/
|
||||
QPushButton* CircleButton;
|
||||
|
||||
/*!
|
||||
* \brief FloodFillButton for creating a floodfill Tool
|
||||
*/
|
||||
QPushButton* FloodFillButton;
|
||||
|
||||
/*!
|
||||
* \brief GradientButton for creating a gradient Tool
|
||||
*/
|
||||
QPushButton* GradientButton;
|
||||
|
||||
/*!
|
||||
* \brief LineButton for creating a line Tool.
|
||||
*/
|
||||
QPushButton* LineButton;
|
||||
|
||||
/*!
|
||||
* \brief PenButton for creating a pen tool.
|
||||
*/
|
||||
QPushButton* PenButton;
|
||||
|
||||
/*!
|
||||
* \brief PlainButton for creating a plain Tool.
|
||||
*/
|
||||
QPushButton* PlainButton;
|
||||
|
||||
/*!
|
||||
* \brief PolygonButton for creating a Polygon Tool.
|
||||
*/
|
||||
QPushButton* PolygonButton;
|
||||
|
||||
/*!
|
||||
* \brief RectangleButton for creating a Rectangle Tool.
|
||||
*/
|
||||
QPushButton* RectangleButton;
|
||||
|
||||
/*!
|
||||
* \brief FirstColorButton for setting the First color.
|
||||
*/
|
||||
QPushButton* FirstColorButton;
|
||||
|
||||
/*!
|
||||
* \brief SecondColorButton for setting the Second color.
|
||||
*/
|
||||
QPushButton* SecondColorButton;
|
||||
|
||||
/*!
|
||||
* \brief SwitchColorButton for switching second and first color
|
||||
*/
|
||||
QPushButton* SwitchColorButton;
|
||||
|
||||
/*!
|
||||
* \brief dimActive for displaying the dimesnion of the active layer
|
||||
*/
|
||||
QPushButton* dimActive;
|
||||
|
||||
/*!
|
||||
* \brief dimCanvas for displaying the dimension of the canvas
|
||||
*/
|
||||
QPushButton* dimCanvas;
|
||||
|
||||
//labels used for gui
|
||||
/*!
|
||||
* \brief WidthLine to indicate the line width
|
||||
*/
|
||||
QLabel* WidthLine;
|
||||
|
||||
/*!
|
||||
* \brief innerAlphaLine to indicate the inner alpha
|
||||
*/
|
||||
QLabel* innerAlphaLine;
|
||||
QLabel* ActiveLayerLine;
|
||||
|
||||
/*!
|
||||
* \brief ActiveLayerLine to indicate the active Layer
|
||||
*/
|
||||
QLabel* ActiveLayerLabel;
|
||||
|
||||
/*!
|
||||
* \brief ActiveLayerImageLabel to indicate the active Image
|
||||
*/
|
||||
QLabel* ActiveLayerImageLabel;
|
||||
|
||||
/*!
|
||||
* \brief FastRendererLabel to indicate render settings
|
||||
*/
|
||||
QLabel* FastRendererLabel;
|
||||
|
||||
//scroll area to display canvas
|
||||
/*!
|
||||
* \brief ScrollArea to scroll the painting area on
|
||||
*/
|
||||
QScrollArea* ScrollArea;
|
||||
|
||||
//line edits used for gui
|
||||
/*!
|
||||
* \brief EditLineWidth to get the input of the line width
|
||||
*/
|
||||
QLineEdit* EditLineWidth;
|
||||
|
||||
/*!
|
||||
* \brief EditLineInnerAlpha to get the input of the inner alpha
|
||||
*/
|
||||
QLineEdit* EditLineInnerAlpha;
|
||||
|
||||
//int validator used for gui
|
||||
/*!
|
||||
* \brief ValidatorLineWidth to limit input
|
||||
*/
|
||||
QIntValidator* ValidatorLineWidth;
|
||||
|
||||
/*!
|
||||
* \brief ValidatorInnerAlpha to limit input
|
||||
*/
|
||||
QIntValidator* ValidatorInnerAlpha;
|
||||
|
||||
|
||||
// The menu widgets
|
||||
/*!
|
||||
* \brief saveAsMenu to display save options
|
||||
*/
|
||||
QMenu* saveAsMenu;
|
||||
|
||||
/*!
|
||||
* \brief fileMenu to display file options
|
||||
*/
|
||||
QMenu* fileMenu;
|
||||
|
||||
/*!
|
||||
* \brief renderMenu to display render options
|
||||
*/
|
||||
QMenu* renderMenu;
|
||||
|
||||
/*!
|
||||
* \brief optionMenu to display general options
|
||||
*/
|
||||
QMenu* optionMenu;
|
||||
|
||||
/*!
|
||||
* \brief layerCreationMenu to display layer creation options
|
||||
*/
|
||||
QMenu* layerCreationMenu;
|
||||
|
||||
/*!
|
||||
* \brief layerMenu to display layer options
|
||||
*/
|
||||
QMenu* layerMenu;
|
||||
|
||||
/*!
|
||||
* \brief colorMenu to display color options
|
||||
*/
|
||||
QMenu* colorMenu;
|
||||
|
||||
/*!
|
||||
* \brief toolCreationMenu to display tool creation options
|
||||
*/
|
||||
QMenu* toolCreationMenu;
|
||||
|
||||
/*!
|
||||
* \brief toolSettingsMenu to display settings options
|
||||
*/
|
||||
QMenu* toolSettingsMenu;
|
||||
|
||||
/*!
|
||||
* \brief toolMenu to display tool options
|
||||
*/
|
||||
QMenu* toolMenu;
|
||||
|
||||
/*!
|
||||
* \brief helpMenu to display the help options
|
||||
*/
|
||||
QMenu* helpMenu;
|
||||
|
||||
// All the actions that can occur
|
||||
// meta image actions (need further modularisation)
|
||||
/*!
|
||||
* \brief actionOpen to open a project
|
||||
*/
|
||||
QAction* actionOpen;
|
||||
|
||||
/*!
|
||||
* \brief actionExit to exit the project
|
||||
*/
|
||||
QAction* actionExit;
|
||||
|
||||
//Rendersetting actions
|
||||
QAction*actionUpdateRenderSettingsOn;
|
||||
QAction*actionUpdateRenderSettingsOff;
|
||||
/*!
|
||||
* \brief actionUpdateFastRenderSettingsOn to set fast render settings to on
|
||||
*/
|
||||
QAction* actionUpdateFastRenderSettingsOn;
|
||||
|
||||
// color Picker actions
|
||||
/*!
|
||||
* \brief actionUpdateFastRenderSettingsOff to set fast render settings to false;
|
||||
*/
|
||||
QAction* actionUpdateFastRenderSettingsOff;
|
||||
|
||||
/*!
|
||||
* \brief actionColorPickerFirstColor to set the first color
|
||||
*/
|
||||
QAction* actionColorPickerFirstColor;
|
||||
|
||||
/*!
|
||||
* \brief actionColorPickerSecondColor to set the second color
|
||||
*/
|
||||
QAction* actionColorPickerSecondColor;
|
||||
|
||||
/*!
|
||||
* \brief actionColorSwap to swap first and second color
|
||||
*/
|
||||
QAction* actionColorSwap;
|
||||
|
||||
// tool actions
|
||||
/*!
|
||||
* \brief actionCreatePenTool to create a pen tool
|
||||
*/
|
||||
QAction* actionCreatePenTool;
|
||||
|
||||
/*!
|
||||
* \brief actionCreatePlainTool to create a plain tool
|
||||
*/
|
||||
QAction* actionCreatePlainTool;
|
||||
|
||||
/*!
|
||||
* \brief actionCreateLineTool to create a line tool
|
||||
*/
|
||||
QAction* actionCreateLineTool;
|
||||
|
||||
/*!
|
||||
* \brief actionCreateRectangleTool to create a rectangle tool
|
||||
*/
|
||||
QAction* actionCreateRectangleTool;
|
||||
|
||||
/*!
|
||||
* \brief actionCreateCircleTool to create a circle tool
|
||||
*/
|
||||
QAction* actionCreateCircleTool;
|
||||
|
||||
/*!
|
||||
* \brief actionCreatePolygonTool to create a polygon tool
|
||||
*/
|
||||
QAction* actionCreatePolygonTool;
|
||||
|
||||
/*!
|
||||
* \brief actionCreateFloodFillTool to create a floodfill tool
|
||||
*/
|
||||
QAction* actionCreateFloodFillTool;
|
||||
|
||||
/*!
|
||||
* \brief actionCreateGradientTool to create a gradient tool
|
||||
*/
|
||||
QAction* actionCreateGradientTool;
|
||||
|
||||
// dimension actions
|
||||
/*!
|
||||
* \brief actionChangeDim
|
||||
*/
|
||||
QAction* actionChangeDim;
|
||||
|
||||
/*!
|
||||
* \brief actionSetWidth to set the width
|
||||
*/
|
||||
QAction* actionSetWidth;
|
||||
|
||||
/*!
|
||||
* \brief actionSetInnerAlpha to set the inner alha
|
||||
*/
|
||||
QAction* actionSetInnerAlpha;
|
||||
|
||||
// dialog actions
|
||||
/*!
|
||||
* \brief actionAboutDialog to show the
|
||||
*/
|
||||
QAction* actionAboutDialog;
|
||||
|
||||
/*!
|
||||
* \brief actionAboutQtDialog to show the qt input dialog
|
||||
*/
|
||||
QAction* actionAboutQtDialog;
|
||||
|
||||
// layer change actions
|
||||
/*!
|
||||
* \brief actionCreateNewRasterLayer creates a raster image
|
||||
*/
|
||||
QAction* actionCreateNewRasterLayer;
|
||||
|
||||
/*!
|
||||
* \brief actionCreateNewShapedLayer creates a shaped image
|
||||
*/
|
||||
QAction* actionCreateNewShapedLayer;
|
||||
|
||||
/*!
|
||||
* \brief actionDeleteLayer deletes a layer
|
||||
*/
|
||||
QAction* actionDeleteLayer;
|
||||
|
||||
/*!
|
||||
* \brief actionSetActiveLayer sets a layer to active
|
||||
*/
|
||||
QAction* actionSetActiveLayer;
|
||||
|
||||
/*!
|
||||
* \brief actionSetActiveAlpha sets the alpha of the active layer
|
||||
*/
|
||||
QAction* actionSetActiveAlpha;
|
||||
|
||||
/*!
|
||||
* \brief actionSetPolygon sets the polygon data to the image
|
||||
*/
|
||||
QAction* actionSetPolygon;
|
||||
|
||||
/*!
|
||||
* \brief actionMovePositionUp moves the image up
|
||||
*/
|
||||
QAction* actionMovePositionUp;
|
||||
|
||||
/*!
|
||||
* \brief actionMovePositionDown moves the image down
|
||||
*/
|
||||
QAction* actionMovePositionDown;
|
||||
|
||||
/*!
|
||||
* \brief actionMovePositionLeft moves the image left
|
||||
*/
|
||||
QAction* actionMovePositionLeft;
|
||||
|
||||
/*!
|
||||
* \brief actionMovePositionRight moves the image right
|
||||
*/
|
||||
QAction* actionMovePositionRight;
|
||||
|
||||
/*!
|
||||
* \brief actionMoveLayerUp moves the layer to the front
|
||||
*/
|
||||
QAction* actionMoveLayerUp;
|
||||
|
||||
/*!
|
||||
* \brief actionMoveLayerDown moves the layer to the back
|
||||
*/
|
||||
QAction* actionMoveLayerDown;
|
||||
|
||||
// actions tied to specific file formats
|
||||
/*!
|
||||
* \brief actionSaveAs saves the project as
|
||||
*/
|
||||
QList<QAction*> actionSaveAs;
|
||||
|
||||
|
||||
// history actions
|
||||
/*!
|
||||
* \brief actionGoBack does a undo action
|
||||
*/
|
||||
QAction* actionGoBack;
|
||||
|
||||
/*!
|
||||
* \brief actionGoForward does a redo action
|
||||
*/
|
||||
QAction* actionGoForward;
|
||||
|
||||
// main GUI elements
|
||||
/*!
|
||||
* \brief centralGuiWidget the main gui widget to place all others on
|
||||
*/
|
||||
QWidget* centralGuiWidget;
|
||||
|
||||
/*!
|
||||
* \brief mainLayout the layout to order all gui elements
|
||||
*/
|
||||
QGridLayout* mainLayout;
|
||||
};
|
||||
|
||||
|
||||
@@ -115,13 +115,13 @@ void IntelliImage::drawLine(const QPoint &p1, const QPoint& p2, const QColor& co
|
||||
}
|
||||
|
||||
void IntelliImage::drawPlain(const QColor& color){
|
||||
if(fastRenderering) {
|
||||
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
||||
}
|
||||
if(fastRenderering) {
|
||||
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
||||
}
|
||||
imageData.fill(color);
|
||||
if(fastRenderering) {
|
||||
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
||||
}
|
||||
if(fastRenderering) {
|
||||
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
||||
}
|
||||
}
|
||||
|
||||
QColor IntelliImage::getPixelColor(QPoint& point){
|
||||
|
||||
@@ -171,10 +171,22 @@ virtual QImage getImageData();
|
||||
*/
|
||||
virtual void setImageData(const QImage& newData);
|
||||
|
||||
/*!
|
||||
* \brief getWidth returns the width of the Image.
|
||||
* \return The width of the Image in pixel.
|
||||
*/
|
||||
virtual int getWidth() const;
|
||||
|
||||
/*!
|
||||
* \brief getHeight returns the height of the Image.
|
||||
* \return The height of the Image in pixel.
|
||||
*/
|
||||
virtual int getHeight() const;
|
||||
|
||||
/*!
|
||||
* \brief isFastRendering returns if the Image is in fast rendering mode.
|
||||
* \return True if the Image is fast rendered, flase otherwiese.
|
||||
*/
|
||||
virtual bool isFastRendering() const;
|
||||
|
||||
};
|
||||
|
||||
@@ -23,7 +23,7 @@ IntelliRasterImage::~IntelliRasterImage(){
|
||||
}
|
||||
|
||||
IntelliImage* IntelliRasterImage::getDeepCopy(){
|
||||
IntelliRasterImage* raster = new IntelliRasterImage(imageData.width(), imageData.height(), this->fastRenderering);
|
||||
IntelliRasterImage* raster = new IntelliRasterImage(imageData.width(), imageData.height(), false);
|
||||
raster->imageData.fill(Qt::transparent);
|
||||
raster->TypeOfImage = ImageType::RASTERIMAGE;
|
||||
return raster;
|
||||
|
||||
@@ -12,7 +12,7 @@ IntelliShapedImage::IntelliShapedImage(int width, int height, bool fastRendererO
|
||||
|
||||
IntelliShapedImage* IntelliShapedImage::copy(const IntelliShapedImage& image){
|
||||
this->TypeOfImage = ImageType::SHAPEDIMAGE;
|
||||
IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), this->fastRenderering);
|
||||
IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), this->fastRenderering);
|
||||
shaped->imageData.copy(0,0,image.getWidth(),image.getWidth());
|
||||
return shaped;
|
||||
}
|
||||
@@ -26,7 +26,7 @@ QImage IntelliShapedImage::getDisplayable(int alpha){
|
||||
}
|
||||
|
||||
IntelliImage* IntelliShapedImage::getDeepCopy(){
|
||||
IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), this->fastRenderering);
|
||||
IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), false);
|
||||
shaped->setPolygon(this->polygonData);
|
||||
shaped->imageData.fill(Qt::transparent);
|
||||
shaped->TypeOfImage = ImageType::SHAPEDIMAGE;
|
||||
|
||||
@@ -61,7 +61,7 @@ bool IntelliDatamanager::loadProject(PaintingArea* Canvas, QString filePath){
|
||||
in >> widthCanvas >> heightCanvas;
|
||||
in >> numberOffLayers;
|
||||
|
||||
Canvas->setLayerDimensions(widthCanvas, heightCanvas);
|
||||
Canvas->setCanvasDimensions(widthCanvas, heightCanvas);
|
||||
for(int i = 0; i<numberOffLayers; i++) {
|
||||
int width, height, widthOffset, heightOffset, alpha;
|
||||
in >> width >> height >> widthOffset >> heightOffset >> alpha;
|
||||
@@ -88,7 +88,7 @@ bool IntelliDatamanager::loadProject(PaintingArea* Canvas, QString filePath){
|
||||
for(int k = 0; k<width; k++) {
|
||||
int red, green, blue, alpha;
|
||||
in >> red >> green >> blue >> alpha;
|
||||
Canvas->setPixelToActive(QColor(red, green, blue, alpha), QPoint(j, k));
|
||||
Canvas->drawPixelOntoActive(QColor(red, green, blue, alpha), QPoint(j, k));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,20 @@ class PaintingArea;
|
||||
|
||||
namespace IntelliDatamanager {
|
||||
|
||||
/*!
|
||||
* \brief loadProject loads a project from a file, closes current project.
|
||||
* \param Canvas - Reference to the used Canvas.
|
||||
* \param filePath - Filepath to the project which should be opened.
|
||||
* \return True if everything worked, false otherwise.
|
||||
*/
|
||||
bool loadProject(PaintingArea* Canvas, QString filePath = "unnamed.idf");
|
||||
|
||||
/*!
|
||||
* \brief saveProject saves the current project to a file.
|
||||
* \param Canvas - Reference to the used Canvas.
|
||||
* \param filePath - Filepath to the project which should be saved.
|
||||
* \return True if everything worked, false otherwise.
|
||||
*/
|
||||
bool saveProject(PaintingArea* Canvas, QString filePath = "unnamed.idf");
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
//for unit testing
|
||||
class UnitTest;
|
||||
|
||||
|
||||
/*!
|
||||
* \brief The IntelliRenderSettings class which manages the render Settings.
|
||||
*/
|
||||
class IntelliRenderSettings
|
||||
{
|
||||
friend UnitTest;
|
||||
@@ -23,6 +25,9 @@ void setFastRendering(bool Updatedsetting);
|
||||
bool isFastRenderering() const;
|
||||
|
||||
private:
|
||||
/*!
|
||||
* \brief fastRenderering the state of the project, in relation the the render setting.
|
||||
*/
|
||||
bool fastRenderering = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -3,21 +3,56 @@
|
||||
|
||||
//for unit testing
|
||||
class UnitTest;
|
||||
|
||||
/*!
|
||||
* \brief The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
|
||||
*/
|
||||
class IntelliToolsettings {
|
||||
friend UnitTest;
|
||||
public:
|
||||
/*!
|
||||
* \brief IntelliToolsettings - basic constructor of the IntelliToolsettings, initializing the basics.
|
||||
*/
|
||||
IntelliToolsettings();
|
||||
|
||||
/*!
|
||||
* \brief ~IntelliToolsettings - basic destructor.
|
||||
*/
|
||||
virtual ~IntelliToolsettings();
|
||||
|
||||
/*!
|
||||
* \brief getLineWidth returns the width attribute of the line.
|
||||
* \return returns the width attribute as integer.
|
||||
*/
|
||||
int getLineWidth() const;
|
||||
|
||||
/*!
|
||||
* \brief setLineWidth sets the width attribute of the line.
|
||||
* \param LineWidth - the future width of the line
|
||||
*/
|
||||
void setLineWidth(int LineWidth);
|
||||
|
||||
/*!
|
||||
* \brief getInnerAlpha returns the inner alpha value.
|
||||
* \return returns the inner alpha attribute as integer.
|
||||
*/
|
||||
int getInnerAlpha() const;
|
||||
|
||||
/*!
|
||||
* \brief setInnerAlpha sets the inner alpha attribute of the Tool.
|
||||
* \param innerAlpha - the future inner alpha of the Tool.
|
||||
*/
|
||||
void setInnerAlpha(int innerAlpha);
|
||||
|
||||
private:
|
||||
|
||||
/*!
|
||||
* \brief lineWidth attribute of a Tool.
|
||||
*/
|
||||
int lineWidth;
|
||||
|
||||
/*!
|
||||
* \brief innerAlpha aattribute of a Tool.
|
||||
*/
|
||||
int innerAlpha;
|
||||
};
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ SOURCES += tst_unittest.cpp \
|
||||
Tool/IntelliTool.cpp \
|
||||
Tool/IntelliToolCircle.cpp \
|
||||
Tool/IntelliToolFloodFill.cpp \
|
||||
Tool/IntelliToolGradient.cpp \
|
||||
Tool/IntelliToolLine.cpp \
|
||||
Tool/IntelliToolPen.cpp \
|
||||
Tool/IntelliToolPlain.cpp \
|
||||
@@ -35,6 +36,7 @@ DISTFILES += \
|
||||
icons/circle-tool.svg \
|
||||
icons/eraser-tool.svg \
|
||||
icons/flood-fill-tool.svg \
|
||||
icons/gradient-tool.svg \
|
||||
icons/icon.png \
|
||||
icons/line-tool.svg \
|
||||
icons/pen-tool.svg \
|
||||
@@ -57,6 +59,7 @@ HEADERS += \
|
||||
Tool/IntelliTool.h \
|
||||
Tool/IntelliToolCircle.h \
|
||||
Tool/IntelliToolFloodFill.h \
|
||||
Tool/IntelliToolGradient.h \
|
||||
Tool/IntelliToolLine.h \
|
||||
Tool/IntelliToolPen.h \
|
||||
Tool/IntelliToolPlain.h \
|
||||
|
||||
@@ -40,7 +40,7 @@ LayerObject::LayerObject(const LayerObject& layer){
|
||||
PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget*parent)
|
||||
: QLabel(parent){
|
||||
this->Tool = nullptr;
|
||||
this->setLayerDimensions(maxWidth, maxHeight);
|
||||
this->setCanvasDimensions(maxWidth, maxHeight);
|
||||
activeLayer = -1;
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ bool PaintingArea::getRenderSettings(){
|
||||
return this->renderSettings.isFastRenderering();
|
||||
}
|
||||
|
||||
void PaintingArea::setLayerDimensions(int maxWidth, int maxHeight){
|
||||
void PaintingArea::setCanvasDimensions(int maxWidth, int maxHeight){
|
||||
//set standart parameter
|
||||
this->maxWidth = maxWidth;
|
||||
this->maxHeight = maxHeight;
|
||||
@@ -83,7 +83,7 @@ void PaintingArea::setLayerDimensions(int maxWidth, int maxHeight){
|
||||
|
||||
}
|
||||
|
||||
void PaintingArea::setPixelToActive(QColor color, QPoint point){
|
||||
void PaintingArea::drawPixelOntoActive(QColor color, QPoint point){
|
||||
layerBundle[static_cast<size_t>(activeLayer)].image->drawPixel(point, color);
|
||||
}
|
||||
|
||||
@@ -295,11 +295,11 @@ int PaintingArea::getMaxHeight(){
|
||||
return this->maxHeight;
|
||||
}
|
||||
|
||||
ImageType PaintingArea::getTypeOfImageRealLayer(){
|
||||
ImageType PaintingArea::getTypeOfImageActiveLayer(){
|
||||
return this->layerBundle[static_cast<size_t>(activeLayer)].image->getTypeOfImage();
|
||||
}
|
||||
|
||||
std::vector<QPoint> PaintingArea::getPolygonDataOfRealLayer(){
|
||||
std::vector<QPoint> PaintingArea::getPolygonDataOfActiveLayer(){
|
||||
return this->layerBundle[static_cast<size_t>(activeLayer)].image->getPolygonData();
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ IntelliTool* PaintingArea::copyActiveTool(){
|
||||
}
|
||||
}
|
||||
|
||||
int PaintingArea::getNumberOfActiveLayer(){
|
||||
int PaintingArea::getIndexOfActiveLayer(){
|
||||
return activeLayer;
|
||||
}
|
||||
|
||||
@@ -509,14 +509,18 @@ void PaintingArea::updateTools(){
|
||||
|
||||
void PaintingArea::historyadd(){
|
||||
|
||||
if (++historyPresent == 100) {
|
||||
historyPresent++;
|
||||
if (historyPresent == 100) {
|
||||
historyPresent = 0;
|
||||
}
|
||||
historyMaxFuture = historyPresent;
|
||||
if (historyPresent == historyMaxPast)
|
||||
if (++historyMaxPast == 100)
|
||||
if (historyPresent == historyMaxPast){
|
||||
historyMaxPast++;
|
||||
if (historyMaxPast == 100){
|
||||
historyMaxPast = 0;
|
||||
history[static_cast<size_t>(historyPresent)] = layerBundle;
|
||||
}
|
||||
}
|
||||
history[static_cast<size_t>(historyPresent)] = layerBundle;
|
||||
}
|
||||
|
||||
void PaintingArea::historyGoBack(){
|
||||
|
||||
@@ -176,36 +176,91 @@ void colorPickerSetSecondColor();
|
||||
*/
|
||||
void colorPickerSwapColors();
|
||||
|
||||
/*!
|
||||
* \brief createPenTool creates a Pen Tool.
|
||||
*/
|
||||
void createPenTool();
|
||||
|
||||
/*!
|
||||
* \brief createPlainTool creates a Plain Tool.
|
||||
*/
|
||||
void createPlainTool();
|
||||
|
||||
/*!
|
||||
* \brief createLineTool creates a Line Tool.
|
||||
*/
|
||||
void createLineTool();
|
||||
|
||||
/*!
|
||||
* \brief createRectangleTool creates a Rectangle Tool.
|
||||
*/
|
||||
void createRectangleTool();
|
||||
|
||||
/*!
|
||||
* \brief createCircleTool creates a Circle Tool.
|
||||
*/
|
||||
void createCircleTool();
|
||||
|
||||
/*!
|
||||
* \brief createPolygonTool creates a Polygon Tool.
|
||||
*/
|
||||
void createPolygonTool();
|
||||
|
||||
/*!
|
||||
* \brief createFloodFillTool creates a Floodfill Tool.
|
||||
*/
|
||||
void createFloodFillTool();
|
||||
|
||||
/*!
|
||||
* \brief createGradientTool creates a Gradient Tool.
|
||||
*/
|
||||
void createGradientTool();
|
||||
|
||||
/*!
|
||||
* \brief The getWidthOfActive gets the horizontal dimensions of the active layer
|
||||
* \return Returns the horizontal pixle count of the active layer
|
||||
* \brief The getWidthOfActive gets the horizontal dimensions of the active layer.
|
||||
* \return Returns the horizontal pixle count of the active layer.
|
||||
*/
|
||||
int getWidthOfActive();
|
||||
/*!
|
||||
* \brief The getHeightOfActive gets the vertical dimensions of the active layer
|
||||
* \return Returns the vertical pixle count of the active layer
|
||||
* \brief The getHeightOfActive gets the vertical dimensions of the active layer.
|
||||
* \return Returns the vertical pixle count of the active layer.
|
||||
*/
|
||||
int getHeightOfActive();
|
||||
|
||||
/*!
|
||||
* \brief getMaxWidth gets the max width of the Canvas.
|
||||
* \return return the width of the Canvas.
|
||||
*/
|
||||
int getMaxWidth();
|
||||
|
||||
/*!
|
||||
* \brief getMaxHeight gets the max height of the Canvas.
|
||||
* \return return the height of the Canvas.
|
||||
*/
|
||||
int getMaxHeight();
|
||||
|
||||
ImageType getTypeOfImageRealLayer();
|
||||
/*!
|
||||
* \brief getTypeOfImageActiveLayer get the type of the active Layer.
|
||||
* \return returns the image type of the active layer.
|
||||
*/
|
||||
ImageType getTypeOfImageActiveLayer();
|
||||
|
||||
std::vector<QPoint> getPolygonDataOfRealLayer();
|
||||
/*!
|
||||
* \brief getPolygonDataOfActiveLayer get the polygon data of the active Layer.
|
||||
* \return return the polygon data of the active Layer.
|
||||
*/
|
||||
std::vector<QPoint> getPolygonDataOfActiveLayer();
|
||||
|
||||
int getNumberOfActiveLayer();
|
||||
/*!
|
||||
* \brief getIndexOfActiveLayer returns the index of athe active Layer.
|
||||
* \return return the index of the active Layer.
|
||||
*/
|
||||
int getIndexOfActiveLayer();
|
||||
|
||||
/*!
|
||||
* \brief getImageOfActiveLayer returns the image of the active Layer.
|
||||
* \return return the image of the active Layer.
|
||||
*/
|
||||
IntelliImage* getImageOfActiveLayer();
|
||||
|
||||
/*!
|
||||
@@ -220,17 +275,42 @@ QImage getImageDataOfActiveLayer();
|
||||
*/
|
||||
std::vector<LayerObject>* getLayerBundle();
|
||||
|
||||
/*!
|
||||
* \brief Toolsettings - a class to manage Tool settings.
|
||||
*/
|
||||
IntelliToolsettings Toolsettings;
|
||||
|
||||
/*!
|
||||
* \brief colorPicker a class to manage Tool color.
|
||||
*/
|
||||
IntelliColorPicker colorPicker;
|
||||
|
||||
void historyadd();
|
||||
void historyGoBack();
|
||||
|
||||
/*!
|
||||
* \brief historyGoForward a function to undo the return of the previous state of the project.
|
||||
*/
|
||||
void historyGoForward();
|
||||
|
||||
void setLayerDimensions(int maxWidth, int maxHeight);
|
||||
/*!
|
||||
* \brief setCanvasDimensions sets the dimension of the Canvas
|
||||
* \param maxWidth - the width of the Canvas.
|
||||
* \param maxHeight - the height of the Canvas.
|
||||
*/
|
||||
void setCanvasDimensions(int maxWidth, int maxHeight);
|
||||
|
||||
void setPixelToActive(QColor color, QPoint point);
|
||||
/*!
|
||||
* \brief drawPixelOntoActive draws a pixel onto the image data of the active Layer.
|
||||
* \param color - the color of the Pixel, which should be created.
|
||||
* \param point - the Pixelposition.
|
||||
*/
|
||||
void drawPixelOntoActive(QColor color, QPoint point);
|
||||
|
||||
/*!
|
||||
* \brief setPolygonDataToActive sets polygondata to the active Layer.
|
||||
* \param points - the points of the polygon data.
|
||||
*/
|
||||
void setPolygonDataToActive(std::vector<QPoint> points);
|
||||
public slots:
|
||||
/*!
|
||||
@@ -244,46 +324,149 @@ void slotActivateLayer(int a);
|
||||
void slotDeleteActiveLayer();
|
||||
|
||||
protected:
|
||||
/*!
|
||||
* \brief mousePressEvent handles a mouse pressed event.
|
||||
* \param event - the specific mouse event.
|
||||
*/
|
||||
void mousePressEvent(QMouseEvent*event) override;
|
||||
|
||||
/*!
|
||||
* \brief mouseMoveEvent handles a mouse moved event
|
||||
* \param event - the specific mouse event.
|
||||
*/
|
||||
void mouseMoveEvent(QMouseEvent*event) override;
|
||||
|
||||
/*!
|
||||
* \brief mouseReleaseEvent handles a mouse released event
|
||||
* \param event - the specific mouse event.
|
||||
*/
|
||||
void mouseReleaseEvent(QMouseEvent*event) override;
|
||||
|
||||
/*!
|
||||
* \brief wheelEvent handles a mouse wheel event
|
||||
* \param event - the specific mouse event.
|
||||
*/
|
||||
void wheelEvent(QWheelEvent*event) override;
|
||||
|
||||
/*!
|
||||
* \brief paintEvent handles a painting event
|
||||
* \param event - the specific paint event.
|
||||
*/
|
||||
void paintEvent(QPaintEvent*event) override;
|
||||
|
||||
private:
|
||||
//offset for the displayable
|
||||
/*!
|
||||
* \brief offsetXDimension - Offset for drawing the image.
|
||||
*/
|
||||
int offsetXDimension;
|
||||
|
||||
/*!
|
||||
* \brief offsetYDimension - Offset for drawing the image.
|
||||
*/
|
||||
int offsetYDimension;
|
||||
|
||||
/*!
|
||||
* \brief selectLayerUp moves the active Layer one Up.
|
||||
*/
|
||||
void selectLayerUp();
|
||||
|
||||
/*!
|
||||
* \brief selectLayerDown moves the active Layer one Down.
|
||||
*/
|
||||
void selectLayerDown();
|
||||
|
||||
/*!
|
||||
* \brief copyActiveTool copys the activ tool [allocated].
|
||||
* \return returns a allocates copy of the current tool.
|
||||
*/
|
||||
IntelliTool* copyActiveTool();
|
||||
|
||||
/*!
|
||||
* \brief Canvas the underlying Image to display on.
|
||||
*/
|
||||
QImage* Canvas;
|
||||
|
||||
/*!
|
||||
* \brief ScaledCanvas the Canvas saved for output
|
||||
*/
|
||||
QImage ScaledCanvas;
|
||||
|
||||
/*!
|
||||
* \brief maxWidth is the width of the canvas
|
||||
*/
|
||||
int maxWidth;
|
||||
|
||||
/*!
|
||||
* \brief maxHeight is the height of the canvas
|
||||
*/
|
||||
int maxHeight;
|
||||
|
||||
/*!
|
||||
* \brief isSettingPolygon for checking the state of the drawing.
|
||||
*/
|
||||
bool isSettingPolygon = false;
|
||||
|
||||
/*!
|
||||
* \brief renderSettings a class to manage the render settings.
|
||||
*/
|
||||
IntelliRenderSettings renderSettings;
|
||||
|
||||
/*!
|
||||
* \brief Tool a class to manage the Tool.
|
||||
*/
|
||||
IntelliTool* Tool;
|
||||
|
||||
/*!
|
||||
* \brief guiReference to manage communication with the gui.
|
||||
*/
|
||||
IntelliPhotoGui* guiReference;
|
||||
|
||||
/*!
|
||||
* \brief layerBundle a container to save all layers.
|
||||
*/
|
||||
std::vector<LayerObject> layerBundle;
|
||||
|
||||
/*!
|
||||
* \brief activeLayer the index of the active Layer.
|
||||
*/
|
||||
int activeLayer = -1;
|
||||
|
||||
/*!
|
||||
* \brief drawLayers draws the Layers to the Canvas
|
||||
* \param forSaving an indecate if drawing for saving.
|
||||
*/
|
||||
void drawLayers(bool forSaving = false);
|
||||
|
||||
/*!
|
||||
* \brief createTempTopLayer creates a temporary Layer on top of the Layer.
|
||||
* \param idx - the Layer which should get a temp Layer.
|
||||
* \return True if it workes, false otherwise.
|
||||
*/
|
||||
bool createTempTopLayer(int idx);
|
||||
|
||||
/*!
|
||||
* \brief updateTools resets the Tools.
|
||||
*/
|
||||
void updateTools();
|
||||
|
||||
/*!
|
||||
* \brief history - an array out of containers to save history actions.
|
||||
*/
|
||||
std::vector<LayerObject> history[100] = {layerBundle};
|
||||
|
||||
/*!
|
||||
* \brief historyMaxPast a indicator how many steps you can go into the past.
|
||||
*/
|
||||
int historyMaxPast = 0;
|
||||
|
||||
/*!
|
||||
* \brief historyMaxPast a indicator how many steps you can go into the future.
|
||||
*/
|
||||
int historyMaxFuture = 0;
|
||||
|
||||
/*!
|
||||
* \brief historyPresent a indicator where the present is.
|
||||
*/
|
||||
int historyPresent = 0;
|
||||
|
||||
};
|
||||
|
||||
@@ -17,9 +17,13 @@ class PaintingArea;
|
||||
class IntelliTool {
|
||||
friend UnitTest;
|
||||
public:
|
||||
/*!
|
||||
* \brief The Tooltype enum categorising the toosl.
|
||||
*/
|
||||
enum class Tooltype {
|
||||
CIRCLE,
|
||||
FLOODFILL,
|
||||
GRADIENT,
|
||||
LINE,
|
||||
PEN,
|
||||
PLAIN,
|
||||
@@ -49,6 +53,9 @@ protected:
|
||||
*/
|
||||
PaintingArea* Area;
|
||||
|
||||
/*!
|
||||
* \brief ActiveType the type of the active tool.
|
||||
*/
|
||||
Tooltype ActiveType;
|
||||
|
||||
/*!
|
||||
@@ -56,6 +63,9 @@ Tooltype ActiveType;
|
||||
*/
|
||||
IntelliColorPicker* colorPicker;
|
||||
|
||||
/*!
|
||||
* \brief Toolsettings a refrence to the tool settings
|
||||
*/
|
||||
IntelliToolsettings* Toolsettings;
|
||||
|
||||
/*!
|
||||
@@ -127,8 +137,16 @@ virtual void onWheelScrolled(int value);
|
||||
*/
|
||||
virtual void onMouseMoved(int x, int y);
|
||||
|
||||
/*!
|
||||
* \brief getTooltype returns the tools type
|
||||
* \return returns the tool type of the current tool.
|
||||
*/
|
||||
Tooltype getTooltype() const;
|
||||
|
||||
/*!
|
||||
* \brief getIsDrawing returns if the tool is currently drawing
|
||||
* \return returns if the tool is currently drawing
|
||||
*/
|
||||
bool getIsDrawing() const;
|
||||
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
IntelliToolGradient::IntelliToolGradient(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings)
|
||||
: IntelliTool(Area, colorPicker, Toolsettings){
|
||||
this->ActiveType = Tooltype::GRADIENT;
|
||||
this->LineColor = QColor(0,0,0,255);
|
||||
this->hasMoved = false;
|
||||
}
|
||||
@@ -15,13 +16,13 @@ IntelliToolGradient::~IntelliToolGradient(){
|
||||
|
||||
void IntelliToolGradient::onMouseLeftPressed(int x, int y){
|
||||
IntelliTool::onMouseLeftPressed(x,y);
|
||||
doubleA[0] = static_cast<double>(x);
|
||||
doubleA[1] = static_cast<double>(y);
|
||||
A = QPoint(x,y);
|
||||
B = QPoint(x,y);
|
||||
VectorAB[0] = 0;
|
||||
VectorAB[1] = 0;
|
||||
Canvas->image->drawPixel(A,LineColor);
|
||||
doubleStartPoint[0] = static_cast<double>(x);
|
||||
doubleStartPoint[1] = static_cast<double>(y);
|
||||
startPoint = QPoint(x,y);
|
||||
endPoint = QPoint(x,y);
|
||||
VectorStartEnd[0] = 0;
|
||||
VectorStartEnd[1] = 0;
|
||||
Canvas->image->drawPixel(startPoint,LineColor);
|
||||
}
|
||||
|
||||
void IntelliToolGradient::onMouseRightPressed(int x, int y){
|
||||
@@ -42,15 +43,15 @@ void IntelliToolGradient::onMouseRightReleased(int x, int y){
|
||||
void IntelliToolGradient::onMouseMoved(int x, int y){
|
||||
if(this->isDrawing){
|
||||
hasMoved = true;
|
||||
B = QPoint(x,y);
|
||||
VectorAB[0] = static_cast<float>(B.x() - A.x());
|
||||
VectorAB[1] = static_cast<float>(B.y() - A.y());
|
||||
NormalVector[0] = VectorAB[1];
|
||||
NormalVector[1] = (-1*VectorAB[0]);
|
||||
endPoint = QPoint(x,y);
|
||||
VectorStartEnd[0] = static_cast<float>(endPoint.x() - startPoint.x());
|
||||
VectorStartEnd[1] = static_cast<float>(endPoint.y() - startPoint.y());
|
||||
NormalVector[0] = VectorStartEnd[1];
|
||||
NormalVector[1] = (-1*VectorStartEnd[0]);
|
||||
NormalDotNormal = dotProduct(NormalVector,NormalVector);
|
||||
this->Canvas->image->drawPlain(Qt::transparent);
|
||||
computeGradientLayer();
|
||||
Canvas->image->drawLine(A,B,LineColor,1);
|
||||
Canvas->image->drawLine(startPoint,endPoint,LineColor,1);
|
||||
}
|
||||
IntelliTool::onMouseMoved(x,y);
|
||||
}
|
||||
@@ -59,23 +60,23 @@ void IntelliToolGradient::onWheelScrolled(int value){
|
||||
IntelliTool::onWheelScrolled(value);
|
||||
}
|
||||
|
||||
void IntelliToolGradient::computePixelColor(QPoint Point){
|
||||
void IntelliToolGradient::computeAndDrawPixelColor(QPoint Point){
|
||||
double doublePoint[2];
|
||||
doublePoint[0] = static_cast<double>(Point.x());
|
||||
doublePoint[1] = static_cast<double>(Point.y());
|
||||
double doublePointSubA[2];
|
||||
doublePointSubA[0] = doublePoint[0] - doubleA[0];
|
||||
doublePointSubA[1] = doublePoint[1] - doubleA[1];
|
||||
doublePointSubA[0] = doublePoint[0] - doubleStartPoint[0];
|
||||
doublePointSubA[1] = doublePoint[1] - doubleStartPoint[1];
|
||||
double Perpendicular[2];
|
||||
double PointSubADotNormal = dotProduct(doublePointSubA,NormalVector);
|
||||
Perpendicular[0] = doublePoint[0] - (PointSubADotNormal / NormalDotNormal) * NormalVector[0];
|
||||
Perpendicular[1] = doublePoint[1] - (PointSubADotNormal / NormalDotNormal) * NormalVector[1];
|
||||
double VectorAPoint[2];
|
||||
VectorAPoint[0] = static_cast<double>(Perpendicular[0] - doubleA[0]);
|
||||
VectorAPoint[1] = static_cast<double>(Perpendicular[1] - doubleA[1]);
|
||||
VectorAPoint[0] = static_cast<double>(Perpendicular[0] - doubleStartPoint[0]);
|
||||
VectorAPoint[1] = static_cast<double>(Perpendicular[1] - doubleStartPoint[1]);
|
||||
double ratio;
|
||||
if(((VectorAPoint[0] < 0 && VectorAB[0] < 0) || (VectorAPoint[0] > 0 && VectorAB[0] > 0)) && ((VectorAPoint[1] < 0 && VectorAB[1] < 0) || (VectorAPoint[1] > 0 && VectorAB[1] > 0)))
|
||||
ratio = lenghtVector(VectorAPoint)/lenghtVector(VectorAB);
|
||||
if(((VectorAPoint[0] < 0 && VectorStartEnd[0] < 0) || (VectorAPoint[0] > 0 && VectorStartEnd[0] > 0)) && ((VectorAPoint[1] < 0 && VectorStartEnd[1] < 0) || (VectorAPoint[1] > 0 && VectorStartEnd[1] > 0)))
|
||||
ratio = lenghtVector(VectorAPoint)/lenghtVector(VectorStartEnd);
|
||||
else{
|
||||
ratio = -1;
|
||||
}
|
||||
@@ -110,7 +111,7 @@ double IntelliToolGradient::dotProduct(double Vector1[2], double Vector2[2]){
|
||||
}
|
||||
|
||||
double IntelliToolGradient::lenghtVector(double Vector[2]){
|
||||
return static_cast<double>((std::sqrt(Vector[0] * Vector[0] + Vector[1] * Vector[1])));
|
||||
return static_cast<double>((sqrt(Vector[0] * Vector[0] + Vector[1] * Vector[1])));
|
||||
}
|
||||
|
||||
void IntelliToolGradient::computeGradientLayer(){
|
||||
@@ -121,7 +122,7 @@ void IntelliToolGradient::computeGradientLayer(){
|
||||
}
|
||||
for(int i = 0; i < activeLayer->height; i++){
|
||||
for(int j = 0; j < activeLayer->width; j++){
|
||||
computePixelColor(QPoint(j,i));
|
||||
computeAndDrawPixelColor(QPoint(j,i));
|
||||
}
|
||||
}
|
||||
if(switched){
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
#ifndef INTELLITOOLGRADIENT_H
|
||||
#define INTELLITOOLGRADIENT_H
|
||||
#include "IntelliTool.h"
|
||||
|
||||
/*!
|
||||
* \brief The IntelliToolGradient class that represents a gradient call
|
||||
*/
|
||||
class IntelliToolGradient : public IntelliTool{
|
||||
|
||||
public:
|
||||
/*!
|
||||
* \brief IntelliToolGradient basic constructor of the gradient tool.
|
||||
* \param Area - a reference to the paintingArea
|
||||
* \param colorPicker - a reference to the colorpicker
|
||||
* \param Toolsettings - a regerence to the Toolsettings
|
||||
*/
|
||||
IntelliToolGradient(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings);
|
||||
|
||||
/*!
|
||||
* \brief ~IntelliToolGradient basic destructor.
|
||||
*/
|
||||
virtual ~IntelliToolGradient() override;
|
||||
|
||||
/*!
|
||||
@@ -51,21 +62,70 @@ public:
|
||||
virtual void onMouseMoved(int x, int y) override;
|
||||
|
||||
private:
|
||||
QPoint A;
|
||||
QPoint B;
|
||||
double doubleA[2];
|
||||
double VectorAB[2];
|
||||
|
||||
/*!
|
||||
* \brief startPoint of the line
|
||||
*/
|
||||
QPoint startPoint;
|
||||
|
||||
/*!
|
||||
* \brief endPoint of the line
|
||||
*/
|
||||
QPoint endPoint;
|
||||
/*!
|
||||
* \brief doubleStartPoint startPoint as double Values
|
||||
*/
|
||||
double doubleStartPoint[2];
|
||||
|
||||
/*!
|
||||
* \brief VectorStartEnd a vector between start and end point.
|
||||
*/
|
||||
double VectorStartEnd[2];
|
||||
|
||||
/*!
|
||||
* \brief NormalVector of the VectorStartEnd
|
||||
*/
|
||||
double NormalVector[2];
|
||||
|
||||
/*!
|
||||
* \brief NormalDotNormal dot product of Normal*Normal
|
||||
*/
|
||||
double NormalDotNormal;
|
||||
|
||||
/*!
|
||||
* \brief LineColor color of th line.
|
||||
*/
|
||||
QColor LineColor;
|
||||
|
||||
/*!
|
||||
* \brief hasMoved indicates a movement
|
||||
*/
|
||||
bool hasMoved;
|
||||
|
||||
void computePixelColor(QPoint Point);
|
||||
/*!
|
||||
* \brief computeAndDrawPixelColor computes the pixelcolor for a given point and sets it to the image.
|
||||
* \param Point the point which shoud be computed
|
||||
*/
|
||||
void computeAndDrawPixelColor(QPoint Point);
|
||||
|
||||
/*!
|
||||
* \brief dotProduct calculates the dot product of 2 vetors.
|
||||
* \param Vector1 - first argument
|
||||
* \param Vector2 - second argument
|
||||
* \return returns the dot product.
|
||||
*/
|
||||
double dotProduct(double Vector1[2], double Vector2[2]);
|
||||
|
||||
/*!
|
||||
* \brief lenghtVector returns the length of a vector
|
||||
* \param Vector - Vector to calculate the length
|
||||
* \return returns the length of the vector
|
||||
*/
|
||||
double lenghtVector(double Vector[2]);
|
||||
|
||||
/*!
|
||||
* \brief computeGradientLayer computes the gradient over all pixels in the image.
|
||||
*/
|
||||
void computeGradientLayer();
|
||||
};
|
||||
|
||||
|
||||
@@ -24,9 +24,9 @@ IntelliToolPolygon::~IntelliToolPolygon(){
|
||||
}
|
||||
|
||||
void IntelliToolPolygon::onMouseLeftPressed(int x, int y){
|
||||
if(!drawingOfPolygon && Area->getTypeOfImageRealLayer() == ImageType::SHAPEDIMAGE && x > 0 && y > 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
|
||||
if(Area->getPolygonDataOfRealLayer().size()>2) {
|
||||
std::vector<Triangle> Triangles = IntelliTriangulation::calculateTriangles(Area->getPolygonDataOfRealLayer());
|
||||
if(!drawingOfPolygon && Area->getTypeOfImageActiveLayer() == ImageType::SHAPEDIMAGE && x > 0 && y > 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
|
||||
if(Area->getPolygonDataOfActiveLayer().size()>2) {
|
||||
std::vector<Triangle> Triangles = IntelliTriangulation::calculateTriangles(Area->getPolygonDataOfActiveLayer());
|
||||
QPoint Point(x,y);
|
||||
isInside = IntelliTriangulation::isInPolygon(Triangles,Point);
|
||||
}
|
||||
@@ -37,7 +37,7 @@ void IntelliToolPolygon::onMouseLeftPressed(int x, int y){
|
||||
isInside = true;
|
||||
}
|
||||
}
|
||||
else if(!drawingOfPolygon && Area->getTypeOfImageRealLayer() == ImageType::RASTERIMAGE && x >= 0 && y >= 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
|
||||
else if(!drawingOfPolygon && Area->getTypeOfImageActiveLayer() == ImageType::RASTERIMAGE && x >= 0 && y >= 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
|
||||
isInside = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,10 +15,34 @@
|
||||
viewBox="0 0 67.733332 67.733335"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="line-tool.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
sodipodi:docname="gradient-tool.svg"
|
||||
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient108">
|
||||
<stop
|
||||
style="stop-color:#00ff00;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop104" />
|
||||
<stop
|
||||
id="stop114"
|
||||
offset="0.26227671"
|
||||
style="stop-color:#ffcc00;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop112"
|
||||
offset="0.49107137"
|
||||
style="stop-color:#ff6600;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#d40000;stop-opacity:1"
|
||||
offset="0.66964281"
|
||||
id="stop116" />
|
||||
<stop
|
||||
style="stop-color:#00ffff;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop106" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient36">
|
||||
@@ -40,6 +64,15 @@
|
||||
x2="-13.131983"
|
||||
y2="106.49742"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient108"
|
||||
id="linearGradient110"
|
||||
x1="0"
|
||||
y1="296.99997"
|
||||
x2="67.73333"
|
||||
y2="229.26665"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
@@ -49,18 +82,19 @@
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="107.4786"
|
||||
inkscape:cy="125.27289"
|
||||
inkscape:cx="105.15717"
|
||||
inkscape:cy="134.5586"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
showguides="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
inkscape:window-width="1853"
|
||||
inkscape:window-height="1025"
|
||||
inkscape:window-x="67"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-page="true" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
@@ -78,17 +112,19 @@
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-229.26665)">
|
||||
<rect
|
||||
style="fill:url(#linearGradient110);fill-opacity:1;stroke-width:0.26458332"
|
||||
id="rect102"
|
||||
width="67.73333"
|
||||
height="67.73333"
|
||||
x="0"
|
||||
y="229.26665"
|
||||
ry="3.6852665" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:2.117;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 7.8430058,289.81843 60.854166,236.80727"
|
||||
id="path845"
|
||||
inkscape:connector-curvature="0" />
|
||||
<circle
|
||||
r="2.5985863"
|
||||
cy="236.66553"
|
||||
cx="60.712429"
|
||||
id="circle4574"
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<circle
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.85208333;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4572"
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.9 KiB |