Major and great font update : added support for scalable fonts (better not wait for them to implement it), and added a second more colourful font for titles
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/irrlicht@4240 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
e46251008a
commit
d9f6abd511
@ -11,6 +11,8 @@ Logo and Logo_slim : under CC-BY-SA 3.0+ by 'rastapax'
|
||||
|
||||
difficulty_*.png icons, released under Creative-Commons BY-SA 3, By Conso (Constantin Pelikan)
|
||||
|
||||
Okolaks font by Gluk, released under Open Font License
|
||||
|
||||
|
||||
====
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="5%" y="2%" width="90%" height="96%" layout="vertical-row" >
|
||||
|
||||
<label I18N="Title for challenges screen" text="Challenges : Trophy Room" text_align="center" width="100%" />
|
||||
<header I18N="Title for challenges screen" text="Challenges : Trophy Room" text_align="center" width="100%" />
|
||||
|
||||
<box id="animated_area" width="100%" proportion="1" layout="vertical-row">
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
<icon id="logo" align="center" proportion="4" width="100%" icon="gui/logo_slim.png"/>
|
||||
|
||||
<label I18N="Title in credits screen" text="Credits" width="100%" />
|
||||
<header I18N="Title in credits screen" text="Credits" width="100%" />
|
||||
|
||||
<box id="animated_area" width="100%" proportion="10">
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
|
||||
|
||||
<label align="center" text="SuperTuxKart Help"/>
|
||||
<header align="center" text="SuperTuxKart Help"/>
|
||||
<spacer height="15" width="10"/>
|
||||
|
||||
<tabs id="category" height="10%" max_height="110" width="100%" align="center">
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
|
||||
|
||||
<label align="center" text="SuperTuxKart Help"/>
|
||||
<header align="center" text="SuperTuxKart Help"/>
|
||||
<spacer height="15" width="10"/>
|
||||
|
||||
<tabs id="category" height="10%" max_height="110" width="100%" align="center">
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
|
||||
|
||||
<label align="center" text="SuperTuxKart Help"/>
|
||||
<header align="center" text="SuperTuxKart Help"/>
|
||||
<spacer height="15" width="10"/>
|
||||
|
||||
<tabs id="category" height="10%" max_height="110" width="100%" align="center">
|
||||
|
@ -2,11 +2,16 @@
|
||||
|
||||
<div x="2%" y="1%" width="96%" height="99%" layout="vertical-row" >
|
||||
|
||||
<label width="100%" height="25"
|
||||
<header width="100%"
|
||||
I18N="In the kart selection (player setup) screen"
|
||||
text="Choose a Kart (more players can join by pressing 'fire' now)"
|
||||
text="Choose a Kart"
|
||||
align="center" text_align="center" />
|
||||
|
||||
<label width="100%" height="25"
|
||||
I18N="In the kart selection (player setup) screen"
|
||||
text="(more players can join by pressing 'fire' now)"
|
||||
align="center" text_align="center" />
|
||||
|
||||
<placeholder id="playerskarts" width="100%" proportion="4">
|
||||
<!-- Contents is added programatically -->
|
||||
</placeholder>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
|
||||
|
||||
<label align="center" text="SuperTuxKart Options"/>
|
||||
<header align="center" text="SuperTuxKart Options"/>
|
||||
<spacer height="15" width="10"/>
|
||||
|
||||
<tabs id="options_choice" height="10%" max_height="110" width="100%" align="center">
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
|
||||
|
||||
<label align="center" text="SuperTuxKart Options"/>
|
||||
<header align="center" text="SuperTuxKart Options"/>
|
||||
<spacer height="15" width="10"/>
|
||||
|
||||
<tabs id="options_choice" height="10%" max_height="110" width="100%" align="center">
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
|
||||
|
||||
<label align="center" text="SuperTuxKart Options"/>
|
||||
<header align="center" text="SuperTuxKart Options"/>
|
||||
<spacer height="15" width="10"/>
|
||||
|
||||
<tabs id="options_choice" height="10%" max_height="110" width="100%" align="center">
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="5%" y="5%" width="90%" height="90%" layout="vertical-row" >
|
||||
|
||||
<label width="100%" height="25" text="Race Setup" align="center" text_align="center" />
|
||||
<header width="100%" height="25" text="Race Setup" align="center" text_align="center" />
|
||||
|
||||
<spacer proportion="1" width="25"/>
|
||||
|
||||
|
BIN
data/gui/title_font.png
Normal file
BIN
data/gui/title_font.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 143 KiB |
968
data/gui/title_font.xml
Normal file
968
data/gui/title_font.xml
Normal file
@ -0,0 +1,968 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<font type="bitmap">
|
||||
|
||||
<Texture index="0" filename="title_font.png" hasAlpha="true" />
|
||||
|
||||
<!--
|
||||
<c c="" r="0, 0, 1, 33" o="11" />
|
||||
<c c="" r="2, 0, 3, 33" o="11" />
|
||||
<c c="" r="4, 0, 5, 33" o="11" />
|
||||
<c c="" r="6, 0, 7, 33" o="11" />
|
||||
<c c="" r="8, 0, 9, 33" o="11" />
|
||||
<c c="" r="10, 0, 11, 33" o="11" />
|
||||
<c c="" r="12, 0, 13, 33" o="11" />
|
||||
<c c="" r="14, 0, 15, 33" o="11" />
|
||||
<c c="" r="16, 0, 17, 33" o="11" />
|
||||
<c c=" " r="18, 0, 19, 33" o="11" />
|
||||
<c c="
|
||||
" r="20, 0, 21, 33" o="11" />
|
||||
<c c="" r="22, 0, 23, 33" o="11" />
|
||||
<c c="" r="24, 0, 25, 33" o="11" />
|
||||
<c c="
" r="26, 0, 27, 33" o="11" />
|
||||
<c c="" r="28, 0, 29, 33" o="11" />
|
||||
<c c="" r="30, 0, 31, 33" o="11" />
|
||||
<c c="" r="32, 0, 33, 33" o="11" />
|
||||
<c c="" r="34, 0, 35, 33" o="11" />
|
||||
<c c="" r="36, 0, 37, 33" o="11" />
|
||||
<c c="" r="38, 0, 39, 33" o="11" />
|
||||
<c c="" r="40, 0, 41, 33" o="11" />
|
||||
<c c="" r="42, 0, 43, 33" o="11" />
|
||||
<c c="" r="44, 0, 45, 33" o="11" />
|
||||
<c c="" r="46, 0, 47, 33" o="11" />
|
||||
<c c="" r="48, 0, 49, 33" o="11" />
|
||||
<c c="" r="50, 0, 51, 33" o="21" />
|
||||
<c c="" r="52, 0, 53, 33" o="11" />
|
||||
<c c="" r="54, 0, 55, 33" o="11" />
|
||||
<c c="" r="56, 0, 57, 33" o="11" />
|
||||
<c c="" r="58, 0, 59, 33" o="11" />
|
||||
<c c="" r="60, 0, 61, 33" o="11" />
|
||||
<c c="" r="62, 0, 63, 33" o="21" />
|
||||
<c c=" " r="64, 0, 65, 33" o="13" />
|
||||
<c c="!" r="66, 0, 69, 33" u="1" o="1" />
|
||||
<c c=""" r="70, 0, 77, 33" u="1" o="1" />
|
||||
<c c="#" r="78, 0, 92, 33" u="1" o="1" />
|
||||
<c c="$" r="93, 0, 106, 33" u="1" o="1" />
|
||||
<c c="%" r="107, 0, 125, 33" o="1" />
|
||||
<c c="&" r="126, 0, 139, 33" u="1" o="1" />
|
||||
<c c="'" r="140, 0, 143, 33" u="1" o="1" />
|
||||
<c c="(" r="144, 0, 150, 33" u="1" o="1" />
|
||||
<c c=")" r="151, 0, 157, 33" u="1" o="1" />
|
||||
<c c="*" r="158, 0, 164, 33" o="1" />
|
||||
<c c="+" r="165, 0, 177, 33" u="1" o="1" />
|
||||
<c c="," r="178, 0, 183, 33" o="1" />
|
||||
<c c="-" r="184, 0, 198, 33" o="1" />
|
||||
<c c="." r="199, 0, 202, 33" u="1" o="1" />
|
||||
<c c="/" r="203, 0, 215, 33" u="1" o="1" />
|
||||
<c c="0" r="216, 0, 229, 33" u="1" o="1" />
|
||||
<c c="1" r="230, 0, 236, 33" o="1" />
|
||||
<c c="2" r="237, 0, 252, 33" o="1" />
|
||||
<c c="3" r="253, 0, 266, 33" u="1" o="1" />
|
||||
<c c="4" r="267, 0, 280, 33" u="1" o="1" />
|
||||
<c c="5" r="281, 0, 294, 33" u="1" o="1" />
|
||||
<c c="6" r="295, 0, 308, 33" u="1" o="1" />
|
||||
<c c="7" r="309, 0, 322, 33" u="1" o="1" />
|
||||
<c c="8" r="323, 0, 337, 33" u="1" o="2" />
|
||||
<c c="9" r="338, 0, 351, 33" u="1" o="1" />
|
||||
<c c=":" r="352, 0, 355, 33" u="1" o="1" />
|
||||
<c c=";" r="356, 0, 361, 33" o="1" />
|
||||
<c c="<" r="362, 0, 369, 33" o="3" />
|
||||
<c c="=" r="370, 0, 384, 33" o="1" />
|
||||
<c c=">" r="385, 0, 392, 33" o="3" />
|
||||
<c c="?" r="393, 0, 405, 33" u="1" o="1" />
|
||||
<c c="@" r="406, 0, 430, 33" o="1" />
|
||||
-->
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c=" " r="101, 501, 200, 600" o="11" />
|
||||
<c c="
|
||||
" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="
" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="21" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="11" />
|
||||
<c c="" r="101, 501, 200, 600" o="21" />
|
||||
<c c=" " r="101, 501, 200, 600" o="13" />
|
||||
<c c="!" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c=""" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="#" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="$" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="%" r="101, 501, 200, 600" o="1" />
|
||||
<c c="&"r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="'" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="(" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c=")" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="*" r="101, 501, 200, 600" o="1" />
|
||||
<c c="+" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="," r="101, 501, 200, 600" o="1" />
|
||||
<c c="-" r="101, 501, 200, 600" o="1" />
|
||||
<c c="." r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="/" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="0" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="1" r="101, 501, 200, 600" o="1" />
|
||||
<c c="2" r="101, 501, 200, 600" o="1" />
|
||||
<c c="3" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="4" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="5" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="6" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="7" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="8" r="101, 501, 200, 600" u="1" o="2" />
|
||||
<c c="9" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c=":" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c=";" r="101, 501, 200, 600" o="1" />
|
||||
<c c="<" r="101, 501, 200, 600" o="3" />
|
||||
<c c="=" r="101, 501, 200, 600" o="1" />
|
||||
<c c=">" r="101, 501, 200, 600" o="3" />
|
||||
<c c="?" r="101, 501, 200, 600" u="1" o="1" />
|
||||
<c c="@" r="101, 501, 200, 600" o="1" />
|
||||
|
||||
|
||||
|
||||
<c c="A" r="0, 0, 100, 100" u="1" o="1" />
|
||||
<c c="B" r="101, 0, 200, 100" u="1" o="1" />
|
||||
<c c="C" r="201, 0, 300, 100" u="1" o="1" />
|
||||
<c c="D" r="301, 0, 400, 100" u="1" o="1" />
|
||||
<c c="E" r="401, 0, 500, 100" u="1" o="1" />
|
||||
|
||||
<c c="F" r="0, 101, 100, 200" u="1" o="1" />
|
||||
<c c="G" r="101, 101, 200, 200" u="1" o="1" />
|
||||
<c c="H" r="201, 101, 300, 200" u="1" o="1" />
|
||||
<c c="I" r="301, 101, 400, 200" u="1" o="1" />
|
||||
<c c="J" r="401, 101, 500, 200" u="1" o="1" />
|
||||
|
||||
<c c="K" r="0, 201, 100, 300" u="1" o="1" />
|
||||
<c c="L" r="101, 201, 200, 300" u="1" o="1" />
|
||||
<c c="M" r="201, 201, 300, 300" u="1" o="1" />
|
||||
<c c="N" r="301, 201, 400, 300" u="1" o="1" />
|
||||
<c c="O" r="401, 201, 500, 300" u="1" o="1" />
|
||||
|
||||
<c c="P" r="0, 301, 100, 400" u="1" o="1" />
|
||||
<c c="Q" r="101, 301, 200, 400" u="1" o="1" />
|
||||
<c c="R" r="201, 301, 300, 400" u="1" o="1" />
|
||||
<c c="S" r="301, 301, 400, 400" u="1" o="1" />
|
||||
<c c="T" r="401, 301, 500, 400" u="1" o="1" />
|
||||
|
||||
<c c="U" r="0, 401, 100, 500" u="1" o="1" />
|
||||
<c c="V" r="101, 401, 200, 500" u="1" o="1" />
|
||||
<c c="W" r="201, 401, 300, 500" u="1" o="1" />
|
||||
<c c="X" r="301, 401, 400, 500" u="1" o="1" />
|
||||
<c c="Y" r="401, 401, 500, 500" u="1" o="1" />
|
||||
|
||||
<c c="Z" r="0, 501, 100, 600" u="1" o="1" />
|
||||
|
||||
<!--
|
||||
<c c="[" r="289, 34, 293, 67" u="1" o="1" />
|
||||
<c c="\" r="294, 34, 307, 67" o="1" />
|
||||
<c c="]" r="308, 34, 313, 67" u="1" />
|
||||
<c c="^" r="314, 34, 325, 67" u="1" o="2" />
|
||||
<c c="_" r="326, 34, 342, 67" o="1" />
|
||||
<c c="`" r="343, 34, 348, 67" u="1" />
|
||||
-->
|
||||
|
||||
<c c="a" r="0, 0, 100, 100" u="1" o="1" />
|
||||
<c c="b" r="101, 0, 200, 100" u="1" o="1" />
|
||||
<c c="c" r="201, 0, 300, 100" u="1" o="1" />
|
||||
<c c="d" r="301, 0, 400, 100" u="1" o="1" />
|
||||
<c c="e" r="401, 0, 500, 100" u="1" o="1" />
|
||||
|
||||
<c c="f" r="0, 101, 100, 200" u="1" o="1" />
|
||||
<c c="g" r="101, 101, 200, 200" u="1" o="1" />
|
||||
<c c="h" r="201, 101, 300, 200" u="1" o="1" />
|
||||
<c c="i" r="301, 101, 400, 200" u="1" o="1" />
|
||||
<c c="j" r="401, 101, 500, 200" u="1" o="1" />
|
||||
|
||||
<c c="k" r="0, 201, 100, 300" u="1" o="1" />
|
||||
<c c="l" r="101, 201, 200, 300" u="1" o="1" />
|
||||
<c c="m" r="201, 201, 300, 300" u="1" o="1" />
|
||||
<c c="n" r="301, 201, 400, 300" u="1" o="1" />
|
||||
<c c="o" r="401, 201, 500, 300" u="1" o="1" />
|
||||
|
||||
<c c="p" r="0, 301, 100, 400" u="1" o="1" />
|
||||
<c c="q" r="101, 301, 200, 400" u="1" o="1" />
|
||||
<c c="r" r="201, 301, 300, 400" u="1" o="1" />
|
||||
<c c="s" r="301, 301, 400, 400" u="1" o="1" />
|
||||
<c c="t" r="401, 301, 500, 400" u="1" o="1" />
|
||||
|
||||
<c c="u" r="0, 401, 100, 500" u="1" o="1" />
|
||||
<c c="v" r="101, 401, 200, 500" u="1" o="1" />
|
||||
<c c="w" r="201, 401, 300, 500" u="1" o="1" />
|
||||
<c c="x" r="301, 401, 400, 500" u="1" o="1" />
|
||||
<c c="y" r="401, 401, 500, 500" u="1" o="1" />
|
||||
|
||||
<c c="z" r="0, 501, 100, 600" u="1" o="1" />
|
||||
|
||||
<!--
|
||||
<c c="{" r="177, 68, 185, 101" u="1" />
|
||||
<c c="|" r="186, 68, 189, 101" o="1" />
|
||||
<c c="}" r="190, 68, 198, 101" u="1" />
|
||||
<c c="~" r="199, 68, 211, 101" u="1" o="2" />
|
||||
<c c="" r="212, 68, 213, 101" o="11" />
|
||||
<c c="" r="214, 68, 215, 101" o="11" />
|
||||
<c c="" r="216, 68, 217, 101" o="11" />
|
||||
<c c="" r="218, 68, 219, 101" o="11" />
|
||||
<c c="" r="220, 68, 221, 101" o="11" />
|
||||
<c c="" r="222, 68, 223, 101" o="11" />
|
||||
<c c="
" r="224, 68, 225, 101" o="11" />
|
||||
<c c="" r="226, 68, 227, 101" o="11" />
|
||||
<c c="" r="228, 68, 229, 101" o="11" />
|
||||
<c c="" r="230, 68, 231, 101" o="11" />
|
||||
<c c="" r="232, 68, 233, 101" o="11" />
|
||||
<c c="" r="234, 68, 235, 101" o="11" />
|
||||
<c c="" r="236, 68, 237, 101" o="11" />
|
||||
<c c="" r="238, 68, 239, 101" o="11" />
|
||||
<c c="" r="240, 68, 241, 101" o="11" />
|
||||
<c c="" r="242, 68, 243, 101" o="11" />
|
||||
<c c="" r="244, 68, 245, 101" o="11" />
|
||||
<c c="" r="246, 68, 247, 101" o="11" />
|
||||
<c c="" r="248, 68, 249, 101" o="11" />
|
||||
<c c="" r="250, 68, 251, 101" o="11" />
|
||||
<c c="" r="252, 68, 253, 101" o="11" />
|
||||
<c c="" r="254, 68, 255, 101" o="11" />
|
||||
<c c="" r="256, 68, 257, 101" o="11" />
|
||||
<c c="" r="258, 68, 259, 101" o="11" />
|
||||
<c c="" r="260, 68, 261, 101" o="11" />
|
||||
<c c="" r="262, 68, 263, 101" o="11" />
|
||||
<c c="" r="264, 68, 265, 101" o="11" />
|
||||
<c c="" r="266, 68, 267, 101" o="11" />
|
||||
<c c="" r="268, 68, 269, 101" o="11" />
|
||||
<c c="" r="270, 68, 271, 101" o="11" />
|
||||
<c c="¡" r="272, 68, 275, 101" u="1" o="1" />
|
||||
<c c="¢" r="276, 68, 290, 101" u="1" />
|
||||
<c c="£" r="291, 68, 301, 101" o="1" />
|
||||
<c c="¤" r="302, 68, 311, 101" u="1" o="1" />
|
||||
<c c="¥" r="312, 68, 325, 101" u="1" o="1" />
|
||||
<c c="¦" r="326, 68, 329, 101" u="1" o="1" />
|
||||
<c c="§" r="330, 68, 344, 101" u="1" o="1" />
|
||||
<c c="¨" r="345, 68, 356, 101" u="3" o="3" />
|
||||
<c c="©" r="357, 68, 377, 101" o="1" />
|
||||
<c c="ª" r="378, 68, 388, 101" u="1" o="1" />
|
||||
<c c="«" r="389, 68, 402, 101" o="3" />
|
||||
<c c="" r="403, 68, 404, 101" o="11" />
|
||||
<c c="®" r="405, 68, 426, 101" />
|
||||
<c c="¯" r="427, 68, 441, 101" u="1" o="2" />
|
||||
<c c="°" r="442, 68, 448, 101" u="1" />
|
||||
<c c="±" r="449, 68, 461, 101" u="1" o="1" />
|
||||
<c c="²" r="462, 68, 473, 101" />
|
||||
<c c="³" r="474, 68, 484, 101" u="1" />
|
||||
<c c="´" r="485, 68, 490, 101" u="1" />
|
||||
<c c="µ" r="491, 68, 505, 101" u="1" />
|
||||
<c c="¶" r="0, 102, 11, 135" u="1" o="1" />
|
||||
<c c="·" r="12, 102, 16, 135" u="1" o="1" />
|
||||
<c c="¸" r="17, 102, 21, 135" u="12" o="2" />
|
||||
<c c="¹" r="22, 102, 27, 135" />
|
||||
<c c="º" r="28, 102, 38, 135" u="1" o="1" />
|
||||
<c c="»" r="39, 102, 52, 135" o="3" />
|
||||
<c c="¼" r="53, 102, 71, 135" u="1" />
|
||||
<c c="½" r="72, 102, 91, 135" u="1" o="1" />
|
||||
<c c="¾" r="92, 102, 114, 135" u="1" />
|
||||
<c c="¿" r="115, 102, 127, 135" u="1" o="1" />
|
||||
<c c="À" r="128, 102, 141, 135" u="1" o="1" />
|
||||
<c c="Á" r="142, 102, 155, 135" u="1" o="1" />
|
||||
<c c="Â" r="156, 102, 169, 135" u="1" o="1" />
|
||||
<c c="Ã" r="170, 102, 183, 135" u="1" o="1" />
|
||||
<c c="Ä" r="184, 102, 197, 135" u="1" o="1" />
|
||||
<c c="Å" r="198, 102, 211, 135" u="1" o="1" />
|
||||
<c c="Æ" r="212, 102, 235, 135" u="1" o="1" />
|
||||
<c c="Ç" r="236, 102, 249, 135" u="1" o="1" />
|
||||
<c c="È" r="250, 102, 263, 135" u="1" o="1" />
|
||||
<c c="É" r="264, 102, 277, 135" u="1" o="1" />
|
||||
<c c="Ê" r="278, 102, 291, 135" u="1" o="1" />
|
||||
<c c="Ë" r="292, 102, 305, 135" u="1" o="1" />
|
||||
<c c="Ì" r="306, 102, 310, 135" o="1" />
|
||||
<c c="Í" r="311, 102, 316, 135" u="1" o="-1" />
|
||||
<c c="Î" r="317, 102, 325, 135" u="-2" o="-1" />
|
||||
<c c="Ï" r="326, 102, 333, 135" u="-1" o="-1" />
|
||||
<c c="Ð" r="334, 102, 348, 135" o="1" />
|
||||
<c c="Ñ" r="349, 102, 362, 135" u="1" o="1" />
|
||||
<c c="Ò" r="363, 102, 376, 135" u="1" o="1" />
|
||||
<c c="Ó" r="377, 102, 390, 135" u="1" o="1" />
|
||||
<c c="Ô" r="391, 102, 404, 135" u="1" o="1" />
|
||||
<c c="Õ" r="405, 102, 418, 135" u="1" o="1" />
|
||||
<c c="Ö" r="419, 102, 432, 135" u="1" o="1" />
|
||||
<c c="×" r="433, 102, 442, 135" u="1" o="1" />
|
||||
<c c="Ø" r="443, 102, 456, 135" u="1" o="1" />
|
||||
<c c="Ù" r="457, 102, 470, 135" u="1" o="1" />
|
||||
<c c="Ú" r="471, 102, 484, 135" u="1" o="1" />
|
||||
<c c="Û" r="485, 102, 498, 135" u="1" o="1" />
|
||||
<c c="Ü" r="499, 102, 512, 135" u="1" o="1" />
|
||||
<c c="Ý" r="0, 136, 13, 169" u="1" o="1" />
|
||||
<c c="Þ" r="14, 136, 27, 169" u="1" o="1" />
|
||||
<c c="ß" r="28, 136, 41, 169" u="1" o="1" />
|
||||
<c c="à" r="42, 136, 55, 169" u="1" o="1" />
|
||||
<c c="á" r="56, 136, 69, 169" u="1" o="1" />
|
||||
<c c="â" r="70, 136, 83, 169" u="1" o="1" />
|
||||
<c c="ã" r="84, 136, 97, 169" u="1" o="1" />
|
||||
<c c="ä" r="98, 136, 111, 169" u="1" o="1" />
|
||||
<c c="å" r="112, 136, 125, 169" u="1" o="1" />
|
||||
<c c="æ" r="126, 136, 149, 169" u="1" o="1" />
|
||||
<c c="ç" r="150, 136, 163, 169" u="1" o="1" />
|
||||
<c c="è" r="164, 136, 177, 169" u="1" o="1" />
|
||||
<c c="é" r="178, 136, 191, 169" u="1" o="1" />
|
||||
<c c="ê" r="192, 136, 205, 169" u="1" o="1" />
|
||||
<c c="ë" r="206, 136, 219, 169" u="1" o="1" />
|
||||
<c c="ì" r="220, 136, 227, 169" />
|
||||
<c c="í" r="228, 136, 234, 169" u="1" />
|
||||
<c c="î" r="235, 136, 245, 169" o="-3" />
|
||||
<c c="ï" r="246, 136, 254, 169" o="-1" />
|
||||
<c c="ð" r="255, 136, 268, 169" u="1" o="1" />
|
||||
<c c="ñ" r="269, 136, 282, 169" u="1" o="1" />
|
||||
<c c="ò" r="283, 136, 296, 169" u="1" o="1" />
|
||||
<c c="ó" r="297, 136, 310, 169" u="1" o="1" />
|
||||
<c c="ô" r="311, 136, 324, 169" u="1" o="1" />
|
||||
<c c="õ" r="325, 136, 338, 169" u="1" o="1" />
|
||||
<c c="ö" r="339, 136, 352, 169" u="1" o="1" />
|
||||
<c c="÷" r="353, 136, 367, 169" o="1" />
|
||||
<c c="ø" r="368, 136, 382, 169" u="1" o="2" />
|
||||
<c c="ù" r="383, 136, 396, 169" u="1" o="1" />
|
||||
<c c="ú" r="397, 136, 410, 169" u="1" o="1" />
|
||||
<c c="û" r="411, 136, 424, 169" u="1" o="1" />
|
||||
<c c="ü" r="425, 136, 438, 169" u="1" o="1" />
|
||||
<c c="ý" r="439, 136, 452, 169" u="1" o="1" />
|
||||
<c c="þ" r="453, 136, 466, 169" u="1" o="1" />
|
||||
<c c="ÿ" r="467, 136, 480, 169" u="1" o="1" />
|
||||
<c c="Ā" r="481, 136, 495, 169" o="1" />
|
||||
<c c="ā" r="496, 136, 509, 169" u="1" o="1" />
|
||||
<c c="Ă" r="0, 170, 13, 203" u="1" o="1" />
|
||||
<c c="ă" r="14, 170, 27, 203" u="1" o="1" />
|
||||
<c c="Ą" r="28, 170, 41, 203" u="1" o="1" />
|
||||
<c c="ą" r="42, 170, 55, 203" u="1" o="1" />
|
||||
<c c="Ć" r="56, 170, 69, 203" u="1" o="1" />
|
||||
<c c="ć" r="70, 170, 83, 203" u="1" o="1" />
|
||||
<c c="Ĉ" r="84, 170, 97, 203" u="1" o="1" />
|
||||
<c c="ĉ" r="98, 170, 111, 203" u="1" o="1" />
|
||||
<c c="Ċ" r="112, 170, 125, 203" u="1" o="1" />
|
||||
<c c="ċ" r="126, 170, 139, 203" u="1" o="1" />
|
||||
<c c="Č" r="140, 170, 153, 203" u="1" o="1" />
|
||||
<c c="č" r="154, 170, 167, 203" u="1" o="1" />
|
||||
<c c="Ď" r="168, 170, 181, 203" u="1" o="1" />
|
||||
<c c="ď" r="182, 170, 199, 203" u="1" />
|
||||
<c c="Đ" r="200, 170, 214, 203" o="1" />
|
||||
<c c="đ" r="215, 170, 229, 203" u="1" o="1" />
|
||||
<c c="Ē" r="230, 170, 244, 203" o="1" />
|
||||
<c c="ē" r="245, 170, 259, 203" o="1" />
|
||||
<c c="Ĕ" r="260, 170, 273, 203" u="1" o="1" />
|
||||
<c c="ĕ" r="274, 170, 287, 203" u="1" o="1" />
|
||||
<c c="Ė" r="288, 170, 301, 203" u="1" o="1" />
|
||||
<c c="ė" r="302, 170, 315, 203" u="1" o="1" />
|
||||
<c c="Ę" r="316, 170, 329, 203" u="1" o="1" />
|
||||
<c c="ę" r="330, 170, 343, 203" u="1" o="1" />
|
||||
<c c="Ě" r="344, 170, 357, 203" u="1" o="1" />
|
||||
<c c="ě" r="358, 170, 371, 203" u="1" o="1" />
|
||||
<c c="Ĝ" r="372, 170, 385, 203" u="1" o="1" />
|
||||
<c c="ĝ" r="386, 170, 399, 203" u="1" o="1" />
|
||||
<c c="Ğ" r="400, 170, 413, 203" u="1" o="1" />
|
||||
<c c="ğ" r="414, 170, 427, 203" u="1" o="1" />
|
||||
<c c="Ġ" r="428, 170, 441, 203" u="1" o="1" />
|
||||
<c c="ġ" r="442, 170, 455, 203" u="1" o="1" />
|
||||
<c c="Ģ" r="456, 170, 469, 203" u="1" o="1" />
|
||||
<c c="ģ" r="470, 170, 483, 203" u="1" o="1" />
|
||||
<c c="Ĥ" r="484, 170, 497, 203" u="1" o="1" />
|
||||
<c c="ĥ" r="498, 170, 511, 203" u="1" o="1" />
|
||||
<c c="Ħ" r="0, 204, 16, 237" o="1" />
|
||||
<c c="ħ" r="17, 204, 31, 237" o="1" />
|
||||
<c c="Ĩ" r="32, 204, 38, 237" o="-1" />
|
||||
<c c="ĩ" r="39, 204, 47, 237" o="-1" />
|
||||
<c c="Ī" r="48, 204, 53, 237" />
|
||||
<c c="ī" r="54, 204, 61, 237" />
|
||||
<c c="Ĭ" r="62, 204, 69, 237" u="-1" o="-1" />
|
||||
<c c="ĭ" r="70, 204, 79, 237" o="-2" />
|
||||
<c c="Į" r="80, 204, 84, 237" o="1" />
|
||||
<c c="į" r="85, 204, 92, 237" />
|
||||
<c c="İ" r="93, 204, 96, 237" u="1" o="1" />
|
||||
<c c="ı" r="97, 204, 103, 237" u="1" />
|
||||
<c c="IJ" r="104, 204, 113, 237" u="1" o="1" />
|
||||
<c c="ij" r="114, 204, 124, 237" o="1" />
|
||||
<c c="Ĵ" r="125, 204, 134, 237" u="-1" o="-1" />
|
||||
<c c="ĵ" r="135, 204, 143, 237" u="-1" o="-1" />
|
||||
<c c="Ķ" r="144, 204, 157, 237" u="1" o="1" />
|
||||
<c c="ķ" r="158, 204, 171, 237" u="1" o="1" />
|
||||
<c c="ĸ" r="172, 204, 185, 237" u="1" o="1" />
|
||||
<c c="Ĺ" r="186, 204, 197, 237" o="1" />
|
||||
<c c="ĺ" r="198, 204, 204, 237" u="1" />
|
||||
<c c="Ļ" r="205, 204, 216, 237" o="1" />
|
||||
<c c="ļ" r="217, 204, 223, 237" u="1" />
|
||||
<c c="Ľ" r="224, 204, 235, 237" o="1" />
|
||||
<c c="ľ" r="236, 204, 244, 237" u="1" />
|
||||
<c c="Ŀ" r="245, 204, 256, 237" o="1" />
|
||||
<c c="ŀ" r="257, 204, 264, 237" u="1" o="-1" />
|
||||
<c c="Ł" r="265, 204, 275, 237" o="1" />
|
||||
<c c="ł" r="276, 204, 283, 237" />
|
||||
<c c="Ń" r="284, 204, 297, 237" u="1" o="1" />
|
||||
<c c="ń" r="298, 204, 311, 237" u="1" o="1" />
|
||||
<c c="Ņ" r="312, 204, 325, 237" u="1" o="1" />
|
||||
<c c="ņ" r="326, 204, 339, 237" u="1" o="1" />
|
||||
<c c="Ň" r="340, 204, 353, 237" u="1" o="1" />
|
||||
<c c="ň" r="354, 204, 367, 237" u="1" o="1" />
|
||||
<c c="Ŋ" r="368, 204, 381, 237" u="1" o="1" />
|
||||
<c c="ŋ" r="382, 204, 395, 237" u="1" o="1" />
|
||||
<c c="Ō" r="396, 204, 410, 237" o="1" />
|
||||
<c c="ō" r="411, 204, 425, 237" o="1" />
|
||||
<c c="Ŏ" r="426, 204, 439, 237" u="1" o="1" />
|
||||
<c c="ŏ" r="440, 204, 453, 237" u="1" o="1" />
|
||||
<c c="Ő" r="454, 204, 467, 237" u="1" o="1" />
|
||||
<c c="ő" r="468, 204, 481, 237" u="1" o="1" />
|
||||
<c c="Œ" r="482, 204, 505, 237" u="1" o="1" />
|
||||
<c c="œ" r="0, 238, 23, 271" u="1" o="1" />
|
||||
<c c="Ŕ" r="24, 238, 37, 271" u="1" o="1" />
|
||||
<c c="ŕ" r="38, 238, 45, 271" u="1" o="1" />
|
||||
<c c="Ŗ" r="46, 238, 59, 271" u="1" o="1" />
|
||||
<c c="ŗ" r="60, 238, 67, 271" u="1" o="1" />
|
||||
<c c="Ř" r="68, 238, 81, 271" u="1" o="1" />
|
||||
<c c="ř" r="82, 238, 92, 271" o="-1" />
|
||||
<c c="Ś" r="93, 238, 106, 271" u="1" o="1" />
|
||||
<c c="ś" r="107, 238, 120, 271" u="1" o="1" />
|
||||
<c c="Ŝ" r="121, 238, 134, 271" u="1" o="1" />
|
||||
<c c="ŝ" r="135, 238, 148, 271" u="1" o="1" />
|
||||
<c c="Ş" r="149, 238, 162, 271" u="1" o="1" />
|
||||
<c c="ş" r="163, 238, 176, 271" u="1" o="1" />
|
||||
<c c="Š" r="177, 238, 190, 271" u="1" o="1" />
|
||||
<c c="š" r="191, 238, 204, 271" u="1" o="1" />
|
||||
<c c="Ţ" r="205, 238, 218, 271" u="1" o="1" />
|
||||
<c c="ţ" r="219, 238, 226, 271" u="1" />
|
||||
<c c="Ť" r="227, 238, 240, 271" u="1" o="1" />
|
||||
<c c="ť" r="241, 238, 250, 271" u="1" o="1" />
|
||||
<c c="Ŧ" r="251, 238, 265, 271" u="1" o="1" />
|
||||
<c c="ŧ" r="266, 238, 274, 271" />
|
||||
<c c="Ũ" r="275, 238, 288, 271" u="1" o="1" />
|
||||
<c c="ũ" r="289, 238, 302, 271" u="1" o="1" />
|
||||
<c c="Ū" r="303, 238, 317, 271" o="1" />
|
||||
<c c="ū" r="318, 238, 332, 271" o="1" />
|
||||
<c c="Ŭ" r="333, 238, 346, 271" u="1" o="1" />
|
||||
<c c="ŭ" r="347, 238, 360, 271" u="1" o="1" />
|
||||
<c c="Ů" r="361, 238, 374, 271" u="1" o="1" />
|
||||
<c c="ů" r="375, 238, 388, 271" u="1" o="1" />
|
||||
<c c="Ű" r="389, 238, 402, 271" u="1" o="1" />
|
||||
<c c="ű" r="403, 238, 416, 271" u="1" o="1" />
|
||||
<c c="Ų" r="417, 238, 430, 271" u="1" o="1" />
|
||||
<c c="ų" r="431, 238, 444, 271" u="1" o="1" />
|
||||
<c c="Ŵ" r="445, 238, 465, 271" u="1" o="1" />
|
||||
<c c="ŵ" r="466, 238, 485, 271" u="1" o="1" />
|
||||
<c c="Ŷ" r="486, 238, 499, 271" u="1" o="1" />
|
||||
<c c="ŷ" r="0, 272, 13, 305" u="1" o="1" />
|
||||
<c c="Ÿ" r="14, 272, 27, 305" u="1" o="1" />
|
||||
<c c="Ź" r="28, 272, 43, 305" o="1" />
|
||||
<c c="ź" r="44, 272, 58, 305" o="1" />
|
||||
<c c="Ż" r="59, 272, 74, 305" o="1" />
|
||||
<c c="ż" r="75, 272, 89, 305" o="1" />
|
||||
<c c="Ž" r="90, 272, 105, 305" o="1" />
|
||||
<c c="ž" r="106, 272, 120, 305" o="1" />
|
||||
<c c="Ǎ" r="121, 272, 134, 305" u="1" o="1" />
|
||||
<c c="ǎ" r="135, 272, 148, 305" u="1" o="1" />
|
||||
<c c="Ǐ" r="149, 272, 158, 305" u="-2" o="-2" />
|
||||
<c c="ǐ" r="159, 272, 167, 305" o="-1" />
|
||||
<c c="Ǒ" r="168, 272, 181, 305" u="1" o="1" />
|
||||
<c c="ǒ" r="182, 272, 195, 305" u="1" o="1" />
|
||||
<c c="Ǔ" r="196, 272, 209, 305" u="1" o="1" />
|
||||
<c c="ǔ" r="210, 272, 223, 305" u="1" o="1" />
|
||||
<c c="Ǖ" r="224, 272, 238, 305" o="1" />
|
||||
<c c="ǖ" r="239, 272, 253, 305" o="1" />
|
||||
<c c="ǘ" r="254, 272, 267, 305" u="1" o="1" />
|
||||
<c c="ǚ" r="268, 272, 281, 305" u="1" o="1" />
|
||||
<c c="ǜ" r="282, 272, 295, 305" u="1" o="1" />
|
||||
<c c="Ǟ" r="296, 272, 310, 305" o="1" />
|
||||
<c c="ǟ" r="311, 272, 325, 305" o="1" />
|
||||
<c c="Ǡ" r="326, 272, 341, 305" />
|
||||
<c c="ǡ" r="342, 272, 357, 305" />
|
||||
<c c="Ǣ" r="358, 272, 381, 305" u="1" o="1" />
|
||||
<c c="ǣ" r="382, 272, 405, 305" u="1" o="1" />
|
||||
<c c="Ǥ" r="406, 272, 420, 305" u="1" o="-1" />
|
||||
<c c="ǥ" r="421, 272, 435, 305" u="1" o="-1" />
|
||||
<c c="Ǧ" r="436, 272, 449, 305" u="1" o="1" />
|
||||
<c c="ǧ" r="450, 272, 463, 305" u="1" o="1" />
|
||||
<c c="Ǩ" r="464, 272, 477, 305" u="1" o="1" />
|
||||
<c c="ǩ" r="478, 272, 491, 305" u="1" o="1" />
|
||||
<c c="Ǫ" r="492, 272, 505, 305" u="1" o="1" />
|
||||
<c c="ǫ" r="0, 306, 13, 339" u="1" o="1" />
|
||||
<c c="Ǭ" r="14, 306, 28, 339" o="1" />
|
||||
<c c="ǭ" r="29, 306, 43, 339" o="1" />
|
||||
<c c="ǰ" r="44, 306, 52, 339" u="-1" o="-1" />
|
||||
<c c="Ǵ" r="53, 306, 66, 339" u="1" o="1" />
|
||||
<c c="ǵ" r="67, 306, 80, 339" u="1" o="1" />
|
||||
<c c="Ǹ" r="81, 306, 94, 339" u="1" o="1" />
|
||||
<c c="ǹ" r="95, 306, 108, 339" u="1" o="1" />
|
||||
<c c="ǻ" r="109, 306, 122, 339" u="1" o="1" />
|
||||
<c c="Ǽ" r="123, 306, 146, 339" u="1" o="1" />
|
||||
<c c="ǽ" r="147, 306, 170, 339" u="1" o="1" />
|
||||
<c c="Ǿ" r="171, 306, 184, 339" u="1" o="1" />
|
||||
<c c="ǿ" r="185, 306, 199, 339" u="1" o="2" />
|
||||
<c c="Ȁ" r="200, 306, 213, 339" u="1" o="1" />
|
||||
<c c="ȁ" r="214, 306, 227, 339" u="1" o="1" />
|
||||
<c c="Ȃ" r="228, 306, 241, 339" u="1" o="1" />
|
||||
<c c="ȃ" r="242, 306, 255, 339" u="1" o="1" />
|
||||
<c c="Ȅ" r="256, 306, 269, 339" u="1" o="1" />
|
||||
<c c="ȅ" r="270, 306, 283, 339" u="1" o="1" />
|
||||
<c c="Ȇ" r="284, 306, 297, 339" u="1" o="1" />
|
||||
<c c="ȇ" r="298, 306, 311, 339" u="1" o="1" />
|
||||
<c c="Ȉ" r="312, 306, 319, 339" u="-1" o="-1" />
|
||||
<c c="ȉ" r="320, 306, 328, 339" u="-1" />
|
||||
<c c="Ȋ" r="329, 306, 338, 339" u="-2" o="-2" />
|
||||
<c c="ȋ" r="339, 306, 347, 339" o="-1" />
|
||||
<c c="Ȍ" r="348, 306, 361, 339" u="1" o="1" />
|
||||
<c c="ȍ" r="362, 306, 375, 339" u="1" o="1" />
|
||||
<c c="Ȏ" r="376, 306, 389, 339" u="1" o="1" />
|
||||
<c c="ȏ" r="390, 306, 403, 339" u="1" o="1" />
|
||||
<c c="Ȑ" r="404, 306, 417, 339" u="1" o="1" />
|
||||
<c c="ȑ" r="418, 306, 426, 339" o="1" />
|
||||
<c c="Ȓ" r="427, 306, 440, 339" u="1" o="1" />
|
||||
<c c="ȓ" r="441, 306, 451, 339" o="-1" />
|
||||
<c c="Ȕ" r="452, 306, 465, 339" u="1" o="1" />
|
||||
<c c="ȕ" r="466, 306, 479, 339" u="1" o="1" />
|
||||
<c c="Ȗ" r="480, 306, 493, 339" u="1" o="1" />
|
||||
<c c="ȗ" r="494, 306, 507, 339" u="1" o="1" />
|
||||
<c c="Ș" r="0, 340, 13, 373" u="1" o="1" />
|
||||
<c c="ș" r="14, 340, 27, 373" u="1" o="1" />
|
||||
<c c="Ț" r="28, 340, 41, 373" u="1" o="1" />
|
||||
<c c="ț" r="42, 340, 49, 373" u="1" />
|
||||
<c c="Ȟ" r="50, 340, 63, 373" u="1" o="1" />
|
||||
<c c="ȟ" r="64, 340, 77, 373" u="1" o="1" />
|
||||
<c c="Ȧ" r="78, 340, 91, 373" u="1" o="1" />
|
||||
<c c="ȧ" r="92, 340, 105, 373" u="1" o="1" />
|
||||
<c c="Ȩ" r="106, 340, 119, 373" u="1" o="1" />
|
||||
<c c="ȩ" r="120, 340, 133, 373" u="1" o="1" />
|
||||
<c c="Ȫ" r="134, 340, 148, 373" o="1" />
|
||||
<c c="ȫ" r="149, 340, 163, 373" o="1" />
|
||||
<c c="ȭ" r="164, 340, 178, 373" o="1" />
|
||||
<c c="Ȯ" r="179, 340, 192, 373" u="1" o="1" />
|
||||
<c c="ȯ" r="193, 340, 206, 373" u="1" o="1" />
|
||||
<c c="Ȱ" r="207, 340, 221, 373" o="1" />
|
||||
<c c="ȱ" r="222, 340, 236, 373" o="1" />
|
||||
<c c="Ȳ" r="237, 340, 251, 373" o="1" />
|
||||
<c c="ȳ" r="252, 340, 266, 373" o="1" />
|
||||
<c c="ˆ" r="267, 340, 279, 373" u="2" o="3" />
|
||||
<c c="ˇ" r="280, 340, 292, 373" u="2" o="3" />
|
||||
<c c="˘" r="293, 340, 305, 373" u="2" o="3" />
|
||||
<c c="˙" r="306, 340, 310, 373" u="1" />
|
||||
<c c="˚" r="311, 340, 317, 373" u="1" />
|
||||
<c c="˛" r="318, 340, 322, 373" u="12" o="2" />
|
||||
<c c="˜" r="323, 340, 335, 373" u="2" o="3" />
|
||||
<c c="˝" r="336, 340, 347, 373" u="3" o="3" />
|
||||
<c c="̏" r="348, 340, 359, 373" u="3" o="3" />
|
||||
<c c="̑" r="360, 340, 372, 373" u="1" o="2" />
|
||||
<c c="Ѐ" r="373, 340, 386, 373" u="1" o="1" />
|
||||
<c c="Ё" r="387, 340, 400, 373" u="1" o="1" />
|
||||
<c c="Ђ" r="401, 340, 418, 373" u="1" o="1" />
|
||||
<c c="Ѓ" r="419, 340, 431, 373" u="1" o="1" />
|
||||
<c c="Є" r="432, 340, 445, 373" u="1" o="1" />
|
||||
<c c="Ѕ" r="446, 340, 459, 373" u="1" o="1" />
|
||||
<c c="І" r="460, 340, 463, 373" u="1" o="1" />
|
||||
<c c="Ї" r="464, 340, 471, 373" u="-1" o="-1" />
|
||||
<c c="Ј" r="472, 340, 477, 373" u="1" o="1" />
|
||||
<c c="Љ" r="478, 340, 502, 373" o="1" />
|
||||
<c c="Њ" r="0, 374, 23, 407" u="1" o="1" />
|
||||
<c c="Ћ" r="24, 374, 41, 407" u="1" o="1" />
|
||||
<c c="Ќ" r="42, 374, 56, 407" u="1" />
|
||||
<c c="Ѝ" r="57, 374, 71, 407" u="1" />
|
||||
<c c="Ў" r="72, 374, 86, 407" u="1" />
|
||||
<c c="Џ" r="87, 374, 102, 407" u="1" />
|
||||
<c c="А" r="103, 374, 116, 407" u="1" o="1" />
|
||||
<c c="Б" r="117, 374, 130, 407" u="1" o="1" />
|
||||
<c c="В" r="131, 374, 144, 407" u="1" o="1" />
|
||||
<c c="Г" r="145, 374, 157, 407" u="1" o="1" />
|
||||
<c c="Д" r="158, 374, 174, 407" u="1" o="1" />
|
||||
<c c="Е" r="175, 374, 188, 407" u="1" o="1" />
|
||||
<c c="Ж" r="189, 374, 212, 407" u="1" o="1" />
|
||||
<c c="З" r="213, 374, 226, 407" u="1" o="1" />
|
||||
<c c="И" r="227, 374, 240, 407" u="1" o="1" />
|
||||
<c c="Й" r="241, 374, 254, 407" u="1" o="1" />
|
||||
<c c="К" r="255, 374, 268, 407" u="1" o="1" />
|
||||
<c c="Л" r="269, 374, 283, 407" u="1" o="1" />
|
||||
<c c="М" r="284, 374, 302, 407" o="1" />
|
||||
<c c="Н" r="303, 374, 316, 407" u="1" o="1" />
|
||||
<c c="О" r="317, 374, 330, 407" u="1" o="1" />
|
||||
<c c="П" r="331, 374, 344, 407" u="1" o="1" />
|
||||
<c c="Р" r="345, 374, 358, 407" u="1" o="1" />
|
||||
<c c="С" r="359, 374, 372, 407" u="1" o="1" />
|
||||
<c c="Т" r="373, 374, 386, 407" u="1" o="1" />
|
||||
<c c="У" r="387, 374, 400, 407" u="1" o="1" />
|
||||
<c c="Ф" r="401, 374, 417, 407" u="1" o="1" />
|
||||
<c c="Х" r="418, 374, 431, 407" u="1" o="1" />
|
||||
<c c="Ц" r="432, 374, 447, 407" u="1" o="1" />
|
||||
<c c="Ч" r="448, 374, 461, 407" u="1" o="1" />
|
||||
<c c="Ш" r="462, 374, 482, 407" />
|
||||
<c c="Щ" r="483, 374, 502, 407" u="1" o="1" />
|
||||
<c c="Ъ" r="0, 408, 17, 441" u="1" o="1" />
|
||||
<c c="Ы" r="18, 408, 35, 441" u="1" o="1" />
|
||||
<c c="Ь" r="36, 408, 49, 441" u="1" o="1" />
|
||||
<c c="Э" r="50, 408, 63, 441" u="1" o="1" />
|
||||
<c c="Ю" r="64, 408, 82, 441" o="1" />
|
||||
<c c="Я" r="83, 408, 96, 441" u="1" o="1" />
|
||||
<c c="а" r="97, 408, 110, 441" u="1" o="1" />
|
||||
<c c="б" r="111, 408, 124, 441" u="1" o="1" />
|
||||
<c c="в" r="125, 408, 138, 441" u="1" o="1" />
|
||||
<c c="г" r="139, 408, 150, 441" o="1" />
|
||||
<c c="д" r="151, 408, 166, 441" u="1" o="1" />
|
||||
<c c="е" r="167, 408, 180, 441" u="1" o="1" />
|
||||
<c c="ж" r="181, 408, 204, 441" u="1" o="1" />
|
||||
<c c="з" r="205, 408, 218, 441" u="1" o="1" />
|
||||
<c c="и" r="219, 408, 231, 441" u="1" o="1" />
|
||||
<c c="й" r="232, 408, 244, 441" u="1" o="1" />
|
||||
<c c="к" r="245, 408, 258, 441" u="1" o="1" />
|
||||
<c c="л" r="259, 408, 273, 441" u="1" o="1" />
|
||||
<c c="м" r="274, 408, 290, 441" u="1" o="1" />
|
||||
<c c="н" r="291, 408, 303, 441" u="1" o="1" />
|
||||
<c c="о" r="304, 408, 317, 441" u="1" o="1" />
|
||||
<c c="п" r="318, 408, 330, 441" u="1" o="1" />
|
||||
<c c="р" r="331, 408, 344, 441" u="1" o="1" />
|
||||
<c c="с" r="345, 408, 358, 441" u="1" o="1" />
|
||||
<c c="т" r="359, 408, 371, 441" u="1" o="1" />
|
||||
<c c="у" r="372, 408, 385, 441" u="1" o="1" />
|
||||
<c c="ф" r="386, 408, 400, 441" u="1" o="1" />
|
||||
<c c="х" r="401, 408, 414, 441" u="1" o="1" />
|
||||
<c c="ц" r="415, 408, 429, 441" u="1" o="1" />
|
||||
<c c="ч" r="430, 408, 442, 441" u="1" o="1" />
|
||||
<c c="ш" r="443, 408, 461, 441" u="1" />
|
||||
<c c="щ" r="462, 408, 480, 441" o="1" />
|
||||
<c c="ъ" r="481, 408, 498, 441" u="1" o="1" />
|
||||
<c c="ы" r="0, 442, 17, 475" u="1" o="1" />
|
||||
<c c="ь" r="18, 442, 31, 475" u="1" o="1" />
|
||||
<c c="э" r="32, 442, 44, 475" u="2" o="1" />
|
||||
<c c="ю" r="45, 442, 63, 475" o="1" />
|
||||
<c c="я" r="64, 442, 77, 475" u="1" o="1" />
|
||||
<c c="ѐ" r="78, 442, 91, 475" u="1" o="1" />
|
||||
<c c="ё" r="92, 442, 105, 475" u="1" o="1" />
|
||||
<c c="ђ" r="106, 442, 119, 475" o="1" />
|
||||
<c c="ѓ" r="120, 442, 131, 475" o="1" />
|
||||
<c c="є" r="132, 442, 145, 475" u="1" o="1" />
|
||||
<c c="ѕ" r="146, 442, 159, 475" u="1" o="1" />
|
||||
<c c="і" r="160, 442, 166, 475" u="1" />
|
||||
<c c="ї" r="167, 442, 175, 475" o="-1" />
|
||||
<c c="ј" r="176, 442, 181, 475" o="1" />
|
||||
<c c="љ" r="182, 442, 206, 475" o="1" />
|
||||
<c c="њ" r="207, 442, 229, 475" u="1" o="1" />
|
||||
<c c="ћ" r="230, 442, 243, 475" o="1" />
|
||||
<c c="ќ" r="244, 442, 257, 475" u="1" o="1" />
|
||||
<c c="ѝ" r="258, 442, 270, 475" u="1" o="1" />
|
||||
<c c="ў" r="271, 442, 284, 475" u="1" o="1" />
|
||||
<c c="џ" r="285, 442, 299, 475" u="1" />
|
||||
<c c="Ѥ" r="300, 442, 318, 475" o="1" />
|
||||
<c c="ѥ" r="319, 442, 337, 475" o="1" />
|
||||
<c c="Ґ" r="338, 442, 350, 475" u="1" o="1" />
|
||||
<c c="ґ" r="351, 442, 362, 475" o="1" />
|
||||
<c c="Ҕ" r="363, 442, 375, 475" u="1" o="1" />
|
||||
<c c="ҕ" r="376, 442, 387, 475" o="1" />
|
||||
<c c="Ӏ" r="388, 442, 391, 475" u="1" o="1" />
|
||||
<c c="Ӂ" r="392, 442, 415, 475" u="1" o="1" />
|
||||
<c c="ӂ" r="416, 442, 439, 475" u="1" o="1" />
|
||||
<c c="Ӑ" r="440, 442, 453, 475" u="1" o="1" />
|
||||
<c c="ӑ" r="454, 442, 467, 475" u="1" o="1" />
|
||||
<c c="Ӓ" r="468, 442, 481, 475" u="1" o="1" />
|
||||
<c c="ӓ" r="482, 442, 495, 475" u="1" o="1" />
|
||||
<c c="Ӕ" r="0, 476, 23, 509" u="1" o="1" />
|
||||
<c c="ӕ" r="24, 476, 47, 509" u="1" o="1" />
|
||||
<c c="Ӗ" r="48, 476, 61, 509" u="1" o="1" />
|
||||
<c c="ӗ" r="62, 476, 75, 509" u="1" o="1" />
|
||||
<c c="Ӝ" r="76, 476, 99, 509" u="1" o="1" />
|
||||
<c c="ӝ" r="100, 476, 123, 509" u="1" o="1" />
|
||||
<c c="Ӟ" r="124, 476, 137, 509" u="1" o="1" />
|
||||
<c c="ӟ" r="138, 476, 151, 509" u="1" o="1" />
|
||||
<c c="Ӣ" r="152, 476, 166, 509" o="1" />
|
||||
<c c="ӣ" r="167, 476, 181, 509" />
|
||||
<c c="Ӥ" r="182, 476, 195, 509" u="1" o="1" />
|
||||
<c c="ӥ" r="196, 476, 208, 509" u="1" o="1" />
|
||||
<c c="Ӧ" r="209, 476, 222, 509" u="1" o="1" />
|
||||
<c c="ӧ" r="223, 476, 236, 509" u="1" o="1" />
|
||||
<c c="Ө" r="237, 476, 250, 509" u="1" o="1" />
|
||||
<c c="ө" r="251, 476, 264, 509" u="1" o="1" />
|
||||
<c c="Ӫ" r="265, 476, 278, 509" u="1" o="1" />
|
||||
<c c="ӫ" r="279, 476, 292, 509" u="1" o="1" />
|
||||
<c c="Ӭ" r="293, 476, 306, 509" u="1" o="1" />
|
||||
<c c="ӭ" r="307, 476, 319, 509" u="2" o="1" />
|
||||
<c c="Ӯ" r="320, 476, 334, 509" o="1" />
|
||||
<c c="ӯ" r="335, 476, 349, 509" o="1" />
|
||||
<c c="Ӱ" r="350, 476, 363, 509" u="1" o="1" />
|
||||
<c c="ӱ" r="364, 476, 377, 509" u="1" o="1" />
|
||||
<c c="Ӳ" r="378, 476, 391, 509" u="1" o="1" />
|
||||
<c c="ӳ" r="392, 476, 405, 509" u="1" o="1" />
|
||||
<c c="Ӵ" r="406, 476, 419, 509" u="1" o="1" />
|
||||
<c c="ӵ" r="420, 476, 432, 509" u="1" o="1" />
|
||||
<c c="Ӹ" r="433, 476, 450, 509" u="1" o="1" />
|
||||
<c c="ӹ" r="451, 476, 468, 509" u="1" o="1" />
|
||||
<c c="Ḁ" r="469, 476, 482, 509" u="1" o="1" />
|
||||
<c c="ḁ" r="483, 476, 496, 509" u="1" o="1" />
|
||||
<c c="Ḃ" r="497, 476, 510, 509" u="1" o="1" />
|
||||
<c c="ḃ" i="1" r="0, 0, 13, 33" u="1" o="1" />
|
||||
<c c="Ḅ" i="1" r="14, 0, 27, 33" u="1" o="1" />
|
||||
<c c="ḅ" i="1" r="28, 0, 41, 33" u="1" o="1" />
|
||||
<c c="Ḇ" i="1" r="42, 0, 56, 33" o="1" />
|
||||
<c c="ḇ" i="1" r="57, 0, 71, 33" o="1" />
|
||||
<c c="Ḉ" i="1" r="72, 0, 85, 33" u="1" o="1" />
|
||||
<c c="ḉ" i="1" r="86, 0, 99, 33" u="1" o="1" />
|
||||
<c c="Ḋ" i="1" r="100, 0, 113, 33" u="1" o="1" />
|
||||
<c c="ḋ" i="1" r="114, 0, 127, 33" u="1" o="1" />
|
||||
<c c="Ḍ" i="1" r="128, 0, 141, 33" u="1" o="1" />
|
||||
<c c="ḍ" i="1" r="142, 0, 155, 33" u="1" o="1" />
|
||||
<c c="Ḏ" i="1" r="156, 0, 170, 33" o="1" />
|
||||
<c c="ḏ" i="1" r="171, 0, 185, 33" o="1" />
|
||||
<c c="Ḑ" i="1" r="186, 0, 199, 33" u="1" o="1" />
|
||||
<c c="ḑ" i="1" r="200, 0, 213, 33" u="1" o="1" />
|
||||
<c c="Ḓ" i="1" r="214, 0, 227, 33" u="1" o="1" />
|
||||
<c c="ḓ" i="1" r="228, 0, 241, 33" u="1" o="1" />
|
||||
<c c="Ḕ" i="1" r="242, 0, 256, 33" o="1" />
|
||||
<c c="ḕ" i="1" r="257, 0, 271, 33" o="1" />
|
||||
<c c="Ḗ" i="1" r="272, 0, 286, 33" o="1" />
|
||||
<c c="ḗ" i="1" r="287, 0, 301, 33" o="1" />
|
||||
<c c="Ḙ" i="1" r="302, 0, 315, 33" u="1" o="1" />
|
||||
<c c="ḙ" i="1" r="316, 0, 329, 33" u="1" o="1" />
|
||||
<c c="Ḛ" i="1" r="330, 0, 343, 33" u="1" o="1" />
|
||||
<c c="ḛ" i="1" r="344, 0, 357, 33" u="1" o="1" />
|
||||
<c c="Ḝ" i="1" r="358, 0, 371, 33" u="1" o="1" />
|
||||
<c c="ḝ" i="1" r="372, 0, 385, 33" u="1" o="1" />
|
||||
<c c="Ḟ" i="1" r="386, 0, 399, 33" u="1" o="1" />
|
||||
<c c="ḟ" i="1" r="400, 0, 409, 33" u="1" />
|
||||
<c c="Ḡ" i="1" r="410, 0, 424, 33" o="1" />
|
||||
<c c="ḡ" i="1" r="425, 0, 439, 33" o="1" />
|
||||
<c c="Ḣ" i="1" r="440, 0, 453, 33" u="1" o="1" />
|
||||
<c c="ḣ" i="1" r="454, 0, 467, 33" u="1" o="1" />
|
||||
<c c="Ḥ" i="1" r="468, 0, 481, 33" u="1" o="1" />
|
||||
<c c="ḥ" i="1" r="482, 0, 495, 33" u="1" o="1" />
|
||||
<c c="Ḧ" i="1" r="496, 0, 509, 33" u="1" o="1" />
|
||||
<c c="ḧ" i="1" r="0, 34, 13, 67" u="1" o="1" />
|
||||
<c c="Ḩ" i="1" r="14, 34, 27, 67" u="1" o="1" />
|
||||
<c c="ḩ" i="1" r="28, 34, 41, 67" u="1" o="1" />
|
||||
<c c="Ḫ" i="1" r="42, 34, 55, 67" u="1" o="1" />
|
||||
<c c="ḫ" i="1" r="56, 34, 69, 67" u="1" o="1" />
|
||||
<c c="Ḭ" i="1" r="70, 34, 79, 67" u="-2" o="-2" />
|
||||
<c c="ḭ" i="1" r="80, 34, 89, 67" o="-2" />
|
||||
<c c="Ḯ" i="1" r="90, 34, 97, 67" u="-1" o="-1" />
|
||||
<c c="ḯ" i="1" r="98, 34, 106, 67" />
|
||||
<c c="Ḱ" i="1" r="107, 34, 120, 67" u="1" o="1" />
|
||||
<c c="ḱ" i="1" r="121, 34, 134, 67" u="1" o="1" />
|
||||
<c c="Ḳ" i="1" r="135, 34, 148, 67" u="1" o="1" />
|
||||
<c c="ḳ" i="1" r="149, 34, 162, 67" u="1" o="1" />
|
||||
<c c="Ḵ" i="1" r="163, 34, 177, 67" o="1" />
|
||||
<c c="ḵ" i="1" r="178, 34, 192, 67" o="1" />
|
||||
<c c="Ḷ" i="1" r="193, 34, 204, 67" o="1" />
|
||||
<c c="ḷ" i="1" r="205, 34, 211, 67" u="1" />
|
||||
<c c="Ḹ" i="1" r="212, 34, 223, 67" o="1" />
|
||||
<c c="ḹ" i="1" r="224, 34, 232, 67" o="-1" />
|
||||
<c c="Ḻ" i="1" r="233, 34, 244, 67" o="1" />
|
||||
<c c="ḻ" i="1" r="245, 34, 253, 67" />
|
||||
<c c="Ḽ" i="1" r="254, 34, 265, 67" o="1" />
|
||||
<c c="ḽ" i="1" r="266, 34, 275, 67" o="-1" />
|
||||
<c c="Ḿ" i="1" r="276, 34, 295, 67" u="1" o="1" />
|
||||
<c c="ḿ" i="1" r="296, 34, 315, 67" u="1" o="1" />
|
||||
<c c="Ṁ" i="1" r="316, 34, 335, 67" u="1" o="1" />
|
||||
<c c="ṁ" i="1" r="336, 34, 355, 67" u="1" o="1" />
|
||||
<c c="Ṃ" i="1" r="356, 34, 375, 67" u="1" o="1" />
|
||||
<c c="ṃ" i="1" r="376, 34, 395, 67" u="1" o="1" />
|
||||
<c c="Ṅ" i="1" r="396, 34, 409, 67" u="1" o="1" />
|
||||
<c c="ṅ" i="1" r="410, 34, 423, 67" u="1" o="1" />
|
||||
<c c="Ṇ" i="1" r="424, 34, 437, 67" u="1" o="1" />
|
||||
<c c="ṇ" i="1" r="438, 34, 451, 67" u="1" o="1" />
|
||||
<c c="Ṉ" i="1" r="452, 34, 466, 67" o="1" />
|
||||
<c c="ṉ" i="1" r="467, 34, 481, 67" o="1" />
|
||||
<c c="Ṋ" i="1" r="482, 34, 495, 67" u="1" o="1" />
|
||||
<c c="ṋ" i="1" r="496, 34, 509, 67" u="1" o="1" />
|
||||
<c c="Ṍ" i="1" r="0, 68, 13, 101" u="1" o="1" />
|
||||
<c c="ṍ" i="1" r="14, 68, 27, 101" u="1" o="1" />
|
||||
<c c="Ṏ" i="1" r="28, 68, 41, 101" u="1" o="1" />
|
||||
<c c="ṏ" i="1" r="42, 68, 55, 101" u="1" o="1" />
|
||||
<c c="Ṑ" i="1" r="56, 68, 70, 101" o="1" />
|
||||
<c c="ṑ" i="1" r="71, 68, 85, 101" o="1" />
|
||||
<c c="Ṓ" i="1" r="86, 68, 100, 101" o="1" />
|
||||
<c c="ṓ" i="1" r="101, 68, 115, 101" o="1" />
|
||||
<c c="Ṕ" i="1" r="116, 68, 129, 101" u="1" o="1" />
|
||||
<c c="ṕ" i="1" r="130, 68, 143, 101" u="1" o="1" />
|
||||
<c c="Ṗ" i="1" r="144, 68, 157, 101" u="1" o="1" />
|
||||
<c c="ṗ" i="1" r="158, 68, 171, 101" u="1" o="1" />
|
||||
<c c="Ṙ" i="1" r="172, 68, 185, 101" u="1" o="1" />
|
||||
<c c="ṙ" i="1" r="186, 68, 193, 101" u="1" o="1" />
|
||||
<c c="Ṛ" i="1" r="194, 68, 207, 101" u="1" o="1" />
|
||||
<c c="ṛ" i="1" r="208, 68, 215, 101" u="1" o="1" />
|
||||
<c c="Ṝ" i="1" r="216, 68, 230, 101" o="1" />
|
||||
<c c="ṝ" i="1" r="231, 68, 239, 101" o="1" />
|
||||
<c c="Ṟ" i="1" r="240, 68, 254, 101" o="1" />
|
||||
<c c="ṟ" i="1" r="255, 68, 262, 101" u="1" o="1" />
|
||||
<c c="Ṡ" i="1" r="263, 68, 276, 101" u="1" o="1" />
|
||||
<c c="ṡ" i="1" r="277, 68, 290, 101" u="1" o="1" />
|
||||
<c c="Ṣ" i="1" r="291, 68, 304, 101" u="1" o="1" />
|
||||
<c c="ṣ" i="1" r="305, 68, 318, 101" u="1" o="1" />
|
||||
<c c="Ṥ" i="1" r="319, 68, 332, 101" u="1" o="1" />
|
||||
<c c="ṥ" i="1" r="333, 68, 346, 101" u="1" o="1" />
|
||||
<c c="Ṧ" i="1" r="347, 68, 360, 101" u="1" o="1" />
|
||||
<c c="ṧ" i="1" r="361, 68, 374, 101" u="1" o="1" />
|
||||
<c c="Ṩ" i="1" r="375, 68, 388, 101" u="1" o="1" />
|
||||
<c c="ṩ" i="1" r="389, 68, 402, 101" u="1" o="1" />
|
||||
<c c="Ṫ" i="1" r="403, 68, 416, 101" u="1" o="1" />
|
||||
<c c="ṫ" i="1" r="417, 68, 424, 101" u="1" />
|
||||
<c c="Ṭ" i="1" r="425, 68, 438, 101" u="1" o="1" />
|
||||
<c c="ṭ" i="1" r="439, 68, 446, 101" u="1" />
|
||||
<c c="Ṯ" i="1" r="447, 68, 461, 101" o="1" />
|
||||
<c c="ṯ" i="1" r="462, 68, 470, 101" />
|
||||
<c c="Ṱ" i="1" r="471, 68, 484, 101" u="1" o="1" />
|
||||
<c c="ṱ" i="1" r="485, 68, 494, 101" o="-1" />
|
||||
<c c="Ṳ" i="1" r="495, 68, 508, 101" u="1" o="1" />
|
||||
<c c="ṳ" i="1" r="0, 102, 13, 135" u="1" o="1" />
|
||||
<c c="Ṵ" i="1" r="14, 102, 27, 135" u="1" o="1" />
|
||||
<c c="ṵ" i="1" r="28, 102, 41, 135" u="1" o="1" />
|
||||
<c c="Ṷ" i="1" r="42, 102, 55, 135" u="1" o="1" />
|
||||
<c c="ṷ" i="1" r="56, 102, 69, 135" u="1" o="1" />
|
||||
<c c="Ṹ" i="1" r="70, 102, 83, 135" u="1" o="1" />
|
||||
<c c="ṹ" i="1" r="84, 102, 97, 135" u="1" o="1" />
|
||||
<c c="Ṻ" i="1" r="98, 102, 112, 135" o="1" />
|
||||
<c c="ṻ" i="1" r="113, 102, 127, 135" o="1" />
|
||||
<c c="Ṽ" i="1" r="128, 102, 141, 135" u="1" o="1" />
|
||||
<c c="ṽ" i="1" r="142, 102, 155, 135" u="1" o="1" />
|
||||
<c c="Ṿ" i="1" r="156, 102, 169, 135" u="1" o="1" />
|
||||
<c c="ṿ" i="1" r="170, 102, 183, 135" u="1" o="1" />
|
||||
<c c="Ẁ" i="1" r="184, 102, 204, 135" u="1" o="1" />
|
||||
<c c="ẁ" i="1" r="205, 102, 224, 135" u="1" o="1" />
|
||||
<c c="Ẃ" i="1" r="225, 102, 245, 135" u="1" o="1" />
|
||||
<c c="ẃ" i="1" r="246, 102, 265, 135" u="1" o="1" />
|
||||
<c c="Ẅ" i="1" r="266, 102, 286, 135" u="1" o="1" />
|
||||
<c c="ẅ" i="1" r="287, 102, 306, 135" u="1" o="1" />
|
||||
<c c="Ẇ" i="1" r="307, 102, 327, 135" u="1" o="1" />
|
||||
<c c="ẇ" i="1" r="328, 102, 347, 135" u="1" o="1" />
|
||||
<c c="Ẉ" i="1" r="348, 102, 368, 135" u="1" o="1" />
|
||||
<c c="ẉ" i="1" r="369, 102, 388, 135" u="1" o="1" />
|
||||
<c c="Ẋ" i="1" r="389, 102, 402, 135" u="1" o="1" />
|
||||
<c c="ẋ" i="1" r="403, 102, 416, 135" u="1" o="1" />
|
||||
<c c="Ẍ" i="1" r="417, 102, 430, 135" u="1" o="1" />
|
||||
<c c="ẍ" i="1" r="431, 102, 444, 135" u="1" o="1" />
|
||||
<c c="Ẏ" i="1" r="445, 102, 458, 135" u="1" o="1" />
|
||||
<c c="ẏ" i="1" r="459, 102, 472, 135" u="1" o="1" />
|
||||
<c c="Ẑ" i="1" r="473, 102, 488, 135" o="1" />
|
||||
<c c="ẑ" i="1" r="489, 102, 503, 135" o="1" />
|
||||
<c c="Ẓ" i="1" r="0, 136, 15, 169" o="1" />
|
||||
<c c="ẓ" i="1" r="16, 136, 30, 169" o="1" />
|
||||
<c c="Ẕ" i="1" r="31, 136, 46, 169" o="1" />
|
||||
<c c="ẕ" i="1" r="47, 136, 61, 169" o="1" />
|
||||
<c c="ẖ" i="1" r="62, 136, 76, 169" o="1" />
|
||||
<c c="ẗ" i="1" r="77, 136, 86, 169" />
|
||||
<c c="ẘ" i="1" r="87, 136, 106, 169" u="1" o="1" />
|
||||
<c c="ẙ" i="1" r="107, 136, 120, 169" u="1" o="1" />
|
||||
<c c="Ạ" i="1" r="121, 136, 134, 169" u="1" o="1" />
|
||||
<c c="ạ" i="1" r="135, 136, 148, 169" u="1" o="1" />
|
||||
<c c="Ấ" i="1" r="149, 136, 162, 169" u="1" o="1" />
|
||||
<c c="ấ" i="1" r="163, 136, 176, 169" u="1" o="1" />
|
||||
<c c="Ầ" i="1" r="177, 136, 190, 169" u="1" o="1" />
|
||||
<c c="ầ" i="1" r="191, 136, 204, 169" u="1" o="1" />
|
||||
<c c="Ẫ" i="1" r="205, 136, 218, 169" u="1" o="1" />
|
||||
<c c="ẫ" i="1" r="219, 136, 232, 169" u="1" o="1" />
|
||||
<c c="Ậ" i="1" r="233, 136, 246, 169" u="1" o="1" />
|
||||
<c c="ậ" i="1" r="247, 136, 260, 169" u="1" o="1" />
|
||||
<c c="Ắ" i="1" r="261, 136, 274, 169" u="1" o="1" />
|
||||
<c c="ắ" i="1" r="275, 136, 288, 169" u="1" o="1" />
|
||||
<c c="Ằ" i="1" r="289, 136, 302, 169" u="1" o="1" />
|
||||
<c c="ằ" i="1" r="303, 136, 316, 169" u="1" o="1" />
|
||||
<c c="Ẵ" i="1" r="317, 136, 330, 169" u="1" o="1" />
|
||||
<c c="ẵ" i="1" r="331, 136, 344, 169" u="1" o="1" />
|
||||
<c c="Ặ" i="1" r="345, 136, 358, 169" u="1" o="1" />
|
||||
<c c="ặ" i="1" r="359, 136, 372, 169" u="1" o="1" />
|
||||
<c c="Ẹ" i="1" r="373, 136, 386, 169" u="1" o="1" />
|
||||
<c c="ẹ" i="1" r="387, 136, 400, 169" u="1" o="1" />
|
||||
<c c="Ẽ" i="1" r="401, 136, 414, 169" u="1" o="1" />
|
||||
<c c="ẽ" i="1" r="415, 136, 428, 169" u="1" o="1" />
|
||||
<c c="Ế" i="1" r="429, 136, 442, 169" u="1" o="1" />
|
||||
<c c="ế" i="1" r="443, 136, 456, 169" u="1" o="1" />
|
||||
<c c="Ề" i="1" r="457, 136, 470, 169" u="1" o="1" />
|
||||
<c c="ề" i="1" r="471, 136, 484, 169" u="1" o="1" />
|
||||
<c c="Ễ" i="1" r="485, 136, 498, 169" u="1" o="1" />
|
||||
<c c="ễ" i="1" r="499, 136, 512, 169" u="1" o="1" />
|
||||
<c c="Ệ" i="1" r="0, 170, 13, 203" u="1" o="1" />
|
||||
<c c="ệ" i="1" r="14, 170, 27, 203" u="1" o="1" />
|
||||
<c c="Ị" i="1" r="28, 170, 31, 203" u="1" o="1" />
|
||||
<c c="ị" i="1" r="32, 170, 38, 203" u="1" />
|
||||
<c c="Ọ" i="1" r="39, 170, 52, 203" u="1" o="1" />
|
||||
<c c="ọ" i="1" r="53, 170, 66, 203" u="1" o="1" />
|
||||
<c c="Ố" i="1" r="67, 170, 80, 203" u="1" o="1" />
|
||||
<c c="ố" i="1" r="81, 170, 94, 203" u="1" o="1" />
|
||||
<c c="Ồ" i="1" r="95, 170, 108, 203" u="1" o="1" />
|
||||
<c c="ồ" i="1" r="109, 170, 122, 203" u="1" o="1" />
|
||||
<c c="Ỗ" i="1" r="123, 170, 136, 203" u="1" o="1" />
|
||||
<c c="ỗ" i="1" r="137, 170, 150, 203" u="1" o="1" />
|
||||
<c c="Ộ" i="1" r="151, 170, 164, 203" u="1" o="1" />
|
||||
<c c="ộ" i="1" r="165, 170, 178, 203" u="1" o="1" />
|
||||
<c c=" " i="1" r="179, 170, 180, 203" o="10" />
|
||||
<c c=" " i="1" r="181, 170, 182, 203" o="21" />
|
||||
<c c=" " i="1" r="183, 170, 184, 203" o="10" />
|
||||
<c c=" " i="1" r="185, 170, 186, 203" o="21" />
|
||||
<c c=" " i="1" r="187, 170, 188, 203" o="7" />
|
||||
<c c=" " i="1" r="189, 170, 190, 203" o="5" />
|
||||
<c c=" " i="1" r="191, 170, 192, 203" o="3" />
|
||||
<c c=" " i="1" r="193, 170, 194, 203" o="16" />
|
||||
<c c=" " i="1" r="195, 170, 196, 203" o="5" />
|
||||
<c c=" " i="1" r="197, 170, 198, 203" o="4" />
|
||||
<c c=" " i="1" r="199, 170, 200, 203" o="2" />
|
||||
<c c="‐" i="1" r="201, 170, 212, 203" o="1" />
|
||||
<c c="‑" i="1" r="213, 170, 224, 203" o="1" />
|
||||
<c c="‒" i="1" r="225, 170, 239, 203" o="1" />
|
||||
<c c="–" i="1" r="240, 170, 255, 203" o="2" />
|
||||
<c c="—" i="1" r="256, 170, 276, 203" o="1" />
|
||||
<c c="―" i="1" r="277, 170, 298, 203" o="1" />
|
||||
<c c="‗" i="1" r="299, 170, 315, 203" />
|
||||
<c c="‘" i="1" r="316, 170, 320, 203" u="1" />
|
||||
<c c="’" i="1" r="321, 170, 325, 203" u="1" />
|
||||
<c c="‚" i="1" r="326, 170, 330, 203" u="1" />
|
||||
<c c="‛" i="1" r="331, 170, 335, 203" u="1" />
|
||||
<c c="“" i="1" r="336, 170, 344, 203" u="1" />
|
||||
<c c="”" i="1" r="345, 170, 353, 203" u="1" />
|
||||
<c c="„" i="1" r="354, 170, 362, 203" u="1" />
|
||||
<c c="‟" i="1" r="363, 170, 371, 203" u="1" />
|
||||
<c c="•" i="1" r="372, 170, 378, 203" o="2" />
|
||||
<c c="․" i="1" r="379, 170, 382, 203" u="1" o="1" />
|
||||
<c c="‥" i="1" r="383, 170, 390, 203" u="1" o="1" />
|
||||
<c c="…" i="1" r="391, 170, 402, 203" o="1" />
|
||||
<c c="‧" i="1" r="403, 170, 406, 203" u="1" o="1" />
|
||||
<c c="‰" i="1" r="407, 170, 429, 203" u="1" />
|
||||
<c c="‱" i="1" r="430, 170, 459, 203" u="1" />
|
||||
<c c="⁄" i="1" r="460, 170, 477, 203" u="-3" o="-4" />
|
||||
<c c="⁰" i="1" r="478, 170, 488, 203" u="1" />
|
||||
<c c="⁴" i="1" r="489, 170, 500, 203" u="1" o="-1" />
|
||||
<c c="⁵" i="1" r="501, 170, 511, 203" u="1" />
|
||||
<c c="⁶" i="1" r="0, 204, 10, 237" u="1" />
|
||||
<c c="⁷" i="1" r="11, 204, 21, 237" />
|
||||
<c c="⁸" i="1" r="22, 204, 32, 237" u="1" />
|
||||
<c c="⁹" i="1" r="33, 204, 43, 237" u="1" />
|
||||
<c c="₀" i="1" r="44, 204, 54, 237" u="1" />
|
||||
<c c="₁" i="1" r="55, 204, 60, 237" />
|
||||
<c c="₂" i="1" r="61, 204, 72, 237" />
|
||||
<c c="₃" i="1" r="73, 204, 83, 237" u="1" />
|
||||
<c c="₄" i="1" r="84, 204, 95, 237" u="1" o="-1" />
|
||||
<c c="₅" i="1" r="96, 204, 106, 237" u="1" />
|
||||
<c c="₆" i="1" r="107, 204, 117, 237" u="1" />
|
||||
<c c="₇" i="1" r="118, 204, 128, 237" />
|
||||
<c c="₈" i="1" r="129, 204, 139, 237" u="1" />
|
||||
<c c="₉" i="1" r="140, 204, 150, 237" u="1" />
|
||||
<c c="€" i="1" r="151, 204, 168, 237" />
|
||||
<c c="" i="1" r="169, 204, 184, 237" o="1" />
|
||||
<c c="" i="1" r="185, 204, 199, 237" o="1" />
|
||||
<c c="" i="1" r="200, 204, 218, 237" o="1" />
|
||||
<c c="" i="1" r="219, 204, 232, 237" u="1" o="1" />
|
||||
<c c="" i="1" r="233, 204, 248, 237" u="1" o="-1" />
|
||||
<c c="" i="1" r="249, 204, 266, 237" u="1" o="1" />
|
||||
<c c="" i="1" r="267, 204, 284, 237" u="1" o="1" />
|
||||
<c c="" i="1" r="285, 204, 303, 237" o="1" />
|
||||
<c c="" i="1" r="304, 204, 321, 237" u="1" o="1" />
|
||||
<c c="ff" i="1" r="322, 204, 339, 237" o="1" />
|
||||
<c c="fi" i="1" r="340, 204, 355, 237" />
|
||||
<c c="fl" i="1" r="356, 204, 372, 237" />
|
||||
<c c="ffi" i="1" r="373, 204, 395, 237" />
|
||||
<c c="ffl" i="1" r="396, 204, 419, 237" />
|
||||
<c c="ſt" i="1" r="420, 204, 435, 237" />
|
||||
<c c="st" i="1" r="436, 204, 456, 237" u="1" />
|
||||
-->
|
||||
</font>
|
@ -2,7 +2,7 @@
|
||||
|
||||
<div x="2%" y="1%" width="96%" height="99%" layout="vertical-row" >
|
||||
|
||||
<label width="100%" height="25" I18N="Section in track selection screen" text="Grand Prix"
|
||||
<header width="100%" I18N="Section in track selection screen" text="Grand Prix"
|
||||
align="center" text_align="center" />
|
||||
|
||||
<buttonbar id="gps" height="175" width="100%" align="center" square_items="true">
|
||||
@ -12,7 +12,7 @@
|
||||
<icon-button id="gp4" width="171" height="128" icon="gui/track4.png" text="At World's End"/>
|
||||
</buttonbar>
|
||||
|
||||
<label width="100%" height="25" I18N="Section in track selection screen" text="All Tracks"
|
||||
<header width="100%" I18N="Section in track selection screen" text="All Tracks"
|
||||
align="center" text_align="center" />
|
||||
|
||||
<box proportion="1" width="100%" layout="vertical-row">
|
||||
|
627
src/guiengine/CGUIFont.cpp
Normal file
627
src/guiengine/CGUIFont.cpp
Normal file
@ -0,0 +1,627 @@
|
||||
// Copyright (C) 2002-2009 Nikolaus Gebhardt
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#include "CGUIFont.h"
|
||||
|
||||
#include "IGUIEnvironment.h"
|
||||
#include "IXMLReader.h"
|
||||
#include "IReadFile.h"
|
||||
#include "IVideoDriver.h"
|
||||
#include "IGUISpriteBank.h"
|
||||
#include <iostream>
|
||||
#include "guiengine/engine.hpp"
|
||||
#include "io/file_manager.hpp"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
//! constructor
|
||||
ScalableFont::ScalableFont(IGUIEnvironment *env, const io::path& filename)
|
||||
: Driver(0), SpriteBank(0), Environment(env), WrongCharacter(0),
|
||||
MaxHeight(0), GlobalKerningWidth(0), GlobalKerningHeight(0)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("ScalableFont");
|
||||
#endif
|
||||
|
||||
m_scale = 1.0f;
|
||||
|
||||
if (Environment)
|
||||
{
|
||||
// don't grab environment, to avoid circular references
|
||||
Driver = Environment->getVideoDriver();
|
||||
|
||||
SpriteBank = Environment->addEmptySpriteBank(filename);
|
||||
if (SpriteBank)
|
||||
SpriteBank->grab();
|
||||
}
|
||||
|
||||
if (Driver)
|
||||
Driver->grab();
|
||||
|
||||
setInvisibleCharacters ( L" " );
|
||||
|
||||
load( file_manager->createXMLReader(filename.c_str()) );
|
||||
}
|
||||
|
||||
|
||||
//! destructor
|
||||
ScalableFont::~ScalableFont()
|
||||
{
|
||||
if (Driver)
|
||||
Driver->drop();
|
||||
|
||||
if (SpriteBank)
|
||||
SpriteBank->drop();
|
||||
}
|
||||
|
||||
|
||||
//! loads a font file from xml
|
||||
bool ScalableFont::load(io::IXMLReader* xml)
|
||||
{
|
||||
if (!SpriteBank)
|
||||
return false;
|
||||
|
||||
while (xml->read())
|
||||
{
|
||||
if (io::EXN_ELEMENT == xml->getNodeType())
|
||||
{
|
||||
if (core::stringw(L"Texture") == xml->getNodeName())
|
||||
{
|
||||
// add a texture
|
||||
core::stringc fn = core::stringc((file_manager->getGUIDir() + "/").c_str()) + xml->getAttributeValue(L"filename");
|
||||
u32 i = (u32)xml->getAttributeValueAsInt(L"index");
|
||||
core::stringw alpha = xml->getAttributeValue(L"hasAlpha");
|
||||
|
||||
std::cout << "---- Adding font texture " << fn.c_str() << "; alpha=" << alpha.c_str() << std::endl;
|
||||
|
||||
|
||||
while (i+1 > SpriteBank->getTextureCount())
|
||||
SpriteBank->addTexture(0);
|
||||
|
||||
// disable mipmaps+filtering
|
||||
//bool mipmap = Driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
|
||||
//Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
|
||||
|
||||
// load texture
|
||||
SpriteBank->setTexture(i, Driver->getTexture(fn));
|
||||
|
||||
// set previous mip-map+filter state
|
||||
//Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, mipmap);
|
||||
|
||||
// couldn't load texture, abort.
|
||||
if (!SpriteBank->getTexture(i))
|
||||
{
|
||||
std::cerr << "!!!!! Unable to load all textures in the font, aborting" << std::endl;
|
||||
_IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// colorkey texture rather than alpha channel?
|
||||
if (alpha == core::stringw("false"))
|
||||
Driver->makeColorKeyTexture(SpriteBank->getTexture(i), core::position2di(0,0));
|
||||
}
|
||||
}
|
||||
else if (core::stringw(L"c") == xml->getNodeName())
|
||||
{
|
||||
// adding a character to this font
|
||||
SFontArea a;
|
||||
SGUISpriteFrame f;
|
||||
SGUISprite s;
|
||||
core::rect<s32> rectangle;
|
||||
|
||||
a.underhang = xml->getAttributeValueAsInt(L"u");
|
||||
a.overhang = xml->getAttributeValueAsInt(L"o");
|
||||
a.spriteno = SpriteBank->getSprites().size();
|
||||
s32 texno = xml->getAttributeValueAsInt(L"i");
|
||||
|
||||
// parse rectangle
|
||||
core::stringc rectstr = xml->getAttributeValue(L"r");
|
||||
wchar_t ch = xml->getAttributeValue(L"c")[0];
|
||||
|
||||
const c8 *c = rectstr.c_str();
|
||||
s32 val;
|
||||
val = 0;
|
||||
while (*c >= '0' && *c <= '9')
|
||||
{
|
||||
val *= 10;
|
||||
val += *c - '0';
|
||||
c++;
|
||||
}
|
||||
rectangle.UpperLeftCorner.X = val;
|
||||
while (*c == L' ' || *c == L',') c++;
|
||||
|
||||
val = 0;
|
||||
while (*c >= '0' && *c <= '9')
|
||||
{
|
||||
val *= 10;
|
||||
val += *c - '0';
|
||||
c++;
|
||||
}
|
||||
rectangle.UpperLeftCorner.Y = val;
|
||||
while (*c == L' ' || *c == L',') c++;
|
||||
|
||||
val = 0;
|
||||
while (*c >= '0' && *c <= '9')
|
||||
{
|
||||
val *= 10;
|
||||
val += *c - '0';
|
||||
c++;
|
||||
}
|
||||
rectangle.LowerRightCorner.X = val;
|
||||
while (*c == L' ' || *c == L',') c++;
|
||||
|
||||
val = 0;
|
||||
while (*c >= '0' && *c <= '9')
|
||||
{
|
||||
val *= 10;
|
||||
val += *c - '0';
|
||||
c++;
|
||||
}
|
||||
rectangle.LowerRightCorner.Y = val;
|
||||
|
||||
CharacterMap.insert(ch,Areas.size());
|
||||
//std::cout << "Inserting character '" << ch << "' with area " << Areas.size() << std::endl;
|
||||
|
||||
// make frame
|
||||
f.rectNumber = SpriteBank->getPositions().size();
|
||||
f.textureNumber = texno;
|
||||
|
||||
// add frame to sprite
|
||||
s.Frames.push_back(f);
|
||||
s.frameTime = 0;
|
||||
|
||||
// add rectangle to sprite bank
|
||||
SpriteBank->getPositions().push_back(rectangle);
|
||||
a.width = rectangle.getWidth();
|
||||
|
||||
// add sprite to sprite bank
|
||||
SpriteBank->getSprites().push_back(s);
|
||||
|
||||
// add character to font
|
||||
Areas.push_back(a);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// set bad character
|
||||
WrongCharacter = getAreaFromCharacter(L' ');
|
||||
|
||||
setMaxHeight();
|
||||
|
||||
return true;
|
||||
}
|
||||
void ScalableFont::setScale(const float scale)
|
||||
{
|
||||
m_scale = scale;
|
||||
}
|
||||
|
||||
void ScalableFont::setMaxHeight()
|
||||
{
|
||||
MaxHeight = 0;
|
||||
s32 t;
|
||||
|
||||
core::array< core::rect<s32> >& p = SpriteBank->getPositions();
|
||||
|
||||
for (u32 i=0; i<p.size(); ++i)
|
||||
{
|
||||
t = p[i].getHeight();
|
||||
if (t>MaxHeight)
|
||||
MaxHeight = t;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//! loads a font file, native file needed, for texture parsing
|
||||
bool ScalableFont::load(io::IReadFile* file)
|
||||
{
|
||||
if (!Driver)
|
||||
return false;
|
||||
|
||||
return loadTexture(Driver->createImageFromFile(file),
|
||||
file->getFileName());
|
||||
}
|
||||
|
||||
|
||||
//! loads a font file, native file needed, for texture parsing
|
||||
bool ScalableFont::load(const io::path& filename)
|
||||
{
|
||||
if (!Driver)
|
||||
return false;
|
||||
|
||||
return loadTexture(Driver->createImageFromFile( filename ),
|
||||
filename);
|
||||
}
|
||||
|
||||
|
||||
//! load & prepare font from ITexture
|
||||
bool ScalableFont::loadTexture(video::IImage* image, const io::path& name)
|
||||
{
|
||||
if (!image)
|
||||
return false;
|
||||
|
||||
s32 lowerRightPositions = 0;
|
||||
|
||||
video::IImage* tmpImage=image;
|
||||
/*
|
||||
bool deleteTmpImage=false;
|
||||
switch(image->getColorFormat())
|
||||
{
|
||||
case video::ECF_R5G6B5:
|
||||
tmpImage = new video::CImage(video::ECF_A1R5G5B5,image);
|
||||
deleteTmpImage=true;
|
||||
break;
|
||||
case video::ECF_A1R5G5B5:
|
||||
case video::ECF_A8R8G8B8:
|
||||
break;
|
||||
case video::ECF_R8G8B8:
|
||||
tmpImage = new video::CImage(video::ECF_A8R8G8B8,image);
|
||||
deleteTmpImage=true;
|
||||
break;
|
||||
}*/
|
||||
readPositions(tmpImage, lowerRightPositions);
|
||||
|
||||
WrongCharacter = getAreaFromCharacter(L' ');
|
||||
|
||||
// output warnings
|
||||
if (!lowerRightPositions || !SpriteBank->getSprites().size())
|
||||
std::cerr << "Either no upper or lower corner pixels in the font file. If this font was made using the new font tool, please load the XML file instead. If not, the font may be corrupted.\n";
|
||||
else
|
||||
if (lowerRightPositions != (s32)SpriteBank->getPositions().size())
|
||||
std::cerr << "The amount of upper corner pixels and the lower corner pixels is not equal, font file may be corrupted.\n";
|
||||
|
||||
bool ret = ( !SpriteBank->getSprites().empty() && lowerRightPositions );
|
||||
|
||||
if ( ret )
|
||||
{
|
||||
bool flag[2];
|
||||
flag[0] = Driver->getTextureCreationFlag ( video::ETCF_ALLOW_NON_POWER_2 );
|
||||
flag[1] = Driver->getTextureCreationFlag ( video::ETCF_CREATE_MIP_MAPS );
|
||||
|
||||
Driver->setTextureCreationFlag(video::ETCF_ALLOW_NON_POWER_2, true);
|
||||
Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false );
|
||||
|
||||
SpriteBank->addTexture(Driver->addTexture(name, tmpImage));
|
||||
|
||||
Driver->setTextureCreationFlag(video::ETCF_ALLOW_NON_POWER_2, flag[0] );
|
||||
Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flag[1] );
|
||||
}
|
||||
//if (deleteTmpImage)
|
||||
// tmpImage->drop();
|
||||
image->drop();
|
||||
|
||||
setMaxHeight();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void ScalableFont::readPositions(video::IImage* image, s32& lowerRightPositions)
|
||||
{
|
||||
const core::dimension2d<u32> size = image->getDimension();
|
||||
|
||||
video::SColor colorTopLeft = image->getPixel(0,0);
|
||||
colorTopLeft.setAlpha(255);
|
||||
image->setPixel(0,0,colorTopLeft);
|
||||
video::SColor colorLowerRight = image->getPixel(1,0);
|
||||
video::SColor colorBackGround = image->getPixel(2,0);
|
||||
video::SColor colorBackGroundTransparent = 0;
|
||||
|
||||
image->setPixel(1,0,colorBackGround);
|
||||
|
||||
// start parsing
|
||||
|
||||
core::position2d<s32> pos(0,0);
|
||||
for (pos.Y=0; pos.Y<(s32)size.Height; ++pos.Y)
|
||||
{
|
||||
for (pos.X=0; pos.X<(s32)size.Width; ++pos.X)
|
||||
{
|
||||
const video::SColor c = image->getPixel(pos.X, pos.Y);
|
||||
if (c == colorTopLeft)
|
||||
{
|
||||
image->setPixel(pos.X, pos.Y, colorBackGroundTransparent);
|
||||
SpriteBank->getPositions().push_back(core::rect<s32>(pos, pos));
|
||||
}
|
||||
else
|
||||
if (c == colorLowerRight)
|
||||
{
|
||||
// too many lower right points
|
||||
if (SpriteBank->getPositions().size()<=(u32)lowerRightPositions)
|
||||
{
|
||||
lowerRightPositions = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
image->setPixel(pos.X, pos.Y, colorBackGroundTransparent);
|
||||
SpriteBank->getPositions()[lowerRightPositions].LowerRightCorner = pos;
|
||||
// add frame to sprite bank
|
||||
SGUISpriteFrame f;
|
||||
f.rectNumber = lowerRightPositions;
|
||||
f.textureNumber = 0;
|
||||
SGUISprite s;
|
||||
s.Frames.push_back(f);
|
||||
s.frameTime = 0;
|
||||
SpriteBank->getSprites().push_back(s);
|
||||
// add character to font
|
||||
SFontArea a;
|
||||
a.overhang = 0;
|
||||
a.underhang = 0;
|
||||
a.spriteno = lowerRightPositions;
|
||||
a.width = SpriteBank->getPositions()[lowerRightPositions].getWidth();
|
||||
Areas.push_back(a);
|
||||
// map letter to character
|
||||
wchar_t ch = (wchar_t)(lowerRightPositions + 32);
|
||||
CharacterMap.set(ch, lowerRightPositions);
|
||||
|
||||
++lowerRightPositions;
|
||||
}
|
||||
else
|
||||
if (c == colorBackGround)
|
||||
image->setPixel(pos.X, pos.Y, colorBackGroundTransparent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! set an Pixel Offset on Drawing ( scale position on width )
|
||||
void ScalableFont::setKerningWidth(s32 kerning)
|
||||
{
|
||||
GlobalKerningWidth = kerning;
|
||||
}
|
||||
|
||||
|
||||
//! set an Pixel Offset on Drawing ( scale position on width )
|
||||
s32 ScalableFont::getKerningWidth(const wchar_t* thisLetter, const wchar_t* previousLetter) const
|
||||
{
|
||||
s32 ret = GlobalKerningWidth;
|
||||
|
||||
if (thisLetter)
|
||||
{
|
||||
ret += Areas[getAreaFromCharacter(*thisLetter)].overhang;
|
||||
|
||||
if (previousLetter)
|
||||
{
|
||||
ret += Areas[getAreaFromCharacter(*previousLetter)].underhang;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//! set an Pixel Offset on Drawing ( scale position on height )
|
||||
void ScalableFont::setKerningHeight(s32 kerning)
|
||||
{
|
||||
GlobalKerningHeight = kerning;
|
||||
}
|
||||
|
||||
|
||||
//! set an Pixel Offset on Drawing ( scale position on height )
|
||||
s32 ScalableFont::getKerningHeight () const
|
||||
{
|
||||
return GlobalKerningHeight;
|
||||
}
|
||||
|
||||
|
||||
//! returns the sprite number from a given character
|
||||
u32 ScalableFont::getSpriteNoFromChar(const wchar_t *c) const
|
||||
{
|
||||
return Areas[getAreaFromCharacter(*c)].spriteno;
|
||||
}
|
||||
|
||||
|
||||
s32 ScalableFont::getAreaFromCharacter(const wchar_t c) const
|
||||
{
|
||||
core::map<wchar_t, s32>::Node* n = CharacterMap.find(c);
|
||||
if (n)
|
||||
return n->getValue();
|
||||
else
|
||||
return WrongCharacter;
|
||||
}
|
||||
|
||||
void ScalableFont::setInvisibleCharacters( const wchar_t *s )
|
||||
{
|
||||
Invisible = s;
|
||||
}
|
||||
|
||||
|
||||
//! returns the dimension of text
|
||||
core::dimension2d<u32> ScalableFont::getDimension(const wchar_t* text) const
|
||||
{
|
||||
core::dimension2d<u32> dim(0, 0);
|
||||
core::dimension2d<u32> thisLine(0, MaxHeight);
|
||||
|
||||
for (const wchar_t* p = text; *p; ++p)
|
||||
{
|
||||
bool lineBreak=false;
|
||||
if (*p == L'\r') // Windows breaks
|
||||
{
|
||||
lineBreak = true;
|
||||
if (p[1] == L'\n') // Windows breaks
|
||||
++p;
|
||||
}
|
||||
else if (*p == L'\n') // Unix breaks
|
||||
{
|
||||
lineBreak = true;
|
||||
}
|
||||
if (lineBreak)
|
||||
{
|
||||
dim.Height += thisLine.Height;
|
||||
if (dim.Width < thisLine.Width)
|
||||
dim.Width = thisLine.Width;
|
||||
thisLine.Width = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
const int areaID = getAreaFromCharacter(*p);
|
||||
const SFontArea &area = Areas[areaID];
|
||||
|
||||
thisLine.Width += area.underhang;
|
||||
thisLine.Width += area.width + area.overhang + GlobalKerningWidth;
|
||||
}
|
||||
|
||||
dim.Height += thisLine.Height;
|
||||
if (dim.Width < thisLine.Width)
|
||||
dim.Width = thisLine.Width;
|
||||
|
||||
// std::cout << "ScalableFont::getDimension returns : " << dim.Width << ", " << dim.Height << " --> ";
|
||||
|
||||
dim.Width = (int)(dim.Width * m_scale);
|
||||
dim.Height = (int)(dim.Height * m_scale);
|
||||
|
||||
//std::cout << dim.Width << ", " << dim.Height << std::endl;
|
||||
|
||||
return dim;
|
||||
}
|
||||
|
||||
//! draws some text and clips it to the specified rectangle if wanted
|
||||
void ScalableFont::draw(const core::stringw& text, const core::rect<s32>& position,
|
||||
video::SColor color, bool hcenter, bool vcenter, const core::rect<s32>* clip)
|
||||
{
|
||||
if (!Driver)
|
||||
return;
|
||||
|
||||
//color = video::SColor(255,255,255,255);
|
||||
|
||||
core::dimension2d<s32> textDimension;
|
||||
core::position2d<s32> offset = position.UpperLeftCorner;
|
||||
|
||||
if (hcenter || vcenter || clip)
|
||||
textDimension = getDimension(text.c_str());
|
||||
|
||||
if (hcenter)
|
||||
{
|
||||
offset.X += (position.getWidth() - textDimension.Width) >> 1;
|
||||
}
|
||||
|
||||
if (vcenter)
|
||||
offset.Y += (position.getHeight() - textDimension.Height) >> 1;
|
||||
|
||||
if (clip)
|
||||
{
|
||||
core::rect<s32> clippedRect(offset, textDimension);
|
||||
clippedRect.clipAgainst(*clip);
|
||||
if (!clippedRect.isValid())
|
||||
return;
|
||||
}
|
||||
|
||||
core::array<u32> indices(text.size());
|
||||
core::array<core::position2di> offsets(text.size());
|
||||
|
||||
for(u32 i = 0;i < text.size();i++)
|
||||
{
|
||||
wchar_t c = text[i];
|
||||
|
||||
bool lineBreak=false;
|
||||
if ( c == L'\r') // Windows breaks
|
||||
{
|
||||
lineBreak = true;
|
||||
if ( text[i + 1] == L'\n') // Windows breaks
|
||||
c = text[++i];
|
||||
}
|
||||
else if ( c == L'\n') // Unix breaks
|
||||
{
|
||||
lineBreak = true;
|
||||
}
|
||||
|
||||
if (lineBreak)
|
||||
{
|
||||
offset.Y += MaxHeight;
|
||||
offset.X = position.UpperLeftCorner.X;
|
||||
|
||||
if ( hcenter )
|
||||
{
|
||||
core::dimension2d<u32> lineDim = getDimension(text.c_str());
|
||||
offset.X += (position.getWidth() - lineDim.Width) >> 1;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
const int areaID = getAreaFromCharacter(c);
|
||||
//std::cout << "Char " << c << " has area " << areaID << std::endl;
|
||||
SFontArea& area = Areas[areaID];
|
||||
|
||||
offset.X += area.underhang;
|
||||
if ( Invisible.findFirst ( c ) < 0 )
|
||||
{
|
||||
indices.push_back(area.spriteno);
|
||||
offsets.push_back(offset);
|
||||
}
|
||||
|
||||
offset.X += (area.width + area.overhang + GlobalKerningWidth) * m_scale;
|
||||
}
|
||||
|
||||
//SpriteBank->draw2DSpriteBatch(indices, offsets, clip, color);
|
||||
|
||||
const int indiceAmount = indices.size();
|
||||
core::array< SGUISprite >& sprites = SpriteBank->getSprites();
|
||||
core::array< core::rect<s32> >& positions = SpriteBank->getPositions();
|
||||
video::IVideoDriver* driver = GUIEngine::getDriver();
|
||||
const int spriteAmount = sprites.size();
|
||||
for (int n=0; n<indiceAmount; n++)
|
||||
{
|
||||
const int spriteID = indices[n];
|
||||
if (spriteID < 0 || spriteID >= spriteAmount) continue;
|
||||
|
||||
assert(sprites[spriteID].Frames.size() > 0);
|
||||
const int texID = sprites[spriteID].Frames[0].textureNumber;
|
||||
core::rect<s32> source = positions[sprites[spriteID].Frames[0].rectNumber];
|
||||
|
||||
//std::cout << "Rendering " << source.UpperLeftCorner.X << ", " << source.UpperLeftCorner.Y << " to " <<
|
||||
// offsets[n].X << ", " << offsets[n].Y << "; size = " << source.getWidth() << ", " << source.getHeight() << std::endl;
|
||||
|
||||
core::dimension2d<s32> size = source.getSize();
|
||||
size.Width = (int)(size.Width * m_scale);
|
||||
size.Height = (int)(size.Height * m_scale);
|
||||
core::rect<s32> dest(offsets[n], size);
|
||||
//std::cout << "source size = " << source.getWidth() << ", " << source.getHeight() << ", dest size = " << dest.getWidth() << ", " << dest.getHeight() << "; m_scale=" << m_scale << std::endl;
|
||||
|
||||
video::SColor colors[] = {color, color, color, color};
|
||||
|
||||
video::ITexture* texture = SpriteBank->getTexture(texID);
|
||||
driver->draw2DImage(texture,
|
||||
dest,
|
||||
source,
|
||||
clip,
|
||||
colors, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! Calculates the index of the character in the text which is on a specific position.
|
||||
s32 ScalableFont::getCharacterFromPos(const wchar_t* text, s32 pixel_x) const
|
||||
{
|
||||
s32 x = 0;
|
||||
s32 idx = 0;
|
||||
|
||||
while (text[idx])
|
||||
{
|
||||
const SFontArea& a = Areas[getAreaFromCharacter(text[idx])];
|
||||
|
||||
x += a.width + a.overhang + a.underhang + GlobalKerningWidth;
|
||||
|
||||
if (x >= pixel_x)
|
||||
return idx;
|
||||
|
||||
++idx;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
IGUISpriteBank* ScalableFont::getSpriteBank() const
|
||||
{
|
||||
return SpriteBank;
|
||||
}
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
|
120
src/guiengine/CGUIFont.h
Normal file
120
src/guiengine/CGUIFont.h
Normal file
@ -0,0 +1,120 @@
|
||||
// Copyright (C) 2002-2009 Nikolaus Gebhardt
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __C_GUI_FONT_H_INCLUDED__
|
||||
#define __C_GUI_FONT_H_INCLUDED__
|
||||
|
||||
#include "IrrCompileConfig.h"
|
||||
|
||||
#include "IGUIFontBitmap.h"
|
||||
#include "irrString.h"
|
||||
#include "irrMap.h"
|
||||
#include "IXMLReader.h"
|
||||
#include "IReadFile.h"
|
||||
#include "irrArray.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
||||
namespace video
|
||||
{
|
||||
class IVideoDriver;
|
||||
class IImage;
|
||||
}
|
||||
|
||||
namespace gui
|
||||
{
|
||||
|
||||
class IGUIEnvironment;
|
||||
|
||||
class ScalableFont : public IGUIFontBitmap
|
||||
{
|
||||
float m_scale;
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
ScalableFont(IGUIEnvironment* env, const io::path& filename);
|
||||
|
||||
//! destructor
|
||||
virtual ~ScalableFont();
|
||||
|
||||
//! loads a font from a texture file
|
||||
bool load(const io::path& filename);
|
||||
|
||||
//! loads a font from a texture file
|
||||
bool load(io::IReadFile* file);
|
||||
|
||||
//! loads a font from an XML file
|
||||
bool load(io::IXMLReader* xml);
|
||||
|
||||
//! draws an text and clips it to the specified rectangle if wanted
|
||||
virtual void draw(const core::stringw& text, const core::rect<s32>& position,
|
||||
video::SColor color, bool hcenter=false,
|
||||
bool vcenter=false, const core::rect<s32>* clip=0);
|
||||
|
||||
//! returns the dimension of a text
|
||||
virtual core::dimension2d<u32> getDimension(const wchar_t* text) const;
|
||||
|
||||
//! Calculates the index of the character in the text which is on a specific position.
|
||||
virtual s32 getCharacterFromPos(const wchar_t* text, s32 pixel_x) const;
|
||||
|
||||
//! Returns the type of this font
|
||||
virtual EGUI_FONT_TYPE getType() const { return EGFT_BITMAP; }
|
||||
|
||||
//! set an Pixel Offset on Drawing ( scale position on width )
|
||||
virtual void setKerningWidth (s32 kerning);
|
||||
virtual void setKerningHeight (s32 kerning);
|
||||
|
||||
//! set an Pixel Offset on Drawing ( scale position on width )
|
||||
virtual s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const;
|
||||
virtual s32 getKerningHeight() const;
|
||||
|
||||
//! gets the sprite bank
|
||||
virtual IGUISpriteBank* getSpriteBank() const;
|
||||
|
||||
//! returns the sprite number from a given character
|
||||
virtual u32 getSpriteNoFromChar(const wchar_t *c) const;
|
||||
|
||||
virtual void setInvisibleCharacters( const wchar_t *s );
|
||||
|
||||
void setScale(const float scale);
|
||||
float getScale() const { return m_scale; }
|
||||
|
||||
private:
|
||||
|
||||
struct SFontArea
|
||||
{
|
||||
SFontArea() : underhang(0), overhang(0), width(0), spriteno(0) {}
|
||||
s32 underhang;
|
||||
s32 overhang;
|
||||
s32 width;
|
||||
u32 spriteno;
|
||||
};
|
||||
|
||||
//! load & prepare font from ITexture
|
||||
bool loadTexture(video::IImage * image, const io::path& name);
|
||||
|
||||
void readPositions(video::IImage* texture, s32& lowerRightPositions);
|
||||
|
||||
s32 getAreaFromCharacter (const wchar_t c) const;
|
||||
void setMaxHeight();
|
||||
|
||||
core::array<SFontArea> Areas;
|
||||
core::map<wchar_t, s32> CharacterMap;
|
||||
video::IVideoDriver* Driver;
|
||||
IGUISpriteBank* SpriteBank;
|
||||
IGUIEnvironment* Environment;
|
||||
u32 WrongCharacter;
|
||||
s32 MaxHeight;
|
||||
s32 GlobalKerningWidth, GlobalKerningHeight;
|
||||
|
||||
core::stringw Invisible;
|
||||
};
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif // __C_GUI_FONT_H_INCLUDED__
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
#include "io/file_manager.hpp"
|
||||
#include "input/input_manager.hpp"
|
||||
#include "guiengine/CGUIFont.h"
|
||||
#include "guiengine/event_handler.hpp"
|
||||
#include "guiengine/modaldialog.hpp"
|
||||
#include "guiengine/screen.hpp"
|
||||
@ -41,6 +42,8 @@ namespace GUIEngine
|
||||
IGUIEnvironment* g_env;
|
||||
Skin* g_skin = NULL;
|
||||
IGUIFont* g_font;
|
||||
IGUIFont* g_title_font;
|
||||
|
||||
IrrlichtDevice* g_device;
|
||||
IVideoDriver* g_driver;
|
||||
Screen* g_current_screen = NULL;
|
||||
@ -185,8 +188,19 @@ void init(IrrlichtDevice* device_a, IVideoDriver* driver_a, AbstractStateManager
|
||||
g_skin = new Skin(g_env->getSkin());
|
||||
g_env->setSkin(g_skin);
|
||||
//g_skin = g_env->getSkin();
|
||||
g_font = g_env->getFont( (file_manager->getGUIDir() + "/okolaks.xml").c_str() );
|
||||
if (g_font) g_skin->setFont(g_font);
|
||||
|
||||
// TODO: adapt font size depending on resolution
|
||||
ScalableFont* sfont = new ScalableFont(g_env, (file_manager->getGUIDir() + "/okolaks.xml").c_str());
|
||||
g_font = sfont;
|
||||
//g_font = g_env->getFont( (file_manager->getGUIDir() + "/okolaks.xml").c_str() );
|
||||
|
||||
ScalableFont* sfont2 = new ScalableFont(g_env, (file_manager->getGUIDir() + "/title_font.xml").c_str());
|
||||
sfont2->setScale(0.3f);
|
||||
sfont2->setKerningWidth(-18);
|
||||
g_title_font = sfont2;
|
||||
|
||||
|
||||
if (g_font != NULL) g_skin->setFont(g_font);
|
||||
|
||||
//g_skin->setFont(g_env->getBuiltInFont(), EGDF_TOOLTIP);
|
||||
|
||||
|
@ -59,8 +59,9 @@ be clickable. PROP_ICON is mandatory for this component.
|
||||
WTYPE_CHECKBOX "checkbox"
|
||||
A checkbox. Not used at the moment.
|
||||
|
||||
WTYPE_LABEL "label"
|
||||
WTYPE_LABEL "label" "header"
|
||||
A plain label. Supports properties PROP_WORD_WRAP and PROP_TEXT_ALIGN.
|
||||
The "Header" variant uses a bigger and more colourful font.
|
||||
|
||||
WTYPE_SPACER "spacer"
|
||||
Some blank space; not visible on screen.
|
||||
@ -235,6 +236,8 @@ namespace GUIEngine
|
||||
extern irr::gui::IGUIEnvironment* g_env;
|
||||
extern Skin* g_skin;
|
||||
extern irr::gui::IGUIFont* g_font;
|
||||
extern irr::gui::IGUIFont* g_title_font;
|
||||
|
||||
extern IrrlichtDevice* g_device;
|
||||
extern irr::video::IVideoDriver* g_driver;
|
||||
extern Screen* g_current_screen;
|
||||
@ -246,6 +249,7 @@ namespace GUIEngine
|
||||
inline irr::gui::IGUIEnvironment* getGUIEnv() { return Private::g_env; }
|
||||
inline irr::video::IVideoDriver* getDriver() { return Private::g_driver; }
|
||||
inline irr::gui::IGUIFont* getFont() { return Private::g_font; }
|
||||
inline irr::gui::IGUIFont* getTitleFont() { return Private::g_title_font; }
|
||||
inline Screen* getCurrentScreen() { return Private::g_current_screen; }
|
||||
inline AbstractStateManager* getStateManager() { return Private::g_state_manager; }
|
||||
|
||||
|
@ -119,6 +119,10 @@ void parseScreenFileDiv(irr::io::IrrXMLReader* xml, ptr_vector<Widget>& append_t
|
||||
{
|
||||
append_to.push_back(new LabelWidget());
|
||||
}
|
||||
else if (!strcmp("header", xml->getNodeName()))
|
||||
{
|
||||
append_to.push_back(new LabelWidget(true));
|
||||
}
|
||||
else if (!strcmp("spacer", xml->getNodeName()))
|
||||
{
|
||||
append_to.push_back(new Widget());
|
||||
|
@ -62,6 +62,7 @@ Widget::Widget(bool reserve_id)
|
||||
h = -1;
|
||||
id = -1;
|
||||
m_element = NULL;
|
||||
m_title_font = false;
|
||||
m_type = WTYPE_NONE;
|
||||
|
||||
m_event_handler = NULL;
|
||||
@ -283,12 +284,12 @@ void Widget::readCoords(Widget* parent)
|
||||
texture_h = texture->getSize().Height;
|
||||
}
|
||||
}
|
||||
|
||||
// ---- if this widget has a label, get text length. this can helpful determine its optimal size
|
||||
|
||||
// ---- if this widget has a label, get text size. this can helpful determine its optimal size
|
||||
int label_w = -1, label_h = -1;
|
||||
if (m_text.size() > 0)
|
||||
{
|
||||
IGUIFont* font = GUIEngine::getFont();
|
||||
IGUIFont* font = (m_title_font ? GUIEngine::getTitleFont() : GUIEngine::getFont());
|
||||
core::dimension2d< u32 > dim = font->getDimension( m_text.c_str() );
|
||||
label_w = dim.Width;
|
||||
// FIXME - won't work with multiline labels. thus, for now, when multiple
|
||||
@ -317,7 +318,7 @@ void Widget::readCoords(Widget* parent)
|
||||
if(abs_h > -1) this->h = abs_h;
|
||||
else if(percent_h > -1) this->h = parent_h*percent_h/100;
|
||||
}
|
||||
else if(texture_h > -1 && label_h > -1) this->h = texture_h + label_h;
|
||||
else if(texture_h > -1 && label_h > -1) this->h = texture_h + label_h; // label + icon
|
||||
else if(texture_h > -1) this->h = texture_h;
|
||||
else if(label_h > -1) this->h = label_h;
|
||||
}
|
||||
@ -349,8 +350,7 @@ void Widget::readCoords(Widget* parent)
|
||||
{
|
||||
const int max_height = atoi( this->m_properties[PROP_MAX_HEIGHT].c_str() );
|
||||
if(this->h > max_height) this->h = max_height;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::setParent(IGUIElement* parent)
|
||||
|
@ -100,7 +100,9 @@ namespace GUIEngine
|
||||
friend class Skin;
|
||||
friend class DynamicRibbonWidget;
|
||||
|
||||
|
||||
/** When true, this widget shall use a bigger and more colourful font */
|
||||
bool m_title_font;
|
||||
|
||||
/**
|
||||
* Can be used in children to indicate whether a widget is selected or not
|
||||
* - in widgets where it makes sense (e.g. ribbon children) and where the
|
||||
|
@ -21,9 +21,10 @@ using namespace GUIEngine;
|
||||
using namespace irr::core;
|
||||
using namespace irr::gui;
|
||||
|
||||
LabelWidget::LabelWidget()
|
||||
LabelWidget::LabelWidget(bool title)
|
||||
{
|
||||
m_type = WTYPE_LABEL;
|
||||
m_title_font = title;
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
void LabelWidget::add()
|
||||
@ -41,6 +42,12 @@ void LabelWidget::add()
|
||||
m_element = irrwidget;
|
||||
irrwidget->setTextAlignment( align, valign );
|
||||
|
||||
if (m_title_font)
|
||||
{
|
||||
irrwidget->setOverrideColor( video::SColor(255,255,255,255) );
|
||||
irrwidget->setOverrideFont( GUIEngine::getTitleFont() );
|
||||
}
|
||||
|
||||
id = m_element->getID();
|
||||
//m_element->setTabOrder(id);
|
||||
m_element->setTabStop(false);
|
||||
|
@ -31,7 +31,7 @@ namespace GUIEngine
|
||||
class LabelWidget : public Widget
|
||||
{
|
||||
public:
|
||||
LabelWidget();
|
||||
LabelWidget(bool title=false);
|
||||
virtual ~LabelWidget() {}
|
||||
|
||||
void add();
|
||||
|
@ -54,6 +54,7 @@
|
||||
952A1554103F68D000B1895D /* profile_world.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 952A1552103F68D000B1895D /* profile_world.cpp */; };
|
||||
953789730FC7829100DD1F8E /* graph_node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 953789720FC7829100DD1F8E /* graph_node.cpp */; };
|
||||
953789820FC7831400DD1F8E /* quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 953789810FC7831400DD1F8E /* quad.cpp */; };
|
||||
953C3CCA10CAF3EE0025F78A /* CGUIFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 953C3CC910CAF3EE0025F78A /* CGUIFont.cpp */; };
|
||||
954E4C2D0FF98B6F0047FE3E /* animation_base.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 954E4C250FF98B6E0047FE3E /* animation_base.cpp */; };
|
||||
954E4C2E0FF98B6F0047FE3E /* animation_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 954E4C270FF98B6E0047FE3E /* animation_manager.cpp */; };
|
||||
954E4C2F0FF98B6F0047FE3E /* billboard_animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 954E4C290FF98B6E0047FE3E /* billboard_animation.cpp */; };
|
||||
@ -399,6 +400,8 @@
|
||||
953789720FC7829100DD1F8E /* graph_node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = graph_node.cpp; path = ../../tracks/graph_node.cpp; sourceTree = SOURCE_ROOT; };
|
||||
953789800FC7831400DD1F8E /* quad.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = quad.hpp; path = ../../tracks/quad.hpp; sourceTree = SOURCE_ROOT; };
|
||||
953789810FC7831400DD1F8E /* quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = quad.cpp; path = ../../tracks/quad.cpp; sourceTree = SOURCE_ROOT; };
|
||||
953C3CC910CAF3EE0025F78A /* CGUIFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CGUIFont.cpp; path = ../../guiengine/CGUIFont.cpp; sourceTree = SOURCE_ROOT; };
|
||||
953C3CCD10CAF4150025F78A /* CGUIFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CGUIFont.h; path = ../../guiengine/CGUIFont.h; sourceTree = SOURCE_ROOT; };
|
||||
953EAAAD0F30A4220000D57D /* terrain_info.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = terrain_info.hpp; path = ../../tracks/terrain_info.hpp; sourceTree = SOURCE_ROOT; };
|
||||
953EAAAE0F30A4220000D57D /* terrain_info.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = terrain_info.cpp; path = ../../tracks/terrain_info.cpp; sourceTree = SOURCE_ROOT; };
|
||||
953EAAB00F30A4410000D57D /* triangle_mesh.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = triangle_mesh.hpp; path = ../../physics/triangle_mesh.hpp; sourceTree = SOURCE_ROOT; };
|
||||
@ -1230,6 +1233,8 @@
|
||||
958330B110122B4A00C5137E /* guiengine */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
953C3CC910CAF3EE0025F78A /* CGUIFont.cpp */,
|
||||
953C3CCD10CAF4150025F78A /* CGUIFont.h */,
|
||||
9583319810123B0200C5137E /* abstract_state_manager.cpp */,
|
||||
9583319710123B0200C5137E /* abstract_state_manager.hpp */,
|
||||
958330B210122B4A00C5137E /* engine.cpp */,
|
||||
@ -2558,6 +2563,7 @@
|
||||
9522F1F1107961560067ECF5 /* options_screen_players.cpp in Sources */,
|
||||
951B7D19108E52C900BC03AE /* challenges.cpp in Sources */,
|
||||
95FB16DB10A7796800645974 /* new_ai.cpp in Sources */,
|
||||
953C3CCA10CAF3EE0025F78A /* CGUIFont.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -148,14 +148,15 @@ namespace GUIEngine
|
||||
|
||||
// ---- section name
|
||||
video::SColor color( 255 /* a */, 0 /* r */, 0 /* g */ , 75 /* b */ );
|
||||
|
||||
video::SColor white_color( 255, 255, 255, 255 );
|
||||
|
||||
// manage fade-in
|
||||
if (before_first_elem)
|
||||
{
|
||||
int alpha = 255 - (int)(time_before_next_step/TIME_SECTION_FADE * 255);
|
||||
if(alpha < 0) alpha = 0;
|
||||
else if(alpha > 255) alpha = 255;
|
||||
color.setAlpha( alpha );
|
||||
white_color.setAlpha( alpha );
|
||||
}
|
||||
// manage fade-out
|
||||
else if (after_last_elem)
|
||||
@ -163,10 +164,10 @@ namespace GUIEngine
|
||||
int alpha = (int)(time_before_next_step/TIME_SECTION_FADE * 255);
|
||||
if(alpha < 0) alpha = 0;
|
||||
else if(alpha > 255) alpha = 255;
|
||||
color.setAlpha( alpha );
|
||||
white_color.setAlpha( alpha );
|
||||
}
|
||||
|
||||
GUIEngine::getFont()->draw(m_sections[m_curr_section].m_name.c_str(), m_section_rect, color,
|
||||
GUIEngine::getTitleFont()->draw(m_sections[m_curr_section].m_name.c_str(), m_section_rect, white_color,
|
||||
true /* center h */, true /* center v */ );
|
||||
|
||||
// draw entries
|
||||
|
Loading…
Reference in New Issue
Block a user