diff --git a/presentation/building_a_photobooth.svg b/presentation/building_a_photobooth.svg
index bfb2be3..abb4de9 100644
--- a/presentation/building_a_photobooth.svg
+++ b/presentation/building_a_photobooth.svg
@@ -27,13 +27,13 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="0.83235859"
- inkscape:cx="4373.0228"
- inkscape:cy="1448.0604"
+ inkscape:zoom="0.12500001"
+ inkscape:cx="4461.028"
+ inkscape:cy="2866.3681"
inkscape:document-units="mm"
- inkscape:current-layer="layer_frames"
+ inkscape:current-layer="layer_title"
showgrid="false"
- showguides="false"
+ showguides="true"
inkscape:window-width="1920"
inkscape:window-height="1051"
inkscape:window-x="1280"
@@ -42,214 +42,250 @@
units="px"
inkscape:guide-bbox="true">
-
+ orientation="0,1"
+ position="845.5212,473.20867" />
+
Building a Photobooth
+ inkscape:label="filter_blur_large">
+ id="feGaussianBlur05"
+ stdDeviation="0.5"
+ inkscape:collect="always" />
+
+
+
+
+
+
+ xlink:href="#pattern124-0"
+ inkscape:collect="always" />
+ width="157.385"
+ y="0"
+ x="0"
+ patternUnits="userSpaceOnUse"
+ patternTransform="matrix(0.477833,0.128035,0.128035,-0.477833,-76,50.6328)">
+ id="g122-6"
+ transform="scale(0.1)">
+ id="g118-9"
+ clip-path="url(#clipPath40-6)">
+ id="g116-2"
+ clip-path="url(#clipPath44-3)">
+ id="path46-6"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 257.141,1414.09 c -1.5,43.87 -21.141,150.72 -89.352,131.67 -50.031,-13.96 -66.242,-89.98 -66.23,-133.64 0.007,-47.5 16.019,-124.6 72.211,-130.2 63.246,-6.29 81.757,85 83.371,132.17 0.531,15.61 29.875,11.54 29.418,-1.97 -2.102,-61.5 -27.942,-157.25 -106.032,-156.12 -76.687,1.1 -108.2575,95.27 -108.3864,158.09 -0.1328,61.51 28.6794,154.92 104.1604,156.07 79.109,1.2 108.117,-95.23 110.258,-158.04 0.531,-15.54 -28.954,-11.67 -29.418,1.97" />
+ id="path48-6"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 412.359,1270.89 0,292.19 c 0,5.41 28.981,1.09 28.981,-7.76 l 0,-292.19 c 0,-5.41 -28.981,-1.09 -28.981,7.76" />
+ id="path50-4"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 730.984,1414.09 c -1.492,43.87 -21.14,150.72 -89.343,131.67 -50.036,-13.96 -66.243,-89.98 -66.231,-133.64 0.012,-47.5 16.016,-124.6 72.207,-130.2 63.25,-6.29 81.758,85 83.367,132.17 0.532,15.61 29.883,11.54 29.426,-1.97 -2.097,-61.5 -27.937,-157.25 -106.035,-156.12 -76.687,1.1 -108.258,95.27 -108.391,158.09 -0.125,61.51 28.684,154.92 104.161,156.07 79.113,1.2 108.125,-95.23 110.265,-158.04 0.528,-15.54 -28.957,-11.67 -29.426,1.97" />
+ id="path52-9"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1391.07,1414.09 c -1.5,43.87 -21.14,150.72 -89.35,131.67 -50.03,-13.96 -66.24,-89.98 -66.23,-133.64 0.01,-47.5 16.02,-124.6 72.22,-130.2 63.24,-6.29 81.75,85 83.36,132.17 0.53,15.61 29.88,11.54 29.42,-1.97 -2.1,-61.5 -27.94,-157.25 -106.03,-156.12 -76.69,1.1 -108.26,95.27 -108.39,158.09 -0.13,61.51 28.68,154.92 104.16,156.07 79.12,1.2 108.12,-95.23 110.26,-158.04 0.54,-15.54 -28.95,-11.67 -29.42,1.97" />
+ id="path54-5"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 886.211,1270.89 0,292.19 c 0,5.41 28.977,1.09 28.977,-7.76 l 0,-292.19 c 0,-5.41 -28.977,-1.09 -28.977,7.76" />
+ id="path56-0"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1064.67,1270.89 0,292.19 c 0,5.41 28.98,1.09 28.98,-7.76 l 0,-292.19 c 0,-5.41 -28.98,-1.09 -28.98,7.76" />
+ id="path58-4"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1518.88,1270.89 0,292.19 c 0,5.41 28.98,1.09 28.98,-7.76 l 0,-292.19 c 0,-5.41 -28.98,-1.09 -28.98,7.76" />
+ id="path60-8"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1044.06,1060.24 c -1.5,43.87 -21.14,150.73 -89.353,131.67 -50.027,-13.96 -66.23,-89.97 -66.223,-133.64 0.012,-47.5 16.02,-124.598 72.207,-130.196 63.259,-6.289 81.759,85.006 83.369,132.166 0.53,15.61 29.89,11.55 29.43,-1.97 -2.1,-61.5 -27.95,-157.247 -106.041,-156.122 -76.687,1.106 -108.261,95.274 -108.386,158.092 -0.125,61.51 28.679,154.93 104.16,156.07 79.107,1.2 108.117,-95.22 110.267,-158.04 0.52,-15.54 -28.96,-11.67 -29.43,1.97" />
+ id="path62-7"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1199.28,917.043 0,292.197 c 0,5.41 28.98,1.08 28.98,-7.77 l 0,-292.185 c 0,-5.406 -28.98,-1.094 -28.98,7.758" />
+ id="path64-1"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1517.91,1060.24 c -1.5,43.87 -21.14,150.73 -89.35,131.67 -50.02,-13.96 -66.24,-89.97 -66.23,-133.64 0.01,-47.5 16.02,-124.598 72.21,-130.196 63.25,-6.289 81.76,85.006 83.37,132.166 0.53,15.61 29.88,11.55 29.42,-1.97 -2.1,-61.5 -27.94,-157.247 -106.03,-156.122 -76.69,1.106 -108.26,95.274 -108.39,158.092 -0.13,61.51 28.68,154.93 104.16,156.07 79.11,1.2 108.13,-95.22 110.26,-158.04 0.53,-15.54 -28.95,-11.67 -29.42,1.97" />
+ id="path66-7"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 604.145,1060.24 c -1.5,43.87 -21.137,150.73 -89.348,131.67 -50.031,-13.96 -66.242,-89.97 -66.227,-133.64 0.008,-47.5 16.016,-124.598 72.207,-130.196 63.25,-6.289 81.762,85.006 83.368,132.166 0.535,15.61 29.878,11.55 29.418,-1.97 -2.098,-61.5 -27.938,-157.247 -106.024,-156.122 -76.695,1.106 -108.262,95.274 -108.394,158.092 -0.125,61.51 28.683,154.93 104.16,156.07 79.113,1.2 108.121,-95.22 110.258,-158.04 0.539,-15.54 -28.946,-11.67 -29.418,1.97" />
+ id="path68-2"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 99.2852,917.043 0,292.197 c 0,5.41 28.9808,1.08 28.9808,-7.77 l 0,-292.185 c 0,-5.406 -28.9808,-1.094 -28.9808,7.758" />
+ id="path70-7"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 277.742,917.043 0,292.197 c 0,5.41 28.981,1.08 28.981,-7.77 l 0,-292.185 c 0,-5.406 -28.981,-1.094 -28.981,7.758" />
+ id="path72-2"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 731.953,917.043 0,292.197 c 0,5.41 28.985,1.08 28.985,-7.77 l 0,-292.185 c 0,-5.406 -28.985,-1.094 -28.985,7.758" />
+ id="path74-2"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 257.141,706.406 c -1.5,43.86 -21.141,150.711 -89.352,131.668 -50.031,-13.972 -66.242,-89.976 -66.23,-133.648 0.007,-47.5 16.019,-124.602 72.211,-130.192 63.246,-6.296 81.757,84.996 83.371,132.172 0.531,15.598 29.875,11.532 29.418,-1.98 -2.102,-61.504 -27.942,-157.242 -106.032,-156.125 -76.687,1.101 -108.2575,95.273 -108.3864,158.105 -0.1328,61.492 28.6794,154.91 104.1604,156.055 79.109,1.199 108.117,-95.215 110.258,-158.035 0.531,-15.531 -28.954,-11.672 -29.418,1.98" />
+ id="path76-6"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 412.359,563.199 0,292.192 c 0,5.41 28.981,1.086 28.981,-7.762 l 0,-292.191 c 0,-5.411 -28.981,-1.09 -28.981,7.761" />
+ id="path78-1"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 730.984,706.406 c -1.492,43.86 -21.14,150.711 -89.343,131.668 -50.036,-13.972 -66.243,-89.976 -66.231,-133.648 0.012,-47.5 16.016,-124.602 72.207,-130.192 63.25,-6.296 81.758,84.996 83.367,132.172 0.532,15.598 29.883,11.532 29.426,-1.98 -2.097,-61.504 -27.937,-157.242 -106.035,-156.125 -76.687,1.101 -108.258,95.273 -108.391,158.105 -0.125,61.492 28.684,154.91 104.161,156.055 79.113,1.199 108.125,-95.215 110.265,-158.035 0.528,-15.531 -28.957,-11.672 -29.426,1.98" />
+ id="path80-0"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1391.07,706.406 c -1.5,43.86 -21.14,150.711 -89.35,131.668 -50.03,-13.972 -66.24,-89.976 -66.23,-133.648 0.01,-47.5 16.02,-124.602 72.22,-130.192 63.24,-6.296 81.75,84.996 83.36,132.172 0.53,15.598 29.88,11.532 29.42,-1.98 -2.1,-61.504 -27.94,-157.242 -106.03,-156.125 -76.69,1.101 -108.26,95.273 -108.39,158.105 -0.13,61.492 28.68,154.91 104.16,156.055 79.12,1.199 108.12,-95.215 110.26,-158.035 0.54,-15.531 -28.95,-11.672 -29.42,1.98" />
+ id="path82-6"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 886.211,563.199 0,292.192 c 0,5.41 28.977,1.086 28.977,-7.762 l 0,-292.191 c 0,-5.411 -28.977,-1.09 -28.977,7.761" />
+ id="path84-1"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1064.67,563.199 0,292.192 c 0,5.41 28.98,1.086 28.98,-7.762 l 0,-292.191 c 0,-5.411 -28.98,-1.09 -28.98,7.761" />
+ id="path86-5"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1518.88,563.199 0,292.192 c 0,5.41 28.98,1.086 28.98,-7.762 l 0,-292.191 c 0,-5.411 -28.98,-1.09 -28.98,7.761" />
+ id="path88-9"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1044.06,352.555 c -1.5,43.863 -21.14,150.722 -89.353,131.668 -50.027,-13.969 -66.23,-89.977 -66.223,-133.649 0.012,-47.5 16.02,-124.597 72.207,-130.187 63.259,-6.289 81.759,85 83.369,132.168 0.53,15.597 29.89,11.543 29.43,-1.981 -2.1,-61.496 -27.95,-157.238 -106.041,-156.117 -76.687,1.102 -108.261,95.27 -108.386,158.098 -0.125,61.504 28.679,154.922 104.16,156.062 79.107,1.196 108.117,-95.222 110.267,-158.043 0.52,-15.531 -28.96,-11.668 -29.43,1.981" />
+ id="path90-4"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1199.28,209.352 0,292.191 c 0,5.41 28.98,1.09 28.98,-7.758 l 0,-292.191 c 0,-5.41 -28.98,-1.09 -28.98,7.758" />
+ id="path92-9"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1517.91,352.555 c -1.5,43.863 -21.14,150.722 -89.35,131.668 -50.02,-13.969 -66.24,-89.977 -66.23,-133.649 0.01,-47.5 16.02,-124.597 72.21,-130.187 63.25,-6.289 81.76,85 83.37,132.168 0.53,15.597 29.88,11.543 29.42,-1.981 -2.1,-61.496 -27.94,-157.238 -106.03,-156.117 -76.69,1.102 -108.26,95.27 -108.39,158.098 -0.13,61.504 28.68,154.922 104.16,156.062 79.11,1.196 108.13,-95.222 110.26,-158.043 0.53,-15.531 -28.95,-11.668 -29.42,1.981" />
+ id="path94-0"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 604.145,352.555 c -1.5,43.863 -21.137,150.722 -89.348,131.668 -50.031,-13.969 -66.242,-89.977 -66.227,-133.649 0.008,-47.5 16.016,-124.597 72.207,-130.187 63.25,-6.289 81.762,85 83.368,132.168 0.535,15.597 29.878,11.543 29.418,-1.981 -2.098,-61.496 -27.938,-157.238 -106.024,-156.117 -76.695,1.102 -108.262,95.27 -108.394,158.098 -0.125,61.504 28.683,154.922 104.16,156.062 79.113,1.196 108.121,-95.222 110.258,-158.043 0.539,-15.531 -28.946,-11.668 -29.418,1.981" />
+ id="path96-9"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 99.2852,209.352 0,292.191 c 0,5.41 28.9808,1.09 28.9808,-7.758 l 0,-292.191 c 0,-5.41 -28.9808,-1.09 -28.9808,7.758" />
+ id="path98-1"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 277.742,209.352 0,292.191 c 0,5.41 28.981,1.09 28.981,-7.758 l 0,-292.191 c 0,-5.41 -28.981,-1.09 -28.981,7.758" />
+ id="path100-7"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 731.953,209.352 0,292.191 c 0,5.41 28.985,1.09 28.985,-7.758 l 0,-292.191 c 0,-5.41 -28.985,-1.09 -28.985,7.758" />
+ id="path102-7"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="M 257.141,-1.28906 C 255.641,42.5703 236,149.43 167.789,130.383 117.758,116.41 101.547,40.4023 101.559,-3.26953 101.566,-50.7734 117.578,-127.871 173.77,-133.461 237.016,-139.75 255.527,-48.4609 257.141,-1.28906 257.672,14.3125 287.016,10.25 286.559,-3.26953 284.457,-64.7695 258.617,-160.508 180.527,-159.391 103.84,-158.289 72.2695,-64.1211 72.1406,-1.28906 72.0078,60.2109 100.82,153.629 176.301,154.77 255.41,155.973 284.418,59.5508 286.559,-3.26953 287.09,-18.7969 257.605,-14.9414 257.141,-1.28906" />
+ id="path104-1"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 412.359,-144.492 0,292.187 c 0,5.41 28.981,1.09 28.981,-7.757 l 0,-292.196 c 0,-5.406 -28.981,-1.086 -28.981,7.766" />
+ id="path106-1"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="M 730.984,-1.28906 C 729.492,42.5703 709.844,149.43 641.641,130.383 591.605,116.41 575.398,40.4023 575.41,-3.26953 575.422,-50.7734 591.426,-127.871 647.617,-133.461 c 63.25,-6.289 81.758,85.0001 83.367,132.17194 C 731.516,14.3125 760.867,10.25 760.41,-3.26953 758.313,-64.7695 732.473,-160.508 654.375,-159.391 577.688,-158.289 546.117,-64.1211 545.984,-1.28906 545.859,60.2109 574.668,153.629 650.145,154.77 729.258,155.973 758.27,59.5508 760.41,-3.26953 760.938,-18.7969 731.453,-14.9414 730.984,-1.28906" />
+ id="path108-5"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1391.07,-1.28906 c -1.5,43.85936 -21.14,150.71906 -89.35,131.67206 -50.03,-13.973 -66.24,-89.9807 -66.23,-133.65253 0.01,-47.50387 16.02,-124.60147 72.22,-130.19147 63.24,-6.289 81.75,85.0001 83.36,132.17194 0.53,15.60156 29.88,11.53906 29.42,-1.98047 -2.1,-61.49997 -27.94,-157.23847 -106.03,-156.12147 -76.69,1.102 -108.26,95.2699 -108.39,158.10194 -0.13,61.49996 28.68,154.91806 104.16,156.05906 79.12,1.203 108.12,-95.2192 110.26,-158.03953 0.54,-15.52737 -28.95,-11.67187 -29.42,1.98047" />
+ id="path110-9"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 886.211,-144.492 0,292.187 c 0,5.41 28.977,1.09 28.977,-7.757 l 0,-292.196 c 0,-5.406 -28.977,-1.086 -28.977,7.766" />
+ id="path112-7"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1064.67,-144.492 0,292.187 c 0,5.41 28.98,1.09 28.98,-7.757 l 0,-292.196 c 0,-5.406 -28.98,-1.086 -28.98,7.766" />
+ id="path114-7"
+ style="fill:#171717;fill-opacity:1;fill-rule:nonzero"
+ d="m 1518.88,-144.492 0,292.187 c 0,5.41 28.98,1.09 28.98,-7.757 l 0,-292.196 c 0,-5.406 -28.98,-1.086 -28.98,7.766" />
+ id="clipPath40-6"
+ clipPathUnits="userSpaceOnUse">
+ d="M 0,0 H 1574 V 1416 H 0 Z" />
+ id="clipPath44-3"
+ clipPathUnits="userSpaceOnUse">
+ d="M 0,1415.38 H 1573.85 V 0 H 0 Z" />
+
+
+
+
+
+
@@ -294,6110 +330,9307 @@
+ id="layer_title"
+ inkscape:label="Title"
+ transform="translate(0,59.266667)">
Building aPhoto Booth
-
+ Andreas FrischAndreas Frisch
+ <fraxinas@schaffenburg.org><fraxinas@schaffenburg.org>
+ Easterhegg 2017-04-15
-
-
-
-
-
-
-
-
-
-
- Our approach* wrote experimental capture program* evaluated and bought hw components* dry run* designed cabinet* built cabinet* added LED effects, flash etc.
- What is a photo booth?* Name origin are actual BOOTHs (train station)* Japan: Purikura (プリクラ) machines since 1995* automatic device that takes pictures of you* camera with self-timer or webcam* usually equipped with a preview screen* sometimes equipped with a printer* sometimes equipped with social media sharing* usually saves the photos* sometimes equipped with funny props* typical use cases: weddings, birthday parties, corporate events, fairs
- Motivationwhy would you need one* it's fun to use* you can make money with it(professional photographerscharge up to 1500€ for a day)why would you wanna build one by yourself* it's fun to build* you can make money with it* you learn a lot* multi-disciplinary project* is ideal for hacker/maker space teamwork
- Easterhegg 2017-04-15
+
+
+
+ style="visibility:hidden;fill:none;stroke:#e6e6e6;stroke-width:0.26670232;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:23;enable-background:new"
+ inkscape:connector-curvature="0" />
+ enable-background="new"
+ transform="matrix(3.58332 0 0 -3.58332 816.699 1266.618)"
+ id="g_schaffenburg_logo">
+ d="M55.157 84.607c11.042 3.367 22.33 9.387 25.585 21.129 3.445 12.422 4.71 25.702 5.606 38.535.025.378-.362.774-.742.742-7.238-.597-14.694.668-21.68 2.418-2.638.661-5.024 1.559-7.536 2.537-.52.203-.783.687-1.376.69-.584.003-.715-.408-1.221-.584-2.364-.817-4.555-1.818-7.016-2.455-7.19-1.858-14.892-3.199-22.353-2.585-.381.032-.768-.366-.742-.741.895-12.834 2.16-26.113 5.605-38.537 3.248-11.71 14.461-17.76 25.475-21.149.915-.28 1.307 1.151.395 1.431-5.612 1.727-11.214 4.328-15.97 7.785-7.668 5.575-9.183 13.931-10.73 22.763-1.423 8.131-2.351 16.355-3.045 24.58-.069.822-.133 1.647-.197 2.469-.096 1.209-.652-.153-.434-.111 3.872.741 8.321.065 12.307.629 4.748.672 9.656 1.646 14.193 3.249 1.213.428 2.768 1.633 3.967 1.871-.652-.128-.467.03.547-.669 2.302-1.591 5.78-2.135 8.41-2.77 5.312-1.287 10.727-2.182 16.195-2.37 1.463-.05 2.955-.107 4.415.016 1.232.102.083 1.199 0 .134-.514-6.54-1.18-13.069-2.08-19.569-1.22-8.799-1.907-20.918-8.596-27.475-5.166-5.06-12.512-8.439-19.377-10.532-.91-.278-.522-1.711.395-1.43" />
+ d="M27.049 126.421c2.127.299 11.827 1.656 15.512 2.019 4.118.406 10.136.46 12.552.462h.072c2.416-.002 8.434-.056 12.553-.462 3.684-.363 13.384-1.72 15.51-2.019h.701c1.233 9.588 1.79 17.7 1.79 17.7s-6.865-.627-16.285 1.215c-12.479 2.441-14.158 4.42-14.158 4.42l-.294.021s-1.68-1.979-14.158-4.42c-9.42-1.842-16.285-1.215-16.285-1.215s.558-8.124 1.793-17.721z" />
+ d="M54.422 107.904a2.139 2.139 0 1 0-4.264-.34 2.139 2.139 0 0 0 4.264.34m2.847.444c-.037.301-.1.598-.19.886l1.08 1.395a6.408 6.408 0 0 1-.627 1.025l-1.637-.449a4.838 4.838 0 0 1-.87.698l-.07 1.793c-.33.145-.666.261-1.008.349l-.98-1.418c-.454.05-.91.037-1.351-.039l-1.226 1.351a6.525 6.525 0 0 1-.867-.346l.166-1.773a4.813 4.813 0 0 1-1.103-1.027l-1.82.248a6.507 6.507 0 0 1-.385-.774l1.309-1.294a4.824 4.824 0 0 1-.14-1.501l-1.544-.972c.058-.295.138-.586.238-.871l1.872-.152c.21-.395.476-.764.794-1.094l-.548-1.709a6.56 6.56 0 0 1 .706-.481c.048-.029.096-.055.145-.082l1.525 1.082c.356-.13.72-.217 1.083-.263l.667-1.631a6.49 6.49 0 0 1 1.156.129l.46 1.766c.285.104.558.235.82.39l1.542-.813c.321.266.62.563.89.893l-.754 1.593a5.237 5.237 0 0 1 .364.741l1.705.369c.093.421.143.844.153 1.268l-1.555.713" />
+ d="M54.422 107.904a2.139 2.139 0 1 0-4.264-.34 2.139 2.139 0 0 0 4.264.34zm2.847.444c-.037.301-.1.598-.19.886l1.08 1.395a6.408 6.408 0 0 1-.627 1.025l-1.637-.449a4.838 4.838 0 0 1-.87.698l-.07 1.793c-.33.145-.666.261-1.008.349l-.98-1.418c-.454.05-.91.037-1.351-.039l-1.226 1.351a6.525 6.525 0 0 1-.867-.346l.166-1.773a4.813 4.813 0 0 1-1.104-1.027l-1.818.248a6.507 6.507 0 0 1-.387-.774l1.31-1.294a4.824 4.824 0 0 1-.14-1.501l-1.544-.972c.058-.295.138-.586.238-.871l1.872-.152c.21-.395.476-.764.794-1.094l-.548-1.709a6.56 6.56 0 0 1 .706-.481c.048-.029.096-.055.145-.082l1.525 1.082c.356-.13.72-.217 1.083-.263l.667-1.631a6.49 6.49 0 0 1 1.156.129l.46 1.766c.285.104.558.235.82.39l1.542-.813c.321.266.62.563.89.893l-.754 1.593a5.237 5.237 0 0 1 .364.741l1.705.369c.093.421.143.844.153 1.268z" />
+ d="M36.587 110.742l-.202.15 6.926 9.297.202-.15z" />
+ d="M44.39 111.925l.156.197-9.08 7.206-.156-.196z" />
+ d="M42.05 115.904a2.138 2.138 0 1 0-4.243-.554 2.139 2.139 0 1 0 4.242.554" />
+ d="M42.05 115.904a2.138 2.138 0 1 0-4.243-.554 2.139 2.139 0 1 0 4.242.554z" />
+ d="M40.669 109.952a5.724 5.724 0 1 0-1.48 11.352 5.724 5.724 0 0 0 1.48-11.352m8.746 6.171a9.392 9.392 0 0 1-.19 1.461l-2.07.24a7.478 7.478 0 0 1-.556 1.347l1.298 1.631c-.27.414-.57.803-.897 1.168l-1.912-.827c-.355.333-.742.63-1.155.888l.308 2.061c-.436.222-.89.412-1.359.566l-1.243-1.673a7.504 7.504 0 0 1-1.444.19l-.763 1.94a9.62 9.62 0 0 1-1.46-.191l-.241-2.07a7.564 7.564 0 0 1-1.347-.555l-1.631 1.298a9.495 9.495 0 0 1-1.168-.897l.827-1.912a7.607 7.607 0 0 1-.888-1.155l-2.06.308a9.5 9.5 0 0 1-.567-1.359l1.673-1.243a7.455 7.455 0 0 1-.19-1.444l-1.94-.764a9.956 9.956 0 0 1 .19-1.46l2.072-.24c.142-.472.33-.923.554-1.347l-1.297-1.632c.27-.413.57-.803.896-1.168l1.912.828a7.65 7.65 0 0 1 1.155-.889l-.308-2.06c.436-.224.89-.413 1.359-.566l1.243 1.673a7.504 7.504 0 0 1 1.444-.191l.764-1.94a10.014 10.014 0 0 1 1.46.191l.24 2.071c.472.142.923.329 1.348.554l1.631-1.297c.413.269.804.569 1.168.897l-.827 1.912c.332.355.629.742.888 1.154l2.06-.308c.223.435.413.89.567 1.359l-1.673 1.244c.109.468.173.951.19 1.444l1.939.763" />
+ d="M43.063 99.565c-.536.732-.361 1.773.393 2.324.753.552 1.798.407 2.335-.325.536-.732.36-1.771-.393-2.323-.755-.552-1.8-.407-2.336.324m1.415-2.367l1.118-1.173c.231.06.458.137.68.232l.168 1.612a3.37 3.37 0 0 1 .925 1.057l1.575.381c.064.232.11.468.138.706l-1.31.95a3.351 3.351 0 0 1-.453 1.33l.455 1.553a3.913 3.913 0 0 1-.542.472l-1.477-.657a3.36 3.36 0 0 1-1.377.271l-1.119 1.173a4.63 4.63 0 0 1-.68-.232l-.169-1.61a3.366 3.366 0 0 1-.924-1.058l-1.575-.382a4.695 4.695 0 0 1-.137-.705l1.31-.952c.055-.464.208-.918.452-1.328l-.455-1.553a4.5 4.5 0 0 1 .541-.474l1.478.659c.44-.19.91-.28 1.378-.272" />
+ d="M43.063 99.565c-.536.732-.361 1.773.393 2.324.753.552 1.798.407 2.335-.325.536-.732.36-1.771-.393-2.323-.755-.552-1.8-.407-2.336.324zm1.414-2.367l1.118-1.173c.231.06.458.137.68.232l.168 1.612a3.37 3.37 0 0 1 .925 1.057l1.575.381c.064.232.11.468.138.706l-1.31.95a3.351 3.351 0 0 1-.453 1.33l.455 1.553a3.913 3.913 0 0 1-.542.472l-1.477-.657a3.36 3.36 0 0 1-1.377.271l-1.119 1.173a4.63 4.63 0 0 1-.68-.232l-.169-1.61a3.366 3.366 0 0 1-.924-1.058l-1.575-.382a4.695 4.695 0 0 1-.137-.705l1.31-.952c.055-.464.208-.918.452-1.328l-.455-1.553a4.5 4.5 0 0 1 .541-.474l1.478.659c.44-.19.91-.28 1.378-.272z" />
+ d="M42.792 102.796a2.765 2.765 0 1 0 3.269-4.462 2.765 2.765 0 0 0-3.269 4.462z" />
+ d="M55.057 85.758c.525-.604 17.294 5.343 21.273 12.335 3.806 6.686 5.64 18.43 7.167 28.276l.101-.015s-11.779 1.669-15.928 2.078c-4.158.409-10.256.461-12.624.461.142-13.721-.131-29.413.01-43.135" />
+ d="M55.148 98.843l24.484 6.501c1.854 5.292 2.937 11.482 3.997 17.459l-28.653-7.613.172-16.347" />
+ d="M83.6 126.332s-11.78 1.67-15.93 2.078c-4.16.41-10.257.461-12.624.461.141-13.719-.131-29.412.011-43.134" />
+ d="M56.601 111.103c.514-1.591 2.048-2.779 3.775-2.314 1.66.447 2.546 2.281 2.104 3.896-.428 1.564-2.002 2.703-3.636 2.343-1.807-.399-2.607-2.23-2.243-3.925.12-.56.98-.323.86.237-.25 1.16.24 2.47 1.48 2.799 1.198.32 2.375-.544 2.681-1.691.287-1.077-.206-2.309-1.275-2.72-1.293-.497-2.493.39-2.887 1.612-.176.543-1.036.311-.859-.237" />
+ d="M72.422 107.921c.514-1.591 2.049-2.778 3.775-2.314 1.66.448 2.546 2.282 2.105 3.897-.429 1.564-2.003 2.703-3.637 2.343-1.806-.399-2.606-2.23-2.243-3.926.12-.559.98-.323.86.238-.25 1.159.24 2.47 1.482 2.8 1.196.319 2.374-.545 2.68-1.692.286-1.078-.207-2.308-1.276-2.721-1.293-.496-2.492.39-2.887 1.613-.176.543-1.036.311-.86-.238" />
+ d="M63.831 113.195c.513-1.59 2.048-2.779 3.775-2.314 1.66.448 2.546 2.282 2.104 3.896-.428 1.564-2.002 2.703-3.636 2.343-1.806-.398-2.607-2.229-2.243-3.925.12-.559.98-.322.86.237-.25 1.16.24 2.47 1.48 2.8 1.198.319 2.375-.544 2.681-1.691.288-1.078-.205-2.309-1.275-2.721-1.293-.496-2.493.391-2.887 1.612-.175.544-1.036.312-.859-.237" />
+ d="M61.407 104.996c.514-1.59 2.048-2.778 3.775-2.314 1.661.448 2.546 2.282 2.104 3.897-.427 1.564-2.002 2.703-3.636 2.342-1.807-.398-2.607-2.229-2.243-3.925.12-.56.979-.322.86.238-.25 1.16.24 2.47 1.481 2.8 1.197.318 2.374-.545 2.68-1.692.287-1.078-.205-2.308-1.275-2.721-1.293-.496-2.493.391-2.886 1.613-.177.543-1.037.311-.86-.238" />
+ d="M73.83 115.967c.514-1.59 2.048-2.778 3.776-2.314 1.659.447 2.546 2.281 2.103 3.896-.428 1.564-2.002 2.703-3.636 2.342-1.807-.398-2.607-2.229-2.243-3.924.12-.56.98-.322.86.237-.25 1.16.24 2.469 1.481 2.8 1.197.319 2.374-.545 2.68-1.691.287-1.077-.206-2.309-1.275-2.721-1.293-.497-2.493.39-2.887 1.612-.176.543-1.036.311-.859-.237" />
+ d="M70.799 117.776l1.332-4.971c.147-.553 1.007-.317.86.237-.445 1.657-.89 3.314-1.333 4.971-.149.553-1.009.318-.86-.237" />
+ d="M68.865 109.632l1.332-4.971c.147-.552 1.006-.318.859.237l-1.333 4.971c-.149.553-1.008.319-.859-.237" />
+ d="M57.79 106.665l1.332-4.971c.148-.553 1.007-.318.859.237l-1.332 4.971c-.149.553-1.008.318-.86-.237" />
+ d="M54.6 143.342c-.307 0-.555.201-.555.451 0 .248.248.451.555.451.307 0 .555-.203.555-.451 0-.25-.248-.451-.555-.451m.555 2.303c-1.688 0-3.057-1.164-3.057-2.599 0-1.273 1.079-2.333 2.502-2.553.18-.03.366-.044.555-.044.19 0 .376.014.557.044 1.422.221 2.5 1.28 2.5 2.553 0 1.435-1.369 2.599-3.057 2.599" />
+ d="M54.6 143.342c-.307 0-.555.201-.555.451 0 .248.248.451.555.451.307 0 .555-.203.555-.451 0-.25-.248-.451-.555-.451zm.555 2.303c-1.688 0-3.057-1.164-3.057-2.599 0-1.273 1.079-2.333 2.502-2.553.18-.03.366-.044.555-.044.19 0 .376.014.557.044 1.422.221 2.5 1.28 2.5 2.553 0 1.435-1.369 2.599-3.057 2.599z" />
+ d="M55.711 143.046v-12.625H54.6v12.393c.308 0 .556.104.556.232h.555" />
+ d="M55.711 143.046v-12.625H54.6v12.393c.308 0 .556.104.556.232z" />
+ d="M60.797 133.529c0-.392-2.466-.71-5.51-.71-3.042 0-5.508.318-5.508.71 0 .392 2.465.71 5.508.71 3.044 0 5.51-.318 5.51-.71z" />
+ d="M59.323 136.105c0-.392-1.866-.71-4.168-.71-2.301 0-4.167.318-4.167.71 0 .391 1.866.709 4.168.709 2.301 0 4.167-.318 4.167-.709z" />
+ d="M58.212 138.588c0-.325-1.368-.588-3.056-.588s-3.058.263-3.058.588c0 .325 1.37.589 3.058.589 1.688 0 3.056-.264 3.056-.589z" />
+ d="M53.78 143.793c0 .412.366.746.82.746.453 0 .82-.334.82-.746 0-.413-.367-.747-.82-.747-.453 0-.82.334-.82.747" />
+ d="M55.304 85.022c11.042 3.367 22.329 9.387 25.585 21.128 3.445 12.423 4.71 25.702 5.605 38.536.026.378-.362.774-.742.742-7.237-.597-14.692.668-21.679 2.418-2.637.661-5.025 1.559-7.536 2.537-.52.203-.783.687-1.376.69-.584.003-.714-.409-1.221-.584-2.364-.817-4.555-1.818-7.016-2.455-7.19-1.858-14.892-3.2-22.352-2.585-.382.032-.769-.366-.743-.742.895-12.834 2.16-26.112 5.605-38.536 3.248-11.71 14.46-17.76 25.475-21.15.915-.28 1.307 1.152.395 1.432-5.613 1.727-11.215 4.328-15.97 7.785-7.668 5.574-9.184 13.931-10.73 22.762-1.423 8.132-2.351 16.357-3.045 24.58-.069.823-.133 1.647-.198 2.47-.095 1.209-.65-.153-.434-.111 3.873.741 8.322.065 12.308.629 4.748.672 9.656 1.646 14.193 3.249 1.213.428 2.768 1.633 3.967 1.871-.652-.129-.467.03.547-.67 2.302-1.59 5.78-2.134 8.41-2.77 5.311-1.286 10.727-2.182 16.195-2.369 1.463-.05 2.955-.107 4.415.015 1.232.103.083 1.2 0 .135-.514-6.54-1.179-13.07-2.08-19.569-1.221-8.799-1.907-20.919-8.597-27.475-5.165-5.061-12.51-8.439-19.376-10.532-.91-.278-.522-1.711.395-1.431" />
+ d="M82.976 137.645c-.83.175-1.863-1.452-2.84-2.969-.938-1.428-1.887-2.85-2.585-2.468-.7.381-.537 2.032-.4 3.575.122 1.524.226 3.042-.602 3.217-.828.174-1.695-.991-2.515-2.061-.779-.992-1.565-1.962-2.265-1.58-.7.381-.7 1.581-.717 2.687-.04 1.078-.1 2.134-.929 2.308-.83.175-1.53-.528-2.188-1.152-.624-.555-1.249-1.074-1.948-.693-.7.381-.86 1.13-1.036 1.8-.198.631-.424 1.225-1.254 1.4-.829.174-1.364-.067-1.862-.244-.467-.119-.93-.187-1.628.194l-.006-.013c.744-.411 1.218-.339 1.698-.214.488.177 1.011.415 1.787.247.777-.168.999-.746 1.195-1.359.18-.683.345-1.447 1.09-1.858.744-.41 1.384.123 2.023.695.645.613 1.33 1.302 2.107 1.134.775-.168.835-1.197.875-2.247.019-1.129.019-2.355.763-2.765.745-.411 1.55.584 2.35 1.603.802 1.049 1.648 2.189 2.425 2.021.776-.168.675-1.648.556-3.134-.14-1.576-.304-3.264.44-3.674.743-.411 1.716 1.046 2.675 2.511.958 1.486 1.967 3.077 2.744 2.909l.047.13" />
+ d="M82.976 137.645c-.83.175-1.863-1.452-2.84-2.969-.938-1.428-1.887-2.85-2.585-2.468-.7.381-.537 2.032-.4 3.575.122 1.524.226 3.042-.602 3.217-.828.174-1.695-.991-2.515-2.061-.779-.992-1.565-1.962-2.265-1.58-.7.381-.7 1.581-.717 2.687-.04 1.078-.1 2.134-.929 2.308-.83.175-1.53-.528-2.188-1.152-.624-.555-1.249-1.074-1.948-.693-.7.381-.86 1.13-1.036 1.8-.198.631-.424 1.225-1.254 1.4-.829.174-1.364-.067-1.862-.244-.467-.119-.93-.187-1.628.194l-.006-.013c.744-.411 1.218-.339 1.698-.214.488.177 1.011.415 1.787.247.777-.168.999-.746 1.195-1.359.18-.683.345-1.447 1.09-1.858.744-.41 1.384.123 2.023.695.645.613 1.33 1.302 2.107 1.134.775-.168.835-1.197.875-2.247.019-1.129.019-2.355.763-2.765.745-.411 1.55.584 2.35 1.603.802 1.049 1.648 2.189 2.425 2.021.776-.168.675-1.648.556-3.134-.14-1.576-.304-3.264.44-3.674.743-.411 1.716 1.046 2.675 2.511.958 1.486 1.967 3.077 2.744 2.909z" />
+ d="M27.344 137.645c.829.175 1.862-1.452 2.84-2.969.937-1.428 1.886-2.85 2.585-2.468.7.381.537 2.032.399 3.575-.122 1.524-.226 3.042.602 3.217.828.174 1.696-.991 2.515-2.061.78-.992 1.566-1.962 2.266-1.58.7.381.699 1.581.717 2.687.039 1.078.099 2.134.928 2.308.829.175 1.53-.528 2.188-1.152.624-.555 1.249-1.074 1.948-.693.7.381.861 1.13 1.036 1.8.198.631.425 1.225 1.253 1.4.83.174 1.365-.067 1.863-.244.467-.119.93-.187 1.629.194l.005-.013c-.745-.411-1.218-.339-1.698-.214-.488.177-1.011.415-1.787.247-.776-.168-.998-.746-1.194-1.359-.18-.683-.345-1.447-1.09-1.858-.744-.41-1.384.123-2.024.695-.644.613-1.33 1.302-2.106 1.134-.776-.168-.836-1.197-.875-2.247-.02-1.129-.02-2.355-.764-2.765-.744-.411-1.55.584-2.35 1.603-.802 1.049-1.648 2.189-2.424 2.021-.777-.168-.675-1.648-.558-3.134.14-1.576.305-3.264-.438-3.674-.744-.411-1.716 1.046-2.676 2.511-.957 1.486-1.968 3.077-2.743 2.909l-.047.13" />
+ d="M27.344 137.645c.829.175 1.862-1.452 2.84-2.969.937-1.428 1.886-2.85 2.585-2.468.7.381.537 2.032.399 3.575-.122 1.524-.226 3.042.602 3.217.828.174 1.696-.991 2.515-2.061.78-.992 1.566-1.962 2.266-1.58.7.381.699 1.581.717 2.687.039 1.078.099 2.134.928 2.308.829.175 1.53-.528 2.188-1.152.624-.555 1.249-1.074 1.948-.693.7.381.861 1.13 1.036 1.8.198.631.425 1.225 1.253 1.4.83.174 1.365-.067 1.863-.244.467-.119.93-.187 1.629.194l.005-.013c-.745-.411-1.218-.339-1.698-.214-.488.177-1.011.415-1.787.247-.776-.168-.998-.746-1.194-1.359-.18-.683-.345-1.447-1.09-1.858-.744-.41-1.384.123-2.024.695-.644.613-1.33 1.302-2.106 1.134-.776-.168-.836-1.197-.875-2.247-.02-1.129-.02-2.355-.764-2.765-.744-.411-1.55.584-2.35 1.603-.802 1.049-1.648 2.189-2.424 2.021-.777-.168-.675-1.648-.558-3.134.14-1.576.305-3.264-.438-3.674-.744-.411-1.716 1.046-2.676 2.511-.957 1.486-1.968 3.077-2.743 2.909z" />
+ d="M46.559 100.736a2.14 2.14 0 1 0-4.267-.341 2.14 2.14 0 0 0 4.267.341" />
+ d="M46.559 100.736a2.14 2.14 0 1 0-4.267-.341 2.14 2.14 0 0 0 4.267.341z" />
+ d="M55.895 108.413a3.668 3.668 0 1 0-7.21-1.357 3.668 3.668 0 0 0 7.21 1.357z" />
+ d="M26.564 126.332s11.78 1.67 15.93 2.078c4.158.41 10.256.461 12.623.461-.14-13.719.131-29.412-.01-43.134" />
+ d="M20.998 69.607c0-.559-.135-1.04-.405-1.442-.27-.402-.675-.756-1.215-1.061-.216-.126-.727-.387-1.533-.779-.904-.441-1.395-.663-1.474-.663-.01 0-.319.244-.928.733-.343.273-.665.468-.965.585-.3.118-.628.222-.987.315s-.7.14-1.024.14v.22c.412.305.786.615 1.12.929.393.373.657.56.795.56.432 0 .993-.153 1.68-.457.502-.216.865-.408 1.09-.575.226-.167.438-.373.634-.619.128-.157.241-.235.34-.235.137 0 .254.085.353.257.098.172.148.37.148.596 0 .57-.463 1.109-1.386 1.62l-2.593 1.353c-.943.609-1.414 1.305-1.414 2.09 0 .392.112.756.338 1.09.314.47.835.858 1.562 1.162 1.69.716 2.613 1.074 2.77 1.074.03 0 .265-.243.707-.73.236-.262.472-.477.708-.644a2.32 2.32 0 0 1 .5-.28c.58-.255.88-.388.9-.398-.089-.087-.393-.264-.914-.53a71.693 71.693 0 0 0-.781-.383l-.324.074c-.51.137-.938.294-1.282.471a2.455 2.455 0 0 0-.987 1.017c-.089.157-.187.235-.295.235-.138 0-.28-.083-.427-.25a1.072 1.072 0 0 1-.266-.72c0-.217.565-.6 1.695-1.15a24.334 24.334 0 0 0 1.562-.823c.855-.51 1.41-.898 1.665-1.163.422-.432.633-.97.633-1.619" />
+ d="M25.729 72.783c-.325-.412-.604-.69-.84-.832-.236-.142-.55-.214-.943-.214-.197 0-.376.03-.538.088-.162.06-.351.162-.568.31a1.5 1.5 0 0 1-.14-.398 2.63 2.63 0 0 1-.051-.56c0-.679.207-1.38.619-2.109a5.317 5.317 0 0 1 1.945-1.99c-.04-.089-.263-.347-.67-.774-.408-.428-.652-.642-.73-.642a.765.765 0 0 0-.177.074c-.324.187-.683.51-1.076.972-.392.461-.672.905-.84 1.332-.167.427-.25.93-.25 1.509 0 .746.177 1.463.53 2.149.236.462.516.855.84 1.178.197.206.344.358.443.457.324.304.54.456.648.456.137-.253.295-.474.471-.663.177-.19.374-.284.59-.284.147 0 .304.05.471.147h.265v-.206" />
+ d="M31.416 69.688c0-.844-.191-1.723-.574-2.636-.462-1.12-1.105-1.941-1.93-2.461l-.06.102c.226.334.425.806.597 1.415.172.61.258 1.34.258 2.196 0 .629-.08 1.282-.24 1.96-.221.943-.552 1.58-.994 1.915h-.195V65.71H26.23v9.962l1.697.663h.35v-3.552h.252c.287.197.504.344.652.443.454.294.715.441.784.441.09-.107.163-.201.222-.28.375-.51.672-1.085.89-1.724.127-.383.201-.618.221-.707.079-.344.118-.767.118-1.268" />
+ d="M34.566 67.11l-.044 3.536c-.285-.097-.518-.335-.7-.714-.182-.378-.273-.685-.273-.921 0-.412.096-.842.288-1.29.191-.447.366-.669.523-.669.039.02.108.039.206.058zm2.166-.632c0-.07-.201-.242-.604-.517-.403-.275-.639-.413-.707-.413-.148 0-.31.142-.486.428-.06.097-.148.255-.266.47a3.467 3.467 0 0 1-.751-.367c-.511-.314-.791-.472-.84-.472-.08 0-.212.12-.398.354-.462.579-.693 1.302-.693 2.166 0 .393.037.717.111.973.073.254.292.62.655 1.09.305.393.718.698 1.238.914.413.177.62.328.62.457 0 .206-.153.415-.458.625-.305.212-.505.317-.604.317-.04 0-.152-.03-.339-.088a1.611 1.611 0 0 0-.457-.089.896.896 0 0 0-.42.104c-.132.068-.198.172-.198.31 0 .186.088.28.265.28.059 0 .182-.026.369-.075a.627.627 0 0 1 .162-.029c.156 0 .421.09.795.266.374.177.751.365 1.135.563.157 0 .451-.188.884-.56.49-.423.736-.796.736-1.12v-5.013c0-.049.04-.157.119-.324.02-.05.063-.133.132-.25" />
+ d="M40.55 75.612c0-.078-.105-.209-.316-.39-.211-.182-.371-.273-.479-.273-.06 0-.221.104-.486.31-.138.108-.236.162-.296.162-.038 0-.08-.025-.125-.073a2.335 2.335 0 0 0-.095-.104c.262-.314.432-.566.51-.752.01-.03.053-.196.131-.501.049-.186.112-.309.19-.368a.424.424 0 0 1 .262-.088.666.666 0 0 0 .248-.03c.04-.02.059-.098.059-.236 0-.196-.101-.314-.302-.353-.202-.039-.303-.172-.303-.398v-6.911h-1.974v7.118c-.177.107-.3.191-.369.25-.127.098-.225.27-.295.515.151.08.3.126.445.14.146.015.219.121.219.317 0 .276-.084.477-.251.605a.307.307 0 0 0-.132.25c.03.049.063.089.103.118.236.225.62.486 1.15.781.402.226.77.397 1.104.516.05.02.113.039.192.058.177-.108.31-.191.398-.25.274-.197.412-.334.412-.413" />
+ d="M44.617 75.612c0-.078-.105-.209-.316-.39-.212-.182-.371-.273-.48-.273-.058 0-.22.104-.486.31-.137.108-.235.162-.294.162-.04 0-.082-.025-.125-.073a2.974 2.974 0 0 0-.096-.104c.262-.314.432-.566.51-.752.01-.03.053-.196.131-.501.049-.186.112-.309.19-.368a.426.426 0 0 1 .262-.088.663.663 0 0 0 .248-.03c.04-.02.058-.098.058-.236 0-.196-.1-.314-.301-.353-.202-.039-.303-.172-.303-.398v-6.911h-1.974v7.118c-.177.107-.3.191-.368.25-.129.098-.227.27-.296.515.151.08.3.126.445.14.146.015.219.121.219.317 0 .276-.084.477-.25.605a.307.307 0 0 0-.133.25c.03.049.063.089.103.118.236.225.62.486 1.15.781.402.226.77.397 1.104.516.05.02.113.039.192.058.177-.108.309-.191.398-.25.275-.197.412-.334.412-.413" />
+ d="M47.427 70.617c0 .06-.093.236-.28.53-.255.404-.477.728-.663.973h-.147a8.751 8.751 0 0 1-.25-.744 2.191 2.191 0 0 1-.104-.538c0-.315.037-.597.11-.847.075-.251.175-.376.302-.376.119 0 .32.148.605.443.285.294.427.48.427.56zm1.621.84c0-.306-.39-.792-1.171-1.46-.781-.669-1.172-1.052-1.172-1.15 0-.276.634-.9 1.9-1.872-.048-.09-.289-.32-.721-.694-.432-.373-.683-.56-.752-.56-.068 0-.218.084-.449.25a6.22 6.22 0 0 0-.744.65 4.318 4.318 0 0 0-1.002 1.577c-.187.5-.28.963-.28 1.386 0 .285.069.624.206 1.018.137.392.33.78.575 1.164.127.196.442.56.943 1.09.56.59.913.885 1.06.885.03 0 .148-.138.354-.413.167-.236.34-.472.516-.707.04-.04.162-.212.369-.516.245-.364.368-.58.368-.649" />
+ d="M55.03 66.67c0-.118-.215-.344-.648-.679-.432-.335-.692-.502-.78-.502-.08 0-.232.157-.457.473-.256.345-.384.63-.384.856v4.68c0 .139-.05.313-.147.525-.098.213-.216.318-.354.318-.078 0-.152-.049-.22-.147-.07-.098-.104-.177-.104-.236V65.71h-2.048v6.322c0 .137-.062.287-.184.45a2.283 2.283 0 0 0-.184.257c0 .059.255.226.766.501.51.274.8.412.87.412.146 0 .31-.154.493-.463.182-.31.307-.464.375-.464.118 0 .462.154 1.032.464.57.309.864.463.884.463.118 0 .265-.128.442-.383.216-.305.324-.635.324-.99v-4.693c0-.118.035-.259.104-.421.068-.163.142-.327.22-.495" />
+ d="M59.097 69.056c0 .834-.224 1.659-.67 2.475-.357.658-.64 1.026-.848 1.104 0-.864-.005-1.854-.015-2.968-.01-1.115-.014-1.74-.014-1.88 0-.117.103-.279.31-.485.205-.206.348-.31.427-.31.245 0 .442.237.59.707.146.472.22.924.22 1.357zm1.621 1.208c0-.59-.118-1.155-.354-1.695-.353-.815-.958-1.478-1.812-1.989a30.799 30.799 0 0 0-.678-.457c-.462-.305-.737-.457-.825-.457-.138 0-.426.194-.863.582-.436.388-.655.666-.655.833v7.824c0 .158.255.336.766.538.511.201.894.292 1.15.273v-2.328a.492.492 0 0 1 .22-.09c.08 0 .32.085.722.252.404.167.624.25.664.25.216 0 .525-.33.928-.987.491-.806.737-1.656.737-2.549" />
+ d="M66.582 66.551c0-.099-.232-.27-.7-.517-.466-.245-.74-.368-.818-.368-.117 0-.255.094-.412.28-.158.187-.314.378-.472.575-.088 0-.397-.143-.928-.427-.53-.285-.83-.428-.899-.428-.126 0-.285.125-.471.376-.187.25-.28.51-.28.774v4.91c0 .077-.04.21-.118.397-.079.187-.158.383-.236.59.04.03.068.058.089.088.118.127.22.231.31.31.126.127.255.26.382.398.246.246.399.368.457.368.088 0 .26-.147.516-.442.314-.364.47-.717.47-1.061v-4.91c0-.128.063-.248.186-.36.121-.114.229-.17.317-.17.039 0 .078.01.117.037.039.024.068.041.088.05v6.646h2.02v-6.365c0-.187.064-.354.19-.5.128-.149.192-.232.192-.25" />
+ d="M71.12 72.518c0-.088-.092-.24-.277-.457-.37-.422-.599-.633-.687-.633-.058 0-.146.068-.262.206a2.075 2.075 0 0 1-.468.427v-6.395h-2.048v6.396c0 .088-.052.211-.155.369a1.24 1.24 0 0 1-.302.338c.048.108.253.3.611.574.359.275.613.413.759.413.118 0 .266-.094.443-.28.176-.187.358-.374.544-.56.08 0 .258.14.538.42.28.28.43.42.45.42.196-.138.339-.25.427-.339.286-.295.427-.595.427-.9" />
+ d="M74.08 67.229v4.405c-.128.176-.226.31-.295.398-.226.275-.383.412-.471.412-.197 0-.398-.353-.605-1.06-.098-.345-.148-.605-.148-.78 0-.65.143-1.279.428-1.887.383-.817.747-1.312 1.091-1.488zm2.549-1.831c0-.52-.318-1.022-.95-1.508-.634-.486-1.266-.73-1.894-.73-.344 0-.698.075-1.062.222-.363.147-.545.32-.545.516.11.167.197.29.266.37.226.244.456.367.693.367.157-.236.329-.448.515-.634a.938.938 0 0 1 .693-.28c.225 0 .452.096.678.288.225.191.338.415.338.67 0 .128-.181.452-.545.972-.363.52-.585.782-.663.782-.108 0-.31-.119-.604-.354-.294-.236-.52-.353-.678-.353-.206 0-.56.357-1.06 1.074-.6.852-.9 1.686-.9 2.501 0 .716.374 1.54 1.12 2.472.266.333.712.754 1.341 1.258.63.505.983.758 1.062.758.392-.344.682-.603.869-.78.589-.56.883-.923.883-1.09v-5.195c0-.099.075-.27.222-.516.147-.245.22-.515.22-.81" />
+ d="M82.887 70.617c0 .06-.094.236-.28.53-.255.404-.477.728-.664.973h-.147a8.851 8.851 0 0 1-.25-.744c-.07-.24-.103-.42-.103-.538 0-.315.037-.597.11-.847.074-.251.174-.376.303-.376.117 0 .318.148.603.443.285.294.428.48.428.56zm1.62.84c0-.306-.39-.792-1.171-1.46-.781-.669-1.171-1.052-1.171-1.15 0-.276.633-.9 1.9-1.872-.048-.09-.29-.32-.721-.694-.433-.373-.684-.56-.752-.56-.069 0-.219.084-.45.25a6.22 6.22 0 0 0-.744.65 4.319 4.319 0 0 0-1.001 1.577c-.187.5-.281.963-.281 1.386 0 .285.07.624.206 1.018.138.392.33.78.576 1.164.127.196.442.56.943 1.09.56.59.913.885 1.06.885.03 0 .148-.138.354-.413.167-.236.339-.472.515-.707.04-.04.162-.212.37-.516.245-.364.368-.58.368-.649" />
+ d="M87.16 67.316c0-.137-.147-.442-.442-.913-.324-.51-.57-.766-.738-.766-.126 0-.33.105-.61.316-.28.212-.42.361-.42.45.206.373.363.649.471.826.344.55.6.825.767.825.156 0 .377-.104.663-.31.206-.147.31-.29.31-.428" />
+ d="M96.118 75.273c0-.422-.26-1.227-.78-2.416-.374-.805-.742-1.606-1.106-2.402l-1.046-2.401-.604-1.326c-.256-.532-.452-.885-.59-1.062-.117.118-.255.358-.412.723-.07.166-.285.721-.648 1.665-.393 1.021-.776 1.989-1.15 2.902a82.22 82.22 0 0 0-1.193 3.197c-.374 1.052-.673 1.774-.9 2.166v.193h2.904c.118-.157.3-.522.545-1.09.246-.571.546-1.308.9-2.211l.765-2.004c.265-.688.461-1.105.59-1.253.167.187.446.736.84 1.65.471 1.11.706 1.956.706 2.535 0 .56-.196.948-.588 1.164-.257.137-.595.207-1.018.207l-.044.132c0 .206.104.418.31.633.275.295.638.443 1.09.443.393 0 .73-.141 1.009-.42.28-.28.42-.622.42-1.025" />
+ d="M98.772 67.316c0-.137-.148-.442-.443-.913-.324-.51-.57-.766-.737-.766-.127 0-.331.105-.611.316-.28.212-.42.361-.42.45.206.373.363.649.471.826.344.55.6.825.767.825.156 0 .378-.104.663-.31.206-.147.31-.29.31-.428" />
+
+ Photo Booth
+
+
+
+
+
+
+
+
+
+ ◦ wrote experimental capture program
+ ◦ evaluated and bought HW components
+ ◦ dry run
+ ◦ designed cabinet
+ ◦ built cabinet
+ ◦ added LED effects, flash etc.
+
+
+ ◦ Name origin are actual BOOTHs (train station)
+ ◦ Japan: Purikura (プリクラ) machines since 1995
+ ◦ automatic device that takes pictures of you
+ ◦ camera with self-timer or webcam
+ ◦ usually equipped with a preview screen
+ ◦ sometimes equipped with a printer
+ ◦ sometimes equipped with social media sharing
+ ◦ usually saves the photos
+ ◦ sometimes equipped with funny props
+ ◦ typical use cases:
+ weddings, birthday parties, corporate events, fairs
+
+
+ Why would you need one
+ ◦ it's fun to use
+ ◦ you can make money with it
+ (professional photographers
+ charge up to 1500€ for a day)
+
+ why would you wanna build one by yourself
+ ◦ it's fun to build
+ ◦ you can make money with it
+ ◦ you learn a lot
+ ◦ multi-disciplinary project
+ ◦ is ideal for hacker/maker space teamwork
+
+
+ What is a photo booth?
+
+
+ What is a photo booth?
+
+
+ Motivation
+
+
+ Motivation
+
+
+ Our approach
+
+
+ Our approach
+
+
+ Building a
+
+ inkscape:label="Front"
+ inkscape:groupmode="layer"
+ id="layer_front"
+ sodipodi:insensitive="true">
+ transform="matrix(1.5935,0,0,1.5935,-122.00766,-936.63)">
-
-
+
+
-
-
+
+
-
-
+
-
+
-
+
-
+ id="polygon9000" />
-
+ d="m 377.162,134.538 c -0.93,11.817 -9.267,20.798 -18.611,20.06 -9.349,-0.738 -16.168,-10.917 -15.232,-22.735 0.931,-11.817 9.268,-20.799 18.612,-20.06 9.347,0.739 16.168,10.916 15.231,22.735 z"
+ id="path9005" />
+ cy="133.2"
+ rx="12.528"
+ ry="15.841"
+ id="ellipse9007" />
+
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- init
- preview
- countdown
- take photo
- print n copies
- upload photo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- photoboothuser interfacesoftware(simplified)
-
-
-
-
-
-
- CAPTURE_VIDEO
-
-
-
-
-
- CAPTURE_
- PRETRIGGER
-
-
-
-
-
- CAPTURE_PHOTO
-
-
-
-
-
- photo_booth_preview
-
-
-
-
-
- photo_booth_
- snapshot_start
-
-
-
-
-
- photo_booth_snapshot_taken
-
-
-
-
-
- photo_booth_button_print_clicked
-
-
-
-
-
- photo_booth_print
-
-
-
-
-
- CAPTURE_INIT
-
-
-
-
-
-
-
-
-
-
-
-
-
- gp_camera_
- capture_preview
-
-
-
-
-
-
-
-
-
-
- writespreviewJPEG
- to MOVIEPIE
-
-
-
-
-
- fdsrc
- video_bin
-
-
-
-
-
- capture_thread
-
-
-
-
-
- libgphoto
-
-
-
-
-
- GStreamer
-
-
-
-
-
- PhotoBooth
-
-
-
-
-
- photo_booth_
- snapshot_prepare
-
-
-
-
-
- photo_booth_
- snapshot_trigger
-
-
-
-
-
- photo_booth_led_flash
-
-
-
-
-
- photo_booth_led_black
-
-
-
-
-
- photo_booth_led_countdown
-
-
-
-
-
- photo_booth_led_printer
-
-
-
-
-
- photobooth_led
-
-
-
-
-
- (photo_booth_take_photo)
- gp_camera_capture
- gp_camera_file_get
- gp_file_get_data_and_size
- gp_camera_file_delete
-
-
-
-
-
- photo_booth_cam_close
- photo_booth_cam_init
-
-
-
-
-
-
- photo_booth_catch_photo_buffer
- showprint&cancelbuttons
- show copies slider
-
-
-
-
-
- photo_booth_catch_print_buffer
-
-
-
-
-
- photo_booth_
- process_photo_remove_elements
-
-
-
-
-
- main()
- photo_booth_new
- photo_booth_load_settings
- photo_booth_class_init
-
-
-
-
-
- photo_booth_activate /
- photo_booth_open
-
-
-
-
-
- photo_booth_setup_gstreamer
-
-
-
-
-
- build_video_bin
-
-
-
-
-
- build_photo_bin
-
-
-
-
-
- photo_booth_video_widget_ready
-
-
-
-
-
- photo_booth_setup_window
-
-
-
-
-
- photo_booth_bus_callback
-
-
-
-
-
- set capsfilter dimensions
- set video-overlay dimensions
-
-
-
-
-
- photo_booth_preview_ready
-
-
-
-
-
- gp_file_new_from_fd
-
-
-
-
-
-
-
-
-
- start new capture_thread
-
-
-
-
-
-
-
-
-
-
-
-
-
- photo_booth_begin_print
-
-
-
-
-
- photo_booth_draw_page
-
-
-
-
-
-
-
-
-
- photo_booth_print_done
-
-
+ style="display:inline;fill:#dedede;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;enable-background:new" />
+ id="path123550"
+ d="M 387.60948,486.33741 356.711,493.7 l -0.3,3.893 30.65588,-7.66139 z"
+ style="display:inline;fill:#dedede;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;enable-background:new" />
+
+ d="M 456.24,86.7 245.77,93 138,84.42 329.63,79.732 Z"
+ id="Roof"
+ stroke-miterlimit="10" />
+
+
+ style="fill:#ffffb0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
+ stroke-miterlimit="10"
+ id="LED_Kasten">
+ d="m 400.026,428.85547 -3.208,-4.56547 -77.296,15.987 3.209,4.56647 z"
+ id="polygon9026" />
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- photo_bin src pad
-
-
-
-
-
-
-
-
-
- appsink in photo_bin
-
-
-
-
-
-
- gst_pad_add_probe
- g_signal_connect (appsink, "new-sample"...)
-
-
- g_signal
-
-
- poll timeout
- with preview fps
-
-
-
-
-
-
-
-
-
- CAPTURE_PAUSED
-
-
-
-
-
-
-
-
-
-
-
-
-
- photo_booth_
- background_clicked
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- photo_booth_
- button_cancel_clicked
-
-
-
-
-
- photo_booth_cancel
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- appsrc
- photo_bin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- photo_booth_
- process_photo_plug_elements
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ d="m 280.86,329.28 -4.44,-153.96 155.64,-11.7 -1.02,141.78 z"
+ id="Monitor"
+ stroke-miterlimit="10" />
+
+
+
+
+
+
photoboothsoftwareflowchart(simplified)
+ transform="rotate(-92.276443,-0.83498527,2.8382546)"
+ id="text10937"
+ y="217.77486"
+ x="-499.90317"
+ style="font-size:70.55599976px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';fill:#000000;filter:url(#filter_blur_large);opacity:0.5;"
+ font-size="70.556">
+ Software
+
+ Software
-
+ x="-503.90186"
+ y="211.79042">Software
+
+
+ prerequisite: use FREE software only
-
-
-
+ y="191.42001"
+ x="364.21545"
+ id="tspan233163-8-3">prerequisite: use FREE software only
+
+
+
+
libgphoto2
-
-
-
+ id="title4709">
+ libgphoto2
+
+
+
+
GStreamer
-
-
+ id="title4707">
+ GStreamer
+
+
+
GTK+
-
+ id="title4705">
+ GTK+
+
+
Hardware
+ font-size="10.583"
+ id="text376678"
+ y="302.453"
+ x="446.78845"
+ style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle">
+ Hardware
+
Linux
+ font-size="10.583"
+ id="text376678-8"
+ y="280.259"
+ x="446.68546"
+ style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle">
+ Linux
+
photobooth application
+ font-size="10.583"
+ id="text376678-8-1"
+ y="215.09801"
+ x="446.82745"
+ style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle">
+ photobooth application
+
libgphoto2
+ font-size="5.644"
+ id="text376742"
+ y="235.166"
+ x="371.00845"
+ style="font-size:5.64400005px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal'">
+ libgphoto2
+
GStreamer
+ font-size="5.644"
+ id="text376742-4"
+ y="235.08"
+ x="431.46844"
+ style="font-size:5.64400005px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal'">
+ GStreamer
+
+ ◦ multi-platform toolkit for
+ multi-platform toolkit forcreating graphical user interfaces
+ creating graphical user interfaces◦ created 1996 for GIMP
+ * created 1996 for GIMP
+ GLib
+ GLib◦ low-level core library
+ * low-level core library◦ data structures and handling for C
+ * data structures and handling for C◦ GObject system
+ * GObject system◦ event-driven programming
+ * event-driven programming◦ threads
+ * threads
+ GTK Widget Toolkit
+ GTK Widget Toolkit* Glade GUI builder
+ font-weight="700"
+ id="tspan376885"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.05801582px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="255.25104"
+ x="492.32629">◦ Glade GUI builder
+
GTK+
+ font-size="5.644"
+ id="text376742-4-2"
+ y="235.08"
+ x="499.89447"
+ style="font-size:5.64400005px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal'">
+ GTK+
+
+ * multimedia framework◦ multimedia framework
+ * pipeline-based◦ pipeline-based
+ * media-agnostic◦ media-agnostic
+ * countless plugins◦ countless plugins
+ * it's super cool, you should use it!◦ it's super cool, you should use it!
+
+ $ gphoto2 --capture-movie --stdout | \$ gphoto2 --capture-movie --stdout | \
+ gst-launch-1.0 fdsrc ! decodebin ! autovideosink
+ font-weight="700"
+ id="tspan377182"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.05801582px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="248.63852"
+ x="431.2084">gst-launch-1.0 fdsrc ! decodebin ! autovideosink
+
+ * abstracts (usb) port communication and camera protocol◦ abstracts (USB) port communication and camera protocol
+ * high level api for accessing files on the camera ◦ high level API for accessing files on the camera
+ and remote controlling the camera◦ and remote controlling the camera
+ * live view is super crappy! ◦ live view is super crappy!
+ * api documentation is non-existant◦ API documentation is non-existant
+ * not GLib◦ not GLib
+
+ $ gphoto2 --capture-image-and-download
+ id="tspan6371"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.05801582px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"
+ x="369.48361"
+ y="248.63864">$ gphoto2 --capture-image-and-download
+
+ Software Architecture
+
+
+ Software
+ x="362.04144"
+ y="176.07899"
+ style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal">Software Architecture
+
+
+
+
+ <GstPipeline>
+ photobooth-pipeline
+ [=] -> [=]
+
+ GstGtkSink
+ video-sink
+ [>]
+ parent=(GstPipeline) photobooth-pipeline
+ max-lateness=20000000
+ qos=TRUE
+ last-sample=((GstSample*) 0x7fd7e008eda0)
+ widget=((GtkGstWidget*) 0x188e110)
+ pixel-aspect-ratio=0/1
+
+ GstBin
+ photo-bin
+ [>] -> [>]
+ parent=(GstPipeline) photobooth-pipeline
+
+ GstAppSink
+ print-appsink
+ [-] -> [>]
+ parent=(GstBin) photo-bin
+ enable-last-sample=FALSE
+ eos=FALSE
+ emit-signals=TRUE
+
+ GstLcms
+ print-lcms
+ [>]
+ parent=(GstBin) photo-bin
+ qos=TRUE
+ dest-profile="CP955_F.icc"
+ preserve-black=TRUE
+
+ GstFileSink
+ photo-filesink
+ [-] -> [>]
+ parent=(GstBin) photo-bin
+ sync=FALSE
+ location="/home/fraxinas/Desktop/photobooth_0135.jpg"
+
+ GstJpegEnc
+ photo-encoder
+ [>]
+ parent=(GstBin) photo-bin
+
+ GstTee
+ photo-tee
+ [>]
+ parent=(GstBin) photo-bin
+ num-src-pads=3
+
+ GstGamma
+ photo-gamma
+ [>]
+ parent=(GstBin) photo-bin
+ qos=TRUE
+
+ GstVideoConvert
+ photo-convert
+ [>]
+ parent=(GstBin) photo-bin
+ qos=TRUE
+
+ GstGdkPixbufOverlay
+ photo-overlay
+ [>]
+ parent=(GstBin) photo-bin
+ qos=TRUE
+ location="photobooth_overlay_easterhegg_2017.png"
+ overlay-width=2100
+ overlay-height=1400
+
+ GstCapsFilter
+ photo-capsfilter
+ [>]
+ parent=(GstBin) photo-bin
+ caps=video/x-raw, width=(int)2100, height=(int)1400, framerate=(fraction)10/1
+
+ GstVideoScale
+ photo-scale
+ [>]
+ parent=(GstBin) photo-bin
+ qos=TRUE
+
+ GstImageFreeze
+ photo-freeze
+ [>]
+ parent=(GstBin) photo-bin
+
+ GstJpegDec
+ photo-decoder
+ [>]
+ parent=(GstBin) photo-bin
+
+ GstAppSrc
+ photo-appsrc
+ [>]
+ parent=(GstBin) photo-bin
+
+ Legend
+ Element-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing
+ Pad-Activation: [-] none, [>] push, [<] pull
+ Pad-Flags: [b]locked, [f]lushing, [b]locking; upper-case is set
+ Pad-Task: [T] has started task, [t] has paused task
+
+ sink
+ [>][bfb]
+
+ proxypad1
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+
+
+ video/x-raw
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ framerate: 10/1
+ format: BGRx
+
+ sink
+ [>][bfb]
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ format: { ARGB, BGRA, ABGR, ... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+
+ sink
+ [>][bfb]
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ image/jpeg
+ width: [ 16, 65535 ]
+ height: [ 16, 65535 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ sof-marker: { 0, 1, 2, 9 }
+
+ sink
+ [>][bfb]
+
+ src_0
+ [>][bfb]
+
+
+ video/x-raw
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ framerate: 10/1
+ format: BGRx
+
+ src_1
+ [>][bfb]
+
+
+ video/x-raw
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ video/x-raw
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ framerate: 10/1
+ format: BGRx
+
+ src_2
+ [>][bfb]
+
+
+ video/x-raw
+ format: { ARGB, BGRA, ABGR, ... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ video/x-raw
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ framerate: 10/1
+ format: BGRx
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ framerate: 10/1
+ format: BGRx
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ framerate: 10/1
+ format: BGRx
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ format: I420
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ chroma-site: mpeg2
+ colorimetry: 1:4:0:0
+ framerate: 10/1
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ format: I420
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ chroma-site: mpeg2
+ colorimetry: 1:4:0:0
+ framerate: 10/1
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ format: I420
+ width: 2100
+ height: 1400
+ interlace-mode: progressive
+ pixel-aspect-ratio: 374/375
+ chroma-site: mpeg2
+ colorimetry: 1:4:0:0
+ framerate: 10/1
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb][T]
+
+
+ video/x-raw
+ format: I420
+ width: 2992
+ height: 2000
+ interlace-mode: progressive
+ pixel-aspect-ratio: 1/1
+ chroma-site: mpeg2
+ colorimetry: 1:4:0:0
+ framerate: 10/1
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ format: I420
+ width: 2992
+ height: 2000
+ interlace-mode: progressive
+ pixel-aspect-ratio: 1/1
+ chroma-site: mpeg2
+ colorimetry: 1:4:0:0
+ framerate: 0/1
+
+ src
+ [>][bfb][t]
+
+
+ image/jpeg
+ ANY
+
+ GstGtkSink
+ video-sink
+ [-] -> [>]
+ parent=(GstPipeline) photobooth-pipeline
+ max-lateness=20000000
+ qos=TRUE
+ widget=((GtkGstWidget*) 0x188e110)
+ pixel-aspect-ratio=0/1
+
+ GstBin
+ video-bin
+ [>]
+ parent=(GstPipeline) photobooth-pipeline
+
+ GstCapsFilter
+ mjpeg-capsfilter
+ [>]
+ parent=(GstBin) video-bin
+ caps=image/jpeg, width=(int)640, height=(int)424, framerate=(fraction)24/1, pixel-asp…
+
+ GstGdkPixbufOverlay
+ video-overlay
+ [>]
+ parent=(GstBin) video-bin
+ qos=TRUE
+ location="photobooth_overlay_easterhegg_2017.png"
+
+ GstCapsFilter
+ video-capsfilter
+ [>]
+ parent=(GstBin) video-bin
+ caps=video/x-raw, width=(int)640, height=(int)424
+
+ GstVideoConvert
+ mjpeg-videoconvert
+ [>]
+ parent=(GstBin) video-bin
+ qos=TRUE
+
+ GstVideoScale
+ mjpeg-videoscale
+ [>]
+ parent=(GstBin) video-bin
+ qos=TRUE
+
+ GstJpegDec
+ mjpeg-decoder
+ [>]
+ parent=(GstBin) video-bin
+
+ GstFdSrc
+ mjpeg-fdsrc
+ [>]
+ parent=(GstBin) video-bin
+ blocksize=65536
+ do-timestamp=TRUE
+ fd=5
+
+ sink
+ [>][bfb]
+
+ proxypad0
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+
+
+ video/x-raw
+ format: { BGRx, BGRA }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ ANY
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ ANY
+ video/x-raw
+ format: { RGBx, RGB, BGR, BG... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ format: { RGBx, RGB, BGR, BG... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ ANY
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ ANY
+ video/x-raw
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ video/x-raw(ANY)
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ video/x-raw(ANY)
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ video/x-raw
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 32767 ]
+ height: [ 1, 32767 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ video/x-raw(ANY)
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 32767 ]
+ height: [ 1, 32767 ]
+ framerate: [ 0/1, 2147483647/1 ]
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ video/x-raw
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 32767 ]
+ height: [ 1, 32767 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ video/x-raw(ANY)
+ format: { I420, YV12, YUY2, ... }
+ width: [ 1, 32767 ]
+ height: [ 1, 32767 ]
+ framerate: [ 0/1, 2147483647/1 ]
+ video/x-raw
+ format: { I420, RGB, BGR, RG... }
+ width: [ 1, 2147483647 ]
+ height: [ 1, 2147483647 ]
+ framerate: [ 0/1, 2147483647/1 ]
+
+ sink
+ [>][bfb]
+
+ src
+ [>][bfb]
+
+
+ image/jpeg
+
+ src
+ [>][bfb][T]
+
+
+ ANY
+
+ gstreamer pipelines
+
+
+ gstreamer pipelines
+
+
+
+ GStreamer Pipelines 1
+
-
-
-
-
-
- load configuration from ini file:ui template, overlay image, countdown duration, stringssettings for sounds, camera,printer and copies, upload apiautomatically start previewtouching the screenstarts countdownafter exposure asknumber of copiesprint or cancelupload (to imgur/facebook) or cancelstatus bar shows time, statusand remaining prints
+ transform="rotate(-14.981588)"
+ y="747.85236"
+ x="160.14362"
+ height="32.959064"
+ width="212.78593"
+ id="rect_gst_pipelines"
+ style="display:inline;visibility:hidden;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.65842211;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:23;stroke-opacity:1" />
+
+
+
+
+
+
+
+
+
+ init
+ preview
+ countdown
+ take photo
+ print n copies
+ upload photo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ load configuration from ini file:
+ ui template, overlay image,
+ save path, countdown duration,
+ localization strings,
+ settings for sounds, camera,
+ printer and copies, upload api
+
+
+ when a camera is detected,
+ preview (live video)
+ starts automatically
+
+
+
+ touching the screen
+ starts countdown
+
+
+
+
+ after exposure ask
+ number of copies
+
+
+
+
+ print or cancel
+
+
+ upload (to imgur/facebook)
+ or cancel
+
+
+ status bar shows time, status
+ and remaining prints
+
+
+
+ photobooth user interface software (simplified)
+
+
+ photobooth user interface software (simplified)
+
+
+
+
+
+
+
+ CAPTURE_VIDEO
+
+
+
+ CAPTURE_PHOTO
+
+
+
+ photo_booth_preview
+
+
+
+ photo_booth_
+ snapshot_start
+
+
+
+ photo_booth_snapshot_taken
+
+
+
+ photo_booth_button_print_clicked
+
+
+
+ photo_booth_print
+
+
+
+ CAPTURE_INIT
+
+
+
+
+
+
+
+ gp_camera_
+ capture_preview
+
+
+
+
+
+
+ writespreviewJPEG
+ to MOVIEPIE
+
+
+
+ fdsrc
+ video_bin
+
+
+
+ capture_thread
+
+
+
+ libgphoto
+
+
+
+ GStreamer
+
+
+
+ PhotoBooth
+
+
+
+ photo_booth_
+ snapshot_prepare
+
+
+
+ photo_booth_
+ snapshot_trigger
+
+
+
+ photo_booth_led_flash
+
+
+
+ photo_booth_led_black
+
+
+
+ photo_booth_led_countdown
+
+
+
+ photo_booth_led_printer
+
+
+
+ photobooth_led
+
+
+
+ (photo_booth_take_photo)
+ gp_camera_capture
+ gp_camera_file_get
+ gp_file_get_data_and_size
+ gp_camera_file_delete
+
+
+
+ photo_booth_catch_photo_buffer
+ showprint&cancelbuttons
+ show copies slider
+
+
+
+ photo_booth_catch_print_buffer
+
+
+
+ photo_booth_
+ process_photo_remove_elements
+
+
+
+ main()
+ photo_booth_new
+ photo_booth_load_settings
+ photo_booth_class_init
+
+
+
+ photo_booth_activate /
+ photo_booth_open
+
+
+
+ photo_booth_setup_gstreamer
+
+
+
+ build_video_bin
+
+
+
+ build_photo_bin
+
+
+
+ photo_booth_video_widget_ready
+
+
+
+ photo_booth_setup_window
+
+
+
+ photo_booth_bus_callback
+
+
+
+ set capsfilter dimensions
+ set video-overlay dimensions
+
+
+
+ photo_booth_preview_ready
+
+
+
+ gp_file_new_from_fd
+
+
+
+
+
+ start new capture_thread
+
+
+
+
+
+
+
+ photo_booth_begin_print
+
+
+
+ photo_booth_draw_page
+
+
+
+
+
+ photo_booth_print_done
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ photo_bin src pad
+
+
+
+
+
+ appsink in photo_bin
+
+
+
+
+ gst_pad_add_probe
+ g_signal_connect (appsink, "new-sample"...)
+
+
+ g_signal
+
+
+ poll timeout
+ with preview fps
+
+
+
+
+
+ CAPTURE_PAUSED
+
+
+
+
+
+ photo_booth_
+ background_clicked
+
+
+
+
+
+
+
+
+ photo_booth_
+ button_cancel_clicked
+
+
+
+ photo_booth_cancel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ appsrc
+ photo_bin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ photo_booth_
+ process_photo_plug_elements
+
+
+
+
+
+
+
+
+ photo_booth_cam_close
+ photo_booth_cam_init
+
+
+
+ photo_booth_catch_photo_buffer runs 3 times,
+ driven by image frames passing photo_bin
+ 1. frame is displayed and will trigger plugging
+ tee ! color correction ! appsink
+ and tee ! jpegenc ! filesink elements
+ 2. frame will be processed by gst (saved on
+ disk, color matched and buffered for printing)
+ 3. frame will remove elements
+
+
+ 1.
+ 3.
+
+
+
+ CAPTURE_
+ PRETRIGGER
+
+
+
+
+
+ g_main_context_invoke
+
+
+ send command
+ to message pipe
+
+
+ photobooth
+ software
+ flowchart
+ (simplified)
+
+
+ photobooth
+ software
+ flowchart
+ (simplified)
+
+
+ id="layer_hardware"
+ inkscape:groupmode="layer"
+ transform="translate(0,59.266667)">
+
+ stroke-miterlimit="10"
+ id="layer_cabinet"
+ transform="matrix(1.53047,0,0,1.53047,1290.444,-130.202)">
-
-
-
-
-
-
-
-
-
-
-
-
-
+ style="fill:#695e3f" />
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:none" />
-
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#83754e" />
-
-
+
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#fffaa7" />
+ rx="7.1420002"
+ cy="126.765"
+ cx="382.32199"
+ transform="rotate(-179.015,382.11196,126.70168)"
+ id="Camera_Hole"
+ style="fill:#ffffff" />
+ style="fill:#aa9a65" />
+ inkscape:groupmode="layer"
+ id="layer_hardware_components"
+ transform="matrix(1.53047,0,0,1.53047,1290.444,-119.618)">
+ x="323.35699"
+ y="83.436996" />
+ id="layer_x5F_inside"
+ transform="translate(0,-6.915)">
-
-
-
+
-
+
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#fffaa7" />
-
-
+
-
+
-
+
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#2b622d" />
-
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#757575" />
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#ff0000" />
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#a1a1a1;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" />
+ ry="12.298"
+ rx="5.0619998"
+ cy="456.207"
+ cx="231.175"
+ transform="rotate(-4.513,231.15,456.35)"
+ style="fill:none" />
+ stroke-miterlimit="10"
+ id="Power_and_Harddrive_Platform"
+ style="stroke:#000000;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10">
-
-
+
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#fffaa7" />
-
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#9338da;fill-opacity:1" />
-
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#1a1a1a" />
-
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#fffaa7" />
+ stroke-miterlimit="10"
+ id="Camera_Platform"
+ style="stroke:#000000;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10">
-
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#0000bd;fill-opacity:1" />
-
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#695e3f" />
+ id="layer_x5F_compontent_x5F_frames"
+ transform="translate(0,-6.915)">
-
-
-
-
-
-
-
-
+
-
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
+ visibility="hidden"
+ style="display:inline;visibility:hidden"
+ inkscape:groupmode="layer"
+ id="layer_cabinet_wood"
+ transform="matrix(1.53047,0,0,1.53047,1290.444,-130.202)">
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ style="fill:#83754e" />
+
+
+
+ stroke-miterlimit="10"
+ id="Platform_2_"
+ style="stroke:#000000;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
+ font-size="25.4"
+ id="layer_hardware_overview">
+ Printer
+
+
+ Printer
+ x="1821.9611"
+ y="551.07397"
+ style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center">Printer
+
+ PC
+ Mainboard
+
+
+ PCMainboard
+ x="1757.7679"
+ y="265.37399"
+ style="line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;fill:#ffffff">PC
+ Mainboard
+
+ HDD
+
+
+ HDD
+ y="337.78201"
+ style="line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;fill:#7d1bda;fill-opacity:1"
+ id="tspan9247-6">HDD
+
ATXPSU
+ id="text10909"
+ y="314.53336"
+ x="1875.6884"
+ style="font-weight:400;line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle;filter:url(#filter_blur_large);fill:#808080;"
+ font-weight="400">
+ ATX
+ PSU
+
+ ATX
+ PSU
+
+
+ Camera
+
+
+ Camera
+ x="1794.536"
+ y="76.732002"
+ style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end">Camera
+
Arduino
+ id="text10893"
+ y="97.796333"
+ x="1912.5764"
+ style="line-height:125%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle;opacity:0.8;fill:#c0c0ff;fill-opacity:1;filter:url(#filter_blur_mid)">
+ Arduino
+
+ Arduino
+ x="1910.9889"
+ y="96.737999"
+ style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;fill:#0000bd;fill-opacity:1">Arduino
+
Touchscreen
+ id="text10903"
+ y="259.62219"
+ x="1873.5001"
+ style="line-height:31.69305325%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle;fill:#008000;filter:url(#filter_blur_large)"
+ transform="matrix(1,-0.06992681,0,1,0.52916667,0.52916667)">
+ Touch
+ screen
+
+
+ Touch
+ screen
+
-
- CameraDSLR camerashas a flash sync output (hot shoe)supported by libgphotobest achievable picture qualityalready existed (private property)Nikon D7200 + Canon EOS 600d
-
-
-
-
- bought "open-frame" TFT-touch displayturned out to be a Samtron 19" TFTplus seperate resistive sensor glassUSB controllerResolution 1280x1024VGA + broken HDMI
-
- PC componentsATX power supplyAMD AM2+ mainboardHDD old standard PCparts laying around
-
- Arduino Unocontrols WS2812 RGB LEDsring around the camera lens (to catch attention)and a a stripe that illuminates the photo output tray during printing
- needs to be photo quality, fast & quickonly feasible type is dye-sublimation(like used in kiosk applications)
- Mitsubishi CP9550DW
- + paper roll that it cuts into 4x6 prints (10x15 cm)+ takes < 15s per copy+ price is < 15 cents per copy+ instantly dry
- - expensive (>1000€) consider a used one!- Linux driver availability - large scale, heavy, noisy- need to take care of color matching
-
-
-
+
+
+ (almost any) DSLR camera
+ supported by libgphoto
+ best achievable picture quality
+ has a flash sync output (hot shoe)
+ via wireless remote control
+ already existing personal property
+ Nikon D7200 + Canon EOS 600d
+
+
+
+
+
+
+ bought "open-frame" TFT-touch display
+ turned out to be a Samtron 19" TFT
+ plus seperate resistive sensor glass
+ USB controller (xinput_calibrator)
+ Resolution 1280x1024
+ VGA + slightly broken HDMI
+
+
+
+ ◦ old standard PC components
+ ◦ ATX power supply
+ ◦ AMD AM2+ mainboard
+ ◦ 500GB HDD
+
+ ◦ we depend on 230V~
+
+
+
+ Arduino Uno
+ controls
+ WS2812 RGB LEDs
+ ring around the camera
+ lens during countdown,
+ to catch attention
+ and a a stripe that
+ illuminates the photo
+ output tray during printing
+
+
+ needs to be photo quality, fast & quick
+ only feasible type is dye-sublimation
+ (like used in kiosk applications)
+
+
+ Mitsubishi CP9550DW
+
+
+ + paper roll that it cuts
+ into 4x6 prints (10x15 cm)
+ + takes < 15s per copy
+ + price is < 15 cents per copy
+ + instantly dry
+
+
+ - expensive (>1000€) consider a used one!
+ - Linux driver availability (Gutenprint)
+ - large scale, heavy, noisy
+ - need to take care of color matching
+
+
+ Hardware
+
+
+ Hardware
+
+
+ Hardware
+
+
+
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#e6e6e6;stroke-width:0.26662055;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:23;enable-background:new">
Cabinet
+ id="title7197">
+ Cabinet
+
+
+
+ used renewable resources
+
+ made from inner framework
+ and 10 mm plywood covering
+
+ drawn in Sketchup (free but not open)
+
+ used machines: circular saw, circular hand
+ saw, planer, router, sander, electric drill, lathe
+
+ dimensions: 1590 x 500 x 500 mm
+ (height x width x depth)
+
+
+ camera slide is adjustable
+ in height and depth
+ camera fixed with
+ custom turned screw
+ (1/4" UNC and M8)
+
+
+ stand is a tripod: can't wobble
+ reminiscence of
+ classic optical devices
+
+
+ glazing tape
+ for fitting
+
+
+ display, hdd
+ and camera
+
+
+ tripod and base plate
+ separable from cabinet
+
+
+
+ printer and camera are
+ transported seperately
+ all other hardware is
+ fixed in the cabinet
+
+
+
+ butterfly locks & carry handles
+ (stage equipment)
+
+
+ Woodwork
+
+
+ Woodwork
+
+
+ 3d-printed parts
used renewable resourcesdesigned with Sketchupmade from inner framework slats printed on RepRap using Repetier-Hostwith 10 mm plywood encasement diffusor for RGB-LED ring (transparent PLA)drawn in Sketchup (free but not open)used machines: circular saw, circular hand saw,planer, router, sander, electric drill, lathe
+ id="tspan12894"> output tray (white PLA) stowable for transport
camera slide is adjustablein height and depthcamera fixed with custom turned screw(1/4" UNC and M8)
+ font-size="8.317"
+ transform="rotate(-12.43)"
+ id="title_3dprints"
+ y="721.92065"
+ x="280.10565"
+ style="font-size:8.31700039px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';display:inline;visibility:hidden;stroke-width:0.99999994;enable-background:new">
+ 3d-printed parts
+
stand is a tripod: can't wobblereminiscence of classic optical devices
- glazing tape for fitting
- display, hdd and camera
- tripod and base plate separable from cabinet
-
- printer and camera aretransported seperatelyall other hardware isfixed in the cabinet
-
- butterfly locks & carry handles(stage equipment)
- Woodwork
+ style="font-size:8.31700039px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';display:inline;visibility:hidden;opacity:0.8;filter:url(#filter_blur_mid-4);enable-background:new"
+ x="292.86273"
+ y="664.04254"
+ id="text10885"
+ transform="rotate(-12.43,272.72153,28.36696)"
+ font-size="8.317">
+ 3d-printed parts
+
-
- Hardware
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#fffaa7" />
-
+
-
+
-
+
+ inkscape:connector-curvature="0"
+ style="fill:#b3b3b3" />
-
-
-
-
-
- 3d-printed parts
-
+ inkscape:label="Summary Frames"
+ style="display:inline;visibility:hidden"
+ id="layer_frames"
+ transform="translate(0 59.267)">
+
designed with sketchup reprap, repetier-host diffusor for RGB-LED ring (transparent PLA) output tray (white PLA) stowable for transport
+ style="font-size:14.11100006px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;filter:url(#filter_blur_large);enable-background:new;fill:#4d4d4d;"
+ x="1206.1152"
+ y="453.8027"
+ id="text6136"
+ font-size="14.111">
+ Cost
+
3d-printed parts
+ style="font-weight:400;font-family:Sans;fill:#5f8dd3;fill-opacity:0.85500004;filter:url(#filter_blur_large);enable-background:new"
+ font-weight="400"
+ id="text16511"
+ y="584.94397"
+ x="719.20001"
+ transform="matrix(0.15642,-0.2134,0.2134,0.15642,14.759,1024.3728)">
+ Questions?
+
Questions?
-
+ Questions?
+ x="-627.68713"
+ y="771.75867"
+ style="font-size:10.58300018px;line-height:125%;-inkscape-font-specification:Sans">Questions?
+
+ transform="matrix(0.867,0,0,0.867,49.813334,130.764)">
<photobooth@schaffenburg.org>
+ y="784.87097"
+ x="-634.552"
+ style="font-size:2.82200003px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;enable-background:new">
+ <photobooth@schaffenburg.org>
+
+ width="74.908577"
+ height="59.821606"
+ x="-630.63562"
+ y="757.59332"
+ transform="rotate(-53.757243)">
Questions
+ xlink:href="http://sozi.baierouge.fr/wiki/Sozi"
+ target="_blank">
-
+
+ d="m 2835.127,1233.303 c -0.241,-0.789 -0.895,-4.017 -1.266,-6.258 -0.745,-4.494 -1.091,-8.208 -1.27,-13.608 -0.07,-2.125 -0.624,-2.799 -0.455,-2.799 0.704,0 4.767,1.97 6.296,2.985 3.08,2.046 4.711,4.664 4.873,7.828 0.061,1.184 0.034,1.424 -0.256,2.326 -0.668,2.076 -1.878,4.664 -4.472,7.257 -0.9,0.899 -2.327,2.388 -2.684,2.683 -0.557,0.462 -0.707,-0.223 -0.766,-0.415 z"
+ id="path3007" />
+ d="m 2767.27,1233.19 c -5.232,-12.246 -6.772,-24.347 -3.833,-30.108 1.716,-3.365 5.197,-4.897 9.659,-4.252 2.035,0.294 5.955,1.08 6.315,1.422 0.096,0.09 -0.842,0.876 -1.324,1.637 -1.189,1.875 -3.385,6.419 -4.435,9.176 -2.758,7.24 -4.542,16.476 -5.125,25.328 -0.05,0.78 -0.114,-0.527 -1.258,-3.204 z"
+ id="path3792" />
+ d="m 2833.804,1195.12 a 4.606,4.606 0 0 0 -1.675,0.45 c -0.298,0.157 -0.635,0.388 -0.659,0.756 -0.013,0.513 0.346,0.984 0.818,1.164 0.559,0.22 1.195,0.165 1.753,-0.028 0.822,-0.306 1.441,-1.005 1.811,-1.784 0.045,-0.126 0.233,-0.346 -0.02,-0.319 -0.663,-0.106 -1.327,-0.228 -2,-0.24 h -0.028 z"
+ id="path3800" />
+ d="m 2813.677,1266.884 c -5.805,-2.03 -8.337,-5.105 -7.772,-8.12 0.372,-1.982 3.115,-5.188 7.413,-8.63 2.455,-1.966 8.92,-6.53 10.101,-7.248 0.286,-0.174 0.048,0.745 -0.094,2.705 -0.546,7.525 -1.656,12.937 -3.792,17.783 -0.926,2.101 -2.117,4.702 -2.395,4.67 -0.09,-0.01 -1.539,-0.416 -2.461,-0.738 z"
+ id="path3794" />
+ d="m 2771.99,1244.52 c -12.397,-19.42 -19.488,-60.642 14.557,-41.132 0.357,0.153 -0.52,0.168 -0.68,0.076 -33.818,-19.649 -25.02,22.45 -14.107,39.366 7.111,11.022 41.955,65.421 -23.466,40.533 -0.374,-0.135 -0.174,-2.033 0.225,-1.879 59.662,23.058 35.868,-17.545 23.471,-36.964 z"
+ id="path2985" />
+ d="m 2843.636,1221.133 c -0.96,-13.54 -28.555,-13.395 -38.899,-13.503 -0.33,-0.01 -0.09,0.376 0.047,0.374 12.046,-0.167 37.944,0.021 38.975,13.082 1.067,13.51 -39.999,29.566 -37.866,39.166 2.134,9.6 27.733,10.666 37.689,10.666 0.889,0.09 1.1,-1.097 -0.137,-1.181 -14.513,-0.99 -51.276,-2.176 -31.985,-17.784 11.042,-8.935 33.098,-17.802 32.176,-30.82 z"
+ id="path2989" />
+ d="m 2852.28,1253.254 c -18.321,2.074 -22.048,-38.6 -19.141,-51.569 -4.858,21.694 5.078,54.877 19.25,52.751 1.038,-0.188 0.771,-1.37 -0.109,-1.182 z"
+ id="path2991" />
+ d="m 2835.296,1196.77 c 1.03,-1.054 1.409,-4.02 1.401,-3.963 -0.17,1.325 -0.503,2.688 -1.349,3.75 -0.563,0.718 -1.467,0.895 -1.863,0.807 -1.16,-0.125 -1.223,-1.041 -1.407,-2.05 -0.026,-0.143 -0.137,-0.555 -0.597,-0.177 -0.57,0.636 -0.579,1.641 -0.213,2 1.303,1.278 3,0.686 4.028,-0.367 z"
+ id="path3763" />
+ d="m 2792.484,1191.312 c 29.313,-7.414 45.471,75.174 11.98,85.071 -48.239,14.255 -42.852,-77.263 -11.98,-85.071 z m 3.406,-1.815 c -28.637,0.3 -42.445,85.713 -0.664,88.888 45.416,3.45 29.301,-89.188 0.664,-88.888 z" />
+ Presented with
+ style="font-size:14px;line-height:125%">Presented with
+
-
+ enable-background="new"
+ stroke-dashoffset="23"
+ stroke-width="1.43"
+ stroke="#000"
+ fill="none">
Problems
-
- problems?there are absolutely none!except maybe:* glaring sunlight* dust* heat (arduino communication problems, pc crashes, nikon battery charger overheating)* took a while to find good setup for flash and exposure settings* autofocus is unpredictably slow, tends to make errors - > use manual focus
-
+ Problems
+
+
+
+ enable-background="new"
+ stroke-dashoffset="23"
+ stroke-width="1.43"
+ stroke="#000"
+ fill="none">
Improvements
-
+ id="title7197-1-0">
+ Improvements
+
+
+ hardware improvements* better ventilation: include a fan with a filter* use power supply instead of batteries for the camera(search for a defective Nikon EN-EL15 to build one instead of buying the original one)* attach speakers inside the cabinet* maybe buy a regulated external flash* modify the existing flash for LED permanent light* camera is too high for shorties: vertically adjustable camera bearing or height-adjustable tripod. easy solution: step ladder / beer crate* use a quartz to improve arduino communication stability* paint / finish cabinet* use an embedded computer* use a capacitive touchscreen* electromagnetic compatibility (metal case)hardware improvements
+ * coin validatorsoftware improvements* robustness (camera/usb errors can crash the application / lead to unexpected states)* true live view with less latency and full resolution* play a shutter sound (if there's no flash)* allow reprinting finished jobs* render QR code on the screen with a a facebook URL to farm likes* use different filenames for printed/cancelled photos* show slideshow of previous photos in screensaver mode* work on printer driver sharpness* automatic image optimization / effects
-
- ◦ better ventilation: include a fan with a filter
+ €
- ◦ use power supply instead of batteries for the camera
+ Part(search for a defective Nikon EN-EL15 to build one instead of buying the original one)
+ Camera◦ attach speakers inside the cabinet
+ Printer ◦ maybe buy a regulated external flash
+ Display◦ modify the existing flash for LED permanent light
+ PC components◦ camera is too high for shorties: vertically adjustable camera bearing
+ Keyboard w/ Touchpador height-adjustable tripod. easy solution: step ladder / beer crate
+ Arduino◦ use a quartz to improve arduino communication stability
+ RGB-LEDs◦ paint / finish cabinet
+ Cabinet Wood + Metal◦ use an embedded computer
+ Flash + Softbox◦ use a capacitive touchscreen
+ Speakers◦ electromagnetic compatibility (metal case)
+ Cables, small parts◦ coin validator
+ Total
+ software improvements
+ ◦ robustness (camera/usb errors can crash the application / lead to unexpected states)
+ ◦ true live view with less latency and full resolution
+
- ◦ play a shutter sound (if there's no flash)
+ Price (€)◦ allow reprinting finished jobs
+ 0 (~350)◦ render QR code on the screen with a a facebook URL to farm likes
+ 650 ◦ use different filenames for printed/cancelled photos
+ 45◦ show slideshow of previous photos in screensaver mode
+ ~200◦ work on printer driver sharpness
+ 25◦ automatic image optimization / effects
+ 20◦ web interface for configuration / remote control
+ 2553,26~202~10~1050
- Cost
+ x="925.35101"
+ y="584.87958"
+ id="tspan11174">◦ take care of build system / packaging or provide a docker image
+
+ target="_blank"
+ transform="matrix(0.867,0,0,0.867,49.813334,130.764)">
https://git.schaffenburg.org/fraxinas/photobooth
+ y="791.31"
+ x="-634.46503"
+ style="font-size:2.82200003px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal">
+ https://git.schaffenburg.org/fraxinas/photobooth
+
+ target="_blank"
+ transform="matrix(0.867,0,0,0.867,49.813334,130.764)">
https://wiki.schaffenburg.org/Projekt:Photobooth
+ y="797.76898"
+ x="-634.46503"
+ style="font-size:2.82200003px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal">
+ https://wiki.schaffenburg.org/Projekt:Photobooth
+
+ id="g40729"
+ transform="matrix(0.09464,-0.01488,0.00304,0.09426,333.65334,350.463)">
+ d="M 6.912,131.247 V 88.521 h 95.074 v 85.453 H 6.912 Z"
+ id="path40707" />
+ d="m -6.013,194.114 c -1.089,-0.474 -2.421,-2.05 -2.757,-3.262 -0.403,-1.45 -0.387,-117.816 0.016,-119.267 0.383,-1.38 2.16,-3.158 3.54,-3.541 1.452,-0.403 117.818,-0.419 119.268,-0.016 1.243,0.345 2.8,1.685 3.273,2.816 0.595,1.423 0.525,119.63 -0.071,120.808 -0.61,1.202 -1.15,1.757 -2.273,2.33 -1.277,0.652 -119.507,0.781 -120.996,0.132 z m 26.843,-31.02 c 2.456,-1.404 35.17,-29.155 36.2,-30.706 1.568,-2.361 1.41,-4.732 -0.47,-7.099 -1.521,-1.914 -34.166,-30.042 -35.714,-30.773 -2.995,-1.413 -5.202,-0.856 -7.332,1.85 -1.415,1.798 -1.662,2.998 -1.017,4.94 0.72,2.17 1.494,2.918 15.89,15.394 8.695,7.535 13.758,12.098 13.758,12.4 0,0.307 -5.116,4.781 -14.286,12.494 -15.137,12.732 -15.7,13.285 -16.106,15.818 -0.255,1.594 0.05,2.51 1.39,4.181 2.162,2.698 4.722,3.199 7.686,1.503 z m 74.047,-3.06 c 0.448,-0.448 0.448,-10.294 0,-10.742 -0.46,-0.46 -39.386,-0.46 -39.846,0 -0.448,0.448 -0.448,10.294 0,10.742 0.46,0.46 39.387,0.46 39.846,0 z"
+ id="path40705" />
+
+
+ €
+
+
+ Part
+ Camera
+ Printer
+ Display
+ PC components
+ Keyboard w/ Touchpad
+ Arduino
+ RGB-LEDs
+ Cabinet Wood + Metal
+ Flash + Softbox
+ Speakers
+ Cables, small parts
+ Total
+
+
+ Price (€)
+ 0
+ 650
+ 45
+ ~150
+ 25
+ 20
+ 25
+ 53
+ ~20
+ 2
+ ~10
+ ~1000
+
+
+ Cost
+
+
+ with media cost price of 15 cents and
+ retail price
+
+
+
+
+
+ "donation" of 2 € per copy,
+ the photo booth is paid off after 568 prints (85-175 per gig)
+
+
+
with media cost price of 15 cents and
+ Issues?
+ retail price ("donation") of 2 € per copy,Issues?
+
+ the photo booth is paid off after 568 prints (85-175 per gig)
+ id="tspan7191-5" />
+ there are absolutely none!
+
+ except maybe:
+
+ ◦ glaring sunlight
+ ◦ dust
+ ◦ heat (Arduino communication problems,
+ PC crashes, Nikon battery charger overheating)
+ ◦ takes a while to find a good setup
+ for flash and exposure settings
+ ◦ autofocus is unpredictably slow,
+ tends to make errors -> use manual focus
+
-
-
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.27690214"
+ inkscape:connector-curvature="0"
+ d="m 1219.4982,469.54694 h 132.1045"
+ id="path11176" />
+ ns1:hide="true"
+ ns1:sequence="1"
+ ns1:title="Title"
+ ns1:refid="rect_title" />
-
+
+ ns1:sequence="3"
+ ns1:hide="true"
+ ns1:clip="false"
+ ns1:show-in-frame-list="true"
+ ns1:timeout-enable="false"
+ ns1:timeout-ms="5000.0"
+ ns1:transition-duration-ms="1000.0"
+ ns1:transition-zoom-percent="0.0"
+ ns1:transition-profile="linear"
+ ns1:transition-path-hide="true"
+ id="frame_why" />
+ ns1:title="design approach"
+ ns1:refid="rect4671-3" />
+ ns1:title="Software Architecture"
+ ns1:refid="rect_software_architecture" />
+ ns1:sequence="6"
+ ns1:hide="false"
+ ns1:clip="false"
+ ns1:show-in-frame-list="false"
+ ns1:timeout-enable="false"
+ ns1:timeout-ms="5000.0"
+ ns1:transition-duration-ms="1000.0"
+ ns1:transition-zoom-percent="0.0"
+ ns1:transition-profile="linear"
+ ns1:transition-path-hide="true"
+ id="frame_libgphoto2" />
+ ns1:title="Gstreamer"
+ ns1:refid="box_gstreamer" />
-
+
-
-
-
-
-
-
+ id="frame_software_ux" />
+
+
+
+
+
+
+ ns1:title="Hardware Components"
+ ns1:refid="rect_hardware" />
+ id="frame_camera" />
+ ns1:transition-profile="linear"
+ ns1:transition-zoom-percent="0.0"
+ ns1:transition-duration-ms="1000.0"
+ ns1:timeout-ms="5000.0"
+ ns1:timeout-enable="false"
+ ns1:show-in-frame-list="false"
+ ns1:clip="false"
+ ns1:hide="true"
+ ns1:sequence="18"
+ ns1:title="Touchscreen"
+ ns1:refid="rect4671-3-6-7-5" />
+
-
+ ns1:hide="true"
+ ns1:clip="false"
+ ns1:show-in-frame-list="false"
+ ns1:timeout-enable="false"
+ ns1:timeout-ms="5000.0"
+ ns1:transition-duration-ms="1000.0"
+ ns1:transition-zoom-percent="0.0"
+ ns1:transition-profile="linear"
+ ns1:transition-path-hide="true"
+ id="frame_pc" />
+ id="frame_arduino" />
+ ns1:hide="true"
+ ns1:sequence="22"
+ ns1:title="Cabinet Woodwork"
+ ns1:refid="rect_cabinet" />
+
-
-
+ id="frame_problems" />
+
+
-
+ id="frame_questions" />
+