mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-20 04:09:16 +00:00
Build 918
This commit is contained in:
864
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/Cursor_Base.svg
vendored
Normal file
864
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/Cursor_Base.svg
vendored
Normal 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 |
508
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/Linking_Book.svg
vendored
Normal file
508
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/Linking_Book.svg
vendored
Normal 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 |
@ -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 |
13
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/Makefile
vendored
Normal file
13
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/Makefile
vendored
Normal 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
|
1595
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/Voice_Chat.svg
vendored
Normal file
1595
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/Voice_Chat.svg
vendored
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 48 KiB |
62
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/create_resource_dat.py
vendored
Normal file
62
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/create_resource_dat.py
vendored
Normal 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)
|
52
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/makeres.py
vendored
Normal file
52
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/makeres.py
vendored
Normal 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)
|
220
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/render_svg.py
vendored
Normal file
220
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/render_svg.py
vendored
Normal 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)
|
BIN
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/resource.dat
vendored
Normal file
BIN
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/resource.dat
vendored
Normal file
Binary file not shown.
180
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/scalergba.py
vendored
Normal file
180
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/external/scalergba.py
vendored
Normal 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]))
|
@ -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 )
|
||||
{
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -386,9 +386,9 @@ static void DownloadCallback (
|
||||
) {
|
||||
s_numConnectFailures = 0;
|
||||
|
||||
ref(result);
|
||||
ref(param);
|
||||
ref(filename);
|
||||
REF(result);
|
||||
REF(param);
|
||||
REF(filename);
|
||||
|
||||
ManifestFile *mf = (ManifestFile *)param;
|
||||
if (IS_NET_ERROR(result) && s_running && !s_patchError) {
|
||||
@ -732,7 +732,7 @@ static void ThinManifestCallback (
|
||||
){
|
||||
s_numConnectFailures = 0;
|
||||
|
||||
ref(group);
|
||||
REF(group);
|
||||
|
||||
plLauncherInfo * info = (plLauncherInfo *) param;
|
||||
char text[256];
|
||||
@ -831,7 +831,7 @@ static void FileSrvIpAddressCallback (
|
||||
void * param,
|
||||
const wchar addr[]
|
||||
) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
NetCliGateKeeperDisconnect();
|
||||
|
||||
@ -960,7 +960,7 @@ void UruPrepProc (void * param) {
|
||||
void PlayerStopProc (void * param) {
|
||||
s_running = false;
|
||||
plLauncherInfo *info = (plLauncherInfo *) param;
|
||||
ref(param);
|
||||
|
||||
//TerminateProcess(s_pi.hProcess, kExitCodeTerminated);
|
||||
info->stopCallback(kStatusOk, nil);
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#define plUnzip_h_inc
|
||||
|
||||
#include "hsTypes.h"
|
||||
#include "../src/contrib/minizip/unzip.h"
|
||||
#include "contrib/minizip/unzip.h"
|
||||
|
||||
class plUnzip
|
||||
{
|
||||
|
@ -87,7 +87,7 @@ static wchar s_newPatcherFile[MAX_PATH];
|
||||
|
||||
//============================================================================
|
||||
static void NetErrorHandler (ENetProtocol protocol, ENetError error) {
|
||||
ref(protocol);
|
||||
REF(protocol);
|
||||
LogMsg(kLogError, L"NetErr: %s", NetErrorToString(error));
|
||||
if (IS_NET_SUCCESS(s_patchResult))
|
||||
s_patchResult = error;
|
||||
@ -109,8 +109,8 @@ static void DownloadCallback (
|
||||
const wchar filename[],
|
||||
hsStream * writer
|
||||
) {
|
||||
ref(param);
|
||||
ref(filename);
|
||||
REF(param);
|
||||
REF(filename);
|
||||
|
||||
if(IS_NET_ERROR(result)) {
|
||||
switch (result) {
|
||||
@ -158,8 +158,8 @@ static void ManifestCallback (
|
||||
const NetCliFileManifestEntry manifest[],
|
||||
unsigned entryCount
|
||||
) {
|
||||
ref(param);
|
||||
ref(group);
|
||||
REF(param);
|
||||
REF(group);
|
||||
|
||||
if(IS_NET_ERROR(result)) {
|
||||
switch (result) {
|
||||
@ -208,7 +208,7 @@ static void FileSrvIpAddressCallback (
|
||||
void * param,
|
||||
const wchar addr[]
|
||||
) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
NetCliGateKeeperDisconnect();
|
||||
|
||||
|
@ -56,6 +56,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#endif
|
||||
#if HS_CAN_USE_FLOAT
|
||||
@ -85,7 +86,6 @@ typedef unsigned long long qword;
|
||||
|
||||
typedef size_t unsigned_ptr;
|
||||
|
||||
typedef unsigned short wchar_t;
|
||||
typedef wchar_t wchar;
|
||||
|
||||
#define kPosInfinity16 (32767)
|
||||
@ -310,13 +310,17 @@ typedef hsColor32 hsRGBAColor32;
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* ref
|
||||
* REF
|
||||
* References a variable to prevent compiler warnings
|
||||
*
|
||||
***/
|
||||
|
||||
#define ref(a) ((void *)&(a))
|
||||
#define REF(a) ((void *)&(a))
|
||||
|
||||
#if _MSC_VER < 1400
|
||||
// For compatibility only, deprecated - use REF instead
|
||||
#define ref(a) REF(a)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
|
@ -44,7 +44,13 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#if HS_BUILD_FOR_WIN32
|
||||
|
||||
#ifndef __AFX_H__ // MFC apps won't let us include windows from here. =(
|
||||
#define _WIN32_WINNT 0x0400
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER >= 1600
|
||||
#define _WIN32_WINNT 0x0501
|
||||
#else
|
||||
#define _WIN32_WINNT 0x0400
|
||||
#endif
|
||||
|
||||
#include <WinSock2.h>
|
||||
#include <Windows.h>
|
||||
#endif // __AFX_H__
|
||||
|
@ -79,8 +79,8 @@ AUTO_INIT_FUNC(hsExeErrorInit) {
|
||||
//============================================================================
|
||||
static void DoAssert (int line, const char file[], const char msg[]) {
|
||||
|
||||
ref(line);
|
||||
ref(file);
|
||||
REF(line);
|
||||
REF(file);
|
||||
|
||||
ErrorMinimizeAppWindow();
|
||||
|
||||
@ -155,8 +155,7 @@ void ErrorMinimizeAppWindow () {
|
||||
// If the application's topmost window is a fullscreen
|
||||
// popup window, minimize it before displaying an error
|
||||
HWND appWindow = GetActiveWindow();
|
||||
if ( ((GetWindowLong(appWindow, GWL_STYLE) & WS_POPUP) != 0) &&
|
||||
((GetWindowLong(appWindow, GWL_EXSTYLE) & WS_EX_TOPMOST) != 0) )
|
||||
if ( ((GetWindowLong(appWindow, GWL_STYLE) & WS_POPUP) != 0) )
|
||||
SetWindowPos(
|
||||
appWindow,
|
||||
HWND_NOTOPMOST,
|
||||
@ -252,8 +251,8 @@ void DebugMsgV (const char fmt[], va_list args) {
|
||||
|
||||
#else
|
||||
|
||||
ref(fmt);
|
||||
ref(args);
|
||||
REF(fmt);
|
||||
REF(args);
|
||||
|
||||
#endif
|
||||
}
|
||||
@ -269,7 +268,7 @@ void __cdecl DebugMsg (const char fmt[], ...) {
|
||||
|
||||
#else
|
||||
|
||||
ref(fmt);
|
||||
REF(fmt);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ static void __cdecl ReportMem (EMemFile file, bool showDialog, const char fmt[],
|
||||
//============================================================================
|
||||
#ifdef MEM_DEBUG
|
||||
static void __cdecl MemDumpCallback (void * mem, void * param) {
|
||||
ref(MemDumpCallback);
|
||||
REF(MemDumpCallback);
|
||||
|
||||
const _CrtMemBlockHeader * pHead = pHdr(mem);
|
||||
MemDumpParam * dumpParam = (MemDumpParam *) param;
|
||||
@ -337,7 +337,7 @@ static void __cdecl OnExitMemDumpCallback (void * mem, size_t) {
|
||||
//===========================================================================
|
||||
#ifdef MEM_DEBUG
|
||||
static void __cdecl CheckLeaksOnExit () {
|
||||
ref(CheckLeaksOnExit);
|
||||
REF(CheckLeaksOnExit);
|
||||
if (!ErrorGetOption(kErrOptDisableMemLeakChecking)) {
|
||||
MemDumpParam param;
|
||||
param.file = kMemLeaks;
|
||||
@ -357,17 +357,17 @@ static int __cdecl CrtAllocHook (
|
||||
const unsigned char * szFileName,
|
||||
int nLine
|
||||
) {
|
||||
ref(method);
|
||||
ref(pUserData);
|
||||
ref(nSize);
|
||||
ref(nBlockUse);
|
||||
ref(lRequest);
|
||||
ref(szFileName);
|
||||
ref(nLine);
|
||||
REF(method);
|
||||
REF(pUserData);
|
||||
REF(nSize);
|
||||
REF(nBlockUse);
|
||||
REF(lRequest);
|
||||
REF(szFileName);
|
||||
REF(nLine);
|
||||
|
||||
if (nBlockUse == _NORMAL_BLOCK) {
|
||||
int xx = 0;
|
||||
ref(xx);
|
||||
REF(xx);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@ -434,7 +434,7 @@ void MemValidateNow () {
|
||||
|
||||
//============================================================================
|
||||
void MemSetValidation (unsigned on) {
|
||||
ref(on);
|
||||
REF(on);
|
||||
|
||||
#ifdef MEM_DEBUG
|
||||
#endif // MEM_DEBUG
|
||||
@ -459,7 +459,7 @@ void MemPopDisableTracking () {
|
||||
|
||||
//============================================================================
|
||||
void MemSetColor (unsigned short color) {
|
||||
ref(color);
|
||||
REF(color);
|
||||
|
||||
#ifdef MEM_DEBUG
|
||||
s_memColor = color & 0xFFFF;
|
||||
@ -469,8 +469,8 @@ void MemSetColor (unsigned short color) {
|
||||
//===========================================================================
|
||||
void * MemAlloc (unsigned bytes, unsigned flags, const char file[], int line) {
|
||||
|
||||
ref(file);
|
||||
ref(line);
|
||||
REF(file);
|
||||
REF(line);
|
||||
|
||||
#ifdef MEM_DEBUG
|
||||
unsigned block;
|
||||
@ -520,7 +520,7 @@ void * MemAlloc (unsigned bytes, unsigned flags, const char file[], int line) {
|
||||
|
||||
//============================================================================
|
||||
void MemFree (void * ptr, unsigned flags) {
|
||||
ref(flags);
|
||||
REF(flags);
|
||||
|
||||
if (!ptr)
|
||||
return;
|
||||
@ -535,8 +535,8 @@ void MemFree (void * ptr, unsigned flags) {
|
||||
|
||||
//===========================================================================
|
||||
void * MemRealloc (void * ptr, unsigned bytes, unsigned flags, const char file[], int line) {
|
||||
ref(file);
|
||||
ref(line);
|
||||
REF(file);
|
||||
REF(line);
|
||||
|
||||
#ifdef HS_DEBUGGING
|
||||
unsigned oldBytes = ptr ? MemSize(ptr) : 0;
|
||||
|
@ -54,7 +54,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "../pfAudio/pfAudioCreatable.h"
|
||||
#include "../pfPython/pfPythonCreatable.h"
|
||||
#include "../pfGameGUIMgr/pfGameGUIMgrCreatable.h"
|
||||
#ifdef PLASMA_CCR_RELEASE
|
||||
#include "../pfCCR/plCCRCreatable.h"
|
||||
#endif // PLASMA_CCR_RELEASE
|
||||
#include "../pfJournalBook/pfJournalBookCreatable.h"
|
||||
#include "../pfGameMgr/pfGameMgrCreatables.h"
|
||||
#include "../pfSecurePreloader/pfSecurePreloaderCreatable.h"
|
||||
|
@ -57,7 +57,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
|
||||
#include "../plAvatar/plAvatarMgr.h"
|
||||
#include "../plAvatar/plArmatureMod.h"
|
||||
#include "../plAvatar/plAvCallbackAction.h"
|
||||
#include "../plAvatar/plPhysicalControllerCore.h"
|
||||
|
||||
hsBool plListener::fPrintDbgInfo = false;
|
||||
|
||||
|
@ -1,48 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#ifndef plCCRCreatable_inc
|
||||
#define plCCRCreatable_inc
|
||||
|
||||
#include "plCCRMgr.h"
|
||||
|
||||
|
||||
#endif // plCCRCreatable_inc
|
@ -1,47 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#include "plCCRMgrBase.h"
|
||||
#include "plCCRMgr.h"
|
||||
|
||||
// static
|
||||
plCCRMgrBase* plCCRMgrBase::fBaseInstance=nil;
|
||||
|
@ -1,41 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
@ -1,46 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#ifndef plCCRVault_h
|
||||
#define plCCRVault_h
|
||||
|
||||
|
||||
#endif // plCCRVault_h
|
@ -238,7 +238,7 @@ public:
|
||||
plCameraBrain1_Drive(plCameraModifier1* pMod);
|
||||
~plCameraBrain1_Drive();
|
||||
|
||||
static SetSensitivity(hsScalar f) { fTurnRate = f; }
|
||||
static void SetSensitivity(hsScalar f) { fTurnRate = f; }
|
||||
|
||||
CLASSNAME_REGISTER( plCameraBrain1_Drive );
|
||||
GETINTERFACE_ANY( plCameraBrain1_Drive, plCameraBrain1 );
|
||||
|
@ -63,7 +63,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "../pnSceneObject/plSimulationInterface.h"
|
||||
#include "../plAvatar/plAvatarMgr.h"
|
||||
#include "../plAvatar/plArmatureMod.h"
|
||||
#include "../plAvatar/plAvCallbackAction.h"
|
||||
#include "../plAvatar/plPhysicalControllerCore.h"
|
||||
|
||||
// new stuff
|
||||
|
||||
|
@ -1,76 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// CCR Console Commands and Groups //
|
||||
// These console commands are meant for use by customer care reps. //
|
||||
// Eventually the functionality defined here will be accessed through a GUI//
|
||||
// //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//
|
||||
// Only calls to the CCRMgr interface are allowed here
|
||||
// See me if you need to include any other files...
|
||||
//
|
||||
#include "pfConsoleCmd.h"
|
||||
#include "pfConsole.h"
|
||||
#include "../pfCCR/plCCRMgr.h"
|
||||
#include "../plNetClient/plNetClientMgr.h"
|
||||
|
||||
//// This is here so Microsoft VC won't decide to "optimize" this file out
|
||||
// YOU ALSO NEED TO CALL THIS FXN
|
||||
void pfConsoleCmdGroup::DummyCCR( void )
|
||||
{
|
||||
}
|
||||
|
||||
void PrintStringF(void pfun(const char *),const char * fmt, ...);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Please see pfConsoleCommands.cpp for detailed instructions on
|
||||
// how to add console commands.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
#define PF_SANITY_CHECK( cond, msg ) { if( !( cond ) ) { PrintString( msg ); return; } }
|
@ -752,7 +752,7 @@ public:
|
||||
|
||||
if(strncmp("SampleCmd",c->GetName(), 9) != 0)
|
||||
{
|
||||
fprintf(fFile, "<P><I>%s </I><BR>%s </P>\n",c->GetSignature(),
|
||||
fprintf(fFile, "<p><em>%s </em><br />%s </p>\n",c->GetSignature(),
|
||||
c->GetHelp());
|
||||
}
|
||||
}
|
||||
@ -760,10 +760,11 @@ public:
|
||||
{
|
||||
// if(g->GetFirstCommand() != nil)
|
||||
{
|
||||
fprintf(fFile, "<P><B><H%s>Command %sGroup %s </B></H2></P>\n",
|
||||
fprintf(fFile, "<p><strong><h%s>Command %sGroup %s </strong></h%s></p>\n",
|
||||
(depth > 0) ? "3" : "2",
|
||||
(depth > 0) ? "Sub" :"" ,
|
||||
g->GetName());
|
||||
g->GetName(),
|
||||
(depth > 0) ? "3" : "2");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -781,7 +782,7 @@ public:
|
||||
|
||||
if(strncmp("SampleCmd",c->GetName(), 9) != 0)
|
||||
{
|
||||
fprintf(fFile, "<I>%s.%s </I> - %s <BR>\n",fGrpName,c->GetSignature(),
|
||||
fprintf(fFile, "<em>%s.%s </em> - %s <br />\n",fGrpName,c->GetSignature(),
|
||||
c->GetHelp());
|
||||
}
|
||||
}
|
||||
@ -789,11 +790,14 @@ public:
|
||||
{
|
||||
// if(g->GetFirstCommand() != nil)
|
||||
{
|
||||
fprintf(fFile, "<BR>\n");
|
||||
fprintf(fFile, "<br />\n");
|
||||
if(depth <1)
|
||||
strcpy(fGrpName, g->GetName());
|
||||
else
|
||||
{
|
||||
pfConsoleCmdGroup *parentGrp;
|
||||
parentGrp = g->GetParent();
|
||||
strcpy(fGrpName, parentGrp->GetName());
|
||||
strcat(fGrpName,".");
|
||||
strcat(fGrpName,g->GetName());
|
||||
}
|
||||
@ -822,7 +826,7 @@ PF_CONSOLE_CMD( Console, CreateDocumentation, "string fileName",
|
||||
}
|
||||
|
||||
|
||||
fprintf(f, "<CENTER> <H2> Console Commands for Plasma 2.0 Client </H2> <I>Built %s on %s.</I></CENTER><BR>",
|
||||
fprintf(f, "<h2 style=\"text-align: center;\"> Console Commands for Plasma 2.0 Client </h2> <em style=\"display: block; text-align: center;\">Built %s on %s.</em><br />",
|
||||
pnBuildDates::fBuildTime, pnBuildDates::fBuildDate );
|
||||
|
||||
DocGenIterator iter(f);
|
||||
@ -852,7 +856,7 @@ PF_CONSOLE_CMD( Console, CreateBriefDocumentation, "string fileName",
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf(f, "<CENTER> <H3> Console Commands for Plasma 2.0 Client </H3> <I>Built %s on %s.</I></CENTER><BR>",
|
||||
fprintf(f, "<h2 style=\"text-align: center;\"> Console Commands for Plasma 2.0 Client </h2> <em style=\"display: block; text-align: center;\">Built %s on %s.</em><br />",
|
||||
pnBuildDates::fBuildTime, pnBuildDates::fBuildDate );
|
||||
BriefDocGenIterator iter(f);
|
||||
group = pfConsoleCmdGroup::GetBaseGroup();
|
||||
@ -6997,38 +7001,6 @@ PF_CONSOLE_CMD( KI, // Group name
|
||||
|
||||
PF_CONSOLE_GROUP( Python ) // Defines a main command group
|
||||
|
||||
PF_CONSOLE_CMD( Python, // Group name
|
||||
RunFile, // Function name
|
||||
"string filename", // Params
|
||||
"Run the specified Python file program" ) // Help string
|
||||
{
|
||||
// now evaluate this mess they made
|
||||
PyObject* mymod = PythonInterface::FindModule("__main__");
|
||||
// make sure the filename doesn't have the .py extension (import doesn't need it)
|
||||
char importname[200];
|
||||
int i;
|
||||
for (i=0; i<199; i++ )
|
||||
{
|
||||
char ch = ((const char*)params[0])[i];
|
||||
// if we are at the end of the string or at a dot, truncate here
|
||||
if ( ch == '.' || ch == 0 )
|
||||
break;
|
||||
else
|
||||
importname[i] = ((const char*)params[0])[i];
|
||||
}
|
||||
importname[i] = 0;
|
||||
|
||||
// create the line to execute the file
|
||||
char runline[256];
|
||||
sprintf(runline,"import %s", importname);
|
||||
PythonInterface::RunString(runline,mymod);
|
||||
std::string output;
|
||||
// get the messages
|
||||
PythonInterface::getOutputAndReset(&output);
|
||||
PrintString(output.c_str());
|
||||
}
|
||||
|
||||
|
||||
#include "../pfPython/cyMisc.h"
|
||||
|
||||
PF_CONSOLE_CMD( Python, // Group name
|
||||
@ -7070,16 +7042,18 @@ PF_CONSOLE_CMD( Python,
|
||||
"string functions, ...", // Params
|
||||
"Run a cheat command" )
|
||||
{
|
||||
const char* extraParms = "";
|
||||
std::string extraParms;
|
||||
if (numParams > 1)
|
||||
extraParms = params[1];
|
||||
// now evaluate this mess they made
|
||||
PyObject* mymod = PythonInterface::FindModule("__main__");
|
||||
{
|
||||
extraParms = "(";
|
||||
extraParms.append(params[1]);
|
||||
extraParms.append(",)");
|
||||
}
|
||||
else
|
||||
extraParms = "()";
|
||||
|
||||
PythonInterface::RunFunctionSafe("xCheat", params[0], extraParms.c_str());
|
||||
|
||||
// create the line to execute the file
|
||||
char runline[256];
|
||||
sprintf(runline,"import xCheat;xCheat.%s('%s')", (const char*)params[0],extraParms);
|
||||
PythonInterface::RunString(runline,mymod);
|
||||
std::string output;
|
||||
// get the messages
|
||||
PythonInterface::getOutputAndReset(&output);
|
||||
|
@ -68,10 +68,10 @@ public:
|
||||
virtual ~pfGUIMultiLineEditProc() {}
|
||||
|
||||
// we've hit the end of the control list (by moving the cursor)
|
||||
virtual OnEndOfControlList(Int32 cursorPos) {}
|
||||
virtual void OnEndOfControlList(Int32 cursorPos) {}
|
||||
|
||||
// we've hit the beginning of the control ist (by moving the cursor)
|
||||
virtual OnBeginningOfControlList(Int32 cursorPos) {}
|
||||
virtual void OnBeginningOfControlList(Int32 cursorPos) {}
|
||||
};
|
||||
|
||||
class pfGUIMultiLineEditCtrl : public pfGUIControlMod
|
||||
|
@ -150,7 +150,7 @@ void IBlueSpiral::OnOwnerChange (const Srv2Cli_Game_OwnerChange & msg) {
|
||||
|
||||
//============================================================================
|
||||
void IBlueSpiral::RecvClothOrder (const Srv2Cli_BlueSpiral_ClothOrder & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -159,7 +159,7 @@ void IBlueSpiral::RecvClothOrder (const Srv2Cli_BlueSpiral_ClothOrder & msg, voi
|
||||
|
||||
//============================================================================
|
||||
void IBlueSpiral::RecvSuccessfulHit (const Srv2Cli_BlueSpiral_SuccessfulHit & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -168,7 +168,7 @@ void IBlueSpiral::RecvSuccessfulHit (const Srv2Cli_BlueSpiral_SuccessfulHit & ms
|
||||
|
||||
//============================================================================
|
||||
void IBlueSpiral::RecvGameWon (const Srv2Cli_BlueSpiral_GameWon & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -177,7 +177,7 @@ void IBlueSpiral::RecvGameWon (const Srv2Cli_BlueSpiral_GameWon & msg, void * pa
|
||||
|
||||
//============================================================================
|
||||
void IBlueSpiral::RecvGameOver (const Srv2Cli_BlueSpiral_GameOver & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -186,7 +186,7 @@ void IBlueSpiral::RecvGameOver (const Srv2Cli_BlueSpiral_GameOver & msg, void *
|
||||
|
||||
//============================================================================
|
||||
void IBlueSpiral::RecvGameStarted (const Srv2Cli_BlueSpiral_GameStarted & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
|
@ -151,7 +151,7 @@ void IClimbingWall::OnOwnerChange (const Srv2Cli_Game_OwnerChange & msg) {
|
||||
|
||||
//============================================================================
|
||||
void IClimbingWall::RecvNumBlockersChanged (const Srv2Cli_ClimbingWall_NumBlockersChanged & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -160,7 +160,7 @@ void IClimbingWall::RecvNumBlockersChanged (const Srv2Cli_ClimbingWall_NumBlocke
|
||||
|
||||
//============================================================================
|
||||
void IClimbingWall::RecvReady (const Srv2Cli_ClimbingWall_Ready & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -169,7 +169,7 @@ void IClimbingWall::RecvReady (const Srv2Cli_ClimbingWall_Ready & msg, void * pa
|
||||
|
||||
//============================================================================
|
||||
void IClimbingWall::RecvBlockersChanged (const Srv2Cli_ClimbingWall_BlockersChanged & msg, void * param) {
|
||||
ref (param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -178,7 +178,7 @@ void IClimbingWall::RecvBlockersChanged (const Srv2Cli_ClimbingWall_BlockersChan
|
||||
|
||||
//============================================================================
|
||||
void IClimbingWall::RecvPlayerEntered (const Srv2Cli_ClimbingWall_PlayerEntered & msg, void * param) {
|
||||
ref (param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -187,7 +187,7 @@ void IClimbingWall::RecvPlayerEntered (const Srv2Cli_ClimbingWall_PlayerEntered
|
||||
|
||||
//============================================================================
|
||||
void IClimbingWall::RecvSuitMachineLocked (const Srv2Cli_ClimbingWall_SuitMachineLocked & msg, void * param) {
|
||||
ref (param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -196,7 +196,7 @@ void IClimbingWall::RecvSuitMachineLocked (const Srv2Cli_ClimbingWall_SuitMachin
|
||||
|
||||
//============================================================================
|
||||
void IClimbingWall::RecvGameOver (const Srv2Cli_ClimbingWall_GameOver & msg, void * param) {
|
||||
ref (param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
|
@ -151,7 +151,7 @@ void IHeek::OnOwnerChange (const Srv2Cli_Game_OwnerChange & msg) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvPlayGame (const Srv2Cli_Heek_PlayGame & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -159,7 +159,7 @@ void IHeek::RecvPlayGame (const Srv2Cli_Heek_PlayGame & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvGoodbye (const Srv2Cli_Heek_Goodbye & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -167,7 +167,7 @@ void IHeek::RecvGoodbye (const Srv2Cli_Heek_Goodbye & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvWelcome (const Srv2Cli_Heek_Welcome & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -175,7 +175,7 @@ void IHeek::RecvWelcome (const Srv2Cli_Heek_Welcome & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvDrop (const Srv2Cli_Heek_Drop & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -183,7 +183,7 @@ void IHeek::RecvDrop (const Srv2Cli_Heek_Drop & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvSetup (const Srv2Cli_Heek_Setup & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -191,7 +191,7 @@ void IHeek::RecvSetup (const Srv2Cli_Heek_Setup & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvLightState (const Srv2Cli_Heek_LightState & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -199,7 +199,7 @@ void IHeek::RecvLightState (const Srv2Cli_Heek_LightState & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvInterfaceState (const Srv2Cli_Heek_InterfaceState & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -207,7 +207,7 @@ void IHeek::RecvInterfaceState (const Srv2Cli_Heek_InterfaceState & msg, void *
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvCountdownState (const Srv2Cli_Heek_CountdownState & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -215,7 +215,7 @@ void IHeek::RecvCountdownState (const Srv2Cli_Heek_CountdownState & msg, void *
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvWinLose (const Srv2Cli_Heek_WinLose & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -223,7 +223,7 @@ void IHeek::RecvWinLose (const Srv2Cli_Heek_WinLose & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvGameWin (const Srv2Cli_Heek_GameWin & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
@ -231,7 +231,7 @@ void IHeek::RecvGameWin (const Srv2Cli_Heek_GameWin & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IHeek::RecvPointUpdate (const Srv2Cli_Heek_PointUpdate & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
gameCliMsg->Send(gameCli->GetReceiver());
|
||||
|
@ -175,7 +175,7 @@ void IMarker::RecvTeamAssigned (const Srv2Cli_Marker_TeamAssigned & msg, void *
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvGameType (const Srv2Cli_Marker_GameType & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -184,7 +184,7 @@ void IMarker::RecvGameType (const Srv2Cli_Marker_GameType & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvGameStarted (const Srv2Cli_Marker_GameStarted & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -193,7 +193,7 @@ void IMarker::RecvGameStarted (const Srv2Cli_Marker_GameStarted & msg, void * pa
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvGamePaused (const Srv2Cli_Marker_GamePaused & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -202,7 +202,7 @@ void IMarker::RecvGamePaused (const Srv2Cli_Marker_GamePaused & msg, void * para
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvGameReset (const Srv2Cli_Marker_GameReset & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -211,7 +211,7 @@ void IMarker::RecvGameReset (const Srv2Cli_Marker_GameReset & msg, void * param)
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvGameOver (const Srv2Cli_Marker_GameOver & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -220,7 +220,7 @@ void IMarker::RecvGameOver (const Srv2Cli_Marker_GameOver & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvGameNameChanged (const Srv2Cli_Marker_GameNameChanged & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -229,7 +229,7 @@ void IMarker::RecvGameNameChanged (const Srv2Cli_Marker_GameNameChanged & msg, v
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvTimeLimitChanged (const Srv2Cli_Marker_TimeLimitChanged & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -238,7 +238,7 @@ void IMarker::RecvTimeLimitChanged (const Srv2Cli_Marker_TimeLimitChanged & msg,
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvGameDeleted (const Srv2Cli_Marker_GameDeleted & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -250,7 +250,7 @@ void IMarker::RecvGameDeleted (const Srv2Cli_Marker_GameDeleted & msg, void * pa
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvMarkerAdded (const Srv2Cli_Marker_MarkerAdded & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -259,7 +259,7 @@ void IMarker::RecvMarkerAdded (const Srv2Cli_Marker_MarkerAdded & msg, void * pa
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvMarkerDeleted (const Srv2Cli_Marker_MarkerDeleted & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -268,7 +268,7 @@ void IMarker::RecvMarkerDeleted (const Srv2Cli_Marker_MarkerDeleted & msg, void
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvMarkerNameChanged (const Srv2Cli_Marker_MarkerNameChanged & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -277,7 +277,7 @@ void IMarker::RecvMarkerNameChanged (const Srv2Cli_Marker_MarkerNameChanged & ms
|
||||
|
||||
//============================================================================
|
||||
void IMarker::RecvMarkerCaptured (const Srv2Cli_Marker_MarkerCaptured & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
|
@ -153,7 +153,7 @@ void ITicTacToe::OnOwnerChange (const Srv2Cli_Game_OwnerChange & msg) {
|
||||
|
||||
//============================================================================
|
||||
void ITicTacToe::RecvGameStarted (const Srv2Cli_TTT_GameStarted & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
// player that goes first is shown as X's.
|
||||
if (msg.yourTurn) {
|
||||
@ -172,7 +172,7 @@ void ITicTacToe::RecvGameStarted (const Srv2Cli_TTT_GameStarted & msg, void * pa
|
||||
|
||||
//============================================================================
|
||||
void ITicTacToe::RecvGameOver (const Srv2Cli_TTT_GameOver & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -183,7 +183,7 @@ void ITicTacToe::RecvGameOver (const Srv2Cli_TTT_GameOver & msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void ITicTacToe::RecvMoveMade (const Srv2Cli_TTT_MoveMade & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
// Update the board with the appropriate piece
|
||||
if (msg.playerId == NetCommGetPlayer()->playerInt)
|
||||
|
@ -150,7 +150,7 @@ void IVarSync::OnOwnerChange (const Srv2Cli_Game_OwnerChange & msg) {
|
||||
|
||||
//============================================================================
|
||||
void IVarSync::RecvStringVarChanged (const Srv2Cli_VarSync_StringVarChanged & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -159,7 +159,7 @@ void IVarSync::RecvStringVarChanged (const Srv2Cli_VarSync_StringVarChanged & ms
|
||||
|
||||
//============================================================================
|
||||
void IVarSync::RecvNumericVarChanged (const Srv2Cli_VarSync_NumericVarChanged & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -168,7 +168,7 @@ void IVarSync::RecvNumericVarChanged (const Srv2Cli_VarSync_NumericVarChanged &
|
||||
|
||||
//============================================================================
|
||||
void IVarSync::RecvAllVarsSent (const Srv2Cli_VarSync_AllVarsSent & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -177,7 +177,7 @@ void IVarSync::RecvAllVarsSent (const Srv2Cli_VarSync_AllVarsSent & msg, void *
|
||||
|
||||
//============================================================================
|
||||
void IVarSync::RecvStringVarCreated (const Srv2Cli_VarSync_StringVarCreated & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
@ -186,7 +186,7 @@ void IVarSync::RecvStringVarCreated (const Srv2Cli_VarSync_StringVarCreated & ms
|
||||
|
||||
//============================================================================
|
||||
void IVarSync::RecvNumericVarCreated (const Srv2Cli_VarSync_NumericVarCreated & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameCliMsg * gameCliMsg = NEWZERO(pfGameCliMsg);
|
||||
gameCliMsg->Set(gameCli, msg);
|
||||
|
@ -64,7 +64,7 @@ struct Factory : THashKeyVal<Uuid> {
|
||||
const GameTypeReg & reg;
|
||||
|
||||
Factory (const GameTypeReg & reg);
|
||||
operator= (const Factory &); // not impl
|
||||
Factory& operator= (const Factory &); // not impl
|
||||
};
|
||||
|
||||
//============================================================================
|
||||
@ -205,7 +205,7 @@ void IGameMgr::RecvGameInstance (const Srv2Cli_GameMgr_GameInstance & msg, void
|
||||
|
||||
//============================================================================
|
||||
void IGameMgr::RecvInviteReceived (const Srv2Cli_GameMgr_InviteReceived & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameMgrMsg * gameMgrMsg = NEWZERO(pfGameMgrMsg);
|
||||
gameMgrMsg->Set(msg);
|
||||
@ -216,7 +216,7 @@ void IGameMgr::RecvInviteReceived (const Srv2Cli_GameMgr_InviteReceived & msg, v
|
||||
|
||||
//============================================================================
|
||||
void IGameMgr::RecvInviteRevoked (const Srv2Cli_GameMgr_InviteRevoked & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
pfGameMgrMsg * gameMgrMsg = NEWZERO(pfGameMgrMsg);
|
||||
gameMgrMsg->Set(msg);
|
||||
@ -587,7 +587,7 @@ void IGameCli::Recv (GameMsgHeader * msg, void * param) {
|
||||
|
||||
//============================================================================
|
||||
void IGameCli::RecvPlayerJoined (const Srv2Cli_Game_PlayerJoined & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
++playerCount;
|
||||
gameCli->OnPlayerJoined(msg);
|
||||
@ -595,7 +595,7 @@ void IGameCli::RecvPlayerJoined (const Srv2Cli_Game_PlayerJoined & msg, void * p
|
||||
|
||||
//============================================================================
|
||||
void IGameCli::RecvPlayerLeft (const Srv2Cli_Game_PlayerLeft & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
--playerCount;
|
||||
gameCli->OnPlayerLeft(msg);
|
||||
@ -603,14 +603,14 @@ void IGameCli::RecvPlayerLeft (const Srv2Cli_Game_PlayerLeft & msg, void * param
|
||||
|
||||
//============================================================================
|
||||
void IGameCli::RecvInviteFailed (const Srv2Cli_Game_InviteFailed & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
gameCli->OnInviteFailed(msg);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
void IGameCli::RecvOwnerChange (const Srv2Cli_Game_OwnerChange & msg, void * param) {
|
||||
ref(param);
|
||||
REF(param);
|
||||
|
||||
gameCli->OnOwnerChange(msg);
|
||||
}
|
||||
|
@ -78,7 +78,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "../plSurface/plLayer.h"
|
||||
#include "../plSurface/hsGMaterial.h"
|
||||
#include "../plAgeLoader/plAgeLoader.h"
|
||||
#ifdef USE_BINK_SDK
|
||||
#include "../pfSurface/plLayerBink.h"
|
||||
#endif
|
||||
|
||||
// So we can do image searches in our local age
|
||||
#include "../plNetClient/plNetClientMgr.h"
|
||||
@ -438,8 +440,8 @@ public:
|
||||
pfBookMultiLineEditProc(pfBookData *owner) { bookData = owner; }
|
||||
virtual ~pfBookMultiLineEditProc() {}
|
||||
|
||||
virtual OnEndOfControlList(Int32 cursorPos) { bookData->HitEndOfControlList(cursorPos); }
|
||||
virtual OnBeginningOfControlList(Int32 cursorPos) { bookData->HitBeginningOfControlList(cursorPos); }
|
||||
virtual void OnEndOfControlList(Int32 cursorPos) { bookData->HitEndOfControlList(cursorPos); }
|
||||
virtual void OnBeginningOfControlList(Int32 cursorPos) { bookData->HitBeginningOfControlList(cursorPos); }
|
||||
};
|
||||
|
||||
//// Book data class /////////////////////////////////////////////////////////
|
||||
@ -1000,8 +1002,10 @@ void pfBookData::IFinishTriggeredFlip(hsBool wasBackwards)
|
||||
if (fCurrBook)
|
||||
{
|
||||
fCurrBook->IRenderPage(fCurrBook->fCurrentPage, pfJournalDlgProc::kTagLeftDTMap);
|
||||
#ifdef USE_BINK_SDK
|
||||
// move the videos over
|
||||
fCurrBook->IMoveMovies(PageMaterial(kTurnFrontPage),PageMaterial(kRightPage));
|
||||
#endif // USE_BINK_SDK
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1022,8 +1026,10 @@ void pfBookData::IFinishTriggeredFlip(hsBool wasBackwards)
|
||||
if (fCurrBook)
|
||||
{
|
||||
fCurrBook->IRenderPage(fCurrBook->fCurrentPage + 1, pfJournalDlgProc::kTagRightDTMap);
|
||||
#ifdef USE_BINK_SDK
|
||||
// move the videos over
|
||||
fCurrBook->IMoveMovies(PageMaterial(kTurnBackPage),PageMaterial(kLeftPage));
|
||||
#endif // USE_BINK_SDK
|
||||
}
|
||||
}
|
||||
|
||||
@ -1324,6 +1330,7 @@ void pfJournalBook::Show( hsBool startOpened /*= false */)
|
||||
if (decal != nil)
|
||||
layers.Append(IMakeDecalLayer(fCoverDecals[i],decal,mip));
|
||||
}
|
||||
#ifdef USE_BINK_SDK
|
||||
else
|
||||
{
|
||||
// it's a cover movie, not a decal, so we make a layer, thinking it's at 0,0 and a left map (which gives us the results we want)
|
||||
@ -1335,6 +1342,7 @@ void pfJournalBook::Show( hsBool startOpened /*= false */)
|
||||
layers.Append(plLayerInterface::ConvertNoRef(movieLayer));
|
||||
fVisibleLinks.Reset(); // remove any links that the make movie layer might have added, since a cover movie can't link
|
||||
}
|
||||
#endif
|
||||
}
|
||||
ISetDecalLayers(cover,layers);
|
||||
}
|
||||
@ -1394,6 +1402,7 @@ void pfJournalBook::Hide( void )
|
||||
// purge the dynaTextMaps, we're done with them for now
|
||||
IPurgeDynaTextMaps();
|
||||
// nuke the movies so they don't stay in memory (they're big!)
|
||||
#ifdef USE_BINK_SDK
|
||||
int i;
|
||||
for( i = 0; i < fLoadedMovies.GetCount(); i++ )
|
||||
{
|
||||
@ -1402,6 +1411,7 @@ void pfJournalBook::Hide( void )
|
||||
delete fLoadedMovies[ i ];
|
||||
}
|
||||
fLoadedMovies.Reset();
|
||||
#endif // USE_BINK_SDK
|
||||
}
|
||||
}
|
||||
|
||||
@ -1548,8 +1558,10 @@ void pfJournalBook::NextPage( void )
|
||||
if( turnFront->GetDeviceRef() != nil )
|
||||
turnFront->GetDeviceRef()->SetDirty( true );
|
||||
}
|
||||
#ifdef USE_BINK_SDK
|
||||
// copy the videos over
|
||||
IMoveMovies( fBookGUIs[fCurBookGUI]->PageMaterial(pfBookData::kRightPage), fBookGUIs[fCurBookGUI]->PageMaterial(pfBookData::kTurnFrontPage) );
|
||||
#endif // USE_BINK_SDK
|
||||
IRenderPage( fCurrentPage, pfJournalDlgProc::kTagTurnBackDTMap );
|
||||
|
||||
// This will fire a callback when it's done that'll let us continue the setup
|
||||
@ -1616,8 +1628,10 @@ void pfJournalBook::PreviousPage( void )
|
||||
if( turnBack->GetDeviceRef() != nil )
|
||||
turnBack->GetDeviceRef()->SetDirty( true );
|
||||
}
|
||||
#ifdef USE_BINK_SDK
|
||||
// copy the videos over
|
||||
IMoveMovies( fBookGUIs[fCurBookGUI]->PageMaterial(pfBookData::kLeftPage), fBookGUIs[fCurBookGUI]->PageMaterial(pfBookData::kTurnBackPage) );
|
||||
#endif // USE_BINK_SDK
|
||||
IRenderPage( fCurrentPage + 1, pfJournalDlgProc::kTagTurnFrontDTMap );
|
||||
|
||||
// This will fire a callback when it's done that'll let us continue the setup
|
||||
@ -2475,6 +2489,7 @@ void pfJournalBook::IFreeSource( void )
|
||||
delete fCoverDecals[ i ];
|
||||
fCoverDecals.Reset();
|
||||
|
||||
#ifdef USE_BINK_SDK
|
||||
for( i = 0; i < fLoadedMovies.GetCount(); i++ )
|
||||
{
|
||||
plLayerBink *movie = fLoadedMovies[ i ]->movieLayer;
|
||||
@ -2482,6 +2497,7 @@ void pfJournalBook::IFreeSource( void )
|
||||
delete fLoadedMovies[ i ];
|
||||
}
|
||||
fLoadedMovies.Reset();
|
||||
#endif // USE_BINK_SDK
|
||||
}
|
||||
|
||||
//// IGetMipmapKey ///////////////////////////////////////////////////////////
|
||||
@ -2584,6 +2600,7 @@ void pfJournalBook::IRenderPage( UInt32 page, UInt32 whichDTMap, hsBool suppress
|
||||
else if (whichDTMap == pfJournalDlgProc::kTagTurnBackDTMap)
|
||||
material = fBookGUIs[fCurBookGUI]->PageMaterial(pfBookData::kTurnBackPage);
|
||||
|
||||
#ifdef USE_BINK_SDK
|
||||
if (material)
|
||||
{
|
||||
// clear any exiting layers (movies) from the material
|
||||
@ -2599,6 +2616,7 @@ void pfJournalBook::IRenderPage( UInt32 page, UInt32 whichDTMap, hsBool suppress
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // USE_BINK_SDK
|
||||
|
||||
hsAssert(page < fPageStarts.GetCount() || page > fLastPage, "UnInitialized page start!");
|
||||
if( page <= fLastPage
|
||||
@ -2786,6 +2804,7 @@ void pfJournalBook::IRenderPage( UInt32 page, UInt32 whichDTMap, hsBool suppress
|
||||
break;
|
||||
|
||||
case pfEsHTMLChunk::kMovie:
|
||||
#ifdef USE_BINK_SDK
|
||||
movieAlreadyLoaded = (IMovieAlreadyLoaded(chunk) != nil); // have we already cached it?
|
||||
plLayerBink *movieLayer = IMakeMovieLayer(chunk, x, y, (plMipmap*)dtMap, whichDTMap, suppressRendering);
|
||||
if (movieLayer)
|
||||
@ -2826,6 +2845,7 @@ void pfJournalBook::IRenderPage( UInt32 page, UInt32 whichDTMap, hsBool suppress
|
||||
if (material && !suppressRendering)
|
||||
material->AddLayerViaNotify(movieLayer);
|
||||
}
|
||||
#endif // USE_BINK_SDK
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -2850,6 +2870,7 @@ void pfJournalBook::IRenderPage( UInt32 page, UInt32 whichDTMap, hsBool suppress
|
||||
|
||||
//// IMoveMovies /////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef USE_BINK_SDK
|
||||
void pfJournalBook::IMoveMovies( hsGMaterial *source, hsGMaterial *dest )
|
||||
{
|
||||
hsTArray<plLayerBink*> moviesOnPage;
|
||||
@ -2886,6 +2907,7 @@ void pfJournalBook::IMoveMovies( hsGMaterial *source, hsGMaterial *dest )
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // USE_BINK_SDK
|
||||
|
||||
//// IDrawMipmap /////////////////////////////////////////////////////////////
|
||||
|
||||
@ -2983,6 +3005,7 @@ void pfJournalBook::IDrawMipmap( pfEsHTMLChunk *chunk, UInt16 x, UInt16 y, plMip
|
||||
delete copy;
|
||||
}
|
||||
|
||||
#ifdef USE_BINK_SDK
|
||||
pfJournalBook::loadedMovie *pfJournalBook::IMovieAlreadyLoaded(pfEsHTMLChunk *chunk)
|
||||
{
|
||||
int i;
|
||||
@ -2993,15 +3016,19 @@ pfJournalBook::loadedMovie *pfJournalBook::IMovieAlreadyLoaded(pfEsHTMLChunk *ch
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
#endif // USE_BINK_SDK
|
||||
|
||||
plKey pfJournalBook::GetMovie(UInt8 index)
|
||||
{
|
||||
#ifdef USE_BINK_SDK
|
||||
loadedMovie *movie = IGetMovieByIndex(index);
|
||||
if (movie)
|
||||
return movie->movieLayer->GetKey();
|
||||
#endif // USE_BINK_SDK
|
||||
return plKey(nil);
|
||||
}
|
||||
|
||||
#ifdef USE_BINK_SDK
|
||||
pfJournalBook::loadedMovie *pfJournalBook::IGetMovieByIndex(UInt8 index)
|
||||
{
|
||||
int i;
|
||||
@ -3012,7 +3039,9 @@ pfJournalBook::loadedMovie *pfJournalBook::IGetMovieByIndex(UInt8 index)
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
#endif // USE_BINK_SDK
|
||||
|
||||
#ifdef USE_BINK_SDK
|
||||
plLayerBink *pfJournalBook::IMakeMovieLayer(pfEsHTMLChunk *chunk, UInt16 x, UInt16 y, plMipmap *baseMipmap, UInt32 whichDTMap, hsBool dontRender)
|
||||
{
|
||||
// see if it's already loaded
|
||||
@ -3175,6 +3204,7 @@ plLayerBink *pfJournalBook::IMakeMovieLayer(pfEsHTMLChunk *chunk, UInt16 x, UInt
|
||||
|
||||
return movieLayer;
|
||||
}
|
||||
#endif // USE_BINK_SDK
|
||||
|
||||
plLayerInterface *pfJournalBook::IMakeBaseLayer(plMipmap *image)
|
||||
{
|
||||
|
@ -528,8 +528,10 @@ class pfJournalBook : public hsKeyedObject
|
||||
// Renders one (1) page into the given DTMap
|
||||
void IRenderPage( UInt32 page, UInt32 whichDTMap, hsBool suppressRendering = false );
|
||||
|
||||
#ifdef USE_BINK_SDK
|
||||
// moves the movie layers from one material onto another
|
||||
void IMoveMovies( hsGMaterial *source, hsGMaterial *dest);
|
||||
#endif
|
||||
|
||||
// Starting at the given chunk, works backwards to determine the full set of current
|
||||
// font properties at that point, or assigns defaults if none were specified
|
||||
@ -570,9 +572,11 @@ class pfJournalBook : public hsKeyedObject
|
||||
void IDrawMipmap( pfEsHTMLChunk *chunk, UInt16 x, UInt16 y, plMipmap *mip, plDynamicTextMap *dtMap, UInt32 whichDTMap, hsBool dontRender );
|
||||
|
||||
// Movie functions
|
||||
#ifdef USE_BINK_SDK
|
||||
loadedMovie *IMovieAlreadyLoaded(pfEsHTMLChunk *chunk);
|
||||
loadedMovie *IGetMovieByIndex(UInt8 index);
|
||||
plLayerBink *IMakeMovieLayer(pfEsHTMLChunk *chunk, UInt16 x, UInt16 y, plMipmap *baseMipmap, UInt32 whichDTMap, hsBool dontRender);
|
||||
#endif
|
||||
|
||||
// Cover functions
|
||||
plLayerInterface *IMakeBaseLayer(plMipmap *image);
|
||||
|
@ -1718,6 +1718,20 @@ void PythonInterface::WriteToStdErr(const char* text)
|
||||
}
|
||||
}
|
||||
|
||||
PyObject* PythonInterface::ImportModule(const char* module)
|
||||
{
|
||||
PyObject* result = nil;
|
||||
PyObject* name = PyString_FromString(module);
|
||||
|
||||
if (name != nil)
|
||||
{
|
||||
result = PyImport_Import(name);
|
||||
Py_DECREF(name);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function : FindModule
|
||||
@ -2061,6 +2075,78 @@ hsBool PythonInterface::RunPYC(PyObject* code, PyObject* module)
|
||||
return true;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function : RunFunction
|
||||
// PARAMETERS : module - module name to run 'name' in
|
||||
// : name - name of function
|
||||
// : args - tuple with arguments
|
||||
//
|
||||
//
|
||||
PyObject* PythonInterface::RunFunction(PyObject* module, const char* name, PyObject* args)
|
||||
{
|
||||
if (module == NULL)
|
||||
return NULL;
|
||||
|
||||
PyObject* function = PyObject_GetAttrString(module, const_cast<char*>(name));
|
||||
|
||||
PyObject* result = NULL;
|
||||
if (function != nil)
|
||||
{
|
||||
result = PyObject_Call(function, args, NULL);
|
||||
Py_DECREF(function);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
PyObject* PythonInterface::ParseArgs(const char* args)
|
||||
{
|
||||
PyObject* result = NULL;
|
||||
PyObject* scope = PyDict_New();
|
||||
if (scope)
|
||||
{
|
||||
//- Py_eval_input makes this function accept only single expresion (not statement)
|
||||
//- When using empty scope, functions and classes like 'file' or '__import__' are not visible
|
||||
result = PyRun_String(args, Py_eval_input, scope, NULL);
|
||||
Py_DECREF(scope);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool PythonInterface::RunFunctionSafe(const char* module, const char* function, const char* args)
|
||||
{
|
||||
PyObject* moduleObj = ImportModule(module);
|
||||
bool result = false;
|
||||
if (moduleObj)
|
||||
{
|
||||
PyObject* argsObj = ParseArgs(args);
|
||||
if (argsObj)
|
||||
{
|
||||
PyObject* callResult = RunFunction(moduleObj, function, argsObj);
|
||||
if (callResult)
|
||||
{
|
||||
result = true;
|
||||
Py_DECREF(callResult);
|
||||
}
|
||||
|
||||
Py_DECREF(argsObj);
|
||||
}
|
||||
Py_DECREF(moduleObj);
|
||||
}
|
||||
|
||||
if (!result)
|
||||
{
|
||||
PyErr_Print();
|
||||
|
||||
if (Py_FlushLine())
|
||||
PyErr_Clear();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function : GetpyKeyFromPython
|
||||
@ -2073,4 +2159,4 @@ pyKey* PythonInterface::GetpyKeyFromPython(PyObject* pkey)
|
||||
if (!pyKey::Check(pkey))
|
||||
return nil;
|
||||
return pyKey::ConvertFrom(pkey);
|
||||
}
|
||||
}
|
||||
|
@ -138,6 +138,8 @@ public:
|
||||
// Writes 'text' to stderr specified in the python interface
|
||||
static void WriteToStdErr(const char* text);
|
||||
|
||||
static PyObject* ImportModule(const char* module);
|
||||
|
||||
// Find module. If it doesn't exist then don't create, return nil.
|
||||
static PyObject* FindModule(char* module);
|
||||
|
||||
@ -219,6 +221,12 @@ public:
|
||||
//
|
||||
static hsBool RunPYC(PyObject* code, PyObject* module);
|
||||
|
||||
static PyObject* RunFunction(PyObject* module, const char* name, PyObject* args);
|
||||
|
||||
static PyObject* ParseArgs(const char* args);
|
||||
|
||||
static bool RunFunctionSafe(const char* module, const char* function, const char* args);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function : GetpyKeyFromPython
|
||||
|
@ -1,49 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// pyCCRMgr - a wrapper class to provide interface to the pfCCR stuff
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#include "../pfCCR/plCCRMgr.h"
|
@ -1,45 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#include "pyCCRMgr.h"
|
||||
#include "pyAgeLinkStruct.h"
|
||||
|
||||
#include <python.h>
|
@ -1,44 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#include "pyCCRMgr.h"
|
||||
|
||||
#include <python.h>
|
@ -176,6 +176,13 @@ void pyImage::SaveAsJPEG(const wchar* fileName, UInt8 quality)
|
||||
plJPEG::Instance().WriteToFile( fileName, this->GetImage() );
|
||||
}
|
||||
|
||||
#include "../plGImage/plPNG.h"
|
||||
void pyImage::SaveAsPNG(const wchar* fileName)
|
||||
{
|
||||
|
||||
plPNG::Instance().WriteToFile( fileName, this->GetImage() );
|
||||
}
|
||||
|
||||
#include "hsResMgr.h"
|
||||
#include "../pnKeyedObject/plUoid.h"
|
||||
PyObject* pyImage::LoadJPEGFromDisk(const wchar* filename, UInt16 width, UInt16 height)
|
||||
|
@ -166,6 +166,7 @@ public:
|
||||
UInt32 GetWidth(); // returns the width of the image
|
||||
UInt32 GetHeight(); // returns the height of the image
|
||||
void SaveAsJPEG(const wchar* fileName, UInt8 quality = 75);
|
||||
void SaveAsPNG(const wchar* fileName);
|
||||
static PyObject* LoadJPEGFromDisk(const wchar* filename, UInt16 width, UInt16 height); // returns pyImage
|
||||
#endif
|
||||
};
|
||||
|
@ -174,6 +174,41 @@ PYTHON_METHOD_DEFINITION(ptImage, saveAsJPEG, args)
|
||||
PYTHON_RETURN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
PYTHON_METHOD_DEFINITION(ptImage, saveAsPNG, args)
|
||||
{
|
||||
PyObject* filenameObj;
|
||||
if (!PyArg_ParseTuple(args, "O", &filenameObj))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "saveAsPNG expects a string");
|
||||
PYTHON_RETURN_ERROR;
|
||||
}
|
||||
|
||||
if (PyUnicode_Check(filenameObj))
|
||||
{
|
||||
int strLen = PyUnicode_GetSize(filenameObj);
|
||||
wchar_t* text = TRACKED_NEW wchar_t[strLen + 1];
|
||||
PyUnicode_AsWideChar((PyUnicodeObject*)filenameObj, text, strLen);
|
||||
text[strLen] = L'\0';
|
||||
self->fThis->SaveAsPNG(text);
|
||||
delete [] text;
|
||||
PYTHON_RETURN_NONE;
|
||||
}
|
||||
else if (PyString_Check(filenameObj))
|
||||
{
|
||||
// we'll allow this, just in case something goes weird
|
||||
char* text = PyString_AsString(filenameObj);
|
||||
wchar_t* wText = hsStringToWString(text);
|
||||
self->fThis->SaveAsPNG(wText);
|
||||
delete [] wText;
|
||||
PYTHON_RETURN_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "saveAsPNG expects a string");
|
||||
PYTHON_RETURN_ERROR;
|
||||
}
|
||||
}
|
||||
#endif // BUILDING_PYPLASMA
|
||||
|
||||
PYTHON_START_METHODS_TABLE(ptImage)
|
||||
@ -183,6 +218,7 @@ PYTHON_START_METHODS_TABLE(ptImage)
|
||||
PYTHON_METHOD_NOARGS(ptImage, getWidth, "Returns the width of the image"),
|
||||
PYTHON_METHOD_NOARGS(ptImage, getHeight, "Returns the height of the image"),
|
||||
PYTHON_METHOD(ptImage, saveAsJPEG, "Params: filename,quality=75\nSaves this image to disk as a JPEG file"),
|
||||
PYTHON_METHOD(ptImage, saveAsPNG, "Params: filename\nSaves this image to disk as a PNG file"),
|
||||
#endif
|
||||
PYTHON_END_METHODS_TABLE;
|
||||
|
||||
|
@ -545,7 +545,7 @@ hsBool pySceneObject::IsAvatar()
|
||||
return false;
|
||||
}
|
||||
|
||||
#include "../plAvatar/plAvCallbackAction.h"
|
||||
#include "../plAvatar/plPhysicalControllerCore.h"
|
||||
|
||||
PyObject* pySceneObject::GetAvatarVelocity()
|
||||
{
|
||||
|
@ -171,6 +171,8 @@ PyObject* pyVaultImageNode::Image_GetImage( void )
|
||||
else
|
||||
fMipmapKey->RefObject();
|
||||
}
|
||||
else
|
||||
PYTHON_RETURN_NONE;
|
||||
}
|
||||
|
||||
return pyImage::New(fMipmap);
|
||||
|
@ -49,9 +49,11 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
|
||||
REGISTER_NONCREATABLE( plLayerMovie );
|
||||
|
||||
#ifdef USE_BINK_SDK
|
||||
#include "plLayerBink.h"
|
||||
|
||||
REGISTER_CREATABLE( plLayerBink );
|
||||
#endif
|
||||
|
||||
#include "plLayerAVI.h"
|
||||
|
||||
|
@ -166,7 +166,7 @@ void LogMsgV (ELogSeverity severity, const wchar format[], va_list args) {
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
#ifdef HS_DEBUGGING
|
||||
//#ifdef HS_DEBUGGING
|
||||
void LogMsgDebug (const char format[], ...) {
|
||||
ASSERT(format);
|
||||
|
||||
@ -175,10 +175,10 @@ void LogMsgDebug (const char format[], ...) {
|
||||
LogMsgV(kLogDebug, format, args);
|
||||
va_end(args);
|
||||
}
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
//============================================================================
|
||||
#ifdef HS_DEBUGGING
|
||||
//#ifdef HS_DEBUGGING
|
||||
void LogMsgDebug (const wchar format[], ...) {
|
||||
ASSERT(format);
|
||||
|
||||
@ -187,4 +187,4 @@ void LogMsgDebug (const wchar format[], ...) {
|
||||
LogMsgV(kLogDebug, format, args);
|
||||
va_end(args);
|
||||
}
|
||||
#endif
|
||||
//#endif
|
||||
|
@ -114,14 +114,14 @@ void LogUnregisterHandler (FLogHandler callback);
|
||||
*
|
||||
***/
|
||||
|
||||
#ifdef HS_DEBUGGING
|
||||
//#ifdef HS_DEBUGGING
|
||||
|
||||
void LogMsgDebug (const char format[], ...);
|
||||
void LogMsgDebug (const wchar format[], ...);
|
||||
|
||||
#else
|
||||
|
||||
inline void LogMsgDebug (const char *, ...) { }
|
||||
inline void LogMsgDebug (const wchar *, ...) { }
|
||||
|
||||
#endif
|
||||
//#else
|
||||
//
|
||||
// inline void LogMsgDebug (const char *, ...) { }
|
||||
// inline void LogMsgDebug (const wchar *, ...) { }
|
||||
//
|
||||
//#endif
|
||||
|
@ -244,7 +244,7 @@ static void INtOpDispatch (
|
||||
|
||||
//===========================================================================
|
||||
static unsigned THREADCALL NtWorkerThreadProc (AsyncThread * thread) {
|
||||
ref(thread);
|
||||
REF(thread);
|
||||
|
||||
ThreadDenyBlock();
|
||||
|
||||
@ -340,7 +340,7 @@ void INtConnCompleteOperation (NtObject * ntObj) {
|
||||
return;
|
||||
|
||||
DWORD err = GetLastError();
|
||||
ref(err);
|
||||
REF(err);
|
||||
switch (ntObj->ioType) {
|
||||
case kNtFile:
|
||||
INtFileDelete((NtFile *) ntObj);
|
||||
|
@ -806,10 +806,10 @@ static void __cdecl DumpInvalidData (
|
||||
const char fmt[],
|
||||
...
|
||||
) {
|
||||
ref(filename);
|
||||
ref(bytes);
|
||||
ref(data);
|
||||
ref(fmt);
|
||||
REF(filename);
|
||||
REF(bytes);
|
||||
REF(data);
|
||||
REF(fmt);
|
||||
|
||||
wchar path[MAX_PATH];
|
||||
PathGetProgramDirectory(path, arrsize(path));
|
||||
@ -947,7 +947,7 @@ void INtSockDelete (
|
||||
sock->notifyProc = nil;
|
||||
notifyProc((AsyncSocket) sock, kNotifySocketDisconnect, nil, &sock->userState);
|
||||
DWORD err = GetLastError();
|
||||
ref(err);
|
||||
REF(err);
|
||||
}
|
||||
else {
|
||||
// Since the no application notification procedure was
|
||||
@ -1016,7 +1016,7 @@ void INtSocketOpCompleteSocketRead (
|
||||
|
||||
if (sock->connType == kConnTypeCliToAuth) {
|
||||
int x = 0;
|
||||
ref(x);
|
||||
REF(x);
|
||||
}
|
||||
|
||||
if (!SocketDispatchRead(sock))
|
||||
|
@ -1008,8 +1008,8 @@ void W9xSocketConnect (
|
||||
unsigned localPort
|
||||
) {
|
||||
// Not supported for W9X
|
||||
ref(connectMs);
|
||||
ref(localPort);
|
||||
REF(connectMs);
|
||||
REF(localPort);
|
||||
|
||||
// If necessary, startup the window and message queue
|
||||
HWND window = StartupWindow();
|
||||
@ -1155,8 +1155,8 @@ unsigned W9xSocketStartListening (
|
||||
const NetAddress & listenAddr,
|
||||
FAsyncNotifySocketProc notifyProc
|
||||
) {
|
||||
ref(listenAddr);
|
||||
ref(notifyProc);
|
||||
REF(listenAddr);
|
||||
REF(notifyProc);
|
||||
return 0;
|
||||
|
||||
}
|
||||
@ -1166,8 +1166,8 @@ void W9xSocketStopListening (
|
||||
const NetAddress & listenAddr,
|
||||
FAsyncNotifySocketProc notifyProc
|
||||
) {
|
||||
ref(listenAddr);
|
||||
ref(notifyProc);
|
||||
REF(listenAddr);
|
||||
REF(notifyProc);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
@ -1190,8 +1190,8 @@ void W9xSocketSetNotifyProc (
|
||||
AsyncSocket sock,
|
||||
FAsyncNotifySocketProc notifyProc
|
||||
) {
|
||||
ref(sock);
|
||||
ref(notifyProc);
|
||||
REF(sock);
|
||||
REF(notifyProc);
|
||||
|
||||
// This provider does not allow changing the notification procedure
|
||||
FATAL("SocketSetNotifyProc");
|
||||
@ -1204,8 +1204,8 @@ void W9xSocketSetBacklogAlloc (
|
||||
) {
|
||||
|
||||
// This provider does not limit the maximum backlog allocation
|
||||
ref(sock);
|
||||
ref(bufferSize);
|
||||
REF(sock);
|
||||
REF(bufferSize);
|
||||
|
||||
}
|
||||
|
||||
|
@ -392,7 +392,7 @@ bool W9xThreadWaitId (
|
||||
AsyncId asyncId,
|
||||
unsigned timeoutMs
|
||||
) {
|
||||
ref(file);
|
||||
REF(file);
|
||||
|
||||
// Find a pending I/O operation with the given id
|
||||
s_critSect.Enter();
|
||||
|
@ -104,7 +104,7 @@ AsyncThreadTaskList::~AsyncThreadTaskList () {
|
||||
|
||||
//===========================================================================
|
||||
static unsigned THREADCALL ThreadTaskProc (AsyncThread * thread) {
|
||||
ref(thread);
|
||||
REF(thread);
|
||||
|
||||
PerfAddCounter(kAsyncPerfThreadTaskThreadsActive, 1);
|
||||
|
||||
@ -266,7 +266,7 @@ void AsyncThreadTaskAdd (
|
||||
ASSERT(taskList);
|
||||
ASSERT(callback);
|
||||
ASSERT(priority == kThreadTaskPriorityNormal);
|
||||
ref(priority);
|
||||
REF(priority);
|
||||
|
||||
// Allocate a new task record
|
||||
ThreadTask * task = NEW(ThreadTask);
|
||||
|
@ -91,7 +91,7 @@ static void DoTransgamingCheck () {
|
||||
|
||||
//===========================================================================
|
||||
static void IAsyncInitUseW9x () {
|
||||
ref(IAsyncInitUseW9x);
|
||||
REF(IAsyncInitUseW9x);
|
||||
#ifdef HS_BUILD_FOR_WIN32
|
||||
W9xGetApi(&g_api);
|
||||
#else
|
||||
@ -101,7 +101,7 @@ static void IAsyncInitUseW9x () {
|
||||
|
||||
//===========================================================================
|
||||
static void IAsyncInitUseNt () {
|
||||
ref(IAsyncInitUseNt);
|
||||
REF(IAsyncInitUseNt);
|
||||
#ifdef HS_BUILD_FOR_WIN32
|
||||
NtGetApi(&g_api);
|
||||
#else
|
||||
@ -111,7 +111,7 @@ static void IAsyncInitUseNt () {
|
||||
|
||||
//===========================================================================
|
||||
static void IAsyncInitUseUnix () {
|
||||
ref(IAsyncInitUseUnix);
|
||||
REF(IAsyncInitUseUnix);
|
||||
#ifdef HS_BUILD_FOR_UNIX
|
||||
#error Unix I/O not implemented yet
|
||||
UxGetApi(&g_api);
|
||||
@ -122,7 +122,7 @@ static void IAsyncInitUseUnix () {
|
||||
|
||||
//===========================================================================
|
||||
static void IAsyncInitForClient () {
|
||||
ref(IAsyncInitForClient);
|
||||
REF(IAsyncInitForClient);
|
||||
#ifdef HS_BUILD_FOR_WIN32
|
||||
DoTransgamingCheck();
|
||||
if (s_transgaming) {
|
||||
@ -140,7 +140,7 @@ static void IAsyncInitForClient () {
|
||||
|
||||
//===========================================================================
|
||||
static void IAsyncInitForServer () {
|
||||
ref(IAsyncInitForServer);
|
||||
REF(IAsyncInitForServer);
|
||||
#ifdef HS_BUILD_FOR_WIN32
|
||||
IAsyncInitUseNt();
|
||||
#elif HS_BUILD_FOR_UNIX
|
||||
|
@ -143,8 +143,8 @@ static void LogFileNotifyProc (
|
||||
AsyncNotifyFile * notify,
|
||||
void ** userState
|
||||
) {
|
||||
ref(file);
|
||||
ref(userState);
|
||||
REF(file);
|
||||
REF(userState);
|
||||
|
||||
switch (code) {
|
||||
case kNotifyFileWrite:
|
||||
@ -163,7 +163,7 @@ static void LogFileNotifyProc (
|
||||
|
||||
//============================================================================
|
||||
static void AllocLogBuffer_CS (unsigned index) {
|
||||
ref(AllocLogBuffer_CS);
|
||||
REF(AllocLogBuffer_CS);
|
||||
|
||||
ASSERT(!s_logBuf[index]);
|
||||
s_logBuf[index] = (char *)ALLOC(s_logSize[index]);
|
||||
@ -175,7 +175,7 @@ static void AllocLogBuffer_CS (unsigned index) {
|
||||
|
||||
//============================================================================
|
||||
static void FreeLogBuffer_CS (unsigned index) {
|
||||
ref(FreeLogBuffer_CS);
|
||||
REF(FreeLogBuffer_CS);
|
||||
|
||||
if (s_logBuf[index]) {
|
||||
FREE(s_logBuf[index]);
|
||||
@ -322,7 +322,7 @@ static void FlushLogFile_CS (
|
||||
unsigned index,
|
||||
TimeDesc timeDesc
|
||||
) {
|
||||
ref(FlushLogFile_CS);
|
||||
REF(FlushLogFile_CS);
|
||||
|
||||
bool close = !s_running || (s_logTime[index].day != timeDesc.day);
|
||||
WriteLogFile_CS(index, close);
|
||||
@ -332,7 +332,7 @@ static void FlushLogFile_CS (
|
||||
|
||||
//============================================================================
|
||||
static unsigned FlushLogsTimerCallback (void *) {
|
||||
ref(FlushLogsTimerCallback);
|
||||
REF(FlushLogsTimerCallback);
|
||||
|
||||
AsyncLogFlush();
|
||||
return kAsyncTimeInfinite;
|
||||
@ -427,9 +427,9 @@ void AsyncLogWriteMsg (
|
||||
ELogSeverity severity,
|
||||
const wchar msg[]
|
||||
) {
|
||||
ref(facility);
|
||||
ref(severity);
|
||||
ref(msg);
|
||||
REF(facility);
|
||||
REF(severity);
|
||||
REF(msg);
|
||||
|
||||
if (!s_running)
|
||||
return;
|
||||
|
@ -741,8 +741,8 @@ unsigned IniGetBoundedValue (
|
||||
unsigned maxVal,
|
||||
unsigned defVal
|
||||
) {
|
||||
ref(key);
|
||||
ref(section);
|
||||
REF(key);
|
||||
REF(section);
|
||||
|
||||
if (!value)
|
||||
return defVal;
|
||||
|
@ -126,7 +126,7 @@ static void ChangeDispatch_WL (IniChangeReg * marker) {
|
||||
|
||||
//===========================================================================
|
||||
static unsigned THREADCALL IniSrvThreadProc (AsyncThread * thread) {
|
||||
ref(thread);
|
||||
REF(thread);
|
||||
|
||||
IniChangeReg marker;
|
||||
marker.fNotify = nil;
|
||||
|
@ -56,7 +56,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
*
|
||||
***/
|
||||
|
||||
const unsigned CLASS_C_SUBNET_MASK = 0xFFFFFF00;
|
||||
const unsigned CLASS_C_SUBNET_MASK = 0xFFFF0000;
|
||||
const NetAddressNode LOOPBACK_ADDRESS_NODE = 0x7F000001;
|
||||
|
||||
|
||||
|
@ -51,6 +51,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "plgDispatch.h"
|
||||
#include "hsBitVector.h"
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
|
||||
plMessage::plMessage()
|
||||
: fSender(nil),
|
||||
|
@ -143,7 +143,7 @@ namespace pnNetCli {
|
||||
static void PutBufferOnWire (NetCli * cli, void * data, unsigned bytes) {
|
||||
|
||||
byte * temp, * heap = NULL;
|
||||
ref(temp);
|
||||
REF(temp);
|
||||
|
||||
if (cli->mode == kNetCliModeEncrypted) {
|
||||
// Encrypt data...
|
||||
@ -240,7 +240,7 @@ static void BufferedSendData (
|
||||
return;
|
||||
|
||||
unsigned_ptr const * const msgEnd = msg + fieldCount;
|
||||
ref(msgEnd);
|
||||
REF(msgEnd);
|
||||
|
||||
const NetMsgInitSend * sendMsg = NetMsgChannelFindSendMessage(cli->channel, msg[0]);
|
||||
ASSERT(msg[0] == sendMsg->msg.messageId);
|
||||
@ -1006,7 +1006,7 @@ bool NetCliDispatch (
|
||||
if (cli->mode == kNetCliModeEncrypted) {
|
||||
// Decrypt data...
|
||||
byte * temp, * heap = NULL;
|
||||
ref(temp);
|
||||
REF(temp);
|
||||
|
||||
#ifndef NO_ENCRYPTION
|
||||
if (bytes <= 2048)
|
||||
@ -1024,7 +1024,7 @@ bool NetCliDispatch (
|
||||
// Add data to accumulator and dispatch
|
||||
cli->input.Add(bytes, data);
|
||||
bool result = DispatchData(cli, param);
|
||||
ref(result);
|
||||
REF(result);
|
||||
|
||||
#ifdef SERVER
|
||||
cli->recvDispatch = result;
|
||||
|
@ -78,7 +78,7 @@ static void LookupCallback (
|
||||
unsigned addrCount,
|
||||
const NetAddress addrs[]
|
||||
) {
|
||||
ref(name);
|
||||
REF(name);
|
||||
|
||||
DNSParam * p = (DNSParam *)param;
|
||||
if (addrCount) {
|
||||
|
@ -154,7 +154,7 @@ static bool Recv_PingReply (
|
||||
unsigned bytes,
|
||||
void *
|
||||
) {
|
||||
ref(bytes);
|
||||
REF(bytes);
|
||||
|
||||
const Auth2Cli_PingReply & reply = *(const Auth2Cli_PingReply *)msg;
|
||||
|
||||
@ -415,7 +415,7 @@ static bool AuthSocketNotifyCallback (
|
||||
//============================================================================
|
||||
static bool Recv_File2Cli_ManifestReply (FileConn * conn, const File2Cli_ManifestReply & msg) {
|
||||
|
||||
ref(conn);
|
||||
REF(conn);
|
||||
|
||||
FileTrans * trans;
|
||||
s_critsect.Enter();
|
||||
|
@ -156,8 +156,8 @@ static inline bool ICompareStringI (const T lhs[], const T rhs[]) {
|
||||
|
||||
//============================================================================
|
||||
static inline bool ICompareArray (const byte lhs[], const byte rhs[]) {
|
||||
ref(lhs);
|
||||
ref(rhs);
|
||||
REF(lhs);
|
||||
REF(rhs);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
|
||||
// This line must NEVER be modified manually; it is automatically updated
|
||||
// by the build server.
|
||||
#define BUILD_ID 912
|
||||
#define BUILD_ID 918
|
||||
COMPILER_ASSERT(BUILD_ID != 0);
|
||||
|
||||
|
||||
|
@ -412,7 +412,7 @@ static void AsyncLookupCallback (
|
||||
unsigned addrCount,
|
||||
const NetAddress addrs[]
|
||||
) {
|
||||
ref(name);
|
||||
REF(name);
|
||||
|
||||
ConnectParam * cp = (ConnectParam *)param;
|
||||
|
||||
|
@ -101,7 +101,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
// 127.0.0.0 - 127.0.0.255
|
||||
// (lowest)
|
||||
static int NetAddressNodeSortValueNetOrder (NetAddressNode addr) {
|
||||
ref(NetAddressNodeSortValueNetOrder);
|
||||
REF(NetAddressNodeSortValueNetOrder);
|
||||
// Loopback addresses
|
||||
if ((addr & kNetClassALoopbackMask) == (kNetClassALoopbackAddr & kNetClassALoopbackMask))
|
||||
return 4;
|
||||
|
@ -162,12 +162,12 @@ bool GuidIsNil (const Uuid & uuid) {
|
||||
const wchar * GuidToString (const Uuid & uuid, wchar * dst, unsigned chars) {
|
||||
wchar * src;
|
||||
RPC_STATUS s;
|
||||
s = UuidToStringW( (GUID *) &uuid, &src );
|
||||
s = UuidToStringW( (GUID *) &uuid, (unsigned short**)&src );
|
||||
if (RPC_S_OK == s)
|
||||
StrCopy(dst, src, chars);
|
||||
else
|
||||
StrCopy(dst, L"", chars);
|
||||
RpcStringFreeW(&src);
|
||||
RpcStringFreeW( (unsigned short**)&src );
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ unsigned CBaseArray::CalcAllocGrowth (unsigned newAlloc, unsigned oldAlloc, unsi
|
||||
|
||||
//===========================================================================
|
||||
void * CBaseArray::ReallocPtr (void * ptr, unsigned bytes) {
|
||||
ref(ptr);
|
||||
REF(ptr);
|
||||
void * newPtr = nil;
|
||||
if (bytes) {
|
||||
newPtr = ALLOCFLAGS(bytes, ARR_MEMORY_FLAGS);
|
||||
|
@ -291,12 +291,12 @@ template<class T>
|
||||
class TArrayCopyBits {
|
||||
public:
|
||||
inline static void Assign (T * dest, const T source[], unsigned count);
|
||||
inline static void Construct (T * dest) { ref(dest); }
|
||||
inline static void Construct (T * dest, unsigned count) { ref(dest); ref(count); }
|
||||
inline static void Construct (T * dest) { REF(dest); }
|
||||
inline static void Construct (T * dest, unsigned count) { REF(dest); REF(count); }
|
||||
inline static void CopyConstruct (T * dest, const T & source);
|
||||
inline static void CopyConstruct (T * dest, const T source[], unsigned count);
|
||||
inline static void Destruct (T * dest) { ref(dest); }
|
||||
inline static void Destruct (T * dest, unsigned count) { ref(dest); ref(count); }
|
||||
inline static void Destruct (T * dest) { REF(dest); }
|
||||
inline static void Destruct (T * dest, unsigned count) { REF(dest); REF(count); }
|
||||
};
|
||||
|
||||
//===========================================================================
|
||||
@ -378,14 +378,14 @@ void TArrayCopyObject<T>::CopyConstruct (T * dest, const T source[], unsigned co
|
||||
//===========================================================================
|
||||
template<class T>
|
||||
void TArrayCopyObject<T>::Destruct (T * dest) {
|
||||
ref(dest);
|
||||
REF(dest);
|
||||
dest->~T();
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
template<class T>
|
||||
void TArrayCopyObject<T>::Destruct (T * dest, unsigned count) {
|
||||
ref(dest);
|
||||
REF(dest);
|
||||
for (unsigned loop = count; loop--; )
|
||||
dest[loop].~T();
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ unsigned Base64Encode (
|
||||
ASSERT(dstChars >= Base64EncodeSize(srcChars));
|
||||
ASSERT(dstData);
|
||||
|
||||
ref(dstChars);
|
||||
REF(dstChars);
|
||||
|
||||
const char * dstBase = dstData;
|
||||
const byte * srcTerm = srcData + srcChars;
|
||||
@ -152,7 +152,7 @@ unsigned Base64Decode (
|
||||
ASSERT(srcData);
|
||||
ASSERT(dstChars >= Base64DecodeSize(srcChars));
|
||||
ASSERT(dstData);
|
||||
ref(dstChars);
|
||||
REF(dstChars);
|
||||
|
||||
const byte * dstBase = dstData;
|
||||
const char * srcTerm = srcData + srcChars;
|
||||
|
@ -337,7 +337,8 @@ void BigNum::DivNormalized (const BigNum & a, const BigNum & b, BigNum * remaind
|
||||
if (quotient) {
|
||||
Val borrow = 0;
|
||||
Val carry = 0;
|
||||
for (unsigned denomIndex = 0; denomIndex != denomCount; ++denomIndex) {
|
||||
unsigned denomIndex;
|
||||
for (denomIndex = 0; denomIndex != denomCount; ++denomIndex) {
|
||||
DVal product = (DVal)(Mul((*denom)[denomIndex], quotient) + carry);
|
||||
carry = HIGH(product);
|
||||
numer->SetVal(quotientIndex + denomIndex, (DVal)((DVal)(*numer)[quotientIndex + denomIndex] - (DVal)LOW(product) - (DVal)borrow), &borrow);
|
||||
@ -1313,7 +1314,8 @@ void BigNum::Sub (const BigNum & a, Val b) {
|
||||
const unsigned count = a.Count();
|
||||
SetCount(count);
|
||||
Val borrow = b;
|
||||
for (unsigned index = 0; index < count; ++index) {
|
||||
unsigned index;
|
||||
for (index = 0; index < count; ++index) {
|
||||
SetVal(index, (DVal)((DVal)a[index] - (DVal)borrow), &borrow);
|
||||
borrow = (Val)((Val)0 - (Val)borrow);
|
||||
}
|
||||
@ -1330,7 +1332,8 @@ void BigNum::Sub (const BigNum & a, const BigNum & b) {
|
||||
const unsigned bCount = b.Count();
|
||||
GrowToCount(count, true);
|
||||
Val borrow = 0;
|
||||
for (unsigned index = 0; index < count; ++index) {
|
||||
unsigned index;
|
||||
for (index = 0; index < count; ++index) {
|
||||
Val bVal = (index < bCount) ? b[index] : (Val)0;
|
||||
SetVal(index, (DVal)((DVal)a[index] - (DVal)bVal - (DVal)borrow), &borrow);
|
||||
borrow = (Val)((Val)0 - (Val)borrow);
|
||||
|
@ -613,15 +613,15 @@ bool CCmdParser::IsSpecified (const wchar name[]) const {
|
||||
|
||||
//===========================================================================
|
||||
void CCmdParser::OnError (const wchar str[], ECmdError errorCode, const wchar arg[], const wchar value[]) {
|
||||
ref(str);
|
||||
ref(errorCode);
|
||||
ref(arg);
|
||||
ref(value);
|
||||
REF(str);
|
||||
REF(errorCode);
|
||||
REF(arg);
|
||||
REF(value);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
bool CCmdParser::OnExtra (const wchar str[]) {
|
||||
ref(str);
|
||||
REF(str);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -159,7 +159,7 @@ static void Rc4Codec (
|
||||
unsigned sourceBytes,
|
||||
const void * sourceData
|
||||
) {
|
||||
ref(encrypt); // RC4 uses the same algorithm to both encrypt and decrypt
|
||||
REF(encrypt); // RC4 uses the same algorithm to both encrypt and decrypt
|
||||
dest->SetCount(sourceBytes);
|
||||
RC4((RC4_KEY *)key->handle, sourceBytes, (const unsigned char *)sourceData, dest->Ptr());
|
||||
}
|
||||
@ -171,7 +171,7 @@ static void Rc4Codec (
|
||||
unsigned bytes,
|
||||
void * data
|
||||
) {
|
||||
ref(encrypt); // RC4 uses the same algorithm to both encrypt and decrypt
|
||||
REF(encrypt); // RC4 uses the same algorithm to both encrypt and decrypt
|
||||
byte * temp = ALLOCA(byte, bytes);
|
||||
RC4((RC4_KEY *)key->handle, bytes, (const unsigned char *)data, temp);
|
||||
MemCopy(data, temp, bytes);
|
||||
@ -181,7 +181,7 @@ static void Rc4Codec (
|
||||
|
||||
//===========================================================================
|
||||
void KeyRc4::Codec (bool encrypt, ARRAY(byte) * dest, unsigned sourceBytes, const void * sourceData) {
|
||||
ref(encrypt); // RC4 uses the same algorithm to both encrypt and decrypt
|
||||
REF(encrypt); // RC4 uses the same algorithm to both encrypt and decrypt
|
||||
dest->SetCount(sourceBytes);
|
||||
|
||||
byte * destDataPtr = (byte *)dest->Ptr();
|
||||
@ -381,8 +381,8 @@ void CryptKeyGenerate (
|
||||
break;
|
||||
|
||||
case kCryptRsa:
|
||||
ref(keyBits);
|
||||
ref(publicData);
|
||||
REF(keyBits);
|
||||
REF(publicData);
|
||||
#if 0
|
||||
KeyRsa::KeyGen(
|
||||
keyBits,
|
||||
|
@ -90,8 +90,8 @@ inline void EndianConvert (
|
||||
word * array,
|
||||
unsigned count
|
||||
) {
|
||||
ref(array);
|
||||
ref(count);
|
||||
REF(array);
|
||||
REF(count);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -100,8 +100,8 @@ inline void EndianConvert (
|
||||
dword * array,
|
||||
unsigned count
|
||||
) {
|
||||
ref(array);
|
||||
ref(count);
|
||||
REF(array);
|
||||
REF(count);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -110,8 +110,8 @@ inline void EndianConvert (
|
||||
qword * array,
|
||||
unsigned count
|
||||
) {
|
||||
ref(array);
|
||||
ref(count);
|
||||
REF(array);
|
||||
REF(count);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -121,9 +121,9 @@ inline void EndianConvert (
|
||||
unsigned elemCount,
|
||||
unsigned elemBytes
|
||||
) {
|
||||
ref(data);
|
||||
ref(elemCount);
|
||||
ref(elemBytes);
|
||||
REF(data);
|
||||
REF(elemCount);
|
||||
REF(elemBytes);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -219,7 +219,7 @@ TBaseHashTable<T>::TBaseHashTable () {
|
||||
//===========================================================================
|
||||
template<class T>
|
||||
TBaseHashTable<T>::TBaseHashTable (const TBaseHashTable<T> & source) {
|
||||
ref(source);
|
||||
REF(source);
|
||||
#ifdef HS_DEBUGGING
|
||||
FATAL("No copy constructor");
|
||||
#endif
|
||||
@ -229,7 +229,7 @@ TBaseHashTable<T>::TBaseHashTable (const TBaseHashTable<T> & source) {
|
||||
//===========================================================================
|
||||
template<class T>
|
||||
TBaseHashTable<T> & TBaseHashTable<T>::operator= (const TBaseHashTable<T> & source) {
|
||||
ref(source);
|
||||
REF(source);
|
||||
#ifdef HS_DEBUGGING
|
||||
FATAL("No assignment operator");
|
||||
#endif
|
||||
@ -345,7 +345,7 @@ const T * TBaseHashTable<T>::Next (const T * object) const {
|
||||
template<class T>
|
||||
void TBaseHashTable<T>::Order (T * linkedObject, ELinkType linkType, T * existingObject) {
|
||||
THashLink<T> & link = GetLink(linkedObject);
|
||||
ref(link);
|
||||
REF(link);
|
||||
ASSERT(link.m_linkToFull.IsLinked());
|
||||
m_fullList.Link(linkedObject, linkType, existingObject);
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ CBaseLink::CBaseLink () {
|
||||
|
||||
//===========================================================================
|
||||
CBaseLink::CBaseLink (const CBaseLink & source) {
|
||||
ref(source);
|
||||
REF(source);
|
||||
#ifdef HS_DEBUGGING
|
||||
if (source.IsLinked())
|
||||
FATAL("No copy constructor");
|
||||
@ -153,7 +153,7 @@ CBaseLink::~CBaseLink () {
|
||||
|
||||
//===========================================================================
|
||||
CBaseLink & CBaseLink::operator= (const CBaseLink & source) {
|
||||
ref(source);
|
||||
REF(source);
|
||||
#ifdef HS_DEBUGGING
|
||||
FATAL("No assignment operator");
|
||||
#endif
|
||||
@ -364,7 +364,7 @@ CBaseList::CBaseList () {
|
||||
//===========================================================================
|
||||
CBaseList::CBaseList (const CBaseList & source) {
|
||||
m_linkOffset = LINK_OFFSET_UNINIT;
|
||||
ref(source);
|
||||
REF(source);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
@ -375,7 +375,7 @@ CBaseList::~CBaseList () {
|
||||
|
||||
//===========================================================================
|
||||
CBaseList & CBaseList::operator= (const CBaseList & source) {
|
||||
ref(source);
|
||||
REF(source);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,7 @@ public:
|
||||
ASSERT(!zeroed);
|
||||
#endif
|
||||
long prev = AtomicAdd(&m_ref, 1);
|
||||
ref(tag);
|
||||
REF(tag);
|
||||
REFTRACE("Inc %p %s: %u", this, tag, prev+1);
|
||||
return prev+1;
|
||||
}
|
||||
@ -119,7 +119,7 @@ public:
|
||||
ASSERT(!zeroed);
|
||||
#endif
|
||||
long prev = AtomicAdd(&m_ref, n);
|
||||
ref(tag);
|
||||
REF(tag);
|
||||
REFTRACE("Inc %p %s: %u", this, tag, prev+n);
|
||||
return prev+n;
|
||||
}
|
||||
@ -149,7 +149,7 @@ public:
|
||||
#endif
|
||||
OnZeroRef();
|
||||
}
|
||||
ref(tag);
|
||||
REF(tag);
|
||||
REFTRACE("Dec %p %s: %u", this, tag, prev-1);
|
||||
return prev-1;
|
||||
}
|
||||
@ -161,8 +161,8 @@ public:
|
||||
#ifdef HS_DEBUGGING
|
||||
ASSERT(!zeroed);
|
||||
#endif
|
||||
ref(oldTag);
|
||||
ref(newTag);
|
||||
REF(oldTag);
|
||||
REF(newTag);
|
||||
REFTRACE("Inc %p %s: (xfer)", this, newTag);
|
||||
REFTRACE("Dec %p %s: (xfer)", this, oldTag);
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ void CBaseSpareList::Free (void * object, unsigned objectSize) {
|
||||
#ifdef HS_DEBUGGING
|
||||
MemSet(object, (byte) ((unsigned) object >> 4), objectSize);
|
||||
#else
|
||||
ref(objectSize);
|
||||
REF(objectSize);
|
||||
#endif
|
||||
|
||||
// link memory block onto head of spare list
|
||||
@ -157,7 +157,7 @@ void CBaseSpareList::CleanUp (const char typeName[]) {
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
ref(typeName);
|
||||
REF(typeName);
|
||||
#endif
|
||||
|
||||
// walk chain of AllocNodes and free each of them
|
||||
|
@ -110,9 +110,9 @@ struct Uuid {
|
||||
inline bool operator ! () const { return GuidIsNil(*this); }
|
||||
inline bool operator < (const Uuid & rhs) const { return GuidCompare(*this, rhs) < 0; }
|
||||
inline bool operator == (const Uuid & rhs) const { return GuidsAreEqual(*this, rhs); }
|
||||
inline bool operator == (int rhs) const { ref(rhs); ASSERT(!rhs); return GuidsAreEqual(*this, kNilGuid); }
|
||||
inline bool operator == (int rhs) const { REF(rhs); ASSERT(!rhs); return GuidsAreEqual(*this, kNilGuid); }
|
||||
inline bool operator != (const Uuid & rhs) const { return !GuidsAreEqual(*this, rhs); }
|
||||
inline bool operator != (int rhs) const { ref(rhs); ASSERT(!rhs); return !GuidsAreEqual(*this, kNilGuid); }
|
||||
inline bool operator != (int rhs) const { REF(rhs); ASSERT(!rhs); return !GuidsAreEqual(*this, kNilGuid); }
|
||||
};
|
||||
#include <PopPack.h>
|
||||
|
||||
|
@ -218,12 +218,12 @@ void plAgeDescription::SetAgeNameFromPath( const char *path )
|
||||
}
|
||||
|
||||
// Construct our name from the path
|
||||
char *pathSep1 = strrchr( path, '\\' );
|
||||
char *pathSep2 = strrchr( path, '/' );
|
||||
const char *pathSep1 = strrchr( path, '\\' );
|
||||
const char *pathSep2 = strrchr( path, '/' );
|
||||
if( pathSep2 > pathSep1 )
|
||||
pathSep1 = pathSep2;
|
||||
if( pathSep1 == nil )
|
||||
pathSep1 = (char *)path;
|
||||
pathSep1 = path;
|
||||
else
|
||||
pathSep1++; // Get past the actual character we found
|
||||
|
||||
|
@ -46,6 +46,11 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
// //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifdef EAX_SDK_AVAILABLE
|
||||
# pragma message("==>Compiling with EAX_SDK")
|
||||
#endif // EAX_SDK_AVAILABLE
|
||||
|
||||
#include "hsTypes.h"
|
||||
#include "hsThread.h"
|
||||
#ifndef EAX_SDK_AVAILABLE
|
||||
|
@ -66,8 +66,8 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "../plPipeline/plDebugText.h"
|
||||
#include "../plStatusLog/plStatusLog.h"
|
||||
|
||||
#define MICROPHONE 121
|
||||
#define TALKING 122
|
||||
#define MICROPHONE "ui_microphone.png"
|
||||
#define TALKING "ui_speaker.png"
|
||||
#define NUM_CHANNELS 1
|
||||
#define VOICE_STOP_MS 2000
|
||||
#define MAX_DATA_SIZE 1024 * 4 // 4 KB
|
||||
@ -84,13 +84,13 @@ hsBool plVoicePlayer::fEnabled = true;
|
||||
plVoiceRecorder::plVoiceRecorder()
|
||||
{
|
||||
plPlateManager::Instance().CreatePlate( &fDisabledIcon );
|
||||
fDisabledIcon->CreateFromResource( MAKEINTRESOURCE( MICROPHONE ) );
|
||||
fDisabledIcon->CreateFromResource( MICROPHONE );
|
||||
fDisabledIcon->SetPosition(-0.90, -0.90);
|
||||
fDisabledIcon->SetSize(0.0675, 0.09);
|
||||
fDisabledIcon->SetVisible(false);
|
||||
|
||||
plPlateManager::Instance().CreatePlate( &fTalkIcon );
|
||||
fTalkIcon->CreateFromResource( MAKEINTRESOURCE( TALKING ) );
|
||||
fTalkIcon->CreateFromResource( TALKING );
|
||||
fTalkIcon->SetPosition(-0.9,-0.9);
|
||||
fTalkIcon->SetSize(0.0675, 0.09);
|
||||
fTalkIcon->SetVisible(false);
|
||||
@ -208,7 +208,7 @@ void plVoiceRecorder::DrawDisabledIcon(hsBool b)
|
||||
plPlateManager::Instance().CreatePlate( &fDisabledIcon );
|
||||
if (fDisabledIcon)
|
||||
{
|
||||
fDisabledIcon->CreateFromResource( MAKEINTRESOURCE( MICROPHONE ) );
|
||||
fDisabledIcon->CreateFromResource( MICROPHONE );
|
||||
fDisabledIcon->SetPosition(-0.90, -0.90);
|
||||
fDisabledIcon->SetSize(0.0675, 0.09);
|
||||
fDisabledIcon->SetVisible(false);
|
||||
@ -225,7 +225,7 @@ void plVoiceRecorder::DrawTalkIcon(hsBool b)
|
||||
{
|
||||
plPlateManager::Instance().CreatePlate( &fTalkIcon );
|
||||
if (fTalkIcon)
|
||||
{ fTalkIcon->CreateFromResource( MAKEINTRESOURCE( TALKING ) );
|
||||
{ fTalkIcon->CreateFromResource( TALKING );
|
||||
fTalkIcon->SetPosition(-0.9,-0.9);
|
||||
fTalkIcon->SetSize(0.0675, 0.09);
|
||||
fTalkIcon->SetVisible(false);
|
||||
|
@ -39,7 +39,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#include <hvdi.h>
|
||||
#include <direct.h>
|
||||
#include "HeadSpin.h"
|
||||
#include "hsGeometry3.h"
|
||||
|
@ -258,10 +258,10 @@ void plAGAnimInstance::DetachChannels()
|
||||
do {
|
||||
plAGChannel *channel = (*i).second;
|
||||
channelMod->DetachChannel(channel);
|
||||
} while (i != fManualDetachChannels.end() && (*++i).first == channelName);
|
||||
} while (++i != fManualDetachChannels.end() && i->first == channelName);
|
||||
} else {
|
||||
do {
|
||||
} while (i != fManualDetachChannels.end() && (*++i).first == channelName);
|
||||
} while (++i != fManualDetachChannels.end() && i->first == channelName);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -161,6 +161,9 @@ protected:
|
||||
plSimulationInterface * IGetSI(const plAGModifier *modifier) const;
|
||||
plObjInterface * IGetGI(const plAGModifier *modifier, UInt16 classIdx) const;
|
||||
|
||||
// Allow plAGModifier to declare IGet?? as friends
|
||||
friend class plAGModifier;
|
||||
|
||||
// -- members --
|
||||
plAGChannel *fChannel;
|
||||
hsBool fEnabled;
|
||||
|
@ -244,9 +244,8 @@ plAGChannel * plAGModifier::MergeChannel(plAGApplicator *app,
|
||||
hsBool plAGModifier::DetachChannel(plAGChannel * channel)
|
||||
{
|
||||
plAppTable::iterator i = fApps.begin();
|
||||
hsBool done = false;
|
||||
|
||||
for( ; i != fApps.end(); i++)
|
||||
while( i != fApps.end() )
|
||||
{
|
||||
plAGApplicator *app = *i;
|
||||
plAGChannel *existingChannel = app->GetChannel();
|
||||
@ -259,17 +258,16 @@ hsBool plAGModifier::DetachChannel(plAGChannel * channel)
|
||||
app->SetChannel(replacementChannel);
|
||||
if( ! replacementChannel && app->AutoDelete())
|
||||
{
|
||||
plAppTable::iterator old = i;
|
||||
i--;
|
||||
fApps.erase(old);
|
||||
// Don't need to adjust the iterator since we're about to exit the loop
|
||||
fApps.erase(i);
|
||||
delete app;
|
||||
}
|
||||
done = true;
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
++i;
|
||||
}
|
||||
return done;
|
||||
return false;
|
||||
}
|
||||
|
||||
// READ
|
||||
|
@ -39,7 +39,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#include "plAvCallbackAction.h" // must be first: references havok new
|
||||
|
||||
// singular
|
||||
#include "plAnimStage.h"
|
||||
|
@ -1,171 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#if 0
|
||||
// havok first
|
||||
#include <hkdynamics/entity/rigidbody.h>
|
||||
#include <hkdynamics/world/subspace.h>
|
||||
|
||||
#include "plAntiGravAction.h"
|
||||
|
||||
#include "../pnSceneObject/plSceneObject.h"
|
||||
#include "../plHavok1/plHKPhysical.h"
|
||||
#include "../plAvatar/plSwimRegion.h"
|
||||
#include "hsTimer.h"
|
||||
|
||||
// This is meant to be a specific physicsAction for the swim behavior
|
||||
plAntiGravAction::plAntiGravAction(plHKPhysical *physical, plAGApplicator *rootApp) :
|
||||
plAnimatedCallbackAction(physical, rootApp),
|
||||
fOnGround(false),
|
||||
fBuoyancy(1.f),
|
||||
fSurfaceHeight(0.f),
|
||||
fCurrentRegion(nil),
|
||||
fHadContacts(false)
|
||||
{
|
||||
}
|
||||
|
||||
plSimDefs::ActionType plAntiGravAction::GetType()
|
||||
{
|
||||
return plSimDefs::kAntiGravAction;
|
||||
}
|
||||
|
||||
void plAntiGravAction::apply(Havok::Subspace &space, Havok::hkTime time)
|
||||
{
|
||||
double elapsed = time.asDouble() - getRefresh().asDouble();
|
||||
setRefresh(time);
|
||||
|
||||
IAdjustBuoyancy();
|
||||
Havok::RigidBody *body = fPhysical->GetBody();
|
||||
float mass = body->getMass();
|
||||
Havok::Vector3 gravity = space.getGravity();
|
||||
Havok::Vector3 force = -gravity * (mass * fBuoyancy);
|
||||
body->applyForce(force);
|
||||
|
||||
hsVector3 vel;
|
||||
fPhysical->GetLinearVelocitySim(vel);
|
||||
fAnimPosVel.fZ = vel.fZ;
|
||||
|
||||
hsVector3 linCurrent(0.f, 0.f, 0.f);
|
||||
hsScalar angCurrent = 0.f;
|
||||
if (fCurrentRegion != nil)
|
||||
fCurrentRegion->GetCurrent(fPhysical, linCurrent, angCurrent, (hsScalar)elapsed);
|
||||
|
||||
int numContacts = fPhysical->GetNumContacts();
|
||||
fHadContacts = (numContacts > 0);
|
||||
|
||||
const Havok::Vector3 straightUp(0.0f, 0.0f, 1.0f);
|
||||
fOnGround = false;
|
||||
int i;
|
||||
for (i = 0; i < numContacts; i++)
|
||||
{
|
||||
const Havok::ContactPoint *contact = fPhysical->GetContactPoint(i);
|
||||
hsScalar dotUp = straightUp.dot(contact->m_normal);
|
||||
if (dotUp > .5)
|
||||
{
|
||||
fOnGround = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fPhysical->SetLinearVelocitySim(fAnimPosVel + linCurrent);
|
||||
fPhysical->SetAngularVelocitySim(hsVector3(0.f, 0.f, fAnimAngVel + fTurnStr + angCurrent));
|
||||
}
|
||||
|
||||
void plAntiGravAction::SetSurface(plSwimRegionInterface *region, hsScalar surfaceHeight)
|
||||
{
|
||||
fCurrentRegion = region;
|
||||
if (region != nil)
|
||||
fSurfaceHeight = surfaceHeight;
|
||||
}
|
||||
|
||||
void plAntiGravAction::IAdjustBuoyancy()
|
||||
{
|
||||
// "surface depth" refers to the depth our handle object should be below
|
||||
// the surface for the avatar to be "at the surface"
|
||||
static const float surfaceDepth = 4.0f;
|
||||
// 1.0 = neutral buoyancy
|
||||
// 0 = no buoyancy (normal gravity)
|
||||
// 2.0 = opposite of gravity, floating upwards
|
||||
static const float buoyancyAtSurface = 1.0f;
|
||||
|
||||
if (fCurrentRegion == nil)
|
||||
{
|
||||
fBuoyancy = 0.f;
|
||||
return;
|
||||
}
|
||||
|
||||
hsMatrix44 l2w, w2l;
|
||||
fPhysical->GetTransform(l2w, w2l);
|
||||
float depth = fSurfaceHeight - surfaceDepth - l2w.GetTranslate().fZ;
|
||||
if (depth < -1)
|
||||
fBuoyancy = 0.f; // Same as being above ground. Plain old gravity.
|
||||
else if (depth < 0)
|
||||
fBuoyancy = 1 + depth;
|
||||
else
|
||||
{
|
||||
hsVector3 vel;
|
||||
fPhysical->GetLinearVelocitySim(vel);
|
||||
if (vel.fZ > 0)
|
||||
{
|
||||
if (vel.fZ > fCurrentRegion->fMaxUpwardVel)
|
||||
{
|
||||
vel.fZ = fCurrentRegion->fMaxUpwardVel;
|
||||
fPhysical->SetLinearVelocitySim(vel);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (depth > 1)
|
||||
fBuoyancy = fCurrentRegion->fUpBuoyancy;
|
||||
else
|
||||
fBuoyancy = (fCurrentRegion->fUpBuoyancy - 1) * depth + 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (depth > 1)
|
||||
fBuoyancy = fCurrentRegion->fDownBuoyancy;
|
||||
else
|
||||
fBuoyancy = (fCurrentRegion->fDownBuoyancy - 1) * depth + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
@ -1,79 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#if 0//ndef PL_ANTI_GRAV_ACTION_H
|
||||
#define PL_ANTI_GRAV_ACTION_H
|
||||
|
||||
#include "plAvCallbackAction.h"
|
||||
|
||||
class plSwimRegionInterface;
|
||||
|
||||
class plAntiGravAction : public plAnimatedCallbackAction
|
||||
{
|
||||
public:
|
||||
plAntiGravAction(plHKPhysical *physical, plAGApplicator *rootApp);
|
||||
|
||||
/** Return the type of the action as defined in the enum plSimDefs::ActionType.
|
||||
Used to retrieve actions by entity/type indexing, and to
|
||||
reuse actions that can be shared between entities. */
|
||||
virtual plSimDefs::ActionType GetType();
|
||||
|
||||
/** Called by Havok at substep frequency. */
|
||||
void apply(Havok::Subspace &s, Havok::hkTime time);
|
||||
|
||||
void SetSurface(plSwimRegionInterface *region, hsScalar surfaceHeight);
|
||||
hsScalar GetBuoyancy() { return fBuoyancy; }
|
||||
hsBool IsOnGround() { return fOnGround; }
|
||||
hsBool HadContacts() { return fHadContacts; }
|
||||
|
||||
protected:
|
||||
void IAdjustBuoyancy();
|
||||
|
||||
hsBool fOnGround;
|
||||
hsBool fHadContacts;
|
||||
hsScalar fBuoyancy;
|
||||
hsScalar fSurfaceHeight;
|
||||
plSwimRegionInterface *fCurrentRegion;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -39,7 +39,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#include "plAvCallbackAction.h"
|
||||
|
||||
#include "../plStatusLog/plStatusLog.h"
|
||||
#include "plArmatureEffects.h"
|
||||
|
@ -54,7 +54,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "plAvBrainHuman.h"
|
||||
#include "plMatrixChannel.h"
|
||||
#include "plAvatarTasks.h"
|
||||
#include "plAvCallbackAction.h"
|
||||
#include "plPhysicalControllerCore.h"
|
||||
#include "plAvBrainCritter.h"
|
||||
|
||||
// global
|
||||
@ -534,8 +534,7 @@ void plArmatureModBase::EnablePhysics(hsBool status, UInt16 reason /* = kDisable
|
||||
// i.e. normal enabled physical
|
||||
void plArmatureModBase::EnablePhysicsKinematic(hsBool status)
|
||||
{
|
||||
if (fController)
|
||||
fController->Kinematic(status);
|
||||
EnablePhysics(!status, kDisableReasonKinematic);
|
||||
}
|
||||
|
||||
void plArmatureModBase::EnableDrawing(hsBool status, UInt16 reason /* = kDisableReasonUnknown */)
|
||||
@ -1302,7 +1301,7 @@ hsBool plArmatureMod::MsgReceive(plMessage* msg)
|
||||
if(spawnSO)
|
||||
{
|
||||
hsMatrix44 l2w = spawnSO->GetLocalToWorld();
|
||||
plWarpMsg *warpM = TRACKED_NEW plWarpMsg(nil, GetTarget(0)->GetKey(), 0, l2w);
|
||||
plWarpMsg *warpM = TRACKED_NEW plWarpMsg(nil, GetTarget(0)->GetKey(), plWarpMsg::kFlushTransform, l2w);
|
||||
warpM->Send();
|
||||
fWaitFlags &= ~kNeedSpawn;
|
||||
}
|
||||
@ -2007,7 +2006,7 @@ hsBool plArmatureMod::ValidatePhysics()
|
||||
return false;
|
||||
|
||||
if (!fController)
|
||||
fController = plPhysicalControllerCore::Create(GetTarget(0)->GetKey(), fPhysHeight, fPhysWidth);
|
||||
fController = plPhysicalControllerCore::Create(GetTarget(0)->GetKey(), fPhysHeight, fPhysWidth, (fBodyType == kBoneBaseMale || fBodyType == kBoneBaseFemale));
|
||||
|
||||
if (fController)
|
||||
{
|
||||
@ -2684,19 +2683,7 @@ void plArmatureMod::DumpToDebugDisplay(int &x, int &y, int lineHeight, char *str
|
||||
debugTxt.DrawString(x, y, strBuf);
|
||||
y += lineHeight;
|
||||
|
||||
hsPoint3 kPos;
|
||||
char *kinematic = "n.a.";
|
||||
const char* frozen = "n.a.";
|
||||
if (fController)
|
||||
{
|
||||
fController->GetKinematicPosition(kPos);
|
||||
kinematic = fController->IsKinematic() ? "on" : "off";
|
||||
}
|
||||
sprintf(strBuf, "kinematc(world): %.2f, %.2f, %.2f Kinematic: %3s",
|
||||
kPos.fX, kPos.fY, kPos.fZ,kinematic);
|
||||
debugTxt.DrawString(x, y, strBuf);
|
||||
y += lineHeight;
|
||||
|
||||
if (fController)
|
||||
frozen = fController->IsEnabled() ? "no" : "yes";
|
||||
|
||||
|
@ -145,6 +145,7 @@ public:
|
||||
kDisableReasonCCR = 0x0008,
|
||||
kDisableReasonVehicle = 0x0010,
|
||||
kDisableReasonGenericBrain = 0x0020,
|
||||
kDisableReasonKinematic = 0x0040
|
||||
};
|
||||
void EnablePhysics(hsBool status, UInt16 reason = kDisableReasonUnknown);
|
||||
void EnablePhysicsKinematic(hsBool status);
|
||||
|
@ -42,7 +42,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "hsConfig.h"
|
||||
#include "hsWindows.h"
|
||||
|
||||
#include "plAvCallbackAction.h"
|
||||
#include "plPhysicalControllerCore.h"
|
||||
#include "plAvBrainCritter.h"
|
||||
#include "plAvBrainHuman.h"
|
||||
#include "plArmatureMod.h"
|
||||
@ -127,7 +127,7 @@ protected:
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
plAvBrainCritter::plAvBrainCritter(): fCallbackAction(nil), fCurMode(kIdle), fNextMode(kIdle), fFadingNextBehavior(true),
|
||||
plAvBrainCritter::plAvBrainCritter(): fWalkingStrategy(nil), fCurMode(kIdle), fNextMode(kIdle), fFadingNextBehavior(true),
|
||||
fLocallyControlled(false), fAvoidingAvatars(false), fFinalGoalPos(0, 0, 0), fImmediateGoalPos(0, 0, 0), fDotGoal(0),
|
||||
fAngRight(0)
|
||||
{
|
||||
@ -145,8 +145,8 @@ plAvBrainCritter::~plAvBrainCritter()
|
||||
fBehaviors[i] = nil;
|
||||
}
|
||||
|
||||
delete fCallbackAction;
|
||||
fCallbackAction = nil;
|
||||
delete fWalkingStrategy;
|
||||
fWalkingStrategy = nil;
|
||||
|
||||
fUserBehaviors.clear();
|
||||
fReceivers.clear();
|
||||
@ -169,8 +169,8 @@ hsBool plAvBrainCritter::Apply(double time, hsScalar elapsed)
|
||||
IProcessBehavior(time, elapsed); // just continue with the currently running one
|
||||
|
||||
// update our controller to keep us turned and moving to where we want to go
|
||||
fCallbackAction->RecalcVelocity(time, time - elapsed);
|
||||
fCallbackAction->SetTurnStrength(IGetTurnStrength(time));
|
||||
fWalkingStrategy->SetTurnStrength(IGetTurnStrength(time));
|
||||
fWalkingStrategy->RecalcVelocity(time, elapsed);
|
||||
|
||||
return plArmatureBrain::Apply(time, elapsed);
|
||||
}
|
||||
@ -190,13 +190,13 @@ void plAvBrainCritter::Activate(plArmatureModBase* avMod)
|
||||
IInitBaseAnimations();
|
||||
|
||||
// create the controller if we haven't done so already
|
||||
if (!fCallbackAction)
|
||||
if (!fWalkingStrategy)
|
||||
{
|
||||
plSceneObject* avObj = fArmature->GetTarget(0);
|
||||
plAGModifier* agMod = const_cast<plAGModifier*>(plAGModifier::ConvertNoRef(FindModifierByClass(avObj, plAGModifier::Index())));
|
||||
plPhysicalControllerCore* controller = avMod->GetController();
|
||||
fCallbackAction = TRACKED_NEW plWalkingController(avObj, agMod->GetApplicator(kAGPinTransform), controller);
|
||||
fCallbackAction->ActivateController();
|
||||
fWalkingStrategy = TRACKED_NEW plWalkingStrategy(agMod->GetApplicator(kAGPinTransform), controller);
|
||||
controller->SetMovementStrategy(fWalkingStrategy);
|
||||
}
|
||||
|
||||
// tell people that care that we are good to go
|
||||
@ -226,7 +226,7 @@ void plAvBrainCritter::Resume()
|
||||
// fade in the idle
|
||||
fNextMode = kIdle;
|
||||
|
||||
fCallbackAction->Reset(false);
|
||||
fWalkingStrategy->Reset(false);
|
||||
|
||||
plArmatureBrain::Resume();
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user