1
0
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-20 12:19:10 +00:00

Build 918

This commit is contained in:
CyanWorlds
2013-07-05 15:28:19 -07:00
parent 68ba122afe
commit 46a0cf6206
808 changed files with 148802 additions and 77916 deletions

View File

@ -0,0 +1,864 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
id="svg2"
version="1.1"
inkscape:version="0.48.1 r9760"
sodipodi:docname="making of cursors.svg"
inkscape:export-xdpi="360"
inkscape:export-ydpi="360">
<defs
id="defs4">
<filter
inkscape:collect="always"
id="filter6135"
x="-0.5"
width="2"
y="-0.5"
height="2"
inkscape:label="filter6135"
color-interpolation-filters="sRGB">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="1.5"
id="feGaussianBlur6137" />
</filter>
<mask
x="-0.5"
y="-0.5"
width="2"
height="2"
id="mask6840">
<g
id="g6842">
<rect
y="0"
x="0"
height="48"
width="48"
id="rect6844"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
<use
height="1"
width="1"
id="use6846"
xlink:href="#path4148"
y="0"
x="0"
style="fill:#404040;fill-opacity:1;display:inline" />
<use
height="1"
width="1"
id="use6845"
xlink:href="#path4146"
y="0"
x="0"
style="fill:#404040;fill-opacity:1;display:inline" />
<use
height="1"
width="1"
id="use6844"
xlink:href="#path4144"
y="0"
x="0"
style="fill:#404040;fill-opacity:1;display:inline" />
<use
height="1"
width="1"
id="use6843"
xlink:href="#path4119"
y="0"
x="0"
style="fill:#404040;fill-opacity:1;display:inline" />
</g>
</mask>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="12"
inkscape:cx="24"
inkscape:cy="24"
inkscape:document-units="px"
inkscape:current-layer="layer35"
showgrid="false"
inkscape:window-width="1541"
inkscape:window-height="889"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:object-nodes="true"
inkscape:snap-grids="true">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="4"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
<inkscape:grid
type="xygrid"
id="grid3997"
empspacing="8"
visible="true"
enabled="false"
snapvisiblegridlinesonly="true"
spacingx="0.5px"
spacingy="0.5px"
color="#00ff00"
opacity="0.1254902"
empcolor="#00ff00"
empopacity="0.25098039" />
<inkscape:grid
type="xygrid"
id="grid4665"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="24px"
spacingy="24px"
color="#ff00ff"
opacity="0.15686275"
empcolor="#ff00ff"
empopacity="0.4" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="poised orig in"
inkscape:groupmode="layer"
id="layer1"
style="display:none"
sodipodi:insensitive="true">
<image
y="7.2600002"
x="7.2600002"
id="image3065"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAA3NCSVQICAjb4U/gAAAAvUlEQVRI
ie2UTRKDIAyFn53eK9yM5GYvJ6OLjBnHVrCjCxd8K3yRhPwAMJlMnoGqkmwrJFX1NtftmDNhXn1z
KQWAu5vZsmJm7p7WPu+OjaSIuDtJAK210FMREZL9MIMMIgyAWmsqIpL6JaLQuYiKZ1e2P9wTYKj/
ZFyiJDP4/6gHxOyr6vewpjjsRC+D2BxDYmapxzr0SwEAuLuIhK+8B+E9Jri/fczukdhy8sFYzoTJ
axWfedHubPhkMnkyH5cn3C3UVHXpAAAAAElFTkSuQmCC
"
height="34.560001"
width="34.560001"
inkscape:export-xdpi="333.32999"
inkscape:export-ydpi="333.32999" />
</g>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="poised orig out"
style="display:none"
sodipodi:insensitive="true">
<image
y="6"
x="6"
id="image4063"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAIAAABuYg/PAAAAA3NCSVQICAjb4U/gAAACd0lEQVRI
ie2UvWvqUBiHjyY1iR+kKWgxceoSP1JEKBIIuAtuxe5uDgWdOtq/wdExOKqTICi4OCiYDE6KaKao
CFqraJGamNzB5cKFxtYOd8gznvOe8zsP5+UFwMTExOSnWM4vxXHcbrejKApBEABAVdX9fv/x8bHb
7X7zRSiKXl9fv7y81Gq1t7c3Xdd1XZdluVwup1IpHMcRBPm1pFwut91uNU3TNE3/i9OKJEnpdPqc
q2DjChjmOM5ms/V6vW63y/P8eDwGALAsm0wmo9Gox+OJRCLnhBn82e3tbT6fTyQSw+Gw0+msViuO
40iSBACs12tJkhRFiUajBEGUSqVMJnORGQzDPp/PbrcLgrBareLxeCgUwjAMAPD5+amqaqvV6vf7
8XicoihDM+vX2zabLRAIWCwWnuc5jguFQqIoZrPZ19fX4XDIMIzX661WqyiK0jRtGGZgBkHQzc0N
AGA8HpMkiWFYpVIpFosYhrnd7ufnZ5fLJcsyBEEEQVxq9i84jmMY5nQ6HQ7Hd88amKmqOplMfD4f
y7KDwYAkycfHR7fb7XA4YrHYfD5fLpf39/eKokynU8Mw6OttBEHC4XAgEDgej6eODwaDsVgsEokc
Dod2uz2bzViW9Xq99Xq9VqtdZKYoymg0WiwWDw8Px+NREITJZOJyuQAAy+Vys9nc3d3RND2fzyVJ
utQMhmGKolAU9fv9BEFomtZoNJrNpiAIVquVZVmGYa6urtrttiiK/X7fMM8ABEHS6XShUJjNZrvd
TlXV06w6HA7v7++DwYDn+aenp3Ou+sbUz+fzFEXRNH3q8ul0KoqiJEmyLJdKpR+qmJiYmPyP/AHn
shrr/cpNswAAAABJRU5ErkJggg==
"
height="36"
width="36" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="4wayclosed orig in"
style="display:none"
sodipodi:insensitive="true">
<image
y="7.2599926"
x="7.2600002"
id="image3191"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAA3NCSVQICAjb4U/gAAABQElEQVRI
icVWW5LEIAiU2b0XHCU3CbkZnMz9YIpy0RidxBq+YgLdPLRNSpPGzLMhEyYiOedVHMycc845i8hC
dLPxIl6DfkTUWd61kP5Uo35H0Pd9V9US8ckKOu1eu2UHDUacrDmIaEtv1wMVNMfrQ/6cwCPt6AYs
Zvb3dciFiYiHlSglqGEFDgvs0dRK4MpTN8pfunNPSDy7IAO2dKb6lLlD6R+1pJldIGgOuU/gSbyY
WVX7g6kdRkLeBCklIjqO4wzXGhg++TydqRyvqhJRY+BhY5RjPNtFjuKtDrj/5NpKQUR3UlVENA4i
AgCTORFBxLJRRKSqAHB9IGwL+nO9hXyGpdst2Qg0t0TiC3Yz2aE7uRY7a9pjjWrOefBOHqqgeQM/
/He0/L+olKxLIfrcZtNPKf1MEQAAAGzbNhW11v4AthMpECAoHYUAAAAASUVORK5CYII=
"
height="34.560001"
width="34.560001" />
</g>
<g
inkscape:groupmode="layer"
id="layer6"
inkscape:label="4wayclosed orig out"
style="opacity:0.5;display:none"
sodipodi:insensitive="true">
<image
y="6"
x="6"
id="image4110"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAIAAABuYg/PAAAAA3NCSVQICAjb4U/gAAAFr0lEQVRI
ib1XTUwTWxS+0E6n1tYKrR3TKZAaf0omZtpaGmwTImJCapSFiYkRYmxiDJoad8YVxMS9uFF0pRY3
NFGJFTDdNCUFKg1B1E7JwCBK6TTtNNBJU5oZ27eYF0QfypTne99qcm6+77vnzJlz7wDwP0KyMxqG
YVqtNpPJ/OdmFy5cuH37ttlspml6eXl5Bwpi4XQ6h4aG8vk8QRBXr16tiFtZZg6H4/r1662trWq1
Wi6Xcxy3uLiYTCZF0qsrMjt58mRLS4tWqwUAKJVKq9XqcDjE0yvIDMdxt9ttMplkMpkQgSCoqqqK
pumlpaU/aYZh2I0bN44dO7a2trayspJKpVKpVLFYRBCkurr67du3YkSkIs1Onz6t0WhGR0djsVgu
lxOCtbW1KIomk8n6+vovX76IlNoeXV1de/fu3XJJr9efO3dOjEiVeD8EQaRSqUwmk0gkAACe5wuF
AsdxHMexLPvHzORyuVwu7+/vNxgMjY2NtbW1AIDl5eVIJEKSJEVRz549KxaL4vf9O6eenh6WZUul
UqlUKm9CqVRKpVIvX77s7u4WI/XL7+zAgQNdXV0AAKlU6nQ6ZTLZzMzM48ePHQ6HTqfT6XQdHR0D
AwMMwzidTovFskHs7u7W6XRbam5Rxvb29s7OToIgHj58CMPw/fv3z5w5Mzc35/F4zGYzjuMYhhUK
hXg8PjEx8e3bt97e3pqaGp/Pd/PmTQDA06dPIQj6+PGjz+cjSXKz8g+t73A4Ll68eOrUKRiGV1ZW
VldXURQ1GAwKhWJqaspsNnd2dppMJpVKVSqVcByvq6sLhUKxWMzlcqEoKogsLCxcvnz5xIkTNpvt
3r17Y2NjP2fT2tp669at4eHhTCZTLpfj8fi1a9cAAEajkWGYcrl8/Pjx/v5+YXUDFEXduXPn0qVL
PM9/+PBho/6xWKxcLudyuXfv3t29e9dqtX7PzGw2ezweq9Wq0+kUCgUAoFgsCl+uRCIRem9+fh7D
MJVKtXmLCILo9fpgMCiRSGpqaoQgRVHr6+sAAJVK1dTUZDAYDh065PV6w+FwNQCAZVmpVKrVagWn
X6FQKJRKpc0Rnue37XgYhhEE2b9/P8/z1UKVHz169OrVq38eFjzPC8djc3NzPB7fGFQCaJpmGObo
0aMcxyUSCSFot9uVSqXwnM1m/X7/gwcPJiYmWJb9u0GGh4dpmo7FYu3t7RaLZdeuXUL1CoVCJBJB
UfT8+fMjIyN1dXU4jiMIwvM8TdPBYDCRSJw9ezafz0ejUUHK6XQK1aYoKhAIPHnyZHJyUlj63o3T
09PT09ORSOTKlSs4jtvtdqPRuLa2RpJkOp222Wx+vz8UCs3Ozur1+mKxyDBMIpFQKBRHjhyhaXph
YUHQ0Wg0LMt++vRpZGRkaGhofn5+w+LnI2ZxcZEgCLVajWFYLpebnZ1FUVQul5tMpqamJrlcPjk5
GQ6HCYJQqVQul8vlckEQND4+Ho1GCYJoaGjo6OiYm5vr6enx+/3ZbHaz+Naz8fDhw21tbalU6sWL
FzAMu91ui8XS1ta2b9++3bt3C4OY47h8Pr+0tBQMBsfHxwcHByUSidvthiDI5/NtefGqYOq73e6W
lhabzSZ0eSKRiEajo6Ojr1+/Fi8iClKp2GP2NxB74fF4PBqN5l+aid0vBEF9fX0kSQ4MDFAUBQCw
2+1Op1Oj0SAIEgqFvF7vtiJi35lOp+vr62tubl5fXxemkVKpVKlULMsGAoHe3t5Kr+LbAMOwmZmZ
8o8gSdLj8YhUqODemE6nDQbDwYMHN8YxRVHPnz8fHBxcXV39w2YAgGQyaTQa6+vrYRjOZrPv378P
BALhcFgkvTKzTCbDMExjY2NDQwNJkm/evBkbG0un0/+JGQDg8+fPKIrq9fpwOOz1emOxmHjuTv7P
8vn8169fg8Hg1NTUDugVQ61W79mzp1LWXwDmqKUkUgO0AAAAAElFTkSuQmCC
"
height="36"
width="36" />
</g>
<g
inkscape:groupmode="layer"
id="layer8"
inkscape:label="disabled orig out"
sodipodi:insensitive="true"
style="display:none">
<image
y="6"
x="6"
id="image4210"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAIAAABuYg/PAAAAA3NCSVQICAjb4U/gAAADU0lEQVRI
ie2VzUsqURTAb17xi2LINJlyoGIcMRQDEwoslyEmQitrV+vWrfonghb9A4WL1oLrwlWgEDFGTRmj
TlZ+kE1T6nje4vIe7wMcrQfvLfotzz33/s653DmD0Bdf/N94PJ54PP6xvVtbW3a7fQDTwcFBLpeL
RCIDaTDG6+vrT09Pu7u7NE33tScej+dyOQDI5/PhcLhPk8lkisfjiqIAwMnJydzcXL81RiKRfD4P
AKIoBgIBzXyLxbK6ugoAAJDNZjmO69dECIfDoigCQKPR4DgOY0xRFE3T09PTLMuyLDs1NeVwOIaH
h81mczQaBYButysIwsTExGAmQiAQaDQapF6WZXd2dlKpVLVaJRFRFI+Pjzc3N2OxGACoqipJksVi
+YiJwHEcOVpV1W632+124SdIRFVVACgWizqd7uMmhBDGmGVZchwAHB4eLi4u2u12u90ei8XS6TSJ
X1xcjI2NfcqEEHI4HMlk8kdDjUZDEASe53mev7u7azabJF6r1fb29jRP02ss6/VOpxMhdHR0FI1G
KYqiKOrnhEKhwPP88vLy5OSkpkzjlg0Gg8fjGRoa2t/fr1arfyZcXl4mk0mTyeR2uz8rwxhbrVaE
0PX1davV+jOh2WyKoogxHh0d/azs76Ih63Q6xWIRIbSwsMDz/PPz828JNpvN5/O12+1SqaQpw72X
jUaj3+/3eDyqqhqNRoZhzGbzbwlOp5OiqHQ6nUqlep+m8Rrb7fbV1dXj4+P8/PzMzIzRaMxkMuVy
mfTkdrtpmqZpulKpCIKg2Zm2rFAolMtlr9er1+sRQqlUKpPJIIR8Pl8ikSC/EoPBwDCMpkwDg8EQ
CoXIBJFl+eXlpdPpkA+51WrV6/X7+/tarQYAlUrF6/X2nlhDvU3BYPD09BQhJElSNptVFMXtdpNX
XiqVzs7OBEFgGGZjY2N8fPz9/d3n893c3KiqOlhPOp1uaWmJTFtFUWw2W49kr9f79vZGOna5XANP
5JWVldfXVwCo1+sjIyOalblcLiKTZdnv9w9gWltbe3h4AIDb21syGzXBGLtcLlmWAUCSpFAo1K/M
arVub2+fn5/Pzs72X6JOp/P7/ZIkJRIJzcv4BZvNFgwGB9jwnVAoNJjpiy/+Bd8A15jBvOYCWCMA
AAAASUVORK5CYII=
"
height="36"
width="36" />
</g>
<g
inkscape:groupmode="layer"
id="layer9"
inkscape:label="book orig out"
style="display:none">
<image
y="-3.5"
x="-3.5"
id="image4273"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAIAAABuYg/PAAAAA3NCSVQICAjb4U/gAAAEjklEQVRI
idWWSywzXRzGz3SKtnpD6p5Upei4VGncqpUSRQgh6KZioYnYWViLxEbChj1hScJCkLBziXtVqsVI
1GBo2lSrbq1GW+9i3vB9Dd5W3/f78j6LWcx5/ueXc+Z/njkA/C8qKytjs9mB+zkcTnFxcVAIGAAg
FAqrq6u7u7vFYnFycrLNZnM4HF/UCASClpYWtVpdU1NDJpPDwsJMJlOgMKlUKhaLRSKRVCqVyWSJ
iYkvLy8ul+v+/t7PzePxSktLu7u7Ozo6cnNzn5+f3W63z+fT6XSBwMgAgMjIyPDwcAAAg8FgMBit
ra1SqXRnZ2dqakqv12MYBgBIS0vLzs5WqVR5eXkQBJ2enkZHRwMAIiIi6HR6IKSfMD9FRkby+Xw+
n19fXz87O9vX1wcAGBwcrKqquru7m5+f39/fv7q6qq+vz8/PDxDzKexNDAajtrbWaDQCAKqqqqan
p/V6/czMDLHWnJyc3wnz08DAAIqiQc3uJ1Ioxf8RLC4ujsPhBFsVxDYCAJhMJo1Go1Ao7e3tLS0t
FovlT8GYTKZCoVAoFEVFRbGxsQCAPwjb3NyEIAgAQDy/oSBgJFKo3fQ3dOP39L6NGxsbNpsNQZBA
etpsNh8fHy8sLJhMJiIkA4XZbLaYmBiLxTI+Pv709CSXy5uamhISEj4s2N7eNpvNW1tbVqsVQRAE
QZaWloKAra6unpyclJSUZGZmPjw8aDQajUaTkZEhl8vT0tLerOvr68vLy1tbWwkJCTwej8Vi6fV6
jUaD43iAsPcmZrFYAoFAIpFwuVwMw66vr71eb1ZW1u7ubklJSVhYmMfjwXGcTqczmUwcxw0GA4qi
Dw8PAZL+BSNEp9MLCwvFYjGXy93b27NYLFarNS4uDoKg8vJyDoej1Wq1Wu3Ozo7L5XqfBYI4HA6V
SqXRaMQbt9vtdDpvbm48Hs+nMEIUCqWioqKgoCA9Pf34+HhtbU2tVi8vL5+dna2vr7+8vPwTw2az
k5KS+vv7BQJBRkYGcRwvLi5QFB0eHtZoNA6Hg0B+lQUwDFdWVsIwnJKScn5+vri46PP5/DxsNnt0
dLSxsfHu7u729nZhYcHr9QIAJBIJ8V21Wm1XV9fBwcGv9vhXgiBIIBAcHR0Zjcbe3t6mpqa3IaFQ
2NPTs7KygmFYc3MzDMOhwrhc7uHhoc1m6+3t/dAgl8uNRiOO4w0NDSD0BIEg6Pb21mAwfDhqsVgw
DIMg6NvZ/S4EQbxe78jIyBee6upqn8/X2dkJQl8ZiUQiOuIzeTyet5X9PanvdrsvLi4kEolQKPzQ
EB8fr1Qqb25u7HZ7qDCn04miKI/HUygUHxpSU1NlMpnJZDKbzaHCvF6vyWR6fHxsaGiQy+UIgrwN
xcfHSySStrY2KpV6eXlJZFtwtys/ORyOiYmJqKgokUg0NjaGYdjQ0BCRTEqlUiaTUalUDMMmJydD
vN3+FJlMFgqFzc3NOI5fXV35fL7X19fX11er1arT6ebm5lQqFYPBIMwhnzUAAAAwDNfV1UEQRPwf
AAB2u91sNrtcLhRFHx8ffwslOP0Alp/f+dOOZb8AAAAASUVORK5CYII=
"
height="36"
width="36" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="black"
style="display:none"
sodipodi:insensitive="true">
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
id="rect3988"
width="48"
height="48"
x="0"
y="0" />
</g>
<g
style="display:none"
inkscape:label="green"
id="g6764"
inkscape:groupmode="layer"
sodipodi:insensitive="true">
<rect
y="0"
x="0"
height="48"
width="48"
id="rect6766"
style="fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
</g>
<g
style="display:inline"
inkscape:label="white"
id="g4621"
inkscape:groupmode="layer"
sodipodi:insensitive="true">
<rect
y="0"
x="0"
height="48"
width="48"
id="rect4623"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
</g>
<g
inkscape:groupmode="layer"
id="layer7"
inkscape:label="raw material"
style="display:none">
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
d="M 24,7 C 15,18 15,30 24,41 33,30 33,18 24,7 z"
style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
id="path4130" />
<path
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
d="m 34,24 c -10e-7,6.428573 -3.571428,10 -10,10 -6.428573,0 -10,-3.571427 -10,-10 0,-6.428572 3.571427,-10 10,-10 6.428572,0 10.000003,3.571428 10,10 z"
id="path4132"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
sodipodi:nodetypes="sssss"
inkscape:connector-curvature="0"
id="path4348"
d="m 26,8 c -1e-6,2.571429 -1.964286,4 -5.5,4 C 16.964285,12 15,10.571429 15,8 15,5.4285714 16.964285,4 20.5,4 24.035714,4 26.000001,5.4285714 26,8 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
transform="matrix(1.2727273,0,0,1.75,-2.0909091,10)" />
<path
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
d="m 29,24 c -1e-6,3.214286 -1.785714,5 -5,5 -3.214286,0 -5,-1.785714 -5,-5 0,-3.214286 1.785714,-5 5,-5 3.214286,0 5.000001,1.785714 5,5 z"
id="path4350"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
d="m 27.7,24 c 0,2.378573 -1.321428,3.7 -3.7,3.7 -2.378573,0 -3.7,-1.321427 -3.7,-3.7 0,-2.378572 1.321427,-3.7 3.7,-3.7 2.378572,0 3.700001,1.321428 3.7,3.7 z"
id="path4352"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
d="m 25.8,24 c 0,1.157143 -0.642857,1.8 -1.8,1.8 -1.157144,0 -1.8,-0.642857 -1.8,-1.8 0,-1.157144 0.642856,-1.8 1.8,-1.8 1.157143,0 1.800001,0.642856 1.8,1.8 z"
id="path4354"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 18.5,-1 0,15 -8,4 C 10,19 7,19 6.5,18 l -8,-4 0,-15"
id="path4280"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
d="m 0,-2 0,15 c 3,1 6,2 8,4 L 8,2 C 6,0 3,-1 0,-2 z"
id="path6725"
inkscape:connector-curvature="0" />
<path
id="path6719"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
d="m 16,0.84375 0,5.5 C 13.81145,7.0854 11.67582,7.87061 10,9.125 l 0,-5.5 C 11.67582,2.37061 13.81145,1.5854 16,0.84375 z M 17,-2 c -3,1 -6,2 -8,4 l 0,15 c 2,-2 5,-3 8,-4 l 0,-15 z"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer18"
inkscape:label="shapes 1"
style="display:none">
<path
style="fill-rule:evenodd;stroke:none;display:inline"
d="m 24,17 c -4.500001,0 -7,2.5 -7,7 0,4.500001 2.499999,7 7,7 4.5,0 6.999999,-2.499999 7,-7 1e-6,-4.5 -2.5,-7 -7,-7 z m 0,2 c 3.214286,0 5.000001,1.785714 5,5 -1e-6,3.214286 -1.785714,5 -5,5 -3.214286,0 -5,-1.785714 -5,-5 0,-3.214286 1.785714,-5 5,-5 z"
id="path3216"
inkscape:connector-curvature="0" />
<path
style="fill-rule:evenodd;stroke:none;display:inline"
d="m 24,20.3125 c -2.378573,0 -3.6875,1.308928 -3.6875,3.6875 0,2.378573 1.308927,3.6875 3.6875,3.6875 2.378572,0 3.6875,-1.308927 3.6875,-3.6875 1e-6,-2.378572 -1.308928,-3.6875 -3.6875,-3.6875 z m 0,1.875 c 1.157143,0 1.812501,0.655356 1.8125,1.8125 0,1.157143 -0.655357,1.8125 -1.8125,1.8125 -1.157144,0 -1.8125,-0.655357 -1.8125,-1.8125 0,-1.157144 0.655356,-1.8125 1.8125,-1.8125 z"
id="path4001"
inkscape:connector-curvature="0" />
<path
id="path6738"
style="fill-rule:evenodd;stroke:none;display:inline"
d="m 16,0.84375 0,5.5 C 13.81145,7.0854 11.67582,7.87061 10,9.125 l 0,-5.5 C 11.67582,2.37061 13.81145,1.5854 16,0.84375 z M 17,-2 c -3,1 -6,2 -8,4 l 0,15 c 2,-2 5,-3 8,-4 z M 0,-2 0,13 c 3,1 6,2 8,4 L 8,2 C 6,0 3,-1 0,-2 z m -2,1 0,15.3125 c 0,0 5.5231347,2.745942 8.28125,4.125 0.2252675,0.2606 0.4852377,0.47997 0.8125,0.5938 0.4294557,0.14938 0.921131,0.21875 1.40625,0.21875 0.485119,0 0.9767943,-0.0694 1.40625,-0.21875 0.327262,-0.11383 0.587233,-0.3332 0.8125,-0.5938 0,0 5.524469,-2.825606 8.28125,-4.125 L 19,-1 l -1,0 0,14.6875 -7.71875,3.875 -0.15625,0.0625 -0.0625,0.15625 c -0.03556,0.0711 -0.2107057,0.21188 -0.5,0.3125 C 9.2732057,18.19437 8.889881,18.25 8.5,18.25 8.110119,18.25 7.7267943,18.1944 7.4375,18.09375 7.1482057,17.99313 6.9730573,17.85236 6.9375,17.78125 L 6.875,17.625 6.71875,17.5625 -1,13.6875 -1,-1 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccsscccccccccssccccccc" />
</g>
<g
inkscape:groupmode="layer"
id="layer19"
inkscape:label="shapes 2"
style="display:none">
<path
sodipodi:nodetypes="sssss"
inkscape:connector-curvature="0"
id="path6749"
d="m 27.7,24 c 0,2.378573 -1.321428,3.7 -3.7,3.7 -2.378573,0 -3.7,-1.321427 -3.7,-3.7 0,-2.378572 1.321427,-3.7 3.7,-3.7 2.378572,0 3.700001,1.321428 3.7,3.7 z"
style="fill-rule:evenodd;stroke:none;display:inline" />
<path
style="stroke:none;display:inline"
d="M 24,7 C 21.882173,9.5884549 20.277368,12.23311 19.15625,14.90625 20.523744,14.321333 22.133081,14 24,14 c 1.866918,0 3.476256,0.321333 4.84375,0.90625 C 27.722632,12.23311 26.117827,9.5884549 24,7 z"
id="path4148"
inkscape:connector-curvature="0" />
<path
style="stroke:none;display:inline"
d="M 14.90625,19.15625 C 12.23311,20.277368 9.5884549,21.882173 7,24 c 2.5884549,2.117827 5.23311,3.722632 7.90625,4.84375 C 14.321333,27.476256 14,25.866919 14,24 c 0,-1.866918 0.321333,-3.476256 0.90625,-4.84375 z"
id="path4146"
inkscape:connector-curvature="0" />
<path
style="stroke:none;display:inline"
d="M 33.09375,19.15625 C 33.678667,20.523744 34.000001,22.133082 34,24 34,25.866919 33.678667,27.476256 33.09375,28.84375 35.76689,27.722632 38.411545,26.117827 41,24 38.411545,21.882173 35.76689,20.277368 33.09375,19.15625 z"
id="path4144"
inkscape:connector-curvature="0" />
<path
style="stroke:none;display:inline"
d="M 19.15625,33.09375 C 20.277368,35.76689 21.882173,38.411545 24,41 26.117827,38.411545 27.722632,35.76689 28.84375,33.09375 27.476256,33.678667 25.866918,34 24,34 22.133081,34 20.523744,33.678667 19.15625,33.09375 z"
id="path4119"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer20"
inkscape:label="shapes 3"
style="display:none">
<path
inkscape:connector-curvature="0"
transform="translate(0,-192)"
id="path6758"
d="m 14.5,205 -1.5,1.5 5.15625,5.15625 C 17.409919,212.77794 17,214.22611 17,216 c 0,1.77389 0.409919,3.22206 1.15625,4.34375 L 13,225.5 l 1.5,1.5 5.15625,-5.15625 C 20.777944,222.59008 22.226111,223 24,223 c 1.773889,0 3.222056,-0.40992 4.34375,-1.15625 L 33.5,227 35,225.5 29.84375,220.34375 C 30.590081,219.22206 31,217.77389 31,216 c 0,-1.77389 -0.409919,-3.22206 -1.15625,-4.34375 L 35,206.5 33.5,205 28.34375,210.15625 C 27.222055,209.40992 25.773889,209 24,209 c -1.773889,0 -3.222056,0.40992 -4.34375,1.15625 L 14.5,205 z m 9.5,6 c 1.128621,0 2.082846,0.23139 2.84375,0.65625 l -1,1 C 25.330626,212.42921 24.710234,212.3125 24,212.3125 c -0.710234,0 -1.330626,0.11671 -1.84375,0.34375 l -1,-1 C 21.917154,211.23139 22.871379,211 24,211 z m -4.34375,2.15625 1,1 c -0.227037,0.51312 -0.34375,1.13352 -0.34375,1.84375 0,0.71023 0.116713,1.33063 0.34375,1.84375 l -1,1 C 19.23139,218.08285 19,217.12862 19,216 c 0,-1.12862 0.23139,-2.08285 0.65625,-2.84375 z m 8.6875,0 C 28.76861,213.91715 29,214.87138 29,216 c 0,1.12862 -0.23139,2.08285 -0.65625,2.84375 l -1,-1 c 0.227038,-0.51312 0.34375,-1.13352 0.34375,-1.84375 0,-0.71023 -0.116712,-1.33063 -0.34375,-1.84375 l 1,-1 z m -6.1875,6.1875 c 0.513124,0.22704 1.133516,0.34375 1.84375,0.34375 0.710234,0 1.330626,-0.11671 1.84375,-0.34375 l 1,1 C 26.082847,220.76861 25.128621,221 24,221 c -1.128621,0 -2.082846,-0.23139 -2.84375,-0.65625 l 1,-1 z"
style="stroke:none;display:inline" />
</g>
<g
inkscape:groupmode="layer"
id="circleOuterShadow"
inkscape:label="shadow outer circle"
style="display:inline">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path3216"
id="use6769"
width="1"
height="1" />
</g>
<g
inkscape:groupmode="layer"
id="circleInnerOpenShadow"
inkscape:label="shadow inner circle open"
style="display:none">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path4001"
id="use6776"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="circleInnerClosedShadow"
inkscape:label="shadow inner circle closed"
style="display:none">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path6749"
id="use6780"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowOpaqueUpperShadow"
inkscape:label="shadow upper arrow opaque"
style="display:none">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path4148"
id="use6784"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowOpaqueLowerShadow"
inkscape:label="shadow lower arrow opaque"
style="display:none">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path4119"
id="use6790"
width="1"
height="1" />
</g>
<g
inkscape:groupmode="layer"
id="arrowOpaqueRightShadow"
inkscape:label="shadow right arrow opaque"
style="display:none">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path4144"
id="use6794"
width="1"
height="1" />
</g>
<g
inkscape:groupmode="layer"
id="arrowOpaqueLeftShadow"
inkscape:label="shadow left arrow opaque"
style="display:none">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path4146"
id="use6799"
width="1"
height="1" />
</g>
<g
style="display:none"
inkscape:label="shadow upper arrow translucent"
id="arrowTranslucentUpperShadow"
inkscape:groupmode="layer">
<use
height="240"
width="240"
id="use6807"
xlink:href="#path4148"
y="0"
x="0"
style="fill:#000000;fill-opacity:0.2;display:inline;filter:url(#filter6135)"
mask="url(#mask6840)" />
</g>
<g
style="display:none"
inkscape:label="shadow lower arrow translucent"
id="arrowTranslucentLowerShadow"
inkscape:groupmode="layer">
<use
height="240"
width="240"
id="use6850"
xlink:href="#path4119"
y="0"
x="0"
style="fill:#000000;fill-opacity:0.2;display:inline;filter:url(#filter6135)"
mask="url(#mask6840)" />
</g>
<g
style="display:none"
inkscape:label="shadow right arrow translucent"
id="arrowTranslucentRightShadow"
inkscape:groupmode="layer">
<use
x="0"
y="0"
xlink:href="#path4144"
id="use6852"
width="240"
height="240"
style="fill:#000000;fill-opacity:0.2;display:inline;filter:url(#filter6135)"
mask="url(#mask6840)" />
</g>
<g
style="display:none"
inkscape:label="shadow left arrow translucent"
id="arrowTranslucentLeftShadow"
inkscape:groupmode="layer">
<use
x="0"
y="0"
xlink:href="#path4146"
id="use6848"
width="240"
height="240"
style="fill:#000000;fill-opacity:0.2;display:inline;filter:url(#filter6135)"
mask="url(#mask6840)" />
</g>
<g
inkscape:groupmode="layer"
id="crossShadow"
inkscape:label="shadow cross"
style="display:none">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path6758"
id="use6861"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="bookShadow"
inkscape:label="shadow book"
style="display:inline">
<use
style="fill:#000000;fill-opacity:0.50196078;display:inline;filter:url(#filter6135)"
x="0"
y="0"
xlink:href="#path6738"
id="use6865"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="circleOuter"
inkscape:label="outer circle"
style="display:inline">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path3216"
id="use6869"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="circleInnerOpen"
inkscape:label="inner circle open"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path4001"
id="use6873"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="circleInnerClosed"
inkscape:label="inner circle closed"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path6749"
id="use6877"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowOpaqueUpper"
inkscape:label="upper arrow opaque"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path4148"
id="use6881"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowOpaqueLower"
inkscape:label="lower arrow opaque"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path4119"
id="use6887"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowOpaqueRight"
inkscape:label="right arrow opaque"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path4144"
id="use6885"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowOpaqueLeft"
inkscape:label="left arrow opaque"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path4146"
id="use6883"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowTranslucentUpper"
inkscape:label="upper arrow translucent"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:0.50196078;display:inline"
x="0"
y="0"
xlink:href="#path4148"
id="use6903"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowTranslucentLower"
inkscape:label="lower arrow translucent"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:0.50196078;display:inline"
x="0"
y="0"
xlink:href="#path4119"
id="use6909"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowTranslucentRight"
inkscape:label="right arrow translucent"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:0.50196078;display:inline"
x="0"
y="0"
xlink:href="#path4144"
id="use6907"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="arrowTranslucentLeft"
inkscape:label="left arrow translucent"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:0.50196078;display:inline"
x="0"
y="0"
xlink:href="#path4146"
id="use6905"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="cross"
inkscape:label="cross"
style="display:none">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path6758"
id="use6925"
width="240"
height="240" />
</g>
<g
inkscape:groupmode="layer"
id="book"
inkscape:label="book"
style="display:inline">
<use
style="fill:#ffffff;fill-opacity:1;display:inline"
x="0"
y="0"
xlink:href="#path6738"
id="use6929"
width="240"
height="240" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,508 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1175.8176"
height="1177.8379"
id="svg2"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="Linking_Book.svg"
inkscape:export-xdpi="19.561266"
inkscape:export-ydpi="19.561266">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.66138134"
inkscape:cx="437.66142"
inkscape:cy="576.10909"
inkscape:document-units="px"
inkscape:current-layer="layer3"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
showborder="false"
inkscape:window-width="1680"
inkscape:window-height="998"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:snap-global="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<sodipodi:guide
orientation="0,1"
position="-1422.8571,-1.5258789e-005"
id="guide2996" />
<sodipodi:guide
orientation="1,0"
position="0,1562.8571"
id="guide2998" />
<sodipodi:guide
orientation="0,1"
position="-628.31488,1177.8379"
id="guide3000" />
<sodipodi:guide
orientation="1,0"
position="1175.8176,1228.3455"
id="guide3002" />
<sodipodi:guide
orientation="0,1"
position="617.82713,588.96043"
id="guide4160" />
<sodipodi:guide
orientation="1,0"
position="587.89131,597.24623"
id="guide4162" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="background"
inkscape:label="Background"
style="display:inline"
transform="translate(0,125.47572)">
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="rect3004"
width="1175.8176"
height="1177.8379"
x="0"
y="-125.47572"
inkscape:export-xdpi="19.561266"
inkscape:export-ydpi="19.561266" />
</g>
<g
inkscape:groupmode="layer"
id="circles"
inkscape:label="Circles"
style="display:inline"
transform="translate(0,125.47572)">
<path
sodipodi:type="arc"
style="fill:none;stroke:none"
id="circlePath"
sodipodi:cx="587.90881"
sodipodi:cy="463.44324"
sodipodi:rx="587.90881"
sodipodi:ry="588.91895"
d="m 1175.8176,463.44324 c 0,325.25095 -263.21571,588.91896 -587.90879,588.91896 C 263.21574,1052.3622 0,788.69419 0,463.44324 0,138.19228 263.21574,-125.47571 587.90881,-125.47571 c 324.69308,0 587.90879,263.66799 587.90879,588.91895 z"
transform="matrix(0.8793304,0,0,0.8793304,70.94272,55.923509)" />
<g
id="g3224"
transform="translate(-0.03253824,-0.03474644)"
inkscape:export-xdpi="19.561266"
inkscape:export-ydpi="19.561266"
style="fill:#352f42;fill-opacity:1">
<path
inkscape:tile-y0="-85.78605"
inkscape:tile-x0="556.15709"
inkscape:tile-h="63.503456"
inkscape:tile-w="63.50345"
inkscape:tile-cy="463.40173"
inkscape:tile-cx="587.90882"
inkscape:connector-curvature="0"
id="path3883"
d="m 619.66054,-54.034322 c 0,17.535995 -14.21573,31.751728 -31.75173,31.751728 -17.53599,0 -31.75172,-14.215733 -31.75172,-31.751728 0,-17.535995 14.21573,-31.751728 31.75172,-31.751728 17.536,0 31.75173,14.215733 31.75173,31.751728 z"
inkscape:transform-center-y="-517.43605"
style="fill:#352f42;fill-opacity:1;stroke:none" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="517.43605"
inkscape:transform-center-x="3e-005"
id="use5519"
transform="matrix(-1,0,0,-1,1175.8176,926.80346)"
xlink:href="#path3883"
inkscape:tiled-clone-of="#path3883"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="-4.3e-005"
inkscape:transform-center-x="517.43605"
id="use5521"
transform="matrix(0,-1,1,0,124.50709,1051.3105)"
xlink:href="#path3883"
inkscape:tiled-clone-of="#path3883"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-x="-517.43601"
id="use5525"
transform="matrix(0,1,-1,0,1051.3105,-124.50709)"
xlink:href="#path3883"
inkscape:tiled-clone-of="#path3883"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<path
inkscape:transform-center-x="-98.74896"
inkscape:tile-y0="-69.933668"
inkscape:tile-x0="661.23414"
inkscape:tile-h="50.812266"
inkscape:tile-w="50.81225"
inkscape:tile-cy="463.40173"
inkscape:tile-cx="587.89131"
inkscape:connector-curvature="0"
id="path3883-1"
d="m 711.57495,-39.680724 c -2.67682,13.771051 -16.01044,22.764699 -29.7815,20.087876 -13.77104,-2.676818 -22.76468,-16.010449 -20.08786,-29.781498 2.67682,-13.771047 16.01044,-22.764697 29.7815,-20.087878 13.77104,2.676823 22.76468,16.010454 20.08786,29.7815 z"
inkscape:transform-center-y="-507.92927"
style="fill:#352f42;fill-opacity:1;stroke:none;display:inline" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="98.748955"
inkscape:transform-center-x="-507.92923"
id="use3037"
transform="matrix(0,1,-1,0,1051.293,-124.48958)"
xlink:href="#path3883-1"
inkscape:tiled-clone-of="#path3883-1"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="507.92927"
inkscape:transform-center-x="98.74898"
id="use3039"
transform="matrix(-1,0,0,-1,1175.7826,926.80347)"
xlink:href="#path3883-1"
inkscape:tiled-clone-of="#path3883-1"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="-98.749005"
inkscape:transform-center-x="507.92927"
id="use3041"
transform="matrix(0,-1,1,0,124.48958,1051.293)"
xlink:href="#path3883-1"
inkscape:tiled-clone-of="#path3883-1"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<path
inkscape:transform-center-x="98.71521"
inkscape:tile-y0="-69.940277"
inkscape:tile-x0="463.76997"
inkscape:tile-h="50.812269"
inkscape:tile-w="50.812241"
inkscape:tile-cy="463.40169"
inkscape:tile-cx="587.8913"
inkscape:connector-curvature="0"
id="path3883-1-1"
d="m 514.11077,-49.380953 c 2.67682,13.771051 -6.31682,27.104678 -20.08788,29.781501 -13.77103,2.676816 -27.10465,-6.316834 -29.78147,-20.087883 -2.67682,-13.771047 6.3168,-27.104672 20.08786,-29.781499 13.77104,-2.676815 27.10467,6.316835 29.78149,20.087881 z"
inkscape:transform-center-y="-507.93583"
style="fill:#352f42;fill-opacity:1;stroke:none;display:inline" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="-98.715213"
inkscape:transform-center-x="-507.93584"
id="use3067"
transform="matrix(0,1,-1,0,1051.293,-124.48962)"
xlink:href="#path3883-1-1"
inkscape:tiled-clone-of="#path3883-1-1"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="507.93583"
inkscape:transform-center-x="-98.715201"
id="use3069"
transform="matrix(-1,0,0,-1,1175.7826,926.80337)"
xlink:href="#path3883-1-1"
inkscape:tiled-clone-of="#path3883-1-1"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="98.715218"
inkscape:transform-center-x="507.93583"
id="use3071"
transform="matrix(0,-1,1,0,124.48962,1051.293)"
xlink:href="#path3883-1-1"
inkscape:tiled-clone-of="#path3883-1-1"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<path
inkscape:transform-center-x="-193.85213"
inkscape:tile-y0="-34.138981"
inkscape:tile-x0="763.95777"
inkscape:tile-h="35.571355"
inkscape:tile-w="35.571339"
inkscape:tile-cy="463.40174"
inkscape:tile-cx="587.89131"
inkscape:connector-curvature="0"
id="path3883-1-4"
d="m 798.22966,-9.6924378 c -3.6787,9.10509363 -14.04199,13.5040578 -23.1471,9.82535891 -9.10507,-3.67869161 -13.50403,-14.04199711 -9.82534,-23.14709011 3.6787,-9.10509 14.04199,-13.504057 23.14709,-9.825361 9.10509,3.678696 13.50404,14.042002 9.82535,23.1470922 z"
inkscape:transform-center-y="-479.75504"
style="fill:#352f42;fill-opacity:1;stroke:none;display:inline" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="193.85213"
inkscape:transform-center-x="-479.75499"
id="use3097"
transform="matrix(0,1,-1,0,1051.293,-124.48957)"
xlink:href="#path3883-1-4"
inkscape:tiled-clone-of="#path3883-1-4"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="479.75504"
inkscape:transform-center-x="193.85215"
id="use3099"
transform="matrix(-1,0,0,-1,1175.7826,926.80347)"
xlink:href="#path3883-1-4"
inkscape:tiled-clone-of="#path3883-1-4"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="-193.85218"
inkscape:transform-center-x="479.75504"
id="use3101"
transform="matrix(0,-1,1,0,124.48957,1051.293)"
xlink:href="#path3883-1-4"
inkscape:tiled-clone-of="#path3883-1-4"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<path
inkscape:transform-center-x="193.8203"
inkscape:tile-y0="-34.151876"
inkscape:tile-x0="376.28534"
inkscape:tile-h="35.571356"
inkscape:tile-w="35.57134"
inkscape:tile-cy="463.4017"
inkscape:tile-cx="587.89131"
inkscape:connector-curvature="0"
id="path3883-1-4-2"
d="m 410.55723,-23.027064 c 3.67869,9.105096 -0.72026,19.4683926 -9.82537,23.14709892 -9.10507,3.67868398 -19.46837,-0.72027955 -23.14707,-9.82536842 -3.67869,-9.1050935 0.72026,-19.4683925 9.82535,-23.1470935 9.10509,-3.678694 19.46839,0.720278 23.14709,9.825363 z"
inkscape:transform-center-y="-479.7679"
style="fill:#352f42;fill-opacity:1;stroke:none;display:inline" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="-193.8203"
inkscape:transform-center-x="-479.76789"
id="use3129"
transform="matrix(0,1,-1,0,1051.293,-124.48961)"
xlink:href="#path3883-1-4-2"
inkscape:tiled-clone-of="#path3883-1-4-2"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="479.7679"
inkscape:transform-center-x="-193.82028"
id="use3131"
transform="matrix(-1,0,0,-1,1175.7826,926.8034)"
xlink:href="#path3883-1-4-2"
inkscape:tiled-clone-of="#path3883-1-4-2"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="193.82029"
inkscape:transform-center-x="479.7679"
id="use3133"
transform="matrix(0,-1,1,0,124.48961,1051.293)"
xlink:href="#path3883-1-4-2"
inkscape:tiled-clone-of="#path3883-1-4-2"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<path
inkscape:transform-center-x="-281.8321"
inkscape:tile-y0="17.001703"
inkscape:tile-x0="857.27527"
inkscape:tile-h="24.896278"
inkscape:tile-w="24.896273"
inkscape:tile-cy="463.40173"
inkscape:tile-cx="587.89131"
inkscape:connector-curvature="0"
id="path3883-1-4-7"
d="m 880.16207,36.228786 c -3.74392,5.765115 -11.45249,7.403629 -17.21761,3.659715 -5.76511,-3.743903 -7.40362,-11.452487 -3.65971,-17.217603 3.74391,-5.765113 11.45248,-7.403628 17.21761,-3.659718 5.76511,3.743909 7.40361,11.452492 3.65971,17.217606 z"
inkscape:transform-center-y="-433.95189"
style="fill:#352f42;fill-opacity:1;stroke:none;display:inline" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="281.8321"
inkscape:transform-center-x="-433.95185"
id="use3171"
transform="matrix(0,1,-1,0,1051.293,-124.48958)"
xlink:href="#path3883-1-4-7"
inkscape:tiled-clone-of="#path3883-1-4-7"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="433.95189"
inkscape:transform-center-x="281.83212"
id="use3173"
transform="matrix(-1,0,0,-1,1175.7826,926.80346)"
xlink:href="#path3883-1-4-7"
inkscape:tiled-clone-of="#path3883-1-4-7"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="-281.83214"
inkscape:transform-center-x="433.95189"
id="use3175"
transform="matrix(0,-1,1,0,124.48958,1051.293)"
xlink:href="#path3883-1-4-7"
inkscape:tiled-clone-of="#path3883-1-4-7"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<path
inkscape:transform-center-x="281.80334"
inkscape:tile-y0="16.983003"
inkscape:tile-x0="293.63983"
inkscape:tile-h="24.896278"
inkscape:tile-w="24.896279"
inkscape:tile-cy="463.40171"
inkscape:tile-cx="587.89131"
inkscape:connector-curvature="0"
id="path3883-1-4-7-0"
d="m 316.52663,22.652196 c 3.74391,5.765124 2.10541,13.473696 -3.65971,17.217608 -5.76511,3.743908 -13.47369,2.105398 -17.2176,-3.659718 -3.74392,-5.765114 -2.10542,-13.473687 3.65971,-17.217611 5.76511,-3.743904 13.47369,-2.105386 17.2176,3.659721 z"
inkscape:transform-center-y="-433.97057"
style="fill:#352f42;fill-opacity:1;stroke:none;display:inline" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="-281.80334"
inkscape:transform-center-x="-433.97055"
id="use3203"
transform="matrix(0,1,-1,0,1051.293,-124.4896)"
xlink:href="#path3883-1-4-7-0"
inkscape:tiled-clone-of="#path3883-1-4-7-0"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="433.97057"
inkscape:transform-center-x="-281.80332"
id="use3205"
transform="matrix(-1,0,0,-1,1175.7826,926.80342)"
xlink:href="#path3883-1-4-7-0"
inkscape:tiled-clone-of="#path3883-1-4-7-0"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
<use
height="1052.3622"
width="744.09448"
inkscape:transform-center-y="281.80332"
inkscape:transform-center-x="433.97057"
id="use3207"
transform="matrix(0,-1,1,0,124.4896,1051.293)"
xlink:href="#path3883-1-4-7-0"
inkscape:tiled-clone-of="#path3883-1-4-7-0"
y="0"
x="0"
style="fill:#352f42;fill-opacity:1" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="book"
inkscape:label="Book"
style="display:inline"
transform="translate(0,125.47572)">
<path
style="fill:#000000;fill-opacity:1;stroke:none"
d="m 628.62755,669.05838 19.4375,-30.625 237.65628,-44.84375 -53.8125,-312.375 -47.09378,-8.21875 -196.92188,29.875 -196.92187,-29.875 -47.0625,8.21875 -53.8125,312.375 237.65625,44.84375 19.40625,30.625 40.73437,6 z"
id="bookShading"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccc" />
<path
style="opacity:1;fill:#352f42;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 624.37755,687.02459 c 22.02381,-3.33334 22.99405,-34.51041 32.875,-37.84375 80.95238,-15 246.04608,-40.27455 242.84378,-45 4.6212,-3.15333 -50.402,-325.63145 -57.8438,-325.71875 -0.39,-2.23828 -3.8554,-3.02407 -8.4062,-3.03125 -5.8511,-0.009 -13.5121,1.25745 -18.75,2.3125 2.619,2.61905 7.9077,2.95684 9.8125,7.71875 2.2619,11.90476 56.6832,309.0794 50.9062,308 0.2825,6.37389 -154.51933,22.85268 -231.78123,34.28125 -15.47619,3.45238 -13.81399,34.74851 -28.21875,37.84375 l -27.90625,-0.71875 -27.90625,0.71875 c -14.40476,-3.09524 -12.74256,-34.39137 -28.21875,-37.84375 -77.2619,-11.42857 -232.06378,-27.90736 -231.78125,-34.28125 -5.77694,1.0794 48.64434,-296.09524 50.90625,-308 1.90476,-4.76191 7.19345,-5.0997 9.8125,-7.71875 -5.23791,-1.05505 -12.89897,-2.32173 -18.75,-2.3125 -4.5508,0.007 -8.0162,0.79297 -8.40625,3.03125 -7.44179,0.0873 -62.46496,322.56542 -57.84375,325.71875 -3.20233,4.72545 161.89137,30 242.84375,45 9.88095,3.33334 10.85119,34.51041 32.875,37.84375 l 36.46875,0.71875 z"
id="bookCover"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccscccccccccccscccccc" />
<g
id="bookPages"
transform="translate(-190.45045,127.31819)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="bookPageLeft"
d="m 773.87535,479.18577 c -54.0564,-66.01358 -162.66742,-25.90721 -245.12212,-37.36617 15.9429,-99.14492 31.8858,-198.28985 47.8287,-297.43477 63.5225,9.4661 160.67457,-33.38045 190.56751,28.39829 2.98929,101.13779 3.73662,205.26486 6.72591,306.40265 z"
style="fill:#262230;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="bookPageRight"
d="m 782.84323,479.18577 c 54.0564,-66.01358 162.66742,-25.90721 245.12207,-37.36617 -15.9429,-99.14492 -31.88575,-198.28985 -47.82865,-297.43477 -63.5225,9.46609 -160.67457,-33.38046 -190.56751,28.39828 -2.98929,101.1378 -3.73662,205.26487 -6.72591,306.40266 z"
style="fill:#262230;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
</g>
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 615.95128,330.38838 c 31.97315,-40.8005 85.78627,-16.21216 153.82568,-17.97615 4.28396,27.97176 8.30065,61.82377 12.58461,89.79553 -73.28596,5.34568 -92.71946,-20.73283 -164.58516,8.80464 z"
id="bookLinkingPanel"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1386.2081"
height="296.01321"
id="svg2"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="Loading_Text_rasterfont.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.74023945"
inkscape:cx="563.12545"
inkscape:cy="89.24182"
inkscape:document-units="px"
inkscape:current-layer="textUpdating"
showgrid="true"
inkscape:window-width="1680"
inkscape:window-height="998"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showborder="false"
inkscape:snap-global="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<sodipodi:guide
position="4.0136719e-006,-1.9531228e-008"
orientation="-296.01321,0"
id="guide3001" />
<sodipodi:guide
position="4.0136719e-006,296.01321"
orientation="0,1386.2081"
id="guide3003" />
<sodipodi:guide
position="1386.2081,296.01321"
orientation="296.01321,0"
id="guide3005" />
<sodipodi:guide
position="1386.2081,-1.9531228e-008"
orientation="0,-1386.2081"
id="guide3007" />
<inkscape:grid
type="xygrid"
id="grid3797"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="10px"
spacingy="10px"
originy="33px"
originx="335px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Background"
inkscape:groupmode="layer"
id="background"
transform="translate(314.84811,-319.4097)">
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="rect3009"
width="1386.2081"
height="296.01321"
x="-314.84811"
y="319.4097"
inkscape:export-xdpi="12.465658"
inkscape:export-ydpi="12.465658" />
</g>
<g
inkscape:groupmode="layer"
id="circles"
inkscape:label="Circles"
transform="translate(314.84811,-319.4097)">
<path
sodipodi:type="arc"
style="fill:#3e364e;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2999"
sodipodi:cx="-193.18074"
sodipodi:cy="430.94165"
sodipodi:rx="27.018284"
sodipodi:ry="27.018284"
d="m -166.16246,430.94165 c 0,14.92179 -12.09649,27.01828 -27.01828,27.01828 -14.92179,0 -27.01828,-12.09649 -27.01828,-27.01828 0,-14.92179 12.09649,-27.01828 27.01828,-27.01828 14.92179,0 27.01828,12.09649 27.01828,27.01828 z"
transform="translate(5.1990242,36.474655)" />
<path
sodipodi:type="arc"
style="fill:#3e364e;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2999-0"
sodipodi:cx="-193.18074"
sodipodi:cy="430.94165"
sodipodi:rx="27.018284"
sodipodi:ry="27.018284"
d="m -166.16246,430.94165 c 0,14.92179 -12.09649,27.01828 -27.01828,27.01828 -14.92179,0 -27.01828,-12.09649 -27.01828,-27.01828 0,-14.92179 12.09649,-27.01828 27.01828,-27.01828 14.92179,0 27.01828,12.09649 27.01828,27.01828 z"
transform="translate(1151.1625,36.474655)" />
</g>
<g
inkscape:groupmode="layer"
id="textLinking"
inkscape:label="Linking Text"
style="display:none"
transform="translate(314.84811,-319.4097)">
<g
style="font-size:195.61486816px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3e364e;fill-opacity:1;stroke:none;font-family:Hobo Std;-inkscape-font-specification:Hobo Std Bold"
id="text3799">
<path
d="m 64.536466,548.776 c 1.377337,0.12226 3.072643,0.12226 5.085921,0 2.013073,-0.12226 3.121542,-1.10032 3.32541,-2.93418 -0.07135,-0.78608 -0.776515,-4.27812 -2.11551,-10.47613 -1.339202,-6.198 -2.88478,-12.34167 -4.636736,-18.43104 -1.752156,-6.0893 -3.283244,-9.36399 -4.59327,-9.82408 -1.624161,0.20531 -3.940112,1.64221 -6.947862,4.31071 -3.007925,2.66858 -6.743877,5.33711 -11.207867,8.00562 -4.464142,2.66857 -9.69254,4.10547 -15.685208,4.31072 -5.644286,0.29345 -10.738353,-1.90719 -15.282216,-6.60192 -4.5439543,-4.69466 -6.9483532,-13.64391 -7.2132041,-26.84779 0.2800977,-18.15565 2.2410482,-34.50738 5.8828571,-49.05523 3.641721,-14.54765 7.283487,-26.33509 10.925309,-35.36237 3.641712,-9.027 5.602665,-14.3375 5.882866,-15.93154 -0.06934,-1.70329 -0.517615,-2.79546 -1.344833,-3.27651 -0.827337,-0.48072 -1.617937,-0.69263 -2.371801,-0.63573 l -31.1023638,0 c -1.4594784,0.40259 -3.1130135,5.24603 -4.9606102,14.53033 -1.847639,9.28459 -3.64177,20.59546 -5.382397,33.93263 -1.74066,13.33739 -3.180243,26.28651 -4.318755,38.84738 -1.138534,12.56103 -1.728426,22.31922 -1.769675,29.27462 0.122244,19.32082 0.317856,32.02746 0.586837,38.11995 0.26896,6.09252 2.811918,8.77403 7.628881,8.04456 z"
id="path2998"
inkscape:connector-curvature="0" />
<path
d="m 129.7671,548.776 3.91225,0 c 0.89242,0.0326 1.60152,-0.0815 2.12728,-0.34232 0.52565,-0.26082 0.79462,-0.86396 0.8069,-1.80941 -0.40758,-1.6138 -2.03768,-9.87842 -4.89031,-24.79387 -2.85272,-14.9154 -4.48283,-35.01455 -4.89031,-60.29751 0.43193,-19.41034 2.15984,-35.94772 5.18373,-49.61218 3.02379,-13.66419 4.7517,-21.25231 5.18373,-22.76439 -0.15084,-1.75627 -1.07185,-2.74248 -2.76303,-2.95863 -1.69128,-0.21583 -3.24803,-0.27288 -4.67024,-0.17116 l -21.12614,0 c -0.8757,-0.26983 -2.04631,0.0501 -3.51185,0.95972 -1.46558,0.90996 -2.96018,4.02957 -4.4838,9.35883 -1.523657,5.32956 -2.81042,14.48869 -3.860293,27.47742 -1.049902,12.98898 -1.597002,31.42746 -1.641304,55.3155 0.04225,23.9529 0.609766,40.83833 1.702551,50.65635 1.092758,9.81806 2.457213,15.56085 4.093366,17.22838 1.63612,1.66753 3.29038,2.25196 4.96276,1.75327 z"
id="path3000"
inkscape:connector-curvature="0" />
<path
d="m 273.31853,548.776 c 1.67224,0.49869 3.32649,-0.0857 4.96275,-1.75327 1.63602,-1.66753 3.00047,-7.41032 4.09337,-17.22838 1.09265,-9.81801 1.66017,-26.70345 1.70256,-50.65635 -0.0368,-23.88804 -0.53807,-42.32653 -1.50378,-55.3155 -0.96596,-12.98873 -2.17632,-22.14786 -3.63105,-27.47743 -1.45499,-5.32926 -2.93431,-8.44886 -4.43795,-9.35883 -1.50389,-0.90963 -2.81205,-1.22954 -3.92447,-0.95971 l -14.86654,0 c -1.9603,-0.0813 -3.76156,-0.065 -5.4038,0.0489 -1.64242,0.11427 -2.51452,0.81521 -2.61631,2.10283 0.41558,2.74688 2.07829,10.99519 4.98811,24.74496 2.90964,13.75004 4.57234,30.01845 4.98812,48.80529 0.057,1.66279 0.0407,3.86342 -0.0489,6.60191 -0.0898,2.73865 -0.59509,4.25465 -1.516,4.54799 -0.8722,-0.0855 -1.57314,-0.55009 -2.10283,-1.39374 -0.52988,-0.84351 -0.93741,-1.5526 -1.22258,-2.12728 -12.10511,-22.33593 -22.06201,-39.56429 -29.87073,-51.68513 -7.80886,-12.12058 -13.99841,-20.48119 -18.56869,-25.08186 -4.57037,-4.60035 -8.05033,-6.78831 -10.43989,-6.56387 l -15.45338,0 c -0.8757,-0.26983 -2.04631,0.0501 -3.51185,0.95972 -1.46558,0.90996 -2.96018,4.02957 -4.48381,9.35883 -1.52365,5.32956 -2.81041,14.48869 -3.86029,27.47742 -1.0499,12.98898 -1.597,31.42746 -1.6413,55.3155 0.0422,23.9529 0.60977,40.83833 1.70255,50.65635 1.09276,9.81806 2.45721,15.56085 4.09337,17.22838 1.63612,1.66753 3.29037,2.25196 4.96276,1.75327 l 18.19195,0 c 0.99839,0.0856 2.13131,0.11003 3.39876,0.0734 1.26736,-0.0367 1.96015,-0.64796 2.07838,-1.83386 -0.33421,-4.4624 -1.6709,-12.99598 -4.01005,-25.60077 -2.33924,-12.60473 -3.67592,-32.43491 -4.01005,-59.4906 -0.0471,-1.54308 -0.10509,-4.30338 -0.17388,-8.28093 -0.0689,-3.97735 0.13399,-7.73745 0.60857,-11.28031 0.4745,-3.54265 1.50328,-5.43356 3.08633,-5.67276 2.24467,0.37323 5.23198,3.27843 8.96194,8.71562 3.72986,5.43739 7.2533,11.1681 10.57031,17.19215 3.3169,6.02422 5.47829,10.10309 6.48419,12.23664 9.75036,20.37272 16.02685,35.92026 18.8295,46.64268 2.80248,10.72247 4.65958,18.01083 5.57132,21.86511 0.91157,3.85429 3.40623,5.66552 7.48399,5.43368 z"
id="path3002"
inkscape:connector-curvature="0" />
<path
d="m 393.94758,386.02653 c -2.11923,0.0368 -3.45591,0.40361 -4.01006,1.10032 -0.55432,0.69703 -1.10856,2.09076 -1.6627,4.18121 -3.40277,11.16696 -8.16026,21.78314 -14.27246,31.84859 -6.11235,10.06569 -11.94207,18.30555 -17.4892,24.7196 -5.54723,6.41424 -9.1745,9.72758 -10.88184,9.94001 -1.8502,-0.37891 -2.89347,-2.16387 -3.12979,-5.35489 -0.23641,-3.19083 -0.30161,-5.51372 -0.19562,-6.96869 0.39934,-14.65858 1.99684,-27.54453 4.7925,-38.65789 2.79558,-11.11308 4.39308,-17.00589 4.79251,-17.67847 -0.11823,-1.75627 -0.90884,-2.74248 -2.3718,-2.95863 -1.46307,-0.21583 -2.8894,-0.27288 -4.27902,-0.17116 l -19.75685,0 c -0.87569,-0.26983 -2.04631,0.0501 -3.51185,0.95972 -1.46558,0.90996 -2.96018,4.02957 -4.4838,9.35883 -1.52366,5.32956 -2.81042,14.48869 -3.8603,27.47742 -1.04989,12.98898 -1.59699,31.42746 -1.6413,55.3155 0.0423,23.9529 0.60977,40.83833 1.70255,50.65635 1.09276,9.81806 2.45722,15.56085 4.09337,17.22838 1.63613,1.66753 3.29038,2.25196 4.96276,1.75327 l 23.86471,0 c 1.09619,0.008 1.9846,-0.25266 2.66521,-0.78245 0.68052,-0.52978 1.03099,-1.37744 1.05142,-2.54296 -0.0822,-0.89353 -0.65691,-4.36625 -1.72428,-10.41817 -1.06747,-6.05189 -2.13488,-12.45155 -3.20225,-19.19899 -1.06746,-6.74738 -1.64222,-11.61112 -1.72429,-14.59123 0.6031,-5.94575 3.60249,-11.61035 8.99817,-16.99382 5.39558,-5.38335 9.56864,-8.26048 12.51919,-8.6314 2.29022,-0.0529 6.16986,5.28568 11.63893,16.01576 5.46892,10.7302 8.76172,27.16977 9.87843,49.31877 -0.12642,1.26741 -0.0205,2.84046 0.31787,4.71914 0.33817,1.8787 1.6667,2.91381 3.9856,3.10535 l 23.86471,0 c 2.23312,0.15894 4.17294,0.13448 5.81946,-0.0734 1.64629,-0.20783 2.51024,-1.55267 2.59187,-4.0345 -0.4638,-19.1084 -3.70951,-35.2935 -9.73715,-48.55533 -6.02787,-13.26173 -12.05562,-23.57846 -18.08328,-30.95022 -6.02785,-7.3716 -9.27356,-11.7765 -9.73714,-13.2147 0.41046,-1.47666 3.28426,-5.39132 8.62143,-11.74399 5.33698,-6.35246 10.67405,-14.10691 16.01123,-23.26338 5.33696,-9.15621 8.21077,-18.67841 8.62144,-28.56665 -0.13868,-1.46692 -0.93743,-2.24937 -2.39626,-2.34734 -1.45906,-0.0976 -2.74683,-0.0976 -3.86334,0 z"
id="path3004"
inkscape:connector-curvature="0" />
<path
d="m 484.91374,548.776 3.91224,0 c 0.89243,0.0326 1.60153,-0.0815 2.12729,-0.34232 0.52565,-0.26082 0.79462,-0.86396 0.8069,-1.80941 -0.40758,-1.6138 -2.03768,-9.87842 -4.89031,-24.79387 -2.85273,-14.9154 -4.48283,-35.01455 -4.89031,-60.29751 0.43193,-19.41034 2.15984,-35.94772 5.18372,-49.61218 3.02379,-13.66419 4.7517,-21.25231 5.18373,-22.76439 -0.15083,-1.75627 -1.07184,-2.74248 -2.76302,-2.95863 -1.69129,-0.21583 -3.24803,-0.27288 -4.67024,-0.17116 l -21.12614,0 c -0.8757,-0.26983 -2.04632,0.0501 -3.51185,0.95972 -1.46559,0.90996 -2.96018,4.02957 -4.4838,9.35883 -1.52366,5.32956 -2.81042,14.48869 -3.8603,27.47742 -1.0499,12.98898 -1.597,31.42746 -1.6413,55.3155 0.0423,23.9529 0.60977,40.83833 1.70255,50.65635 1.09276,9.81806 2.45721,15.56085 4.09337,17.22838 1.63612,1.66753 3.29037,2.25196 4.96276,1.75327 z"
id="path3006"
inkscape:connector-curvature="0" />
<path
d="m 628.46517,548.776 c 1.67224,0.49869 3.32649,-0.0857 4.96275,-1.75327 1.63602,-1.66753 3.00047,-7.41032 4.09337,-17.22838 1.09265,-9.81801 1.66017,-26.70345 1.70256,-50.65635 -0.0368,-23.88804 -0.53807,-42.32653 -1.50378,-55.3155 -0.96597,-12.98873 -2.17632,-22.14786 -3.63106,-27.47743 -1.45498,-5.32926 -2.9343,-8.44886 -4.43795,-9.35883 -1.50388,-0.90963 -2.81204,-1.22954 -3.92447,-0.95971 l -14.86653,0 c -1.9603,-0.0813 -3.76157,-0.065 -5.4038,0.0489 -1.64242,0.11427 -2.51453,0.81521 -2.61631,2.10283 0.41558,2.74688 2.07828,10.99519 4.98811,24.74496 2.90963,13.75004 4.57234,30.01845 4.98812,48.80529 0.0569,1.66279 0.0406,3.86342 -0.0489,6.60191 -0.0898,2.73865 -0.59509,4.25465 -1.51599,4.54799 -0.8722,-0.0855 -1.57315,-0.55009 -2.10283,-1.39374 -0.52989,-0.84351 -0.93741,-1.5526 -1.22258,-2.12728 -12.10511,-22.33593 -22.06201,-39.56429 -29.87073,-51.68513 -7.80886,-12.12058 -13.99842,-20.48119 -18.56869,-25.08186 -4.57037,-4.60035 -8.05033,-6.78831 -10.4399,-6.56387 l -15.45337,0 c -0.8757,-0.26983 -2.04632,0.0501 -3.51186,0.95972 -1.46558,0.90996 -2.96018,4.02957 -4.4838,9.35883 -1.52365,5.32956 -2.81042,14.48869 -3.86029,27.47742 -1.0499,12.98898 -1.597,31.42746 -1.6413,55.3155 0.0423,23.9529 0.60976,40.83833 1.70255,50.65635 1.09276,9.81806 2.45721,15.56085 4.09337,17.22838 1.63612,1.66753 3.29037,2.25196 4.96275,1.75327 l 18.19195,0 c 0.9984,0.0856 2.13132,0.11003 3.39876,0.0734 1.26736,-0.0367 1.96016,-0.64796 2.07839,-1.83386 -0.33422,-4.4624 -1.6709,-12.99598 -4.01006,-25.60077 -2.33924,-12.60473 -3.67592,-32.43491 -4.01005,-59.4906 -0.0471,-1.54308 -0.10508,-4.30338 -0.17388,-8.28093 -0.0689,-3.97735 0.13399,-7.73745 0.60857,-11.28031 0.47451,-3.54265 1.50329,-5.43356 3.08633,-5.67276 2.24468,0.37323 5.23199,3.27843 8.96195,8.71562 3.72986,5.43739 7.25329,11.1681 10.57031,17.19215 3.31689,6.02422 5.47829,10.10309 6.48419,12.23664 9.75035,20.37272 16.02684,35.92026 18.82949,46.64268 2.80248,10.72247 4.65959,18.01083 5.57133,21.86511 0.91156,3.85429 3.40622,5.66552 7.48399,5.43368 z"
id="path3008"
inkscape:connector-curvature="0" />
<path
d="m 730.11984,551.71019 c 12.68212,0.0611 23.99502,-2.89751 33.93874,-8.87592 9.94352,-5.97839 15.19244,-15.34332 15.7468,-28.09482 -0.0315,-2.50911 -0.46862,-8.0104 -1.31133,-16.50389 -0.84294,-8.49338 -1.90311,-16.66079 -3.18051,-24.50226 -1.27764,-7.84131 -2.58413,-12.03852 -3.91949,-12.59163 -1.18345,0.13412 -4.64168,1.2136 -10.3747,3.23847 -5.73323,2.02503 -11.33595,4.19125 -16.80818,6.49867 -5.47239,2.30758 -8.40899,3.95217 -8.80979,4.93378 0.19071,1.58309 1.52618,3.09003 4.00643,4.52082 2.48009,1.43093 4.96025,3.4595 7.44051,6.08572 2.48008,2.62634 3.81556,6.52409 4.00643,11.69327 -0.29351,6.77312 -2.98318,11.61452 -8.06901,14.52422 -5.086,2.90976 -10.80765,4.32795 -17.16498,4.25457 -12.53147,-0.49308 -21.01615,-5.13072 -25.45406,-13.91293 -4.43799,-8.78213 -6.51637,-18.7502 -6.23514,-29.90424 -0.058,-9.32772 1.25333,-18.7316 3.93398,-28.21165 2.68057,-9.47984 7.07822,-17.44922 13.19296,-23.90818 6.11464,-6.45869 14.29413,-9.82032 24.53849,-10.0849 7.94515,0.22715 12.94172,1.81619 14.9897,4.76714 2.0478,2.95122 3.1611,5.90231 3.3399,8.85328 0.17862,2.95121 1.43681,4.54026 3.7746,4.76715 6.23096,-0.0325 11.12941,-1.58108 14.69537,-4.6458 3.56573,-3.06447 5.3833,-7.44944 5.4527,-13.15493 -0.21868,-7.00084 -2.69402,-12.58182 -7.42603,-16.74296 -4.73224,-4.16084 -10.40982,-7.14815 -17.03276,-8.96195 -6.62314,-1.81348 -12.88031,-2.69977 -18.77154,-2.65888 -15.61162,0.30204 -28.7925,4.97982 -39.54268,14.03337 -10.75025,9.05386 -18.90318,20.67225 -24.45879,34.85523 -5.55564,14.1832 -8.34734,29.11976 -8.3751,44.80972 -0.008,22.20612 5.63199,40.14539 16.92046,53.81784 11.28843,13.67249 28.27409,20.70638 50.95702,21.10169 z"
id="path3010"
inkscape:connector-curvature="0" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="textUpdating"
inkscape:label="Updating Text"
style="display:inline"
transform="translate(314.84811,-319.4097)">
<g
transform="translate(-2.0722657e-6,0.02741704)"
style="font-size:220px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3e364e;fill-opacity:1;stroke:none;display:inline;font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="text3799-0">
<path
inkscape:connector-curvature="0"
d="m 25.320627,483.66859 c -0.03675,10.74324 -1.283395,18.73646 -3.739951,23.97969 -3.483362,7.91992 -9.936606,11.87987 -19.3597511,11.87985 -15.5831789,0.0367 -23.3564039,-11.91648 -23.3196999,-35.85954 l 0,-73.25906 c 0.0045,-3.63898 0.105376,-6.8656 0.302495,-9.67987 0.197045,-2.814 0.462875,-5.16063 0.797491,-7.03991 l -29.919615,0 c 0.623315,5.97672 0.916645,10.52333 0.879989,13.63982 l 0.219997,80.07897 c -8e-6,16.05983 4.399931,29.25965 13.19983,39.59949 9.203186,10.74319 21.816345,16.09645 37.8395129,16.05979 15.6197241,-0.0367 28.1595501,-5.46326 37.6195161,-16.27979 8.79978,-10.37651 13.199719,-23.50299 13.19983,-39.37949 l 0,-71.93907 0,-8.1399 c 0.10072,-2.86441 0.229051,-5.44021 0.384995,-7.7274 0.155722,-2.28691 0.394052,-4.25771 0.71499,-5.91242 l -30.139612,0 c 0.439913,1.86095 0.769907,3.91425 0.989984,6.15992 0.219913,2.24594 0.329913,4.73924 0.329999,7.4799 z"
style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="path2998-1" />
<path
inkscape:connector-curvature="0"
d="m 117.16073,506.1083 c 14.26308,-5.93988 25.77626,-14.07977 34.53956,-24.41969 9.93644,-11.91644 14.92304,-25.04292 14.9598,-39.37949 -1e-4,-14.11637 -5.06003,-25.70288 -15.1798,-34.75955 -10.15661,-9.23974 -23.50309,-13.85968 -40.03949,-13.85982 l -32.99957,0 c 0.325401,1.86095 0.554564,4.51924 0.687489,7.97489 0.132902,3.45592 0.197068,7.7642 0.192499,12.92484 l 0,105.15864 c 0.03666,7.66325 -0.256673,14.55649 -0.879988,20.67974 l 28.59963,0 c -0.3392,-1.7554 -0.59587,-4.34953 -0.76999,-7.7824 -0.17421,-3.43286 -0.21087,-7.73197 -0.11,-12.89734 l 0,-7.6999 z m -5.05993,-88.43886 c 7.51652,1.2e-4 13.8231,2.20009 18.91975,6.59991 5.71986,4.87672 8.57982,11.4033 8.57989,19.57975 -0.0367,8.57998 -3.70335,16.71986 -10.99986,24.41969 -6.37997,6.81997 -13.85987,11.8799 -22.43971,15.1798 l 0,-65.77915 z"
style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="path3000-7" />
<path
inkscape:connector-curvature="0"
d="m 188.44123,393.68975 c 0.62331,3.33676 0.91664,10.30333 0.87999,20.89973 l 0,105.15864 c 0.0366,10.08322 -0.25667,16.97646 -0.87999,20.67974 l 45.97941,0 c 20.86298,0 35.23612,-6.81991 43.11944,-20.45974 6.34315,-10.96316 9.49643,-28.85624 9.45988,-53.67931 -0.0368,-48.39925 -19.32317,-72.59892 -57.85925,-72.59906 z m 71.27908,86.89888 c 0.0778,12.75529 -2.82796,21.94933 -8.71739,27.58214 -5.88958,5.63287 -15.23028,8.392 -28.02213,8.2774 l -6.81992,0 0,-98.99873 5.49993,0 c 14.73975,-0.0365 24.85961,3.11675 30.35961,9.45988 5.09652,5.68337 7.66315,15.87656 7.6999,30.5796 z"
style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="path3002-4" />
<path
inkscape:connector-curvature="0"
d="m 328.51225,540.42786 c 0.0366,-2.01664 1.06329,-6.78324 3.07996,-14.29982 l 5.05993,-17.81977 38.27951,0 4.39994,17.81977 c 0.87991,3.6208 1.5399,6.60909 1.97998,8.96489 0.43991,2.3558 0.65991,4.13411 0.65999,5.33493 l 30.57961,0 -8.57989,-32.11959 5.27993,0 0,-23.3197 -11.43985,0 -24.19969,-91.29882 -32.55958,0 -38.71951,146.73811 z m 28.15964,-104.49866 12.31984,49.05937 -25.95967,0 z"
style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="path3004-0" />
<path
inkscape:connector-curvature="0"
d="m 497.1829,417.66944 c 4.0607,1.2e-4 7.43398,0.0551 10.11987,0.165 2.68571,0.11012 4.73901,0.27511 6.15992,0.49499 l 0,-24.63968 -90.85883,0 0,24.63968 c 2.45663,-0.43987 7.88322,-0.65987 16.27979,-0.65999 l 15.6198,0 0,102.07868 c 0.0366,9.86322 -0.2567,16.75646 -0.87999,20.67974 l 28.81963,0 c -0.62339,-3.11662 -0.91672,-9.8632 -0.87999,-20.23974 l 0,-102.51868 15.6198,0 z"
style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="path3006-9" />
<path
inkscape:connector-curvature="0"
d="m 561.23086,540.42786 c -0.62337,-3.55662 -0.9167,-10.30319 -0.87999,-20.23974 l 0,-106.25863 c -0.0367,-10.1564 0.25662,-16.90298 0.87999,-20.23974 l -29.91962,0 c 0.3254,1.43929 0.55457,3.89592 0.68749,7.3699 0.1329,3.47426 0.19707,7.91086 0.1925,13.30983 l 0,105.37864 c 0.005,4.95912 -0.0596,9.17573 -0.1925,12.64984 -0.13292,3.47412 -0.36209,6.15075 -0.68749,8.0299 z"
style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="path3008-4" />
<path
inkscape:connector-curvature="0"
d="m 681.95847,540.64785 c -0.62343,-5.46326 -0.91676,-14.11647 -0.87998,-25.95966 l 0,-97.01875 c -1.1e-4,-8.79976 0.21989,-16.93965 0.65999,-24.41969 l -27.71965,0 c 0.69658,7.70004 1.06324,15.83993 1.09999,24.41969 l 0,46.4194 -43.11944,-70.39909 -29.25963,0 6.59992,12.09984 0,108.01861 c 0.005,5.60078 -0.0596,10.62404 -0.1925,15.0698 -0.13293,4.44578 -0.36209,8.36906 -0.68749,11.76985 l 27.93964,0 c -0.62337,-7.22323 -0.9167,-15.43645 -0.87999,-24.63968 l 0,-69.7391 39.59949,64.01917 c -0.11008,0.55919 -0.16508,1.47584 -0.165,2.74997 -7e-5,1.27417 0.0549,2.85082 0.165,4.72994 -0.0367,5.75661 -0.4034,13.38317 -1.09999,22.8797 z"
style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="path3010-8" />
<path
inkscape:connector-curvature="0"
d="m 801.81037,540.42786 c 1.97987,0.21999 3.51985,0.21999 4.61994,0 -0.0368,-1.4254 -0.18344,-3.85454 -0.44,-7.28741 -0.25677,-3.43287 -0.40343,-7.23698 -0.43999,-11.41235 l 0,-25.51967 c -0.005,-3.84074 0.0595,-7.48903 0.1925,-10.94487 0.1328,-3.45573 0.36197,-6.77401 0.68749,-9.95487 l -26.83966,0 c 0.47658,9.67994 0.62325,15.39986 0.44,17.15978 0.0366,17.59981 -7.07665,26.39969 -21.33973,26.39966 -17.41648,-0.0366 -26.14303,-17.34306 -26.17966,-51.91933 -3e-5,-34.13612 10.77982,-51.22255 32.33958,-51.25934 10.33979,-0.0365 20.23966,3.99674 29.69962,12.09985 l 0,-25.07968 c -8.35998,-7.29643 -18.25984,-10.96305 -29.69962,-10.99986 -19.95104,0.0827 -35.04833,6.46256 -45.29192,19.13975 -10.24362,12.67746 -15.38605,31.1572 -15.4273,55.43929 0.0367,50.85603 18.22308,76.30235 54.5593,76.33902 8.13983,-0.0367 15.39973,-1.72331 21.77972,-5.05994 5.05985,-2.82329 8.5798,-5.97658 10.55987,-9.45987 z"
style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold"
id="path3012" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,13 @@
SOURCE_DIR = .
BINARY_DIR = .
.PHONY: all clean
all: $(BINARY_DIR)/resource.dat
$(BINARY_DIR)/resource.dat: $(SOURCE_DIR)/makeres.py $(SOURCE_DIR)/render_svg.py $(SOURCE_DIR)/create_resource_dat.py $(SOURCE_DIR)/Cursor_Base.svg $(SOURCE_DIR)/Linking_Book.svg $(SOURCE_DIR)/Loading_Text_rasterfont.svg $(SOURCE_DIR)/Voice_Chat.svg
python $(SOURCE_DIR)/makeres.py --optimize --render --package -i $(SOURCE_DIR) -o $(BINARY_DIR)
clean:
rm -rf $(BINARY_DIR)/render
rm -fv $(BINARY_DIR)/resource.dat

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -0,0 +1,62 @@
#!/usr/bin/env python
from __future__ import print_function
from __future__ import with_statement
import os
import sys
import glob
import struct
from optparse import OptionParser
version = 1
def create_resource_dat(resfilepath, inrespath):
datHeader = 0xCBBCF00D
datVersion = 0x00000001
## Get list of files to archive
resourceList = glob.glob(os.path.join(inrespath, "*"))
resourceList.sort()
if len(resourceList) == 0:
print("No files found in '{0}'. Quitting.\n".format(inrespath))
return False
print("{0} resources found in '{1}'.".format(len(resourceList), inrespath, ))
## Write each resource into the output file
with open(resfilepath, "wb") as datFile:
datFile.write(struct.pack("<I",datHeader))
datFile.write(struct.pack("<I",datVersion))
datFile.write(struct.pack("<I",len(resourceList)))
for res in resourceList:
with open(res, "rb") as resFile:
name = os.path.basename(res)
datFile.write(struct.pack("<I", len(name)))
datFile.write(name)
datFile.write(struct.pack("<I", os.path.getsize(res)))
datFile.write(resFile.read())
print("{0} resources written to '{1}'.\n".format(len(resourceList), resfilepath))
return True
if __name__ == '__main__':
parser = OptionParser(usage="usage: %prog [options]", version="%prog {0}".format(version))
parser.add_option("-q", "--quiet", dest="verbose", default=True, action="store_false", help="Don't print status messages")
parser.add_option("-o", "--outfile", dest="outfile", default="resource.dat", help="Sets name for output file")
parser.add_option("-i", "--inpath", dest="inpath", default=".", help="Sets input path for files to add to resource file")
(options, args) = parser.parse_args()
## Send output to OS's null if unwanted
if not options.verbose:
sys.stdout = open(os.devnull,"w")
sys.stderr = open(os.devnull,"w")
## Compute Paths
outfile = os.path.expanduser(options.outfile)
inpath = os.path.expanduser(options.inpath)
## Do the work!
print("Creating {0}...".format(outfile))
create_resource_dat(outfile, inpath)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python
import os
import sys
import glob
import subprocess
from optparse import OptionParser
if __name__ == '__main__':
parser = OptionParser(usage="usage: %prog [options]")
parser.add_option("-q", "--quiet", dest="verbose", default=True, action="store_false", help="Don't print status messages")
parser.add_option("-r", "--render", dest="render", default=False, action="store_true", help="Perform SVG Render to images")
parser.add_option("-p", "--package", dest="package", default=False, action="store_true", help="Perform packaging into resource container")
parser.add_option("-z", "--optimize", dest="optimize", default=False, action="store_true", help="Perform PNGCrush optimization on PNG resources")
parser.add_option("-o", "--outpath", dest="outpath", default=".", help="Sets output path for resource container")
parser.add_option("-i", "--inpath", dest="inpath", default=".", help="Sets input path for files to add to resource file")
(options, args) = parser.parse_args()
## Send output to OS's null if unwanted
if not options.verbose:
sys.stdout = open(os.devnull,"w")
sys.stderr = open(os.devnull,"w")
## Compute Paths
outpath = os.path.expanduser(options.outpath)
inpath = os.path.expanduser(options.inpath)
## Do the work!
if options.render:
ret = subprocess.call(["python", os.path.join(inpath, "render_svg.py"), "-i", inpath, "-o", os.path.join(outpath, "render")], stdout=sys.stdout, stderr=sys.stderr)
if ret != 0:
print("An error has occurred. Aborting.")
exit(1)
if options.optimize:
print("Optimizing PNGs with pngcrush...")
for png in glob.glob(os.path.join("render", "*.png")):
#print("pngcrushing - {0}".format(png))
ret = subprocess.call(["pngcrush", "-q", "-l 9", "-brute", png, "temp.png"], stdout=sys.stdout, stderr=sys.stderr)
if ret != 0:
print("An error has occurred. Aborting.")
exit(1)
os.remove(png)
os.rename("temp.png", png)
if options.package:
ret = subprocess.call(["python", os.path.join(inpath, "create_resource_dat.py"), "-i", os.path.join(outpath, "render"), "-o", "resource.dat"], stdout=sys.stdout, stderr=sys.stderr)
if ret != 0:
print("An error has occurred. Aborting.")
exit(1)

View File

@ -0,0 +1,220 @@
#!/usr/bin/env python
from __future__ import print_function
from __future__ import with_statement
import os
import math
from xml.dom.minidom import parse
from optparse import OptionParser
import scalergba
try:
import rsvg
import cairo
except ImportError as e:
print("Rendering SVG resources requires PyGTK. Exiting...")
exit(1)
cursorList = {
"cursor_up": ["circleOuter"],
"cursor_poised": ["circleOuter", "circleInnerOpen"],
"cursor_clicked": ["circleOuter", "circleInnerClosed"],
"cursor_disabled": ["cross"],
"cursor_open": ["circleOuter", "arrowTranslucentUpper", "arrowTranslucentLower"],
"cursor_grab": ["circleOuter", "circleInnerOpen", "arrowTranslucentUpper", "arrowTranslucentLower"],
"cursor_updown_open": ["circleOuter", "circleInnerOpen", "arrowTranslucentUpper", "arrowTranslucentLower"],
"cursor_updown_closed": ["circleOuter", "circleInnerClosed", "arrowOpaqueUpper", "arrowOpaqueLower"],
"cursor_leftright_open": ["circleOuter", "circleInnerOpen", "arrowTranslucentLeft", "arrowTranslucentRight"],
"cursor_leftright_closed": ["circleOuter", "circleInnerClosed", "arrowOpaqueLeft", "arrowOpaqueRight"],
"cursor_4way_open": ["circleOuter", "circleInnerOpen", "arrowTranslucentUpper", "arrowTranslucentRight", "arrowTranslucentLower", "arrowTranslucentLeft"],
"cursor_4way_closed": ["circleOuter", "circleInnerClosed", "arrowOpaqueUpper", "arrowOpaqueRight", "arrowOpaqueLower", "arrowOpaqueLeft"],
"cursor_upward": ["circleOuter", "arrowOpaqueUpper"],
"cursor_right": ["circleOuter", "arrowOpaqueRight"],
"cursor_down": ["circleOuter", "arrowOpaqueLower"],
"cursor_left": ["circleOuter", "arrowOpaqueLeft"],
"cursor_book": ["circleOuter", "book"],
"cursor_book_poised": ["circleOuter", "circleInnerOpen", "book"],
"cursor_book_clicked": ["circleOuter", "circleInnerClosed", "book"],
}
cursorOffsetList = {
"cursor_book": [7, 7],
"cursor_book_poised": [7, 7],
"cursor_book_clicked": [7, 7]
}
textList = {
"xLoading_Linking_Text": ["background", "circles", "textLinking"],
"xLoading_Updating_Text": ["background", "circles", "textUpdating"]
}
voiceList = {
"ui_speaker": ["speakerGrille", "speakerIndicator", "speakerOuterRing"],
"ui_microphone": ["microphoneGrille", "microphoneIndicator", "microphoneOuterRing"]
}
def enable_only_layers(layerlist, layers):
for layer in layers:
if layer in layerlist:
layers[layer].setAttribute("style","")
else:
layers[layer].setAttribute("style","display:none")
# sanity check
for layer in layerlist:
if layer not in layers:
print("warning: unknown layer", layer)
def shift_all_layers(layers, shiftx, shifty):
# note: this assumes that all layers start out with no transform of their own
for layer in layers:
layers[layer].setAttribute("transform", "translate(%g,%g)" % (shiftx, shifty))
def get_layers_from_svg(svgData):
inkscapeNS = "http://www.inkscape.org/namespaces/inkscape"
layers = {}
groups = svgData.getElementsByTagName("g")
for group in groups:
if group.getAttributeNS(inkscapeNS,"groupmode") == "layer":
layers[group.getAttribute("id")] = group
return layers
def render_cursors(inpath, outpath):
scalefactor = 4
with open(os.path.join(inpath,"Cursor_Base.svg"), "r") as svgFile:
cursorSVG = parse(svgFile)
layers = get_layers_from_svg(cursorSVG)
svgwidth = float(cursorSVG.documentElement.getAttribute("width"))
svgheight = float(cursorSVG.documentElement.getAttribute("height"))
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(math.ceil(scalefactor*svgwidth)), int(math.ceil(scalefactor*svgheight)))
for cursor in cursorList:
ctx = cairo.Context(surface)
ctx.save()
ctx.set_operator(cairo.OPERATOR_CLEAR)
ctx.paint()
ctx.restore()
enabledlayers = cursorList[cursor]
enabledlayers = enabledlayers + [l + "Shadow" for l in enabledlayers]
enable_only_layers(enabledlayers, layers)
shift_all_layers(layers, *cursorOffsetList.get(cursor, [0, 0]))
svg = rsvg.Handle(data=cursorSVG.toxml())
ctx.scale(scalefactor, scalefactor)
svg.render_cairo(ctx)
outfile = os.path.join(outpath, cursor + ".png")
surface.write_to_png(outfile)
scalergba.scale(outfile, outfile, scalefactor)
def render_loading_books(inpath, outpath):
resSize = {"width":256, "height":256}
with open(os.path.join(inpath,"Linking_Book.svg"), "r") as svgFile:
bookSVG = parse(svgFile)
layers = get_layers_from_svg(bookSVG)
ratioW = resSize["width"] / float(bookSVG.documentElement.getAttribute("width"))
ratioH = resSize["height"] / float(bookSVG.documentElement.getAttribute("height"))
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, resSize["width"], resSize["height"])
for angle in range(0, 18):
ctx = cairo.Context(surface)
# Draw Book and Black Background
enable_only_layers(["background", "book"],layers)
svg = rsvg.Handle(data=bookSVG.toxml())
ctx.save()
ctx.scale(ratioW, ratioH)
svg.render_cairo(ctx)
ctx.restore()
# Draw Circles at appropriate angle
enable_only_layers(["circles"],layers)
svg = rsvg.Handle(data=bookSVG.toxml())
ctx.translate(resSize["height"] / 2, resSize["width"] / 2)
ctx.rotate(math.radians(angle*(5)))
ctx.translate(-resSize["width"] / 2, -resSize["height"] / 2)
ctx.scale(ratioW, ratioH)
svg.render_cairo(ctx)
surface.write_to_png(os.path.join(outpath, "xLoading_Linking.{0:02}.png".format(angle)))
def render_loading_text(inpath, outpath):
resSize = {"width":192, "height":41}
with open(os.path.join(inpath,"Loading_Text_rasterfont.svg"), "r") as svgFile:
textSVG = parse(svgFile)
layers = get_layers_from_svg(textSVG)
ratioW = resSize["width"] / float(textSVG.documentElement.getAttribute("width"))
ratioH = resSize["height"] / float(textSVG.documentElement.getAttribute("height"))
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, resSize["width"], resSize["height"])
for textEntry in textList:
ctx = cairo.Context(surface)
ctx.save()
ctx.set_operator(cairo.OPERATOR_CLEAR)
ctx.paint()
ctx.restore()
enable_only_layers(textList[textEntry], layers)
svg = rsvg.Handle(data=textSVG.toxml())
ctx.scale(ratioW, ratioH)
svg.render_cairo(ctx)
surface.write_to_png(os.path.join(outpath, textEntry + ".png"))
def render_voice_icons(inpath, outpath):
resSize = {"width":32, "height":32}
with open(os.path.join(inpath,"Voice_Chat.svg"), "r") as svgFile:
uiSVG = parse(svgFile)
layers = get_layers_from_svg(uiSVG)
ratioW = resSize["width"] / float(uiSVG.documentElement.getAttribute("width"))
ratioH = resSize["height"] / float(uiSVG.documentElement.getAttribute("height"))
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, resSize["width"], resSize["height"])
for voiceUI in voiceList:
ctx = cairo.Context(surface)
ctx.save()
ctx.set_operator(cairo.OPERATOR_CLEAR)
ctx.paint()
ctx.restore()
enable_only_layers(voiceList[voiceUI], layers)
svg = rsvg.Handle(data=uiSVG.toxml())
ctx.scale(ratioW, ratioH)
svg.render_cairo(ctx)
surface.write_to_png(os.path.join(outpath, voiceUI + ".png"))
if __name__ == '__main__':
parser = OptionParser(usage="usage: %prog [options]")
parser.add_option("-q", "--quiet", dest="verbose", default=True, action="store_false", help="Don't print status messages")
parser.add_option("-o", "--outpath", dest="outpath", default="./out", help="Sets output path for rendered images")
parser.add_option("-i", "--inpath", dest="inpath", default=".", help="Sets input path for SVG files")
(options, args) = parser.parse_args()
## Send output to OS's null if unwanted
if not options.verbose:
sys.stdout = open(os.devnull,"w")
sys.stderr = open(os.devnull,"w")
## Compute Paths
outpath = os.path.expanduser(options.outpath)
inpath = os.path.expanduser(options.inpath)
if not os.path.exists(outpath):
os.mkdir(outpath)
## Do the work!
print("Rendering SVGs...")
render_cursors(inpath, outpath)
render_loading_books(inpath, outpath)
render_loading_text(inpath, outpath)
render_voice_icons(inpath, outpath)

View File

@ -0,0 +1,180 @@
#!/opt/local/bin/python2.7
# Christian Walther 2011-07-20
# Public Domain
# scalergba.py <input> <factor> <output>
#
# Scale image <input> down by <factor> (integer) and save as PNG file <output>.
#
# - Taking into account that adding (averaging) colors must be done in a linear
# color space, not with the power-law-encoded values stored in the files.
# (I know of no image processing application that does this right.)
# Gamma is hardcoded to 2.2.
# - Assuming that alpha compositing will be done directly with the raw
# power-law-encoded values rather than in the linear color space that would
# be correct, which is the way almost all software will do it, in particular
# OpenGL/Direct3D. (Photoshop has an option to do it right, maybe other
# high-end image processing software too.)
from __future__ import division
import sys
import math
try:
import Image
except ImportError:
print("Scaling requires the Python Imaging Library.")
raise
gamma = 2.2
def add(a, b):
for i, y in enumerate(b):
a[i] += y
def sub(a, b):
for i, y in enumerate(b):
a[i] -= y
def subsc(a, b):
for i in range(3):
a[i] -= b
def mul(a, b):
for i, y in enumerate(b):
a[i] *= y
def mulsc(a, b):
for i in range(3):
a[i] *= b
def pixel2linear(p):
l = [math.pow(p[i]/255.0, gamma) for i in range(3)]
if len(p) == 4:
l.append(p[3]/255.0)
else:
l.append(1.0)
return l
def pixel2nonlinear(p):
return [p[i]/255.0 for i in range(3)], p[3]/255.0 if len(p) > 3 else 1.0
def clamp(x):
return 255 if x > 255 else 0 if x < 0 else x
def linear2pixel(l):
p = [clamp(int(math.floor(math.pow(l[i], 1.0/gamma)*255 + 0.5))) for i in range(3)]
if len(l) == 4:
p.append(clamp(int(math.floor(l[3]*255 + 0.5))))
return p
def nonlinear2pixel(l):
return [clamp(int(math.floor(c*255 + 0.5))) for c in l]
def scale(infilename, outfilename, factor):
inimg = Image.open(infilename)
inpix = inimg.load()
outw = inimg.size[0] // factor
outh = inimg.size[1] // factor
outimg = Image.new("RGBA", (outw, outh), None)
outpix = outimg.load()
for oy in range(outh):
for ox in range(outw):
# scale down in linear color space to get a tentative color to compute the fixed points from
sum = [0.0, 0.0, 0.0, 0.0]
for j in range(factor):
for i in range(factor):
l = pixel2linear(inpix[ox*factor+i, oy*factor+j])
mulsc(l, l[3])
add(sum, l)
if sum[3] != 0:
mulsc(sum, 1.0/sum[3])
sum[3] /= factor*factor
# determine the two fixed points (background colors on which we will achieve the correct result) per component
# I used to use constant black and white for that, but later realized that that results in a large error (result too light) on midtones and I can do better by distributing the error more evenly. The dependency of the fixed points on the foreground color is empirical magic that has been experimentally determined to produce visually pleasing results.
fix1 = [0.04*sum[i] for i in range(3)]
fix2 = [0.4 + 0.6*sum[i] for i in range(3)]
fix1n = [math.pow(l, 1.0/gamma) for l in fix1]
fix2n = [math.pow(l, 1.0/gamma) for l in fix2]
# composite against the fixed points in nonlinear color space as that's what the image expects (only matters in areas of medium alpha), then scale down in linear color space again
f1c = [0.0, 0.0, 0.0]
for j in range(factor):
for i in range(factor):
c, a = pixel2nonlinear(inpix[ox*factor+i, oy*factor+j])
mulsc(c, a)
f = fix1n[:]
mulsc(f, 1.0 - a)
add(c, f)
add(f1c, [math.pow(p, gamma) for p in c])
mulsc(f1c, 1.0/(factor*factor))
f2c = [0.0, 0.0, 0.0]
for j in range(factor):
for i in range(factor):
c, a = pixel2nonlinear(inpix[ox*factor+i, oy*factor+j])
mulsc(c, a)
f = fix2n[:]
mulsc(f, 1.0 - a)
add(c, f)
add(f2c, [math.pow(p, gamma) for p in c])
mulsc(f2c, 1.0/(factor*factor))
# go back to gamma-encoded color space, assuming that alpha blending will be done in that
f1cn = [math.pow(l, 1.0/gamma) for l in f1c]
f2cn = [math.pow(l, 1.0/gamma) for l in f2c]
# compute color and alpha
# This gives us three alphas, in general different, but we can only output one - the best thing to do with them I can think of is to average them together and leave the color components alone, this ensures that the alpha deviation does not affect the case where background color equals foreground color.
a = [1.0 - (f2cn[i] - f1cn[i])/(fix2n[i] - fix1n[i]) for i in range(3)]
c = [(f1cn[i] - (1.0-a[i])*fix1n[i])/a[i] if math.floor(a[i]*255 + 0.5) > 0 else 0.0 for i in range(3)]
outpix[ox, oy] = tuple(nonlinear2pixel(c + [(a[0] + a[1] + a[2])/3]))
# collect pixels that ended up with alpha 0
transparent = [0]*outh*outw
for oy in range(outh):
for ox in range(outw):
if outpix[ox, oy][3] == 0:
transparent[oy*outw + ox] = 1
# expand neighboring color values from nonzero-alpha pixels into the zero-alpha region twice, so that bilinear interpolation cannot bleed the arbitrary background color (black here) from zero-alpha into nonzero-alpha territory
for i in range(2):
transp = transparent[:]
for oy in range(outh):
for ox in range(outw):
if transp[oy*outw + ox]:
count = 0
sum = [0, 0, 0]
if ox > 0:
if not transp[oy*outw + ox-1]:
add(sum, outpix[ox-1, oy][0:3])
count += 1
if ox < outw-1:
if not transp[oy*outw + ox+1]:
add(sum, outpix[ox+1, oy][0:3])
count += 1
if oy > 0:
if not transp[(oy-1)*outw + ox]:
add(sum, outpix[ox, oy-1][0:3])
count += 1
if oy < outh-1:
if not transp[(oy+1)*outw + ox]:
add(sum, outpix[ox, oy+1][0:3])
count += 1
if count > 0:
mulsc(sum, 1.0/count)
outpix[ox, oy] = tuple(clamp(int(math.floor(c + 0.5))) for c in sum) + (0,)
transparent[oy*outw + ox] = 0
outimg.save(outfilename, "PNG")
if __name__ == "__main__":
scale(sys.argv[1], sys.argv[3], int(sys.argv[2]))

View File

@ -114,7 +114,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../plStatusLog/plStatusLog.h"
#include "../plProgressMgr/plProgressMgr.h"
#include "../plPipeline/plDTProgressMgr.h"
#ifdef USE_BINK_SDK
#include "../plPipeline/plBinkPlayer.h"
#endif
#include "../plMessage/plMovieMsg.h"
#include "../plSDL/plSDL.h"
@ -269,11 +271,15 @@ hsBool plClient::Shutdown()
// Let the resmanager know we're going to be shutting down.
hsgResMgr::ResMgr()->BeginShutdown();
#ifdef USE_BINK_SDK
// Must kill off all movies before shutting down audio.
IKillMovies();
#endif
plgAudioSys::Activate(false);
#ifdef USE_BINK_SDK
plBinkPlayer::DeInit();
#endif
//
// Get any proxies to commit suicide.
plProxyDrawMsg* nuke = TRACKED_NEW plProxyDrawMsg(plProxyDrawMsg::kAllTypes
@ -767,7 +773,7 @@ hsBool plClient::MsgReceive(plMessage* msg)
{
ISetGraphicsDefaults();
ResetDisplayDevice(plPipeline::fDefaultPipeParams.Width, plPipeline::fDefaultPipeParams.Height, plPipeline::fDefaultPipeParams.ColorDepth, plPipeline::fDefaultPipeParams.Windowed,
plPipeline::fDefaultPipeParams.AntiAliasingAmount, plPipeline::fDefaultPipeParams.AnisotropicLevel, plPipeline::fDefaultPipeParams.VSync, true);
plPipeline::fDefaultPipeParams.AntiAliasingAmount, plPipeline::fDefaultPipeParams.AnisotropicLevel, plPipeline::fDefaultPipeParams.VSync);
}
break;
@ -816,11 +822,13 @@ hsBool plClient::MsgReceive(plMessage* msg)
}
return true;
}
#ifdef USE_BINK_SDK
plMovieMsg* mov = plMovieMsg::ConvertNoRef(msg);
if( mov )
{
return IHandleMovieMsg(mov);
}
#endif // USE_BINK_SDK
plLinkEffectsTriggerMsg* linkFX = plLinkEffectsTriggerMsg::ConvertNoRef(msg);
if (linkFX)
@ -867,6 +875,7 @@ hsBool plClient::MsgReceive(plMessage* msg)
return hsKeyedObject::MsgReceive(msg);
}
#ifdef USE_BINK_SDK
//============================================================================
hsBool plClient::IHandleMovieMsg(plMovieMsg* mov)
{
@ -947,6 +956,7 @@ hsBool plClient::IHandleMovieMsg(plMovieMsg* mov)
return true;
}
#endif // USE_BINK_SDK
int plClient::IFindRoomByLoc(const plLocation& loc)
{
@ -1512,6 +1522,7 @@ hsBool plClient::StartInit()
plgAudioSys::Activate(true);
#ifdef USE_BINK_SDK
plConst(hsScalar) delay(2.f);
//commenting out publisher splash for MORE
//IPlayIntroBink("avi/intro0.bik", delay, 0.f, 0.f, 1.f, 1.f, 0.75);
@ -1519,6 +1530,7 @@ hsBool plClient::StartInit()
IPlayIntroBink("avi/intro1.bik", 0.f, 0.f, 0.f, 1.f, 1.f, 0.75);
if( GetDone() ) return false;
plgDispatch::Dispatch()->RegisterForExactType(plMovieMsg::Index(), GetKey());
#endif // USE_BINK_SDK
//
// Init Net before loading things
@ -1546,6 +1558,7 @@ hsBool plClient::StartInit()
pfGameGUIMgr::GetInstance()->SetAspectRatio( aspectratio );
plMouseDevice::Instance()->SetDisplayResolution((float)fPipeline->Width(), (float)fPipeline->Height());
plInputManager::SetRecenterMouse(false);
// create the listener for the audio system:
plListener* pLMod = TRACKED_NEW plListener;
@ -1923,9 +1936,11 @@ hsBool plClient::IDraw()
IProcessPostRenderRequests();
plProfile_EndTiming(PostRender);
#ifdef USE_BINK_SDK
plProfile_BeginTiming(Movies);
IServiceMovies();
plProfile_EndTiming(Movies);
#endif // USE_BINK_SDK
#ifndef PLASMA_EXTERNAL_RELEASE
plProfile_BeginTiming(Console);
@ -1956,6 +1971,7 @@ hsBool plClient::IDraw()
return false;
}
#ifdef USE_BINK_SDK
void plClient::IServiceMovies()
{
int i;
@ -1970,7 +1986,9 @@ void plClient::IServiceMovies()
}
}
}
#endif // USE_BINK_SDK
#ifdef USE_BINK_SDK
void plClient::IKillMovies()
{
int i;
@ -1978,7 +1996,9 @@ void plClient::IKillMovies()
delete fMovies[i];
fMovies.Reset();
}
#endif // USE_BINK_SDK
#ifdef USE_BINK_SDK
hsBool plClient::IPlayIntroBink(const char* movieName, hsScalar endDelay, hsScalar posX, hsScalar posY, hsScalar scaleX, hsScalar scaleY, hsScalar volume /* = 1.0 */)
{
SetQuitIntro(false);
@ -2027,6 +2047,7 @@ hsBool plClient::IPlayIntroBink(const char* movieName, hsScalar endDelay, hsScal
}
return false;
}
#endif // USE_BINK_SDK
hsBool plClient::IFlushRenderRequests()
{
@ -2164,55 +2185,61 @@ hsG3DDeviceModeRecord plClient::ILoadDevMode(const char* devModeFile)
return dmr;
}
void plClient::ResetDisplayDevice(int Width, int Height, int ColorDepth, hsBool Windowed, int NumAASamples, int MaxAnisotropicSamples, hsBool VSync, hsBool windowOnly)
void plClient::ResetDisplayDevice(int Width, int Height, int ColorDepth, hsBool Windowed, int NumAASamples, int MaxAnisotropicSamples, hsBool VSync)
{
if(!fPipeline) return;
int BorderWidth = 0, BorderHeight = 0, CaptionHeight = 0;
WindowActivate(false);
int ActualWidth;
int ActualHeight;
if( Windowed )
{
BorderWidth = GetSystemMetrics( SM_CXSIZEFRAME );
BorderHeight = GetSystemMetrics( SM_CYSIZEFRAME );
CaptionHeight = GetSystemMetrics( SM_CYCAPTION );
ActualWidth = Width + BorderWidth * 2;
ActualHeight = Height + BorderHeight * 2 + CaptionHeight;
SetWindowLong( fWindowHndl, GWL_STYLE,
WS_POPUP | WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE);
SetWindowLong(fWindowHndl, GWL_EXSTYLE, 0);
}
else
{
SetWindowLong(fWindowHndl, GWL_STYLE,
WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZE | WS_VISIBLE);
SetWindowLong(fWindowHndl, GWL_EXSTYLE, WS_EX_APPWINDOW);
}
if(!windowOnly)
fPipeline->ResetDisplayDevice(Width, Height, ColorDepth, Windowed, NumAASamples, MaxAnisotropicSamples, VSync);
float aspectratio = (float)Width / (float)Height;
plMouseDevice::Instance()->SetDisplayResolution((float)Width, (float)Height);
pfGameGUIMgr::GetInstance()->SetAspectRatio( aspectratio );
UINT flags = SWP_NOCOPYBITS | SWP_NOMOVE | SWP_SHOWWINDOW;
if(Windowed)
{
SetWindowPos( fWindowHndl, HWND_NOTOPMOST, 0, 0, ActualWidth, ActualHeight, flags );
}
else
{
SetWindowPos( fWindowHndl, HWND_TOP, 0, 0, Width, Height, flags );
::ClipCursor(nil);
}
fPipeline->ResetDisplayDevice(Width, Height, ColorDepth, Windowed, NumAASamples, MaxAnisotropicSamples, VSync);
ResizeDisplayDevice(Width, Height, Windowed);
WindowActivate(true);
}
void plClient::ResizeDisplayDevice(int Width, int Height, hsBool Windowed)
{
if (plMouseDevice::Instance())
plMouseDevice::Instance()->SetDisplayResolution((float)Width, (float)Height);
float aspectratio = (float)Width / (float)Height;
if (pfGameGUIMgr::GetInstance())
pfGameGUIMgr::GetInstance()->SetAspectRatio( aspectratio );
UInt32 winStyle, winExStyle;
if( Windowed )
{
// WS_VISIBLE appears necessary to avoid leaving behind framebuffer junk when going from windowed to a smaller window
winStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE;
winExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
} else {
winStyle = WS_POPUP;
winExStyle = WS_EX_APPWINDOW;
}
SetWindowLong(fWindowHndl, GWL_STYLE, winStyle);
SetWindowLong(fWindowHndl, GWL_EXSTYLE, winExStyle);
UInt32 flags = SWP_NOCOPYBITS | SWP_SHOWWINDOW | SWP_FRAMECHANGED;
UInt32 OutsideWidth, OutsideHeight;
HWND insertAfter;
if( Windowed )
{
RECT winRect = { 0, 0, Width, Height };
AdjustWindowRectEx(&winRect, winStyle, false, winExStyle);
OutsideWidth = winRect.right - winRect.left;
OutsideHeight = winRect.bottom - winRect.top;
insertAfter = HWND_NOTOPMOST;
} else {
OutsideWidth = Width;
OutsideHeight = Height;
insertAfter = HWND_TOP;
}
SetWindowPos( fWindowHndl, insertAfter, 0, 0, OutsideWidth, OutsideHeight, flags );
}
void WriteBool(hsStream *stream, char *name, hsBool on )
{

View File

@ -78,7 +78,9 @@ class plFontCache;
class plClientMsg;
class plLocation;
class plMovieMsg;
#ifdef USE_BINK_SDK
class plBinkPlayer;
#endif
class plPreloaderMsg;
class plNetCommAuthMsg;
class plAgeLoaded2Msg;
@ -150,7 +152,9 @@ protected:
int fQuality;
hsBool fQuitIntro;
#ifdef USE_BINK_SDK
hsTArray<plBinkPlayer*> fMovies;
#endif
hsBool fPatchGlobalAges;
@ -191,10 +195,12 @@ protected:
void IProcessRenderRequests(hsTArray<plRenderRequest*>& reqs);
void IAddRenderRequest(plRenderRequest* req);
#ifdef USE_BINK_SDK
hsBool IPlayIntroBink(const char* movieName, hsScalar endDelay, hsScalar posX, hsScalar posY, hsScalar scaleX, hsScalar scaleY, hsScalar volume = 1.0);
hsBool IHandleMovieMsg(plMovieMsg* mov);
void IKillMovies();
void IServiceMovies();
#endif // USE_BINK_SDK
void IStartProgress( const char *title, hsScalar len );
void IIncProgress( hsScalar byHowMuch, const char *text );
@ -292,7 +298,8 @@ public:
virtual hsBool WindowActive() const { return fWindowActive; }
void SetMessagePumpProc( plMessagePumpProc proc ) { fMessagePumpProc = proc; }
void ResetDisplayDevice(int Width, int Height, int ColorDepth, hsBool Windowed, int NumAASamples, int MaxAnisotropicSamples, hsBool VSync = false, hsBool windowOnly = false);
void ResetDisplayDevice(int Width, int Height, int ColorDepth, hsBool Windowed, int NumAASamples, int MaxAnisotropicSamples, hsBool VSync = false);
void ResizeDisplayDevice(int Width, int Height, hsBool Windowed);
void IDetectAudioVideoSettings();
void IWriteDefaultGraphicsSettings(const wchar* destFile);

View File

@ -63,29 +63,6 @@ END
// Bitmap
//
IDB_CURSOR_UP BITMAP "cursor_up.bmp"
IDB_CURSOR_DOWN BITMAP "cursor_down.bmp"
IDB_CURSOR_LEFT BITMAP "cursor_right.bmp"
IDB_CURSOR_RIGHT BITMAP "cursor_left.bmp"
IDB_CURSOR_OPEN BITMAP "cursor_open.bmp"
IDB_CURSOR_GRAB BITMAP "cursor_grab.bmp"
IDB_CURSOR_CLICKED BITMAP "cursor_clicked.bmp"
IDB_CURSOR_POISED BITMAP "cursor_poised.bmp"
IDB_CURSOR_ARROW BITMAP "cursor_u.bmp"
IDB_CURSOR_4WAYOPEN BITMAP "bitmap1.bmp"
IDB_CURSOR_UPDOWNCLOSED BITMAP "bmp00001.bmp"
IDB_CURSOR_UPDOWNOPEN BITMAP "bitmap2.bmp"
IDB_CURSOR_4WAYCLOSED BITMAP "bitmap3.bmp"
IDB_CURSOR_LEFTRIGHTCLOSED BITMAP "bmp00003.bmp"
IDB_CURSOR_LEFTRIGHTOPEN BITMAP "bmp00002.bmp"
IDB_MICROPHONE BITMAP "Microphone.bmp"
IDB_TALKING BITMAP "Speaker.bmp"
IDB_CURSOR_BOOK_HIGHLIGHT BITMAP "book_hig.bmp"
IDB_CURSOR_BOOK BITMAP "book.bmp"
IDB_CURSOR_BOOK_CLICKED BITMAP "book_cli.bmp"
IDB_CURSOR_DISABLED BITMAP "cursor_disabled.bmp"
IDB_CURSOR_HAND BITMAP "bmp00005.bmp"
IDB_CURSOR_UPWARD BITMAP "cursor_upward.bmp"
IDB_BANNER BITMAP "banner.bmp"
/////////////////////////////////////////////////////////////////////////////
@ -327,32 +304,6 @@ END
//
IDR_CNSL1 CNSL "cnsl1.bin"
/////////////////////////////////////////////////////////////////////////////
//
// JPEG
//
IDR_LOADING_01 JPEG "xLoading_Linking.01.jpg"
IDR_LOADING_02 JPEG "xLoading_Linking.02.jpg"
IDR_LOADING_03 JPEG "xLoading_Linking.03.jpg"
IDR_LOADING_04 JPEG "xLoading_Linking.04.jpg"
IDR_LOADING_05 JPEG "xLoading_Linking.05.jpg"
IDR_LOADING_06 JPEG "xLoading_Linking.06.jpg"
IDR_LOADING_07 JPEG "xLoading_Linking.07.jpg"
IDR_LOADING_08 JPEG "xLoading_Linking.08.jpg"
IDR_LOADING_09 JPEG "xLoading_Linking.09.jpg"
IDR_LOADING_10 JPEG "xLoading_Linking.10.jpg"
IDR_LOADING_11 JPEG "xLoading_Linking.11.jpg"
IDR_LOADING_12 JPEG "xLoading_Linking.12.jpg"
IDR_LOADING_13 JPEG "xLoading_Linking.13.jpg"
IDR_LOADING_14 JPEG "xLoading_Linking.14.jpg"
IDR_LOADING_15 JPEG "xLoading_Linking.15.jpg"
IDR_LOADING_16 JPEG "xLoading_Linking.16.jpg"
IDR_LOADING_17 JPEG "xLoading_Linking.17.jpg"
IDR_LOADING_18 JPEG "xLoading_Linking.18.jpg"
IDR_LOADING_LINKTEXT JPEG "xLoading_Linking_Text.jpg"
IDR_LOADING_UPDATETEXT JPEG "xLoading_Updating_Text.jpg"
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////

View File

@ -2,33 +2,10 @@
// Microsoft Visual C++ generated include file.
// Used by plClient.rc
//
#define IDB_CURSOR_UP 112
#define IDB_CURSOR_DOWN 113
#define IDB_CURSOR_RIGHT 114
#define IDB_CURSOR_LEFT 115
#define IDB_CURSOR_OPEN 116
#define IDB_CURSOR_GRAB 117
#define IDB_CURSOR_CLICKED 118
#define IDB_CURSOR_POISED 119
#define IDB_MICROPHONE 121
#define IDB_TALKING 122
#define IDB_CURSOR_ARROW 123
#define IDB_CURSOR_4WAYOPEN 124
#define IDB_CURSOR_UPDOWNCLOSED 125
#define IDB_CURSOR_UPDOWNOPEN 126
#define IDB_CURSOR_4WAYCLOSED 127
#define IDB_CURSOR_LEFTRIGHTCLOSED 128
#define IDB_CURSOR_LEFTRIGHTOPEN 129
#define IDI_ICON_DIRT 135
#define IDD_LOADING 136
#define IDD_EXCEPTION 138
#define IDR_CNSL1 139
#define IDB_CURSOR_BOOK_HIGHLIGHT 141
#define IDB_CURSOR_BOOK 142
#define IDB_CURSOR_BOOK_CLICKED 143
#define IDB_CURSOR_DISABLED 144
#define IDB_CURSOR_HAND 145
#define IDB_CURSOR_UPWARD 147
#define IDD_URUTAP_LOGIN 148
#define IDD_URU_LOGIN 149
#define IDB_BANNER 151
@ -37,26 +14,6 @@
#define IDD_URULOGIN_EULA 154
#define IDD_AUTHFAILED 155
#define IDD_AUTHENTICATING 156
#define IDR_LOADING_01 177
#define IDR_LOADING_02 178
#define IDR_LOADING_03 179
#define IDR_LOADING_04 180
#define IDR_LOADING_05 181
#define IDR_LOADING_06 182
#define IDR_LOADING_07 183
#define IDR_LOADING_08 184
#define IDR_LOADING_09 185
#define IDR_LOADING_10 186
#define IDR_LOADING_11 187
#define IDR_LOADING_12 188
#define IDR_LOADING_13 189
#define IDR_LOADING_14 190
#define IDR_LOADING_15 191
#define IDR_LOADING_16 192
#define IDR_LOADING_17 193
#define IDR_LOADING_18 194
#define IDR_LOADING_LINKTEXT 195
#define IDR_LOADING_UPDATETEXT 196
#define IDC_CRASHINFO 1001
#define IDC_COPY 1002
#define IDC_MSG 1003

View File

@ -54,9 +54,11 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "hsStream.h"
#include "hsUtils.h"
#include "plClient.h"
#include "../plClientResMgr/plClientResMgr.h"
#include "../plNetClient/plNetClientMgr.h"
#include "../plNetClient/plNetLinkingMgr.h"
#include "../plInputCore/plInputManager.h"
#include "../plInputCore/plInputDevice.h"
#include "../plUnifiedTime/plUnifiedTime.h"
#include "plPipeline.h"
#include "../plResMgr/plResManager.h"
@ -431,34 +433,48 @@ void DebugMsgF(const char* format, ...);
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static bool gDragging = false;
static UInt32 keyState=0;
static UInt8 mouse_down = 0;
// Handle messages
switch (message) {
case WM_KEYDOWN :
case WM_LBUTTONDOWN :
case WM_RBUTTONDOWN :
case WM_LBUTTONDBLCLK : // The left mouse button was double-clicked.
case WM_MBUTTONDBLCLK : // The middle mouse button was double-clicked.
case WM_MBUTTONDOWN : // The middle mouse button was pressed.
case WM_RBUTTONDBLCLK : // The right mouse button was double-clicked.
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_LBUTTONDBLCLK:
case WM_MBUTTONDBLCLK:
case WM_MBUTTONDOWN:
case WM_RBUTTONDBLCLK:
// Ensure we don't leave the client area during clicks
if (!(mouse_down++))
SetCapture(hWnd);
// fall through to old case
case WM_KEYDOWN:
// If they did anything but move the mouse, quit any intro movie playing.
if (gClient)
{
if( gClient )
gClient->SetQuitIntro(true);
}
// Fall through to other events
case WM_KEYUP :
case WM_LBUTTONUP :
case WM_RBUTTONUP :
case WM_MBUTTONUP : // The middle mouse button was released.
case WM_MOUSEMOVE :
case 0x020A: // fuc&ing windows b.s...
{
if (gClient && gClient->WindowActive() && gClient->GetInputManager())
{
gClient->SetQuitIntro(true);
// normal input processing
if (gClient->WindowActive() && gClient->GetInputManager())
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
}
break;
case WM_LBUTTONUP:
case WM_RBUTTONUP:
case WM_MBUTTONUP:
// Stop hogging the cursor
if (!(--mouse_down))
ReleaseCapture();
// fall through to input processing
case WM_MOUSEWHEEL:
case WM_KEYUP:
if (gClient && gClient->WindowActive() && gClient->GetInputManager())
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
break;
case WM_MOUSEMOVE:
{
if (gClient && gClient->GetInputManager())
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
}
}
break;
@ -497,6 +513,31 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
break;
case WM_SETCURSOR:
{
static bool winCursor = true;
if (LOWORD(lParam) == HTCLIENT)
{
if (winCursor)
{
winCursor = false;
ShowCursor(FALSE);
plMouseDevice::ShowCursor();
}
}
else
{
if (!winCursor)
{
winCursor = true;
ShowCursor(TRUE);
plMouseDevice::HideCursor();
}
}
return TRUE;
}
break;
case WM_ACTIVATE:
{
bool active = (LOWORD(wParam) == WA_ACTIVE || LOWORD(wParam) == WA_CLICKACTIVE);
@ -508,28 +549,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
(LOWORD(wParam) == WA_CLICKACTIVE) ? "true" : "false");
if (gClient && !minimized && !gClient->GetDone())
{
if (LOWORD(wParam) == WA_CLICKACTIVE)
{
// See if they've clicked on the frame, in which case they just want to
// move, not activate, us.
POINT pt;
GetCursorPos(&pt);
ScreenToClient(hWnd, &pt);
RECT rect;
GetClientRect(hWnd, &rect);
if( (pt.x < rect.left)
||(pt.x >= rect.right)
||(pt.y < rect.top)
||(pt.y >= rect.bottom) )
{
active = false;
}
}
gClient->WindowActivate(active);
}
else
{
gPendingActivate = true;
@ -774,6 +794,14 @@ bool InitClient( HWND hWnd )
plResManager *resMgr = TRACKED_NEW plResManager;
resMgr->SetDataPath("dat");
hsgResMgr::Init(resMgr);
if(!plFileUtils::FileExists("resource.dat"))
{
hsMessageBox("Required file 'resource.dat' not found.", "Error", hsMessageBoxNormal);
return false;
}
plClientResMgr::Instance().ILoadResources("resource.dat");
gClient = TRACKED_NEW plClient;
if( gClient == nil )
return false;
@ -785,11 +813,6 @@ bool InitClient( HWND hWnd )
#ifdef DETACH_EXE
hInstance = ((LPCREATESTRUCT) lParam)->hInstance;
#endif
// If in fullscreen mode, get rid of the window borders. Note: this won't take
// effect until the next SetWindowPos call
#ifdef DETACH_EXE
// This Function loads the EXE into Virtual memory...supposedly
HRESULT hr = DetachFromMedium(hInstance, DMDFM_ALWAYS | DMDFM_ALLPAGES);
@ -799,34 +822,7 @@ bool InitClient( HWND hWnd )
gClient->SetDone(true);
else
{
if( gClient->GetPipeline()->IsFullScreen() )
{
SetWindowLong(hWnd, GWL_STYLE, WS_POPUP);
SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_TOPMOST);
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
gWinBorderDX = gWinBorderDY = gWinMenuDY = 0;
}
else {
SetWindowLong(hWnd, GWL_STYLE, WS_OVERLAPPED | WS_CAPTION);
SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
int goodWidth = gClient->GetPipeline()->Width() + gWinBorderDX * 2;
int goodHeight = gClient->GetPipeline()->Height() + gWinBorderDY * 2 + gWinMenuDY;
SetWindowPos(
hWnd,
nil,
0,
0,
goodWidth,
goodHeight,
SWP_NOCOPYBITS
| SWP_NOMOVE
| SWP_NOOWNERZORDER
| SWP_NOZORDER
| SWP_FRAMECHANGED
);
gClient->ResizeDisplayDevice(gClient->GetPipeline()->Width(), gClient->GetPipeline()->Height(), !gClient->GetPipeline()->IsFullScreen());
}
if( gPendingActivate )
@ -1290,7 +1286,7 @@ BOOL CALLBACK UruLoginDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
{
static ShaDigest namePassHash;
static LoginDialogParam* loginParam;
static showAuthFailed = false;
static bool showAuthFailed = false;
switch( uMsg )
{
@ -1970,11 +1966,11 @@ bool IsExpired()
void* desc = nil;
if (VerQueryValue(data, "\\StringFileInfo\\040904B0\\FileDescription", &desc, &descLen))
{
char* buildDateStart = strstr((const char*)desc, " - Built ");
const char* buildDateStart = strstr((const char*)desc, " - Built ");
if (buildDateStart)
{
buildDateStart += strlen(" - Built ");
char* buildDateEnd = strstr(buildDateStart, " at");
const char* buildDateEnd = strstr(buildDateStart, " at");
if (buildDateEnd)
{
int len = buildDateEnd-buildDateStart;