mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -05:00
nwztools: rework dualboot
The new code gets closer to an actual bootloader: - it provides a menu with three options: Sony, Rockox, tools with icons (and extracts the Sony logo from the NVP) - the dualboot install script now creates a symlink from /.rockbox to /contents/.rockox which is necessary to run rockbox - more text drawing / framebuffer functions In the long run, we will move this under bootloader/ and rbutil/ and also use firmware/ drawing facilities, at the moment we use OF display program which is slow and creates some flickering. The logo extraction/placement code was tested with resolution 240x320 and I guessed some reasonable values for 240x400, but those will probably need some tweaking. Change-Id: I0319be902d21a7d33c1dee0fffdb4797065dbf8a
This commit is contained in:
parent
33856d9ceb
commit
0c1a96101c
9 changed files with 666 additions and 76 deletions
8
utils/nwztools/plattools/data/Makefile
Normal file
8
utils/nwztools/plattools/data/Makefile
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
TOOLS_DIR=../../../../tools/
|
||||
all: rockbox_icon.h tools_icon.h
|
||||
|
||||
%.h: %.bmp
|
||||
$(TOOLS_DIR)/bmp2rb -f 4 $^ > $@
|
||||
|
||||
clean:
|
||||
rm -rf *.h
|
||||
|
|
@ -0,0 +1,334 @@
|
|||
<?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://web.resource.org/cc/" 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="128" height="128" id="svg5676" sodipodi:version="0.32" inkscape:version="0.45+devel" sodipodi:docname="settings-wip.svgz" inkscape:output_extension="org.inkscape.output.svgz.inkscape" version="1.0">
|
||||
<defs id="defs5678">
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4322" id="linearGradient4338" gradientUnits="userSpaceOnUse" gradientTransform="translate(-2.6296821,21.172877)" x1="5.1934605" y1="88.98745" x2="5.1934605" y2="145.64882"/>
|
||||
<linearGradient y2="0" x2="28" y1="57.5" x1="28" gradientUnits="userSpaceOnUse" id="linearGradient8081">
|
||||
<stop id="stop8083" style="stop-color:#ffd700;stop-opacity:1;" offset="0"/>
|
||||
<stop offset="0.25242719" style="stop-color:#ffea00;stop-opacity:1;" id="stop8087"/>
|
||||
<stop id="stop8085" style="stop-color:#b06d00;stop-opacity:1;" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient8081" id="linearGradient7698" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0872079,0,0,1.0872079,-59.143229,30.210796)" x1="58.557281" y1="107.76735" x2="63.943447" y2="107.76735"/>
|
||||
<linearGradient id="linearGradient6924">
|
||||
<stop style="stop-color:#ffffff;stop-opacity:0.73885351;" offset="0" id="stop6926"/>
|
||||
<stop id="stop10395" offset="0.24999999" style="stop-color:#ffffff;stop-opacity:0;"/>
|
||||
<stop id="stop10393" offset="0.5" style="stop-color:#cccccc;stop-opacity:0;"/>
|
||||
<stop style="stop-color:#9a9a9a;stop-opacity:1;" offset="1" id="stop6928"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient6924" id="linearGradient6930" x1="8.3827581" y1="8.3199806" x2="15.021504" y2="14.958727" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.2050468,0,0,1.2050468,-2.1016162,-2.0259658)"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4529" id="linearGradient4640" gradientUnits="userSpaceOnUse" x1="9.3031492" y1="133.25163" x2="-5.8540711" y2="130.59308"/>
|
||||
<filter inkscape:collect="always" x="-0.10337079" width="1.2067416" y="-0.10337079" height="1.2067416" id="filter4626">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="0.42488862" id="feGaussianBlur4628"/>
|
||||
</filter>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4632">
|
||||
<rect style="opacity:0.83895126;fill:url(#linearGradient4636);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter4626)" id="rect4634" width="13.334369" height="3.7415669" x="-2.9263651" y="130.97287" rx="0" ry="0" inkscape:transform-center-x="-16.434708" inkscape:transform-center-y="-5.5242717"/>
|
||||
</clipPath>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4529" id="linearGradient4604" gradientUnits="userSpaceOnUse" x1="9.3031492" y1="133.25163" x2="-5.8540711" y2="130.59308"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#linearGradient4434" id="radialGradient4602" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.3939752,0.4817163,48.449986)" cx="4.7494926" cy="132.25244" fx="4.7494926" fy="132.25244" r="5.3222656"/>
|
||||
<filter inkscape:collect="always" id="filter4584">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="1.0829419" id="feGaussianBlur4586"/>
|
||||
</filter>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4588">
|
||||
<path sodipodi:nodetypes="ccsccccsccc" id="path4590" d="M 13.037731,82.09273 L 18.342123,87.397123 C 21.331352,87.817882 24.407038,89.18508 26.895219,91.673261 C 29.411177,94.189215 30.893289,97.328601 31.294715,100.34972 L 56.289372,125.34436 C 62.090282,131.14528 77.301422,116.01036 71.462392,110.17133 L 46.467742,85.176682 C 43.446635,84.775254 40.307258,83.29314 37.791293,80.777186 C 35.303111,78.289007 33.935917,75.213314 33.515156,72.22409 L 28.210762,66.919697 L 13.037731,82.09273 z" style="opacity:1;fill:url(#linearGradient4592);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
|
||||
</clipPath>
|
||||
<filter inkscape:collect="always" id="filter4551">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="0.15501048" id="feGaussianBlur4553"/>
|
||||
</filter>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4529">
|
||||
<stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4531"/>
|
||||
<stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4533"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4529" id="linearGradient4537" x1="9.3031492" y1="133.25163" x2="-5.8540711" y2="130.59308" gradientUnits="userSpaceOnUse"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient2575" id="linearGradient4525" x1="58.557281" y1="107.76735" x2="63.943447" y2="107.76735" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0872079,0,0,1.0872079,-71.164046,29.503688)"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4509">
|
||||
<stop style="stop-color:#ffe900;stop-opacity:1;" offset="0" id="stop4511"/>
|
||||
<stop style="stop-color:#ffe900;stop-opacity:0;" offset="1" id="stop4513"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4509" id="linearGradient4515" x1="75.585938" y1="85.083641" x2="89.453125" y2="79.224266" gradientUnits="userSpaceOnUse"/>
|
||||
<filter inkscape:collect="always" id="filter4501">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="0.48665741" id="feGaussianBlur4503"/>
|
||||
</filter>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4465">
|
||||
<stop style="stop-color:#ffa300;stop-opacity:1;" offset="0" id="stop4467"/>
|
||||
<stop style="stop-color:#ffa300;stop-opacity:0;" offset="1" id="stop4469"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4465" id="linearGradient4471" x1="83.886719" y1="77.661766" x2="86.300743" y2="86.671021" gradientUnits="userSpaceOnUse" gradientTransform="translate(-4,-4)"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4434">
|
||||
<stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4436"/>
|
||||
<stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4438"/>
|
||||
</linearGradient>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#linearGradient4434" id="radialGradient4440" cx="4.7494926" cy="132.25244" fx="4.7494926" fy="132.25244" r="5.3222656" gradientTransform="matrix(1,0,0,0.3939752,-7.0710881e-2,74.137847)" gradientUnits="userSpaceOnUse"/>
|
||||
<filter inkscape:collect="always" id="filter4404">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="0.15249406" id="feGaussianBlur4406"/>
|
||||
</filter>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4322" id="linearGradient4342" gradientUnits="userSpaceOnUse" gradientTransform="translate(1.6836694,24.213436)" x1="3.5450988" y1="107.64014" x2="3.190912" y2="104.64899"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient4322">
|
||||
<stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4324"/>
|
||||
<stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4326"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4322" id="linearGradient4346" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-2.6879854,-4.0690534)" x1="5.1934605" y1="103.9544" x2="5.1348171" y2="115.65614"/>
|
||||
<filter inkscape:collect="always" x="-0.074906364" width="1.1498127" y="-0.11235955" height="1.224719" id="filter4238">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="1.1235955" id="feGaussianBlur4240"/>
|
||||
</filter>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4242">
|
||||
<path sodipodi:nodetypes="ccsccccsccc" id="path4244" d="M -4,77.788157 L -4,83.381653 C -2.645772,85.179573 -1.744968,87.522089 -1.744968,90.145881 C -1.744968,92.798965 -2.618764,95.23565 -4,97.040192 L -4,123.39712 C -4,129.51419 12,129.55437 12,123.39712 L 12,97.040192 C 10.618764,95.23565 9.744972,92.798965 9.744968,90.145881 C 9.744968,87.522089 10.645776,85.179573 12,83.381653 L 12,77.788157 L -4,77.788157 z" style="opacity:1;fill:url(#linearGradient4247);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
|
||||
</clipPath>
|
||||
<linearGradient id="linearGradient2575" gradientUnits="userSpaceOnUse" x1="28" y1="57.5" x2="28" y2="0">
|
||||
<stop offset="0" style="stop-color:#FFEA00" id="stop2577"/>
|
||||
<stop offset="1" style="stop-color:#cd8000;stop-opacity:1;" id="stop2579"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient2575" id="linearGradient4190" x1="36" y1="100" x2="28" y2="100" gradientUnits="userSpaceOnUse" spreadMethod="reflect" gradientTransform="matrix(0.9483145,-0.9483145,0.9483145,0.9483145,-36.790528,30.877897)"/>
|
||||
<linearGradient id="linearGradient6511">
|
||||
<stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop6513"/>
|
||||
<stop style="stop-color:#393939;stop-opacity:1;" offset="1" id="stop6515"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient6511" id="linearGradient6517" x1="38.074299" y1="4.2695875" x2="38.074299" y2="-10.42289" gradientUnits="userSpaceOnUse"/>
|
||||
<linearGradient id="linearGradient3916">
|
||||
<stop style="stop-color:#d3d6d6;stop-opacity:1;" offset="0" id="stop3918"/>
|
||||
<stop style="stop-color:#f7f7f7;stop-opacity:1;" offset="1" id="stop3921"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3916" id="linearGradient3943" gradientUnits="userSpaceOnUse" x1="34.165016" y1="4.863008" x2="34.165016" y2="-14.006344"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3904" id="linearGradient6112" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1550511,0,0,1.1550511,-41.26484,21.101778)" x1="38.827515" y1="104.49192" x2="36.460194" y2="17.509802"/>
|
||||
<filter inkscape:collect="always" x="-0.26177245" width="1.5235449" y="-0.075698018" height="1.151396" id="filter3838">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="0.41890191" id="feGaussianBlur3840"/>
|
||||
</filter>
|
||||
<filter inkscape:collect="always" x="-0.26177242" width="1.5235448" y="-0.075698018" height="1.151396" id="filter3834">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="0.41890191" id="feGaussianBlur3836"/>
|
||||
</filter>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3850">
|
||||
<path id="path3852" d="M 5.6835937,-4 C 6.7672977,-0.13901249 7.6835937,4 7.6835937,8 C 7.6835937,25.92781 15.683594,26.507796 15.683594,8 C 15.683594,4 16.274299,-0.44557713 17.683594,-4 C 16.034701,-11.286281 10.22872,-24.562662 5.6835937,-4 z" style="opacity:1;fill:#b4b4b4;fill-opacity:1;stroke:none;stroke-width:0.47008219;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" sodipodi:nodetypes="ccccc"/>
|
||||
</clipPath>
|
||||
<linearGradient id="linearGradient3904">
|
||||
<stop style="stop-color:#141515;stop-opacity:1;" offset="0" id="stop3906"/>
|
||||
<stop style="stop-color:#535557;stop-opacity:0;" offset="1" id="stop3908"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3904" id="linearGradient6119" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1550511,0,0,1.1550511,-40.633471,-152.2263)" x1="36.460194" y1="108.28275" x2="39.503891" y2="69.41713"/>
|
||||
<linearGradient inkscape:collect="always" id="linearGradient3220">
|
||||
<stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop3222"/>
|
||||
<stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop3224"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3220" id="linearGradient6122" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.6737798,0,0,1.4175761,-25.92314,-147.94457)" x1="36.460194" y1="89.611626" x2="36.460194" y2="17.509802"/>
|
||||
<radialGradient gradientUnits="userSpaceOnUse" r="139.55859" cy="112.3047" cx="102" id="radialGradient9613">
|
||||
<stop id="stop9615" style="stop-color:#535557" offset="0"/>
|
||||
<stop id="stop9617" style="stop-color:#898A8C" offset="0.13804179"/>
|
||||
<stop id="stop9619" style="stop-color:#ECECEC" offset="0.20296688"/>
|
||||
<stop id="stop9621" style="stop-color:#FAFAFA" offset="0.33539036"/>
|
||||
<stop id="stop9623" style="stop-color:#FFFFFF" offset="0.39464113"/>
|
||||
<stop id="stop9625" style="stop-color:#FAFAFA" offset="0.5313"/>
|
||||
<stop id="stop9627" style="stop-color:#EBECEC" offset="0.8449"/>
|
||||
<stop id="stop9629" style="stop-color:#E1E2E3" offset="1"/>
|
||||
</radialGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#radialGradient9613" id="linearGradient6125" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.8398488,-0.8398488,0.8167445,0.8167445,-15.712841,44.354581)" spreadMethod="reflect" x1="32.228344" y1="47.999996" x2="35.935673" y2="47.999996"/>
|
||||
<filter inkscape:collect="always" id="filter4503">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="0.43775175" id="feGaussianBlur4505"/>
|
||||
</filter>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4092">
|
||||
<path style="fill:#9c0f56" d="M 59.849,42.398 C 57.593,46.987 10.717,106.259 8.774,111.066 C 4.67,121.218 16.431,133.433 25.989,124.269 C 32.291,118.227 66.959,56.111 72.129,51.415 C 75.623,48.241 95.004,41.083 95.004,41.083 L 80.924,18.23 C 80.924,18.23 62.724,36.552 59.849,42.398 z" inkscape:r_cy="true" inkscape:r_cx="true" sodipodi:nodetypes="csssscc" id="path4094"/>
|
||||
</clipPath>
|
||||
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="11.9185" y1="119.0576" x2="98.418404" y2="44.057598">
|
||||
<stop offset="0" style="stop-color:#C9C9C9" id="stop49"/>
|
||||
<stop offset="0.0229" style="stop-color:#B2B2B2" id="stop51"/>
|
||||
<stop offset="0.05" style="stop-color:#9F9F9F" id="stop53"/>
|
||||
<stop offset="0.0819" style="stop-color:#929292" id="stop55"/>
|
||||
<stop offset="0.1225" style="stop-color:#8A8A8A" id="stop57"/>
|
||||
<stop offset="0.2012" style="stop-color:#888888" id="stop59"/>
|
||||
<stop offset="1" style="stop-color:#686868;stop-opacity:1;" id="stop63"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="31.4995" y1="80.0439" x2="32.347698" y2="80.671898" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0" style="stop-color:#000000" id="stop183"/>
|
||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0;" id="stop185"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="23.9844" y1="120.7646" x2="12.7283" y2="109.8655" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0" style="stop-color:#EEEEEE" id="stop176"/>
|
||||
<stop offset="1" style="stop-color:#535353;stop-opacity:1;" id="stop178"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="18.776899" y1="129.5986" x2="18.776899" y2="114.6055" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0" style="stop-color:#000000" id="stop169"/>
|
||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0;" id="stop171"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="XMLID_8_" cx="64.988297" cy="15.9429" r="19.6182" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0" style="stop-color:#FFFFFF" id="stop162"/>
|
||||
<stop offset="1" style="stop-color:#888A85" id="stop164"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="40.711899" y1="75.171898" x2="48.5495" y2="80.899803" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0.213" style="stop-color:#555753" id="stop155"/>
|
||||
<stop offset="1" style="stop-color:#000000" id="stop157"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="path30758_1_" gradientUnits="userSpaceOnUse" x1="16.7803" y1="80.697304" x2="67.723602" y2="80.697304" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0" style="stop-color:#888888" id="stop149"/>
|
||||
<stop offset="0.8935" style="stop-color:#DDDDDD" id="stop151"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="path34280_1_" gradientUnits="userSpaceOnUse" x1="93.023399" y1="39.3867" x2="93.023399" y2="25.928699" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0" style="stop-color:#555555" id="stop141"/>
|
||||
<stop offset="0.3965" style="stop-color:#888888" id="stop143"/>
|
||||
<stop offset="1" style="stop-color:#555555" id="stop145"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="rect22846_1_" gradientUnits="userSpaceOnUse" x1="247.60249" y1="-288.60791" x2="261.97269" y2="-288.60791" gradientTransform="matrix(0.9428,-0.2511,-0.2421,-0.9089,6.0921912,215.38258)">
|
||||
<stop offset="0" style="stop-color:#888888" id="stop135"/>
|
||||
<stop offset="1" style="stop-color:#555555" id="stop137"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="rect14944_1_" cx="274.56641" cy="36.065399" r="6.8733001" gradientTransform="matrix(0.523,-0.2146,-2.627,-7.0521,27.4228,356.0237)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" style="stop-color:#888A85" id="stop127"/>
|
||||
<stop offset="0.6213" style="stop-color:#FFFFFF" id="stop129"/>
|
||||
<stop offset="1" style="stop-color:#555753" id="stop131"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="rect14938_1_" cx="290.8428" cy="36.069801" r="6.8736" gradientTransform="matrix(0.4892,-0.2059,-2.5913,-7.0931,29.692,361.6149)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" style="stop-color:#888A85" id="stop119"/>
|
||||
<stop offset="0.6213" style="stop-color:#FFFFFF" id="stop121"/>
|
||||
<stop offset="1" style="stop-color:#555753" id="stop123"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="rect10553_1_" cx="292.49219" cy="43.388699" r="6.8727999" gradientTransform="matrix(0.498,-0.2212,-2.9368,-8.3284,56.2613,466.2682)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" style="stop-color:#888A85" id="stop111"/>
|
||||
<stop offset="0.6213" style="stop-color:#FFFFFF" id="stop113"/>
|
||||
<stop offset="1" style="stop-color:#555753" id="stop115"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="rect14950_1_" cx="92.734398" cy="20.4307" r="4.1451998" gradientTransform="matrix(0.6131,-0.2916,-5.2659,-7.9645,125.0096,227.992)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" style="stop-color:#FFFFFF" id="stop103"/>
|
||||
<stop offset="0.5266" style="stop-color:#BABDB6" id="stop105"/>
|
||||
<stop offset="1" style="stop-color:#888A85" id="stop107"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="rect10551_3_" cx="78.776398" cy="44.608398" r="14.3205" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" style="stop-color:#2E3436" id="stop95"/>
|
||||
<stop offset="0.72189999" style="stop-color:#000000;stop-opacity:1;" id="stop97"/>
|
||||
<stop offset="1" style="stop-color:#2E3436" id="stop99"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="rect10551_1_" gradientUnits="userSpaceOnUse" x1="77.216797" y1="44.765598" x2="73.449203" y2="30.555201">
|
||||
<stop offset="0.7219" style="stop-color:#DDDDDD" id="stop89"/>
|
||||
<stop offset="1" style="stop-color:#EEEEEC" id="stop91"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="XMLID_6_" cx="77.004028" cy="13.140214" r="64.405701" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" fx="77.004028" fy="13.140214">
|
||||
<stop offset="0" style="stop-color:#FFFFFF" id="stop82"/>
|
||||
<stop id="stop13256" style="stop-color:#c3c4c2;stop-opacity:1;" offset="0.5"/>
|
||||
<stop offset="1" style="stop-color:#000000;stop-opacity:1;" id="stop84"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="15.7207" y1="125.7861" x2="24.9356" y2="108.3428" gradientTransform="translate(-80,0)">
|
||||
<stop offset="0" style="stop-color:#000000" id="stop75"/>
|
||||
<stop offset="0.8935" style="stop-color:#FFFFFF" id="stop77"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="40.527802" y1="55.75" x2="52.981899" y2="64.646004" gradientTransform="translate(-80,0)">
|
||||
<stop offset="0" style="stop-color:#ffffff;stop-opacity:0;" id="stop68"/>
|
||||
<stop offset="0.8935" style="stop-color:#FFFFFF" id="stop70"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="path2388_1_" gradientUnits="userSpaceOnUse" x1="14.9214" y1="124.6768" x2="107.7549" y2="-17.989599" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0" style="stop-color:#DDDDDD" id="stop32"/>
|
||||
<stop offset="0.6864" style="stop-color:#888888" id="stop34"/>
|
||||
<stop offset="0.8935" style="stop-color:#DDDDDD" id="stop36"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="path5936_1_" cx="172.123" cy="4.7476001" r="4.6967001" gradientTransform="matrix(6.7917,-1.4855,-1.2014,-5.506,-845.12621,725.19548)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" style="stop-color:#FFFFFF" id="stop26"/>
|
||||
<stop offset="1" style="stop-color:#3E3E3E" id="stop28"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="XMLID_1_" gradientUnits="userSpaceOnUse" x1="92.627899" y1="26.589399" x2="104.5325" y2="31.2349" gradientTransform="translate(229.83849,405.96228)">
|
||||
<stop offset="0" style="stop-color:#FFFFFF" id="stop19"/>
|
||||
<stop offset="0.6391" style="stop-color:#888888" id="stop21"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="rect25493_1_" gradientUnits="userSpaceOnUse" x1="258.88379" y1="-326.0903" x2="286.16019" y2="-287.6532" gradientTransform="matrix(0.9065,-0.2414,-0.2421,-0.9089,10.723991,214.40698)">
|
||||
<stop offset="0" style="stop-color:#555555" id="stop5"/>
|
||||
<stop offset="0.6864" style="stop-color:#888888" id="stop7"/>
|
||||
</linearGradient>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_5_" id="linearGradient10549" gradientUnits="userSpaceOnUse" gradientTransform="translate(-80,0)" x1="15.7207" y1="125.7861" x2="24.9356" y2="108.3428"/>
|
||||
<mask maskUnits="userSpaceOnUse" id="mask10545">
|
||||
<path style="fill:url(#linearGradient10549)" id="path10547" d="M -0.051,18.554 L -0.847,9.66 C -0.847,9.66 8.141,4.482 10.38,3.193 C 3.985,-0.79 -3.654,1.07 -3.741,1.093 C -10.903,2.996 -15.908,8.865 -15.908,15.222 C -15.908,15.461 -15.901,15.701 -15.887,15.94 C -15.887,15.941 -15.887,15.941 -15.887,15.942 C -15.887,16.299 -16.25,36.73 -19.253,42.838 C -20.334,45.036 -30.401,58.18 -42.058,73.4 C -54.195,89.247 -69.3,108.968 -70.298,111.44 C -70.839,112.778 -71.079,114.126 -71.079,115.435 C -71.079,119.221 -69.06,122.663 -66.483,124.621 C -66.083,123.92 -65.655,123.178 -65.197,122.392 C -67.02,121.101 -68.463,119.074 -68.895,116.783 C -69.291,114.687 -68.831,112.48 -67.631,110.726 C -66.46,109.013 -64.659,107.855 -62.561,107.463 C -60.935,107.16 -59.182,107.593 -57.621,108.682 C -57.428,108.817 -57.245,108.966 -57.063,109.118 C -46.315,92.233 -27.938,65.35 3.195,23.824 C 1.323,20.784 -0.051,18.554 -0.051,18.554 z"/>
|
||||
</mask>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#rect25493_1_" id="linearGradient11382" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.9065,-0.2414,-0.2421,-0.9089,10.723991,214.40698)" x1="258.88379" y1="-326.0903" x2="286.16019" y2="-287.6532"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_1_" id="linearGradient11384" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="92.627899" y1="26.589399" x2="104.5325" y2="31.2349"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#path5936_1_" id="radialGradient11386" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.7917,-1.4855,-1.2014,-5.506,-845.12621,725.19548)" cx="172.123" cy="4.7476001" r="4.6967001"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#path2388_1_" id="linearGradient11388" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="14.9214" y1="124.6768" x2="107.7549" y2="-17.989599"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_4_" id="linearGradient11390" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="77.040016" y1="14.124305" x2="92.612343" y2="4.8821697"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_4_" id="linearGradient11392" gradientUnits="userSpaceOnUse" gradientTransform="translate(-80,0)" x1="40.527802" y1="55.75" x2="52.981899" y2="64.646004"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#XMLID_6_" id="radialGradient11394" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.4337031,0.4442839,-0.7150071,0.6987259,282.84098,375.70944)" cx="77.004028" cy="13.140214" fx="77.004028" fy="13.140214" r="64.405701"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#rect10551_1_" id="linearGradient11396" gradientUnits="userSpaceOnUse" x1="77.216797" y1="44.765598" x2="73.449203" y2="30.555201"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#rect10551_3_" id="radialGradient11398" gradientUnits="userSpaceOnUse" cx="78.776398" cy="44.608398" r="14.3205"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#rect14950_1_" id="radialGradient11400" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.6131,-0.2916,-5.2659,-7.9645,125.0096,227.992)" cx="92.734398" cy="20.4307" r="4.1451998"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#rect10553_1_" id="radialGradient11402" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.498,-0.2212,-2.9368,-8.3284,56.2613,466.2682)" cx="292.49219" cy="43.388699" r="6.8727999"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#rect14938_1_" id="radialGradient11404" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.4892,-0.2059,-2.5913,-7.0931,29.692,361.6149)" cx="290.8428" cy="36.069801" r="6.8736"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#rect14944_1_" id="radialGradient11406" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.523,-0.2146,-2.627,-7.0521,27.4228,356.0237)" cx="274.56641" cy="36.065399" r="6.8733001"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#rect22846_1_" id="linearGradient11408" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.9428,-0.2511,-0.2421,-0.9089,6.0921912,215.38258)" x1="247.60249" y1="-288.60791" x2="261.97269" y2="-288.60791"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#path34280_1_" id="linearGradient11410" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="93.023399" y1="39.3867" x2="93.023399" y2="25.928699"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#path30758_1_" id="linearGradient11412" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="16.7803" y1="80.697304" x2="67.723602" y2="80.697304"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_7_" id="linearGradient11414" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="40.711899" y1="75.171898" x2="48.5495" y2="80.899803"/>
|
||||
<radialGradient inkscape:collect="always" xlink:href="#XMLID_8_" id="radialGradient11416" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" cx="64.988297" cy="15.9429" r="19.6182"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_9_" id="linearGradient11418" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="18.776899" y1="129.5986" x2="18.776899" y2="114.6055"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_10_" id="linearGradient11420" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="17.509325" y1="123.23078" x2="18.875885" y2="107.20945"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_11_" id="linearGradient11422" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="31.4995" y1="80.0439" x2="32.347698" y2="80.671898"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_3_" id="linearGradient11424" gradientUnits="userSpaceOnUse" x1="11.9185" y1="119.0576" x2="98.418404" y2="44.057598"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4529" id="linearGradient11510" gradientUnits="userSpaceOnUse" x1="9.3031492" y1="133.25163" x2="-5.8540711" y2="130.59308"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4529" id="linearGradient11512" gradientUnits="userSpaceOnUse" x1="9.3031492" y1="133.25163" x2="-5.8540711" y2="130.59308"/>
|
||||
<filter inkscape:collect="always" id="filter11957">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="2.339831" id="feGaussianBlur11959"/>
|
||||
</filter>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_4_" id="linearGradient12019" gradientUnits="userSpaceOnUse" gradientTransform="translate(-80,0)" x1="40.527802" y1="55.75" x2="52.981899" y2="64.646004"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#path34280_1_" id="linearGradient12037" gradientUnits="userSpaceOnUse" gradientTransform="translate(229.83849,405.96228)" x1="93.023399" y1="39.3867" x2="93.023399" y2="25.928699"/>
|
||||
<linearGradient inkscape:collect="always" xlink:href="#XMLID_3_" id="linearGradient12051" gradientUnits="userSpaceOnUse" x1="11.9185" y1="119.0576" x2="98.418404" y2="44.057598"/>
|
||||
<filter inkscape:collect="always" id="filter12490">
|
||||
<feGaussianBlur inkscape:collect="always" stdDeviation="2.3509538" id="feGaussianBlur12492"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1" inkscape:cx="13" inkscape:cy="18.5" inkscape:document-units="px" inkscape:current-layer="g11357" inkscape:window-width="1024" inkscape:window-height="697" inkscape:window-x="0" inkscape:window-y="0" height="128px" width="128px"/>
|
||||
<metadata id="metadata5681">
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g inkscape:label="Livello 1" inkscape:groupmode="layer" id="layer1">
|
||||
<path style="fill:#000000;fill-opacity:1;filter:url(#filter12490);opacity:0.8" d="M 97.46875,6 C 97.18152,6.0094408 97.00831,6.0304757 97,6.03125 C 88.50154,6.7547259 81.81102,12.649899 80.96875,19.9375 C 80.96299,19.970198 76.86754,40.857308 72.875,46.3125 C 69.74177,50.594872 11.13376,102.7197 8.28125,107.28125 C 6.43475,110.23375 6.09196,113.64754 6.8125,116.75 C 6.81481,116.75995 6.81016,116.77131 6.8125,116.78125 C 7.27817,118.76618 8.16525,120.60725 9.40625,122.125 C 9.47154,122.20534 9.55786,122.26531 9.625,122.34375 C 9.73846,122.47566 9.85017,122.62373 9.96875,122.75 C 10.13123,122.9234 10.29696,123.08786 10.46875,123.25 C 10.78531,123.54834 11.12253,123.83716 11.46875,124.09375 C 11.51009,124.12442 11.55201,124.15746 11.59375,124.1875 C 11.75577,124.30387 11.92581,124.39345 12.09375,124.5 C 12.34901,124.66192 12.60676,124.83089 12.875,124.96875 C 12.90463,124.98396 12.93897,124.98509 12.96875,125 C 13.16389,125.09785 13.36099,125.19684 13.5625,125.28125 C 13.66656,125.32459 13.76932,125.36661 13.875,125.40625 C 13.96058,125.43847 14.03838,125.47026 14.125,125.5 C 14.26755,125.5489 14.41722,125.58297 14.5625,125.625 C 15.11282,125.78408 15.69527,125.91534 16.28125,125.96875 C 16.62585,125.99943 16.98844,126.00883 17.34375,126 C 17.49276,125.99631 17.6305,125.97967 17.78125,125.96875 C 18.30718,125.93117 18.83023,125.84877 19.375,125.71875 C 19.49773,125.68971 19.62642,125.65895 19.75,125.625 C 19.94658,125.5707 20.14518,125.50448 20.34375,125.4375 C 20.68974,125.32116 21.02361,125.18743 21.375,125.03125 C 21.51637,124.96837 21.67036,124.91327 21.8125,124.84375 C 22.01661,124.74364 22.23195,124.64533 22.4375,124.53125 C 22.50876,124.4917 22.58484,124.44751 22.65625,124.40625 C 22.93651,124.24411 23.21755,124.06393 23.5,123.875 C 23.72992,123.72139 24.01123,123.49888 24.3125,123.25 C 24.51715,123.08053 24.76474,122.86659 25,122.65625 C 25.31217,122.37641 25.73134,121.97195 26.09375,121.625 C 26.40496,121.32709 26.7476,121.00087 27.09375,120.65625 C 27.10095,120.64393 27.11785,120.63734 27.125,120.625 C 40.39609,107.39872 78.3196,61.213642 83.8125,57.75 C 87.95646,55.136652 109.0625,51.3125 109.0625,51.3125 C 113.21925,49.41573 118.90506,43.445638 121.3125,34.4375 C 121.72869,32.077134 121.4811,29.596922 121.375,30.03125 L 108.59375,35.78125 L 100.21875,29.0625 L 98.78125,25.40625 L 99.28125,19.21875 L 113.34375,13.96875 L 113.125,12.15625 C 107.67312,6.0868239 99.47934,5.9339145 97.46875,6 z M 17.8125,106.1875 C 21.2472,106.15572 24.40096,109.89596 24.375,114.15625 C 24.3535,117.67982 20.93573,121.18715 17.5,121.21875 C 14.06408,121.25138 10.73518,117.39784 10.6875,113.53125 C 10.68465,113.29896 10.66822,113.04283 10.6875,112.8125 C 10.70682,112.58223 10.74047,112.35167 10.78125,112.125 C 10.90349,111.44483 11.13404,110.80542 11.4375,110.1875 C 11.53867,109.98155 11.63003,109.78948 11.75,109.59375 C 12.94961,107.63625 15.09816,106.21329 17.8125,106.1875 z" id="path11963"/>
|
||||
<g id="g11357" transform="matrix(1.0223499,0.1802679,-0.1801715,1.0218034,-142.50883,-466.04399)">
|
||||
<path style="fill:url(#linearGradient11382)" d="M 322.52649,444.25728 C 326.15949,443.01428 332.35849,434.45128 332.98149,424.78428 C 333.00949,424.35428 333.65649,426.67828 333.65649,428.98828 C 332.87949,437.94128 328.47049,444.55028 324.84449,447.04628 L 322.52649,444.25728 z" inkscape:r_cy="true" inkscape:r_cx="true" sodipodi:nodetypes="csssc" id="rect25493"/>
|
||||
<path style="fill:#888a85" d="M 332.98149,424.78428 L 321.82849,432.38828 L 312.74849,427.41628 C 312.08149,428.88428 315.95449,447.98028 320.22749,446.96228 C 328.04849,445.09828 332.16349,435.78528 332.98149,424.78428 z" inkscape:r_cy="true" inkscape:r_cx="true" sodipodi:nodetypes="cccsc" id="path3285"/>
|
||||
<path style="fill:url(#linearGradient11384)" id="path23" d="M 322.07549,432.68428 L 323.06949,441.37828 L 324.97749,444.59028 C 326.91449,443.03428 328.49449,440.87628 329.72849,438.28428 C 331.33649,434.63428 332.30349,430.21428 332.65649,425.47228 L 322.07549,432.68428 z" enable-background="new "/>
|
||||
<path style="opacity:0.51380005;fill:url(#radialGradient11386)" d="M 313.59749,428.19228 C 313.59449,428.19728 313.57749,428.21928 313.57649,428.22628 C 313.57149,428.23928 313.56449,428.27228 313.56049,428.28828 C 313.04649,430.36728 316.00549,448.15728 320.19449,447.15928 C 321.12049,446.93828 322.00949,446.60928 322.83249,446.18928 L 320.58049,431.94628 L 313.59749,428.19228 z" enable-background="new " inkscape:r_cy="true" inkscape:r_cx="true" id="path5936"/>
|
||||
<path style="fill:url(#linearGradient11388)" d="M 305.84149,406.08928 C 297.90049,408.19828 292.53349,414.90528 292.95349,421.96328 C 292.95349,421.99528 292.56249,442.51428 289.68749,448.36028 C 287.43149,452.94928 240.55549,512.22128 238.61249,517.02828 C 234.50849,527.18028 246.26949,539.39528 255.82749,530.23128 C 262.12949,524.18928 296.79749,462.07328 301.96749,457.37728 C 305.46149,454.20328 324.84249,447.04528 324.84249,447.04528 L 310.76249,424.19228 L 310.04449,416.17028 L 322.15949,409.19128 C 315.08849,403.65028 305.90349,406.07228 305.84149,406.08928 z M 247.46049,514.40928 C 250.71349,513.80428 254.33749,516.82428 255.02549,520.87228 C 255.59449,524.22028 252.93349,528.13028 249.67949,528.73528 C 246.42549,529.34128 242.61749,526.22128 241.92549,522.55928 C 241.26149,519.04028 243.34849,515.17628 247.46049,514.40928 z" inkscape:r_cy="true" inkscape:r_cx="true" sodipodi:nodetypes="cccssssccccssssccssss" id="path2388"/>
|
||||
<path transform="translate(309.83849,405.96228)" mask="url(#mask10545)" style="fill:url(#linearGradient11392)" id="path72" d="M -0.051,18.554 L -0.847,9.66 C -0.847,9.66 8.141,4.482 10.38,3.193 C 3.985,-0.79 -3.654,1.07 -3.741,1.093 C -10.903,2.996 -15.908,8.865 -15.908,15.222 C -15.908,15.461 -15.901,15.701 -15.887,15.94 C -15.887,15.941 -15.887,15.941 -15.887,15.942 C -15.887,16.299 -16.25,36.73 -19.253,42.838 C -20.334,45.036 -30.401,58.18 -42.058,73.4 C -54.195,89.247 -69.3,108.968 -70.298,111.44 C -70.839,112.778 -71.079,114.126 -71.079,115.435 C -71.079,119.221 -69.06,122.663 -66.483,124.621 C -66.083,123.92 -65.655,123.178 -65.197,122.392 C -67.02,121.101 -68.463,119.074 -68.895,116.783 C -69.291,114.687 -68.831,112.48 -67.631,110.726 C -66.46,109.013 -64.659,107.855 -62.561,107.463 C -60.935,107.16 -59.182,107.593 -57.621,108.682 C -57.428,108.817 -57.245,108.966 -57.063,109.118 C -46.315,92.233 -27.938,65.35 3.195,23.824 C 1.323,20.784 -0.051,18.554 -0.051,18.554 z"/>
|
||||
<path style="fill:url(#radialGradient11394)" id="path86" d="M 310.76249,424.19228 L 310.04449,416.17028 L 322.15949,409.19128 C 320.21949,407.64028 317.84449,406.51628 315.23549,405.92928 C 312.04649,405.90828 308.79349,406.38428 306.47749,407.16528 C 298.74149,409.77428 294.69849,415.49528 294.85149,422.31128 L 303.63249,437.15128 L 306.31749,435.47228 L 312.56749,446.29728 L 310.37649,447.80128 L 313.73849,451.42828 L 324.84249,447.04628 L 310.76249,424.19228 z"/>
|
||||
<polygon transform="translate(229.83849,405.96228)" style="fill:url(#linearGradient11396)" points="65.82,36.446 76.487,27.791 85.179,40.128 72.511,46.783 65.82,36.446 " inkscape:r_cy="true" inkscape:r_cx="true" id="rect10551_2_"/>
|
||||
<polygon transform="translate(229.83849,405.96228)" style="fill:url(#radialGradient11398)" points="65.82,36.446 76.487,29.791 83.179,40.128 72.511,46.783 65.82,36.446 " inkscape:r_cy="true" inkscape:r_cx="true" id="rect10551"/>
|
||||
<polygon transform="translate(229.83849,405.96228)" style="fill:url(#radialGradient11400)" points="68.311,35.653 74.616,32.078 80.237,40.809 73.932,44.384 68.311,35.653 " inkscape:r_cy="true" inkscape:r_cx="true" id="rect14950"/>
|
||||
<polygon transform="translate(229.83849,405.96228)" style="fill:url(#radialGradient11402)" points="67.891,36.615 77.497,32.233 77.891,33.323 68.284,37.705 67.891,36.615 " inkscape:r_cy="true" inkscape:r_cx="true" id="rect10553"/>
|
||||
<polygon transform="translate(229.83849,405.96228)" style="fill:url(#radialGradient11404)" points="72.212,42.972 81.653,38.899 82.001,39.827 72.56,43.9 72.212,42.972 " inkscape:r_cy="true" inkscape:r_cx="true" id="rect14938"/>
|
||||
<polygon transform="translate(229.83849,405.96228)" style="fill:url(#radialGradient11406)" points="69.661,39.991 79.757,35.751 80.11,36.673 70.015,40.914 69.661,39.991 " inkscape:r_cy="true" inkscape:r_cx="true" id="rect14944"/>
|
||||
<path style="fill:url(#linearGradient11410)" d="M 320.80249,431.89128 C 320.76149,432.16128 322.10049,439.91928 322.18149,440.18928 C 322.85449,444.45728 323.83149,444.59528 324.03549,445.34928 C 324.76349,444.93528 324.29249,445.39528 324.92349,444.84628 C 324.80849,444.48028 323.48549,441.99528 322.95849,441.11128 C 322.71249,438.97728 321.93149,433.00328 321.86449,432.43528 C 321.45549,432.21328 321.29849,432.12528 320.80249,431.89128 z" inkscape:r_cy="true" inkscape:r_cx="true" sodipodi:nodetypes="ccccccc" id="path34280"/>
|
||||
<path style="fill:url(#linearGradient11412)" d="M 246.62049,511.92528 C 251.42949,510.02428 257.88249,515.30428 257.53849,521.11028 C 260.82449,517.31028 296.88449,460.33528 297.44649,457.74428 C 298.30649,453.77728 294.17949,450.82228 290.89849,452.88728 C 288.60949,454.32628 246.30749,512.04828 246.62049,511.92528 z" inkscape:r_cy="true" inkscape:r_cx="true" sodipodi:nodetypes="ccsss" id="path30758"/>
|
||||
<path style="fill:url(#linearGradient11414);stroke:#000000" id="path159" d="M 292.02849,454.56028 C 289.53249,456.91828 266.85449,487.60628 250.66249,509.77928 C 252.02149,510.08228 253.37949,510.67028 254.63749,511.58128 C 256.37949,512.84228 257.66849,514.51428 258.50849,516.33428 C 267.27449,503.42428 294.06749,460.80328 295.50149,457.24628 C 295.53749,457.05828 295.56249,456.87128 295.56249,456.69028 C 295.56249,455.85828 295.18949,455.11828 294.50449,454.63828 C 293.74349,454.10528 292.82549,454.08928 292.02849,454.56028 z"/>
|
||||
<path style="fill:url(#radialGradient11416)" id="path166" d="M 294.94349,422.46628 C 294.86849,425.66728 294.31649,443.48028 291.48249,449.24328 C 291.40649,449.39728 291.28449,449.60828 291.13649,449.84928 C 291.56049,449.26728 291.86549,448.81828 292.01449,448.54228 C 294.75749,443.48028 297.55549,430.48328 297.76449,427.23428 L 294.94349,422.46628 z"/>
|
||||
<path style="opacity:0.5;fill:url(#linearGradient11418)" id="path173" d="M 258.69149,526.59428 C 259.24949,525.08628 259.45349,523.49328 259.17549,521.97428 C 258.59949,518.81928 256.61749,515.87328 253.87449,514.09028 C 251.69549,512.67428 249.24349,512.11128 246.97049,512.50528 C 244.03849,513.01528 241.52249,514.52228 239.88549,516.74928 C 238.45149,518.70028 237.78049,521.08528 237.96049,523.44028 C 239.33149,531.34628 248.26549,537.48228 255.82849,530.23128 C 256.49049,529.59728 257.46949,528.33628 258.69149,526.59428 z M 249.67949,528.73528 C 246.42549,529.34128 242.61749,526.22128 241.92549,522.55928 C 241.26049,519.03928 243.34749,515.17528 247.46049,514.40928 C 250.71349,513.80428 254.33749,516.82428 255.02549,520.87228 C 255.59449,524.22028 252.93349,528.13028 249.67949,528.73528 z"/>
|
||||
<path style="fill:url(#linearGradient11420)" id="path180" d="M 256.01149,520.70428 C 255.59949,518.27928 254.18149,516.01528 252.21849,514.64428 C 250.65849,513.55528 248.90449,513.12328 247.27849,513.42528 C 245.18049,513.81728 243.38049,514.97528 242.20849,516.68828 C 241.00949,518.44128 240.54849,520.64928 240.94449,522.74528 C 241.75449,527.03328 246.08849,530.42228 249.86349,529.71928 C 253.62049,529.02028 256.66649,524.55528 256.01149,520.70428 z M 249.67949,528.73528 C 246.42549,529.34128 242.61749,526.22128 241.92549,522.55928 C 241.26049,519.03928 243.34749,515.17528 247.46049,514.40928 C 250.71349,513.80428 254.33749,516.82428 255.02549,520.87228 C 255.59449,524.22028 252.93349,528.13028 249.67949,528.73528 z"/>
|
||||
<path style="opacity:0.4;fill:url(#linearGradient11422)" id="path187" d="M 285.39049,455.48028 C 285.64549,454.95828 285.88049,454.31028 286.09549,453.56728 C 274.64749,469.16528 240.27149,512.92628 238.61349,517.02828 C 238.29049,517.82728 238.07649,518.63728 237.94149,519.45128 C 242.96749,511.10428 283.36449,459.62828 285.39049,455.48028 z"/>
|
||||
<path transform="translate(229.83849,405.96228)" clip-path="url(#clipPath4092)" style="fill:url(#linearGradient11424);filter:url(#filter4503)" id="path65" d="M 72.13,49.416 C 66.96,54.112 32.292,116.228 25.99,122.27 C 18.09,129.844 8.695,122.813 7.986,114.414 C 7.207,123.618 17.468,132.44 25.99,124.27 C 32.292,118.228 66.96,56.112 72.13,51.416 C 75.624,48.242 95.005,41.084 95.005,41.084 L 94.004,39.459 C 90.005,40.965 75.147,46.674 72.13,49.416 z"/>
|
||||
<path style="fill:url(#linearGradient11408)" d="M 310.04449,416.17028 L 322.15949,409.19128 L 322.67749,410.88528 L 310.13349,418.26728 L 310.04449,416.17028 z" inkscape:r_cy="true" inkscape:r_cx="true" sodipodi:nodetypes="ccccc" id="rect22846"/>
|
||||
<path style="fill:url(#linearGradient11390);fill-opacity:1" id="path46" d="M 310.21449,416.07228 L 322.15949,409.19128 C 321.63949,408.78428 321.10749,408.43228 320.56949,408.10728 L 310.04449,414.17028 L 310.21449,416.07228 z"/>
|
||||
</g>
|
||||
<path style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47008219000000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998000000000;stroke-opacity:1;filter:url(#filter11957);opacity:0.80000000000000004" d="M 10.375,9 L 4.21875,15.46875 L 9.125,23.1875 C 13.08003,25.264868 17.14186,27.693549 20.375,30.75 L 69.625,77.3125 L 65.5625,81.5625 L 70.8125,86.53125 C 73.7103,86.859904 76.69384,88.078409 79.15625,90.40625 C 81.64614,92.760071 83.16605,95.732279 83.625,98.625 L 108.34375,122.03125 C 114.08456,127.45836 128.43479,112.52526 122.65625,107.0625 L 97.90625,83.6875 C 94.97813,83.378226 91.9274,82.010074 89.4375,79.65625 C 86.9751,77.328414 85.57063,74.424084 85.09375,71.5625 L 79.84375,66.59375 L 75.78125,70.84375 L 26.53125,24.28125 C 23.29811,21.224799 20.16307,17.382339 18.375,13.53125 L 10.375,9 z" id="path11428"/>
|
||||
<g id="g10397" transform="matrix(0.9660937,-2.5302336e-2,2.3546854e-2,0.9608617,2.3338765,6.1294086)">
|
||||
<path id="rect3006" d="M 1.750754,7.673054 L 6.651221,15.840499 C 10.689771,18.10883 14.818666,20.740966 18.085644,24.007944 L 103.30145,109.22375 L 109.83541,102.68979 L 24.6196,17.473988 C 21.352622,14.20701 18.204176,10.093654 16.452155,6.039565 L 8.28471,1.139098 L 1.750754,7.673054 z" style="fill:url(#linearGradient6125);fill-opacity:1;stroke:none;stroke-width:0.47008219;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" sodipodi:nodetypes="ccccccccc"/>
|
||||
<rect transform="matrix(0.7071068,-0.7071068,-0.7071068,-0.7071068,0,0)" style="fill:url(#linearGradient6122);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" id="rect3912" width="1.1166428" height="98.671562" x="-1.357038" y="-123.11634"/>
|
||||
<rect style="opacity:0.3857678;fill:url(#linearGradient6119);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" id="rect4944" width="1.6020314" height="63.508739" x="0.89394951" y="-85.707031" transform="matrix(-0.7071068,0.7071068,-0.7071068,-0.7071068,0,0)"/>
|
||||
<g transform="matrix(0.8167445,-0.8167445,0.8167445,0.8167445,5.2761549,23.749521)" clip-path="url(#clipPath3850)" id="g3842">
|
||||
<path style="fill:#535557;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3834)" d="M 4.296875,-4.12891 L 5.6640625,-4.12891 C 8.3203089,-0.31380448 8.5987355,3.8409896 7.6171875,8.17578 L 4.9804688,9.1523436 L 4.296875,-4.12891 z" id="path3726" sodipodi:nodetypes="ccccc"/>
|
||||
<path sodipodi:nodetypes="ccccc" id="path3728" d="M 18.977324,-4.12891 L 17.610137,-4.12891 C 14.95389,-0.31380448 14.675464,3.8409896 15.657012,8.17578 L 18.293731,9.1523436 L 18.977324,-4.12891 z" style="fill:#535557;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3838)"/>
|
||||
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3838)" d="M 18.977324,-4.12891 L 18.231618,-4.0598566 C 16.117808,-1.3279433 15.743286,-1.0597872 15.864172,4.9302704 L 18.293731,9.1523436 L 18.977324,-4.12891 z" id="path3969" sodipodi:nodetypes="ccccc"/>
|
||||
</g>
|
||||
<rect transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)" y="41.331993" x="0.84851468" height="109.04897" width="1.9142449" id="rect3886" style="fill:url(#linearGradient6112);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
|
||||
<path transform="matrix(0.8167445,-0.8167445,0.8167445,0.8167445,-14.584136,43.609812)" id="path3925" d="M 32,-12 L 30,-4 C 34.143852,8.2009511 38.115959,5.0342786 42,-4 L 40,-12 L 32,-12 z" style="fill:url(#linearGradient3943);fill-opacity:1;stroke:url(#linearGradient6517);stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" sodipodi:nodetypes="ccccc"/>
|
||||
<path sodipodi:nodetypes="ccsccccsccc" id="rect3956" d="M 63.529919,78.09273 L 68.834311,83.397123 C 71.82354,83.817882 74.899226,85.18508 77.387407,87.673261 C 79.903365,90.189215 81.385477,93.328601 81.786903,96.34972 L 106.78156,121.34436 C 112.58247,127.14528 127.79361,112.01036 121.95458,106.17133 L 96.95993,81.176682 C 93.938823,80.775254 90.799446,79.29314 88.283481,76.777186 C 85.795299,74.289007 84.428105,71.213314 84.007344,68.22409 L 78.70295,62.919697 L 63.529919,78.09273 z" style="opacity:1;fill:url(#linearGradient4190);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
|
||||
<path transform="matrix(0.9483145,-0.9483145,0.9483145,0.9483145,-6.4444639,0.531831)" clip-path="url(#clipPath4242)" sodipodi:nodetypes="cccccc" id="path4196" d="M -8,120 C 1.7462188,130.07566 10.00314,126.89342 16,120 L 12,136 L -16,128 L -20,112 L -8,120 z" style="fill:#ffa700;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4238)"/>
|
||||
<rect transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)" y="100.16766" x="-10.297462" height="1.1132338" width="21.457907" id="rect4249" style="opacity:0.48689138;fill:#ffa500;fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
|
||||
<path sodipodi:nodetypes="ccccccc" id="rect4320" d="M 72.972033,68.720893 L 75.892922,65.800004 L 81.066844,70.973925 C 80.921148,71.564914 80.822369,72.165286 81.579665,72.936868 L 79.073097,75.857759 C 78.372014,75.392484 77.997186,74.796708 78.21501,73.963871 L 72.972033,68.720893 z" style="opacity:0.83895126;fill:url(#linearGradient4346);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
|
||||
<path sodipodi:nodetypes="ccccc" id="rect4340" d="M 4.6713727,129.88196 L 7.2816355,129.49996 C 7.2464436,130.37087 7.2584731,130.8014 7.8438776,132.01123 L 5.1273299,132.01123 C 4.7973883,130.83537 4.6035939,130.49599 4.6713727,129.88196 z" style="opacity:0.74531836;fill:url(#linearGradient4342);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter4404)" transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-4,-4)"/>
|
||||
<rect transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)" y="126.0467" x="-0.6434837" height="0.390625" width="10.644531" id="rect4432" style="opacity:1;fill:url(#radialGradient4440);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
|
||||
<path sodipodi:nodetypes="ccc" id="path4454" d="M 83.597656,68.53125 L 68.753906,82.984375 C 84.820174,88.576948 78.33289,74.329762 83.597656,68.53125 z" style="fill:url(#linearGradient4471);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4501)"/>
|
||||
<path transform="matrix(-1,0,0,-1,169.63281,168.51104)" style="fill:url(#linearGradient4515);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4501)" d="M 87.597656,72.53125 L 72.753906,86.984375 C 88.820174,92.576948 82.33289,78.329762 87.597656,72.53125 z" id="path4505" sodipodi:nodetypes="ccc"/>
|
||||
<rect transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)" ry="2.9279406" rx="2.9279406" y="132.02951" x="-7.5001087" height="29.279404" width="5.8558812" id="rect4517" style="opacity:0.83895126;fill:url(#linearGradient4525);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
|
||||
<rect inkscape:transform-center-y="-5.5242717" inkscape:transform-center-x="-16.434708" transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-4,-4)" ry="0.5577029" rx="2.9279406" y="130.97287" x="-1.1929667" height="1.1048541" width="11.60097" id="rect4527" style="opacity:0.83895126;fill:url(#linearGradient4537);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter4551)"/>
|
||||
<path transform="translate(50.492188,-4.0046875)" clip-path="url(#clipPath4588)" id="path4559" d="M 13.83125,81.09375 L 12.33125,82.59375 L 17.64375,87.90625 C 20.632979,88.327007 23.718069,89.699319 26.20625,92.1875 C 28.722207,94.703451 30.179824,97.822631 30.58125,100.84375 L 55.58125,125.84375 C 59.791769,130.05428 68.947177,123.22603 71.425,116.9375 C 68.058606,122.54366 60.345306,127.60781 56.58125,123.84375 L 31.58125,98.84375 C 31.179824,95.822631 29.722207,92.703451 27.20625,90.1875 C 24.718069,87.699319 21.632979,86.327007 18.64375,85.90625 L 13.83125,81.09375 z" style="opacity:1;fill:#996100;fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter4584)"/>
|
||||
<rect style="opacity:0.576779;fill:url(#radialGradient4602);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" id="rect4596" width="10.644531" height="0.390625" x="-0.091056541" y="100.35886" transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"/>
|
||||
<rect clip-path="url(#clipPath4632)" style="opacity:0.576779;fill:url(#linearGradient4604);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter4626)" id="rect4598" width="12.602244" height="4.0530515" x="-1.1929667" y="129.5918" rx="0" ry="0" transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-21.221011,-22.313001)" inkscape:transform-center-x="-16.434708" inkscape:transform-center-y="-5.5242717"/>
|
||||
<rect inkscape:transform-center-y="-5.5242717" inkscape:transform-center-x="-16.434708" transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-21.321011,-22.413001)" ry="0" rx="0" y="130.07516" x="3.1573973" height="1.7051741" width="7.9066095" id="rect4638" style="opacity:0.576779;fill:url(#linearGradient4640);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter4626)" clip-path="url(#clipPath4632)"/>
|
||||
<path sodipodi:nodetypes="ccccc" style="fill:url(#linearGradient6930);fill-opacity:1;stroke:none;stroke-width:0.30655462;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" d="M 2.9032773,7.9724105 L 7.1391831,15.032254 C 18.678358,20.720438 19.246981,15.680572 15.610994,6.5604419 L 8.5511516,2.3245361 L 2.9032773,7.9724105 z" id="path6537"/>
|
||||
<rect style="opacity:0.83895126;fill:url(#linearGradient7698);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" id="rect7696" width="5.8558812" height="29.279404" x="4.5207062" y="132.73663" rx="2.9279406" ry="2.9279406" transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"/>
|
||||
<rect style="opacity:0.95131088;fill:url(#linearGradient4338);fill-opacity:1;stroke:none;stroke-width:0.37;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1" id="rect4336" width="2.5833137" height="38.179485" x="0.94721299" y="126.14276" transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 56 KiB |
53
utils/nwztools/plattools/data/make_images.sh
Executable file
53
utils/nwztools/plattools/data/make_images.sh
Executable file
|
|
@ -0,0 +1,53 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# This script contains the code used to produce all the images.
|
||||
# Because of the variety of tools needed to achieve that, the result is also
|
||||
# included in the repository but this makes it easier to modify the data
|
||||
# to add more content
|
||||
#
|
||||
|
||||
# path to root of repository
|
||||
ROOT_DIR=../../../../
|
||||
|
||||
# final resolution
|
||||
NWZ_WIDTH=130
|
||||
NWZ_HEIGHT=130
|
||||
|
||||
# path to rockbox icon
|
||||
RB_ICON_PATH=$ROOT_DIR/docs/logo/rockbox-icon.svg
|
||||
# path to tools icon (currently stolen from KDE Oxygen icon set)
|
||||
TOOL_ICON_PATH=Oxygen480-categories-preferences-system.svg
|
||||
|
||||
# convert_svg width height input output
|
||||
function convert_svg
|
||||
{
|
||||
local width="$1"
|
||||
local height="$2"
|
||||
local input="$3"
|
||||
local output="$4"
|
||||
TMP=tmp.png
|
||||
# convert from SVG to PNG
|
||||
inkscape -z -e $TMP -w $width -h $height $input
|
||||
if [ "$?" != 0 ]; then
|
||||
echo "SVG -> PNG conversion failed"
|
||||
exit 1
|
||||
fi
|
||||
# convert from PNG to BMP, force using "version 3" because the OF don't like
|
||||
# "recent" BMP
|
||||
convert -channel RGB $TMP -define bmp:format=bmp3 ${output}_icon.bmp
|
||||
if [ "$?" != 0 ]; then
|
||||
rm -f $TMP
|
||||
echo "PNG -> BMP conversion failed"
|
||||
exit 1
|
||||
fi
|
||||
# remove temporary
|
||||
rm -f $TMP
|
||||
}
|
||||
|
||||
# start by creating the bitmap files from rockbox-icon.svg for all resolutions
|
||||
# we make a detour by svg because inkscape can only export to SVG
|
||||
# NOTE: we use image magick to convert to bmp but the OF tools don't like BMPv5
|
||||
# and contrary to what the documentation says, image magick tends to produce
|
||||
# those by default unless asked otherwise
|
||||
convert_svg $NWZ_WIDTH $NWZ_HEIGHT $RB_ICON_PATH rockbox
|
||||
convert_svg $NWZ_WIDTH $NWZ_HEIGHT $TOOL_ICON_PATH tools
|
||||
BIN
utils/nwztools/plattools/data/rockbox_icon.bmp
Normal file
BIN
utils/nwztools/plattools/data/rockbox_icon.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
BIN
utils/nwztools/plattools/data/tools_icon.bmp
Normal file
BIN
utils/nwztools/plattools/data/tools_icon.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
|
|
@ -24,6 +24,64 @@
|
|||
#include "nwz_lib.h"
|
||||
#include "nwz_plattools.h"
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* all images must have the following size */
|
||||
#define ICON_WIDTH 130
|
||||
#define ICON_HEIGHT 130
|
||||
|
||||
/* images */
|
||||
#include "data/rockbox_icon.h"
|
||||
#if BMPWIDTH_rockbox_icon != ICON_WIDTH || BMPHEIGHT_rockbox_icon != ICON_HEIGHT
|
||||
#error rockbox_icon has the wrong resolution
|
||||
#endif
|
||||
#include "data/tools_icon.h"
|
||||
#if BMPWIDTH_tools_icon != ICON_WIDTH || BMPHEIGHT_tools_icon != ICON_HEIGHT
|
||||
#error tools_icon has the wrong resolution
|
||||
#endif
|
||||
/* buffer for Sony image, filled from NVP */
|
||||
unsigned short sony_icon[ICON_WIDTH * ICON_HEIGHT];
|
||||
/* resolution */
|
||||
static int width, height, bpp;
|
||||
|
||||
/* return icon y position (x is always centered) */
|
||||
int get_icon_y(void)
|
||||
{
|
||||
/* adjust so that this contains the Sony logo and produces a nice logo
|
||||
* when used with rockbox */
|
||||
if(height == 320)
|
||||
return 70;
|
||||
else if(height == 320)
|
||||
return 100;
|
||||
else
|
||||
return height / 2 - ICON_HEIGHT + 30; /* guess, probably won't work */
|
||||
}
|
||||
|
||||
/* Sony logo extraction */
|
||||
bool extract_sony_logo(void)
|
||||
{
|
||||
/* only support bpp of 16 */
|
||||
if(bpp != 16)
|
||||
return false;
|
||||
/* load the entire image from the nvp */
|
||||
int bti_size = nwz_nvp_read(NWZ_NVP_BTI, NULL);
|
||||
if(bti_size < 0)
|
||||
return false;
|
||||
unsigned short *bti = malloc(bti_size);
|
||||
if(nwz_nvp_read(NWZ_NVP_BTI, bti) != bti_size)
|
||||
return false;
|
||||
/* compute the offset in the image of the logo itself */
|
||||
int x_off = (width - ICON_WIDTH) / 2; /* logo is centered horizontally */
|
||||
int y_off = get_icon_y();
|
||||
/* extract part of the image */
|
||||
for(int y = 0; y < ICON_HEIGHT; y++)
|
||||
{
|
||||
memcpy(sony_icon + ICON_WIDTH * y,
|
||||
bti + width * (y + y_off) + x_off, ICON_WIDTH * sizeof(unsigned short));
|
||||
}
|
||||
free(bti);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Important Note: this bootloader is carefully written so that in case of
|
||||
* error, the OF is run. This seems like the safest option since the OF is
|
||||
|
|
@ -36,13 +94,28 @@ enum boot_mode
|
|||
BOOT_OF
|
||||
};
|
||||
|
||||
void draw_icon(int left, int top, const unsigned short *icon, unsigned short *fb_mmap)
|
||||
{
|
||||
for(int y = 0; y < ICON_HEIGHT; y++)
|
||||
{
|
||||
memcpy(fb_mmap + width * (y + top) + left, icon + ICON_WIDTH * y,
|
||||
ICON_WIDTH * sizeof(unsigned short));
|
||||
}
|
||||
}
|
||||
|
||||
enum boot_mode get_boot_mode(void)
|
||||
{
|
||||
/* get time */
|
||||
struct timeval deadline;
|
||||
if(gettimeofday(&deadline, NULL) != 0)
|
||||
if(bpp != 16)
|
||||
{
|
||||
nwz_lcdmsg(false, 0, 2, "Cannot get time");
|
||||
nwz_lcdmsg(true, 0, 2, "Unsupported bpp");
|
||||
sleep(2);
|
||||
return BOOT_OF;
|
||||
}
|
||||
/* open framebuffer */
|
||||
int fb_fd = nwz_fb_open(true);
|
||||
if(fb_fd < 0)
|
||||
{
|
||||
nwz_lcdmsg(true, 0, 2, "Cannot open input device");
|
||||
sleep(2);
|
||||
return BOOT_OF;
|
||||
}
|
||||
|
|
@ -50,70 +123,131 @@ enum boot_mode get_boot_mode(void)
|
|||
int input_fd = nwz_key_open();
|
||||
if(input_fd < 0)
|
||||
{
|
||||
nwz_lcdmsg(false, 0, 2, "Cannot open input device");
|
||||
nwz_fb_close(fb_fd);
|
||||
nwz_lcdmsg(true, 0, 2, "Cannot open input device");
|
||||
sleep(2);
|
||||
return BOOT_OF;
|
||||
}
|
||||
int fb_size = width * height * bpp / 2;
|
||||
void *fb_mmap = nwz_fb_mmap(fb_fd, 0, fb_size);
|
||||
void *fb_mmap_p1 = nwz_fb_mmap(fb_fd, NWZ_FB_LCD_PAGE_OFFSET, fb_size);
|
||||
if(fb_mmap == NULL || fb_mmap_p1 == NULL)
|
||||
{
|
||||
nwz_fb_close(fb_fd);
|
||||
nwz_key_close(input_fd);
|
||||
nwz_lcdmsg(true, 0, 2, "Cannot map framebuffer");
|
||||
sleep(2);
|
||||
return BOOT_OF;
|
||||
}
|
||||
deadline.tv_sec += 5;
|
||||
/* wait for user action */
|
||||
enum boot_mode mode = BOOT_OF;
|
||||
/* NOTE on drawing: since screen is redrawn automatically, and we invoke
|
||||
* external programs to draw, we can't hope to fit it in the frame time
|
||||
* and it will flicker. To avoid this, we use the fact that all programs
|
||||
* only write to page 0. So we setup the lcd to update from page 1. When
|
||||
* we need to update the screen, we ask it to draw from page 0, then copy
|
||||
* page 0 to page 1 and then switch back to page 1 */
|
||||
memset(fb_mmap_p1, 0xff, fb_size); /* clear page 1 */
|
||||
nwz_fb_set_page(fb_fd, 1);
|
||||
bool redraw = true;
|
||||
while(true)
|
||||
{
|
||||
/* get time */
|
||||
struct timeval cur_time;
|
||||
if(gettimeofday(&cur_time, NULL) != 0)
|
||||
if(redraw)
|
||||
{
|
||||
nwz_lcdmsg(false, 0, 4, "Cannot get time");
|
||||
sleep(2);
|
||||
break;
|
||||
/* redraw screen on page 0: clear screen */
|
||||
memset(fb_mmap, 0, fb_size);
|
||||
/* display top text */
|
||||
nwz_display_text_center(width, 0, true, NWZ_COLOR(255, 201, 0),
|
||||
NWZ_COLOR(0, 0, 0), 0, "SELECT PLAYER");
|
||||
/* display icon */
|
||||
const unsigned short *icon = (mode == BOOT_OF) ? sony_icon :
|
||||
(mode == BOOT_ROCKBOX) ? rockbox_icon : tools_icon;
|
||||
draw_icon((width - ICON_WIDTH) / 2, get_icon_y(), icon, fb_mmap);
|
||||
/* display bottom description */
|
||||
const char *desc = (mode == BOOT_OF) ? "SONY" :
|
||||
(mode == BOOT_ROCKBOX) ? "ROCKBOX" : "DEBUG TOOLS";
|
||||
nwz_display_text_center(width, get_icon_y() + ICON_HEIGHT + 30, true,
|
||||
NWZ_COLOR(255, 201, 0), NWZ_COLOR(0, 0, 0), 0, desc);
|
||||
/* display arrows */
|
||||
int arrow_y = get_icon_y() + ICON_HEIGHT / 2 - NWZ_FONT_H(true) / 2;
|
||||
nwz_display_text(NWZ_FONT_W(true) / 2, arrow_y, true,
|
||||
NWZ_COLOR(255, 201, 0), NWZ_COLOR(0, 0, 0), 0, "<");
|
||||
nwz_display_text(width - 3 * NWZ_FONT_W(true) / 2, arrow_y, true,
|
||||
NWZ_COLOR(255, 201, 0), NWZ_COLOR(0, 0, 0), 0, ">");
|
||||
/* switch to page 1 */
|
||||
nwz_fb_set_page(fb_fd, 0);
|
||||
/* copy page 0 to page 1 */
|
||||
memcpy(fb_mmap_p1, fb_mmap, fb_size);
|
||||
/* switch back to page 1 */
|
||||
nwz_fb_set_page(fb_fd, 1);
|
||||
|
||||
redraw = false;
|
||||
}
|
||||
/* check timeout */
|
||||
if(cur_time.tv_sec > deadline.tv_sec)
|
||||
break;
|
||||
if(cur_time.tv_sec == deadline.tv_sec && cur_time.tv_usec >= deadline.tv_usec)
|
||||
break;
|
||||
/* print message */
|
||||
int sec_left = deadline.tv_sec - cur_time.tv_sec;
|
||||
sec_left += (deadline.tv_usec - cur_time.tv_usec + 999999) / 1000000; /* round up */
|
||||
nwz_lcdmsgf(false, 0, 2, "Booting OF in %d seconds ", sec_left);
|
||||
nwz_lcdmsg(false, 0, 3, "Press BACK to run tools");
|
||||
nwz_lcdmsg(false, 0, 3, "Press PLAY to boot RB");
|
||||
/* wait for a key (1s) */
|
||||
int ret = nwz_key_wait_event(input_fd, 1000000);
|
||||
|
||||
/* wait for a key */
|
||||
int ret = nwz_key_wait_event(input_fd, -1);
|
||||
if(ret != 1)
|
||||
continue;
|
||||
struct input_event evt;
|
||||
if(nwz_key_read_event(input_fd, &evt) != 1)
|
||||
continue;
|
||||
/* only act on release */
|
||||
if(nwz_key_event_is_press(&evt))
|
||||
continue;
|
||||
if(nwz_key_event_get_keycode(&evt) == NWZ_KEY_PLAY)
|
||||
{
|
||||
mode = BOOT_ROCKBOX;
|
||||
int key_code = nwz_key_event_get_keycode(&evt);
|
||||
/* play -> stop loop and return mode */
|
||||
if(key_code == NWZ_KEY_PLAY)
|
||||
break;
|
||||
/* left/right/up/down: change mode */
|
||||
if(key_code == NWZ_KEY_LEFT || key_code == NWZ_KEY_DOWN)
|
||||
{
|
||||
if(mode == BOOT_ROCKBOX)
|
||||
mode = BOOT_OF;
|
||||
else if(mode == BOOT_OF)
|
||||
mode = BOOT_TOOLS;
|
||||
else
|
||||
mode = BOOT_ROCKBOX;
|
||||
redraw = true;
|
||||
}
|
||||
else if(nwz_key_event_get_keycode(&evt) == NWZ_KEY_BACK)
|
||||
if(key_code == NWZ_KEY_RIGHT || key_code == NWZ_KEY_UP)
|
||||
{
|
||||
mode = BOOT_TOOLS;
|
||||
break;
|
||||
if(mode == BOOT_ROCKBOX)
|
||||
mode = BOOT_TOOLS;
|
||||
else if(mode == BOOT_OF)
|
||||
mode = BOOT_ROCKBOX;
|
||||
else
|
||||
mode = BOOT_OF;
|
||||
redraw = true;
|
||||
}
|
||||
}
|
||||
/* switch back to page 0 */
|
||||
nwz_fb_set_page(fb_fd, 0);
|
||||
nwz_key_close(input_fd);
|
||||
nwz_fb_close(fb_fd);
|
||||
return mode;
|
||||
}
|
||||
|
||||
static char *boot_rb_argv[] =
|
||||
{
|
||||
"lcdmsg",
|
||||
"-c",
|
||||
"-l",
|
||||
"0,3",
|
||||
"Hello from RB",
|
||||
"rockbox.sony",
|
||||
NULL
|
||||
};
|
||||
|
||||
int NWZ_TOOL_MAIN(all_tools)(int argc, char **argv);
|
||||
|
||||
void error_screen(const char *msg)
|
||||
{
|
||||
nwz_lcdmsg(true, 0, 0, msg);
|
||||
sleep(3);
|
||||
}
|
||||
|
||||
void create_sony_logo(void)
|
||||
{
|
||||
for(int y = 0; y < ICON_HEIGHT; y++)
|
||||
for(int x = 0; x < ICON_WIDTH; x++)
|
||||
sony_icon[y * ICON_WIDTH + x] = 0xf81f;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
/* make sure backlight is on and we are running the standard lcd mode */
|
||||
|
|
@ -125,9 +259,20 @@ int main(int argc, char **argv)
|
|||
bl.level = NWZ_FB_BL_MAX_LEVEL;
|
||||
nwz_fb_set_brightness(fb_fd, &bl);
|
||||
nwz_fb_set_standard_mode(fb_fd);
|
||||
/* get resolution */
|
||||
/* we also need to get the native resolution */
|
||||
if(nwz_fb_get_resolution(fb_fd, &width, &height, &bpp) != 0)
|
||||
{
|
||||
/* safe one */
|
||||
width = 240;
|
||||
height = 320;
|
||||
bpp = 16;
|
||||
}
|
||||
nwz_fb_close(fb_fd);
|
||||
}
|
||||
nwz_lcdmsg(true, 0, 0, "dualboot");
|
||||
/* extract logo */
|
||||
if(!extract_sony_logo())
|
||||
create_sony_logo();
|
||||
/* run all tools menu */
|
||||
enum boot_mode mode = get_boot_mode();
|
||||
if(mode == BOOT_TOOLS)
|
||||
|
|
@ -137,19 +282,19 @@ int main(int argc, char **argv)
|
|||
}
|
||||
else if(mode == BOOT_ROCKBOX)
|
||||
{
|
||||
/* boot rockox */
|
||||
nwz_lcdmsg(true, 0, 3, "Booting rockbox...");
|
||||
/* in the future, we will run rockbox here, for now we just print a
|
||||
* message */
|
||||
execvp("/usr/local/bin/lcdmsg", boot_rb_argv);
|
||||
/* Rockbox expects /.rockbox to contain themes, rocks, etc, but we
|
||||
* cannot easily create this symlink because the root filesystem is
|
||||
* mounted read-only. Although we could remount it read-write temporarily,
|
||||
* this is neededlessly complicated and we defer this job to the dualboot
|
||||
* install script */
|
||||
execvp("/contents/.rockbox/rockbox.sony", boot_rb_argv);
|
||||
/* fallback to OF in case of failure */
|
||||
nwz_lcdmsg(false, 0, 4, "failed.");
|
||||
error_screen("Cannot boot Rockbox");
|
||||
sleep(5);
|
||||
}
|
||||
/* boot OF */
|
||||
nwz_lcdmsg(true, 0, 3, "Booting OF...");
|
||||
execvp("/usr/local/bin/SpiderApp.of", argv);
|
||||
nwz_lcdmsg(false, 0, 4, "failed.");
|
||||
error_screen("Cannot boot OF");
|
||||
sleep(5);
|
||||
/* if we reach this point, everything failed, so return an error so that
|
||||
* sysmgrd knows something is wrong */
|
||||
|
|
|
|||
|
|
@ -156,6 +156,13 @@ void nwz_display_text(int x, int y, bool big_font, nwz_color_t foreground_col,
|
|||
nwz_run(path_display, args, true);
|
||||
}
|
||||
|
||||
void nwz_display_text_center(int width, int y, bool big_font, nwz_color_t fg,
|
||||
nwz_color_t bg, int alpha, const char *text)
|
||||
{
|
||||
int txt_w = NWZ_FONT_W(big_font) * strlen(text);
|
||||
nwz_display_text((width - txt_w) / 2, y, big_font, fg, bg, alpha, text);
|
||||
}
|
||||
|
||||
void nwz_display_textf(int x, int y, bool big_font, nwz_color_t foreground_col,
|
||||
nwz_color_t background_col, int alpha, const char *fmt, ...)
|
||||
{
|
||||
|
|
@ -167,6 +174,17 @@ void nwz_display_textf(int x, int y, bool big_font, nwz_color_t foreground_col,
|
|||
nwz_display_text(x, y, big_font, foreground_col, background_col, alpha, buffer);
|
||||
}
|
||||
|
||||
void nwz_display_textf_center(int width, int y, bool big_font, nwz_color_t fg,
|
||||
nwz_color_t bg, int alpha, const char *fmt, ...)
|
||||
{
|
||||
char buffer[1024];
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
vsprintf(buffer, fmt, args);
|
||||
va_end(args);
|
||||
nwz_display_text_center(width, y, big_font, fg, bg, alpha, buffer);
|
||||
}
|
||||
|
||||
void nwz_display_bitmap(int x, int y, const char *file, int left, int top,
|
||||
int width, int height, nwz_color_t key_col, int bmp_alpha)
|
||||
{
|
||||
|
|
@ -319,6 +337,21 @@ int nwz_fb_set_brightness(int fd, struct nwz_fb_brightness *bl)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int nwz_fb_set_page(int fd, int page)
|
||||
{
|
||||
/* set page mode to no transparency and no rotation */
|
||||
struct nwz_fb_image_info mode_info;
|
||||
mode_info.tc_enable = 0;
|
||||
mode_info.t_color = 0;
|
||||
mode_info.alpha = 0;
|
||||
mode_info.rot = 0;
|
||||
mode_info.page = page;
|
||||
mode_info.update = NWZ_FB_ONLY_2D_MODE;
|
||||
if(ioctl(fd, NWZ_FB_UPDATE, &mode_info) < 0)
|
||||
return -2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int nwz_fb_set_standard_mode(int fd)
|
||||
{
|
||||
/* disable timer (apparently useless with LCD) */
|
||||
|
|
@ -327,17 +360,7 @@ int nwz_fb_set_standard_mode(int fd)
|
|||
update_timer.timeout = NWZ_FB_DEFAULT_TIMEOUT;
|
||||
if(ioctl(fd, NWZ_FB_UPDATE_TIMER, &update_timer) < 0)
|
||||
return -1;
|
||||
/* set page 0 mode to no transparency and no rotation */
|
||||
struct nwz_fb_image_info mode_info;
|
||||
mode_info.tc_enable = 0;
|
||||
mode_info.t_color = 0;
|
||||
mode_info.alpha = 0;
|
||||
mode_info.rot = 0;
|
||||
mode_info.page = 0;
|
||||
mode_info.update = NWZ_FB_ONLY_2D_MODE;
|
||||
if(ioctl(fd, NWZ_FB_UPDATE, &mode_info) < 0)
|
||||
return -2;
|
||||
return 0;
|
||||
return nwz_fb_set_page(fd, 0);
|
||||
}
|
||||
|
||||
int nwz_fb_get_resolution(int fd, int *x, int *y, int *bpp)
|
||||
|
|
@ -354,6 +377,11 @@ int nwz_fb_get_resolution(int fd, int *x, int *y, int *bpp)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void *nwz_fb_mmap(int fd, int offset, int size)
|
||||
{
|
||||
return mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, (off_t)offset);
|
||||
}
|
||||
|
||||
int nwz_adc_open(void)
|
||||
{
|
||||
return open(NWZ_ADC_DEV, O_RDONLY);
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
#include "nwz_keys.h"
|
||||
#include "nwz_fb.h"
|
||||
|
|
@ -72,11 +73,19 @@ typedef int nwz_color_t;
|
|||
#define NWZ_COLOR_GREEN(col) (((col) >> 8) & 0xff)
|
||||
#define NWZ_COLOR_BLUE(col) ((col) & 0xff)
|
||||
#define NWZ_COLOR_NO_KEY (1 << 24)
|
||||
|
||||
#define NWZ_FONT_W(big_font) ((big_font) ? 14 : 8)
|
||||
#define NWZ_FONT_H(big_font) ((big_font) ? 24 : 14)
|
||||
|
||||
void nwz_display_clear(nwz_color_t color);
|
||||
void nwz_display_text(int x, int y, bool big_font, nwz_color_t foreground_col,
|
||||
nwz_color_t background_col, int background_alpha, const char *text);
|
||||
void nwz_display_text_center(int width, int y, bool big_font, nwz_color_t foreground_col,
|
||||
nwz_color_t background_col, int background_alpha, const char *text);
|
||||
void nwz_display_textf(int x, int y, bool big_font, nwz_color_t foreground_col,
|
||||
nwz_color_t background_col, int background_alpha, const char *fmt, ...);
|
||||
void nwz_display_textf_center(int width, int y, bool big_font, nwz_color_t foreground_col,
|
||||
nwz_color_t background_col, int background_alpha, const char *fmt, ...);
|
||||
void nwz_display_bitmap(int x, int y, const char *file, int left, int top,
|
||||
int width, int height, nwz_color_t key, int bmp_alpha);
|
||||
|
||||
|
|
@ -113,6 +122,10 @@ int nwz_fb_set_brightness(int fd, struct nwz_fb_brightness *bl);
|
|||
/* setup framebuffer to its standard mode: LCD output, page 0, no transparency
|
||||
* and no rotation, 2D only updates */
|
||||
int nwz_fb_set_standard_mode(int fd);
|
||||
/* change framebuffer page and update screen */
|
||||
int nwz_fb_set_page(int fd, int page);
|
||||
/* map framebuffer */
|
||||
void *nwz_fb_mmap(int fd, int offset, int size);
|
||||
|
||||
/* open adc device */
|
||||
int nwz_adc_open(void);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ nvpflag fup 0xFFFFFFFF
|
|||
# FIXME document this
|
||||
#
|
||||
|
||||
|
||||
# go to /tmp
|
||||
cd /tmp
|
||||
|
||||
|
|
@ -30,6 +29,9 @@ if [ "$?" != 0 ]; then
|
|||
exit 0
|
||||
fi
|
||||
|
||||
# redirect all output to a log file
|
||||
exec > "$CONTENTS/install_dualboot_log.txt" 2>&1
|
||||
|
||||
# import constants
|
||||
. /install_script/constant.txt
|
||||
_UPDATE_FN_=`nvpstr ufn`
|
||||
|
|
@ -66,6 +68,7 @@ fi
|
|||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,9 "Install rockbox"
|
||||
fwpchk -f /contents/$_UPDATE_FN_.UPG -c -1 $SPIDERAPP_PATH
|
||||
if [ "$?" != 0 ]; then
|
||||
umount "$ROOTFS_TMP_DIR"
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: no file to extract"
|
||||
sleep 3
|
||||
exit 0
|
||||
|
|
@ -74,40 +77,45 @@ fi
|
|||
# make it executable and change user/group
|
||||
chmod 775 $SPIDERAPP_PATH
|
||||
if [ "$?" != 0 ]; then
|
||||
umount "$ROOTFS_TMP_DIR"
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: cannot make it executable"
|
||||
sleep 3
|
||||
exit 0
|
||||
fi
|
||||
chown 500:500 $SPIDERAPP_PATH
|
||||
if [ "$?" != 0 ]; then
|
||||
umount "$ROOTFS_TMP_DIR"
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: cannot change owner"
|
||||
sleep 3
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# # change main application
|
||||
# lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,9 "Modify app list"
|
||||
# sed -i 's/Rockbox/SpiderApp/' $ROOTFS_TMP_DIR/etc/AppList.conf
|
||||
# if [ "$?" != 0 ]; then
|
||||
# lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,14 "ERROR: sed failed"
|
||||
# sleep 3
|
||||
# exit 0
|
||||
# fi
|
||||
# # and fix ownership
|
||||
# chown 500:500 $ROOTFS_TMP_DIR/etc/AppList.conf
|
||||
# if [ "$?" != 0 ]; then
|
||||
# lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,14 "ERROR: cannot change group"
|
||||
# sleep 3
|
||||
# exit 0
|
||||
# fi
|
||||
cat $ROOTFS_TMP_DIR/etc/AppList.conf >$CONTENTS/AppList.conf
|
||||
ls -l $ROOTFS_TMP_DIR/usr/local/bin/ >$CONTENTS/ls.txt
|
||||
ls -l $ROOTFS_TMP_DIR/etc/ >$CONTENTS/ls2.txt
|
||||
# create a symlink from /.rockbox to /contents/.rockbox (see dualboot code
|
||||
# for why)
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,10 "Create rockbox symlink"
|
||||
rm -f "$ROOTFS_TMP_DIR/.rockbox"
|
||||
ln -s "$CONTENTS/.rockbox" "$ROOTFS_TMP_DIR/.rockbox"
|
||||
if [ "$?" != 0 ]; then
|
||||
umount "$ROOTFS_TMP_DIR"
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: cannot create rockbox symlink"
|
||||
sleep 3
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# change user/group
|
||||
chown -h 500:500 "$ROOTFS_TMP_DIR/.rockbox"
|
||||
if [ "$?" != 0 ]; then
|
||||
umount "$ROOTFS_TMP_DIR"
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: cannot change symlink owner"
|
||||
sleep 3
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# unmount root partition
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,10 "Unmount root filesystem"
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,11 "Unmount root filesystem"
|
||||
sync
|
||||
if [ "$?" != 0 ]; then
|
||||
umount "$ROOTFS_TMP_DIR"
|
||||
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: sync failed"
|
||||
sleep 3
|
||||
exit 0
|
||||
|
|
@ -125,5 +133,6 @@ lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "Rebooting in 3 seconds."
|
|||
sleep 3
|
||||
sync
|
||||
|
||||
echo "Installation successful"
|
||||
# finish
|
||||
exit 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue