ofs | hex dump | ascii |
---|
0000 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 5c 00 00 00 c3 08 06 00 00 00 ce 51 a9 | .PNG........IHDR...\..........Q. |
0020 | 0e 00 00 00 04 73 42 49 54 08 08 08 08 7c 08 64 88 00 00 20 00 49 44 41 54 78 9c ed bd 79 94 64 | .....sBIT....|.d.....IDATx...y.d |
0040 | 77 75 e7 f9 f9 bd 2d 22 23 f7 b5 f6 5d 5b 49 aa 42 aa 2a 21 8c 90 05 0c 0d 16 98 c5 6d c3 9c a1 | wu....-"#...][I.B.*!........m... |
0060 | 6d e3 06 1a 0f 73 7a 3c 74 db 9e 69 16 1b 63 c0 76 b7 c7 6e 6c 43 33 b2 8d db 0c 98 3e 07 18 37 | m....sz<t..i..c.v..nlC3.....>..7 |
0080 | 18 5a 80 91 65 09 10 a8 90 aa 24 24 b4 96 6a 5f 33 b3 aa 72 8d f5 2d bf f9 e3 17 ef c5 8b c8 88 | .Z..e.....$$..j_3..r..-......... |
00a0 | ac dc 33 55 ba 9f 73 52 7a f1 de ef 2d 79 4f c6 b7 ee bb bf 7b ef 4f 1d 38 70 40 23 08 82 20 2c | ..3U..sRz...-yO.....{.O.8p@#..., |
00c0 | 3b d6 6a 3f 80 20 08 c2 4b 05 11 5c 41 10 84 15 42 04 57 10 04 61 85 10 c1 15 04 41 58 21 9c c6 | ;.j?....K..\A...B.W..a.....AX!.. |
00e0 | 1d 27 8e 9f 59 8d e7 58 71 b6 ef d8 3c af f1 62 97 e6 88 5d 04 61 ee cc 10 5c 80 f6 8e cc 4a 3f | .'..Y..Xq...<..b...].a...\....J? |
0100 | c7 8a 92 9f 2e 2f e8 3c b1 4b 73 c4 2e 82 30 37 24 a4 20 08 82 b0 42 34 f5 70 57 8a fd db 1d f6 | ...../.<.Ks...07$.....B4.pW..... |
0120 | df b8 21 f9 fc 97 f7 9e 5e c5 a7 11 04 41 58 5e 56 45 70 df f5 9a 5e 00 7e 7a 7c 8a 27 9e 1f 06 | ..!.....^....AX^VEp...^.~z|.'... |
0140 | 60 ef 75 eb 78 df 1b b7 00 22 bc 82 20 5c 9d ac a8 e0 c6 82 0a 50 2e 4e 73 f3 8e 4e 00 9e 3b 9d | `.u.x...."...\.......P.Ns..N..;. |
0160 | 4f 84 f7 c6 ed 5d bc fb 75 03 00 fc cd 7d 17 57 f2 f1 04 41 10 96 95 15 89 e1 ee df ee f0 ae d7 | O....]..u....}.W...A............ |
0180 | f4 52 2e 4e b3 79 b0 83 72 71 1a 80 4c 5b 07 cf 9d ce 03 c6 c3 05 78 fa c4 24 4f 9f 98 64 fb a6 | .R.N.y..rq..L[........x..$O..d.. |
01a0 | 41 7e ff 5d bb f9 c3 77 df b4 12 8f 28 08 82 b0 ec 2c ab 87 1b 8b e5 57 ef 7f 2e 11 d6 5d 5b eb | A~.]...w....(....,.....W.....][. |
01c0 | c7 c4 42 9b de 7e e2 f9 61 ee 7d e8 28 00 6f fd d9 6b 93 eb 7c f0 6f 9e 5a ce c7 15 04 41 58 56 | ..B..~..a.}.(.o..k..|.o.Z....AXV |
01e0 | 54 63 f3 9a 13 c7 cf 2c 3a cd 27 8e d1 02 dc b0 63 63 b2 fd f5 ef 1d 49 b6 af df d2 9e 6c db b6 | Tc.....,:.'.....cc.....I.....l.. |
0200 | 9d 6c 3b 5e 5b b2 1d 87 19 c0 08 6f cc 62 85 37 3f 5d 5e 50 be e9 4b 21 fd 49 ec 32 93 85 d8 45 | .l;^[......o.b.7?]^P..K!.I.2...E |
0220 | 10 9a b1 a4 1e ee fe ed 4e 12 97 dd b5 75 3d 67 46 a7 39 7e 61 12 80 1d eb bb 12 d1 fc fa f7 8e | ........N....u=gF.9~a........... |
0240 | cc 08 25 00 ac ef 31 62 7b 66 e4 32 8e d7 56 e7 f1 7e fd 7b 47 f0 83 88 5f 7a ed f5 e2 f1 0a 82 | ..%...1b{f.2..V..~.{G..._z...... |
0260 | f0 a2 64 49 3c dc 74 d6 41 cc 5b ef ba 16 d7 36 21 e2 58 74 c1 08 6f 4c da e3 4d 0b 6f 50 29 12 | ..dI<.t.A.[....6!.Xt..oL..M.oP). |
0280 | 86 21 60 e2 bc 31 87 9e 3e 9f 6c ff d2 6b af c7 0f 23 00 7e f7 f3 cf cc eb 79 c5 93 6b 8e d8 a5 | .!`..1..>.l..k...#.~.....y..k... |
02a0 | 39 e2 e1 0a 4b c5 a2 04 37 1d 3a 48 93 16 de 5f 7a ed f5 c9 f6 b3 c7 cf 25 db ad 42 0d 69 e1 6d | 9...K...7.:H..._z.......%..B.i.m |
02c0 | 45 5a 78 6f bb b9 76 9d ff e7 9b a7 ae 78 2e 88 b0 b4 42 ec d2 1c 11 5c 61 a9 58 90 e0 be e2 1a | EZxo..v......x....B....\a.X..... |
02e0 | 2f 09 0f 1c bf 30 c9 e6 41 e3 85 ba b6 55 e7 cd c6 c2 e8 3a 16 af 7f f9 76 00 7e f8 c4 59 36 0d | /....0..A....U.....:....v.~..Y6. |
0300 | 7a c9 98 66 c2 eb 07 11 b7 57 85 74 7d 7f 3b 67 46 a7 67 3c 43 b9 38 9d 84 25 a0 5e a8 af 94 c7 | z..f.....W.t}.;gF.g<C.8..%.^.... |
0320 | 2b c2 d2 1c b1 4b 73 44 70 85 a5 62 5e 82 1b 7b b4 ad 84 2e 1d 2e 48 0b 6f 7a f2 ab 23 eb b2 75 | +....KsDp..b^..{......H.oz..#..u |
0340 | bd 89 d5 c6 61 03 a8 17 de af de ff 5c b2 dd 2a 34 11 a7 96 c5 cf e3 07 26 bc 30 97 ca 35 11 96 | ....a.......\..*4.......&.0..5.. |
0360 | e6 88 5d 9a 23 82 2b 2c 15 73 12 dc 74 2e 6c 3a 2c 30 17 e1 3d 3d 52 0b 2f 1c 7e f6 42 d3 f1 69 | ..].#.+,.s..t.l:,0..==R./.~.B..i |
0380 | f1 6c 25 bc e9 d0 44 5a 78 d3 a4 43 0d b3 09 af 08 4b 73 c4 2e cd 11 c1 15 96 8a 39 09 ee 2b af | .l%...DZx..C.....Ks........9..+. |
03a0 | 37 1e e9 9b ef d8 99 ec 8b 85 d7 b6 6d 9e 3e 51 13 c0 66 c2 1b 4f 6e 81 09 3b b4 8a d9 b6 12 de | 7...........m.>Q..f..On..;...... |
03c0 | f4 f8 74 7a 58 2b 8f 37 8e 21 6f d9 d0 0d c0 d7 7e 74 a9 ee f7 11 61 69 8e d8 a5 39 22 b8 c2 52 | ..tzX+.7.!o.....~t....ai...9"..R |
03e0 | 31 27 c1 5d df 5e 62 e7 e6 da 04 d9 9b ef d8 99 88 e8 89 b3 a3 6c df 34 08 90 14 2b 40 bd 90 6e | 1'.].^b..............l.4...+@..n |
0400 | 1e ec e0 c2 25 e3 0d 6f 19 ea 4c f6 cf 55 78 e3 7b dd fb d0 d1 24 74 d0 ca e3 2d 17 a7 99 28 d5 | ....%..o..L..Ux.{....$t...-...(. |
0420 | 0a e8 9e 3a 3a ca 91 91 fa 82 3a 11 96 e6 88 5d 9a 23 82 2b 2c 15 73 16 5c 00 db b6 d8 56 f5 1a | ...::.....:....].#.+,.s.\....V.. |
0440 | a3 a0 c2 2d bb 37 25 63 b6 b5 10 d2 7d 37 ac 4f b6 83 a8 76 ab b9 a4 87 a5 85 37 4d ab 2c 88 83 | ...-.7%c....}7.O...v......7M.,.. |
0460 | cf d4 42 16 4f 1d 1d 4d b6 45 70 e7 86 d8 a5 39 22 b8 c2 52 31 27 c1 bd 6d 87 e2 f4 48 11 db ae | ..B.O..M.Ep....9"..R1'..m...H... |
0480 | 09 d7 96 c1 36 06 fb 8c 68 6e 18 ac e5 ca c6 42 5a 2c f9 fc e3 8f 4f 24 fb df 78 c7 ae 64 3b f6 | ....6...hn.....BZ,....O$..x..d;. |
04a0 | 76 d7 f7 b7 27 13 62 30 b7 f4 b0 66 a1 83 6d 1b 7b 00 88 b4 ae 13 5a 80 6b 37 b5 73 ef 63 c5 ba | v...'.b0...f..m.{.....Z.k7.s.c.. |
04c0 | 7d 22 2c cd 11 bb 34 47 04 57 58 2a e6 5c 69 b6 65 c8 c4 71 cf 5d 32 dd ef 4f 8f 16 39 3d 5a 64 | }",...4G.WX*.\i.e..q.]2..O..9=Zd |
04e0 | df f5 eb 18 b9 5c 00 60 a8 2f 97 bc de af ef 69 a3 23 eb 02 30 5d f2 93 70 c3 1b ef d8 55 e7 e9 | .....\.`./.....i.#..0]..p....U.. |
0500 | a6 49 57 a2 a5 db 36 a6 89 0b 21 ca c5 69 7e 66 cf 26 fc 30 62 74 bc c8 b3 c7 eb 3b 8b 5d bb a9 | .IW...6...!..i~f.&.0bt.....;.].. |
0520 | 1d 41 10 84 b5 c4 9c 04 d7 f5 b2 f8 95 52 d3 63 87 9f 33 c2 78 db 8d 1b ea 84 f7 c2 78 91 9d 5b | .A...........R.c..3.x.......x..[ |
0540 | fb 92 72 5d 80 7f fc f1 89 44 78 3b b2 2e c7 4e 5d 06 e0 7f aa e6 e8 c6 34 13 de 74 ef 85 ce 8e | ..r].....Dx;...N].......4..t.... |
0560 | 2e bc 0e e3 49 df ff e8 c9 3a 2f f9 a6 5d 26 9e 5c 29 99 67 f1 b2 39 a0 de c3 15 04 41 58 0d e6 | ....I....:/..]&.\).g..9.....AX.. |
0580 | ec e1 36 8a 6e 1c cb 3d 79 7e 02 80 47 aa 29 59 69 e1 ed 6e 8b 38 59 9c c6 b6 6d b6 6f 1a e4 8d | ..6.n..=y~..G.)Yi..n.8Y...m.o... |
05a0 | 77 ec e2 c4 d9 51 7e f2 c2 38 63 d5 75 a2 de f4 ca 9d 14 4b 3e 8e 5b 6b 60 73 66 74 ba 69 ef 85 | w....Q~..8c.u......K>.[k`sft.i.. |
05c0 | 03 bb 6b a9 5e df 39 78 bc ee f9 b6 af 6f ab fb 6c 84 56 10 04 61 ed 30 27 c1 6d 26 b4 8d 9f d3 | ..k.^.9x.....o..l.V..a.0'.m&.... |
05e0 | c2 1b 86 11 af d8 b3 89 89 a2 45 18 46 0c d6 9f 92 34 b8 f9 e9 f1 a9 24 ce fb c6 3b 76 71 f4 94 | ..........E.F....4.....$...;vq.. |
0600 | 99 f4 ca b4 75 24 69 67 37 ec d8 58 27 b4 f7 3f 7a b2 2e cd ec a6 5d 83 89 37 db c8 e6 81 38 b6 | ....u$ig7..X'..?z.....]..7....8. |
0620 | 7c a9 e9 f1 b5 c0 97 cb b5 05 0a bf 7c a9 f5 73 7e 75 e3 c6 96 c7 04 41 78 71 30 af 6e 61 eb 07 | |...........|..s~u.....Axq0.na.. |
0640 | 7a b8 70 71 1c d7 cb 02 26 53 c1 72 4c 99 6e a3 f0 3e fc e4 59 c0 78 bc a3 13 21 cf 9f 3d c9 9b | z.pq....&S.rL.n..>..Y.x...!..=.. |
0660 | 7e 66 07 d7 6e 35 31 d9 67 8f 9f ab 5b f1 21 dd ff d6 d0 c5 89 0b 93 9c ad 96 f5 de ff e8 c9 ba | ~f..n51.g...[.!................. |
0680 | 67 89 43 07 31 69 8f b6 26 b4 82 20 08 6b 87 39 09 ee e9 11 13 03 5d 3f 60 b2 01 62 8f d7 b6 2c | g.C.1i..&....k.9......]?`..b..., |
06a0 | a2 a0 42 5f 77 07 e3 f9 0a 50 13 de 63 67 c6 80 5a a8 e1 9a ad 7d 7c e3 a1 63 80 c9 e3 8d 0b 1b | ..B_w....P..cg..Z....}|..c...... |
06c0 | 9e 3d 7e 2e 89 cf 3e 77 3a cf d7 bf 77 84 c1 1e 23 e2 1b 87 7a 67 08 ed 75 db fb 67 3c 5f 2c b6 | .=~...>w:...w...#...zg..u..g<_,. |
06e0 | 8d 42 5b 0b 3b c8 e2 c4 82 20 ac 3e 73 12 dc 57 ec d9 c4 c3 4f 9e 4d 26 c8 36 f6 9b 34 a0 d8 bb | .B[.;......>s..W....O.M&.6..4... |
0700 | 05 e3 ed a6 f7 c5 85 12 b1 f0 1e 3f 3b 0e 18 41 6e 25 bc eb 07 8d c7 1b fa 65 8e 9e 9d e6 e8 d9 | ...........?;..An%.......e...... |
0720 | 5a 0a 58 33 a1 8d 69 2d b4 26 5b e1 c8 c8 da 99 34 4b 87 10 1a 79 47 7f eb df 91 73 e7 ea 3e 4a | Z.X3..i-.&[.....4K...yG....s..>J |
0740 | 88 41 10 5e 7c cc 39 a4 f0 8a 3d a6 c8 e1 91 a7 cf 27 a9 61 db 36 98 d0 c2 78 de 84 16 a2 a0 82 | .A.^|.9...=......'.a.6...x...... |
0760 | 5f 29 25 21 07 a8 09 6f 1c 6a 38 79 7e 82 30 8c d8 b9 b9 37 11 de a1 be 1c b1 17 fa fc 89 fa 38 | _)%!...o.j8y~.0....7...........8 |
0780 | 66 a3 d0 56 4a 85 c4 a3 5d d7 9b ab cb 50 48 c7 77 25 2d 4c 10 84 b5 c6 9c 04 f7 ec f0 65 36 ad | f..VJ...]....PH.w%-L.........e6. |
07a0 | eb 03 4c 4c 16 8c f0 c6 22 1a 87 11 2c c7 6b f9 f2 1e 7b c5 b1 58 c7 9e 6f 2c c8 57 12 da d0 2f | ..LL...."...,.k...{..X..o,.W.../ |
07c0 | 27 dd c5 6c a5 18 48 a5 9b a5 c3 0e 8d 42 2b 69 61 82 20 ac 15 e6 ec e1 9e 1d be 8c eb 65 19 ea | '..l..H......B+ia............e.. |
07e0 | 35 de e5 6c c2 6b 5b 0a 80 b0 49 81 c3 c6 fe 0c ae 97 4d 04 f7 d8 99 31 46 c7 f2 75 9e 6a 5a 6c | 5..l.k[...I.......M....1F..u.jZl |
0800 | 07 3a 8d b7 3c 7c b9 3c 23 d5 2b 16 5a d7 b6 78 ed 81 6d f8 61 c4 e9 f3 a6 00 42 d2 c2 04 41 58 | .:..<|.<#.+.Z..x..m.a.....B...AX |
0820 | 6b cc 7b 4d b3 91 b1 6a 71 c3 2c c2 bb 73 93 99 5c eb ef ca 62 db 16 23 63 85 24 cc 10 4f b8 c5 | k.{M...jq.,..s..\...b..#c.$..O.. |
0840 | 95 6b f1 84 5c 9c 47 7b e2 42 cd 1b 0d fd 32 90 e5 e2 54 09 db ad 95 8f 3e f1 c2 48 b2 fd 86 db | .k..\.G{.B....2...T.....>..H.... |
0860 | 77 d4 3d 5f a3 d0 b6 4a 19 5b 49 66 8b db ce 96 0a 96 8e e9 ce 88 ef a6 62 ba 12 cf 15 84 17 07 | w.=_...J.[If............b....... |
0880 | f3 12 dc fe ae 2c 97 26 8d 60 8e 8c 15 f0 2b a5 a6 a1 86 23 d5 0a b2 78 5f 2c ce 69 e1 8d d9 32 | .....,.&.`....+....#...x_,.i...2 |
08a0 | d4 c6 60 4f 6d 5f da bb b5 dd 0c 17 a7 6a 39 c0 e9 b0 43 a3 d0 1e 3b 63 44 38 2d b8 6b 41 6c 05 | ..`Om_.......j9...C...;cD8-.kAl. |
08c0 | 41 10 62 e6 9d 16 96 16 4f 30 a1 06 60 86 f0 3e fc e4 d9 24 25 2c 9e 70 6b 26 bc cd 4a 86 eb cb | A.b.....O0..`..>...$%,.pk&..J... |
08e0 | 72 eb 85 f6 b5 07 b6 d5 8d 8d 85 b6 19 69 6f 59 10 04 61 b5 99 97 87 9b 16 d0 a1 de 1c 95 8a c7 | r............ioY..a............. |
0900 | e8 98 69 56 d3 28 bc b1 c8 3e fc e4 59 1e 7e f2 2c b6 6d b5 f4 78 bd 6c 8e 4a a9 c0 96 0d 03 49 | ..iV.(...>..Y.~.,.m..x.l.J.....I |
0920 | 0c 16 e6 27 b4 69 cf b6 71 02 6e a5 59 8a 10 c2 95 a8 1b db 90 32 96 46 c2 0d 82 b0 76 98 93 e0 | ...'.i..q.n.Y........2.F....v... |
0940 | 36 c6 5b e3 2a b2 7d d7 af 63 b0 b7 8b e7 4e 5e a6 af cb 5c aa 95 f0 3e f2 f4 f9 ba 7e 0b 50 13 | 6.[.*.}..c....N^...\...>....~.P. |
0960 | de 58 6c 63 d2 9e e9 62 84 36 3e f7 e9 6f d4 17 4f 08 82 20 ac 06 f3 f2 70 b7 0c b5 d5 65 18 fc | .Xlc...b.6>..o..O.......p....e.. |
0980 | e4 05 d3 7b 36 eb da d8 96 c9 32 08 23 93 07 db 2c d4 10 86 11 87 9f 1b 4e 04 3b 16 e3 98 ef 3f | ...{6.....2.#...,.......N.;....? |
09a0 | 56 5b 7b 6c 29 84 56 10 04 61 2d 31 ef 2c 05 98 59 cc 50 f2 43 4e 8f 16 d9 32 d8 36 23 36 db 28 | V[{l).V..a-1.,..Y.P.CN...2.6#6.( |
09c0 | bc fb ae 5f c7 85 8b e3 9c 1e 29 26 c2 db d9 ee 25 5e ed 52 0a ed 6c f1 5d 41 10 84 95 66 4e 82 | ..._......)&....%^.R..l.]A...fN. |
09e0 | bb 69 5d 1f 67 87 2f b3 7e a0 27 49 f3 82 99 0d 6b 4e 8f 16 81 22 db 36 74 b7 14 de b8 1f 43 63 | .i].g./.~.'I....kN...".6t.....Cc |
0a00 | 98 a2 51 2c cf 5c 9c ae cb 32 b0 6d 3b 49 0d bb 92 d0 fa 61 c4 70 f5 19 77 6e 1e 82 c7 96 3f a4 | ..Q,.\...2.m;I.....a.p..wn....?. |
0a20 | b0 d0 b8 ed 6c e3 e6 1a d3 6d 1c 97 be ce 2f 49 49 b0 20 ac 19 e6 ec e1 6e 5a d7 c7 c8 58 81 a1 | ....l....m..../II.......nZ...X.. |
0a40 | de dc 8c 4c 85 9d 9b 7a e8 e9 c8 24 bd 16 d2 85 10 8d c2 1b 77 1b 4b e7 e3 de 7e f3 d6 e4 3e 67 | ...L...z...$........w.K...~...>g |
0a60 | 2e d6 af 63 36 32 e6 03 b0 61 c0 9e 53 e8 20 2e ed ad 94 0a 46 6c 05 41 10 d6 08 73 12 dc 47 9e | ...c62...a..S.......Fl.A...s..G. |
0a80 | 3e 9f 4c 74 a5 0b 1f 62 e1 bd 34 61 bc d4 7d d7 af c3 b6 ad 64 72 6c 36 e1 6d fc dc 28 b4 9b 07 | >.Lt...b..4a..}.....drl6.m..(... |
0aa0 | 3a 28 95 b3 8c 8c 0d 53 28 07 75 8d 6c e6 13 a3 6d ec 36 26 08 82 b0 5a cc d9 c3 8d 45 34 0e 23 | :(.....S(.u.l...m.6&...Z....E4.# |
0ac0 | a4 85 b7 bf bb 8d 30 d5 14 3c 5d 04 01 cd 85 37 c6 4c c2 8d 34 6d b1 f8 c3 6a 8c 37 a6 51 68 cf | ......0..<]....7.L..4m...j.7.Qh. |
0ae0 | 5f ca 33 d0 d3 86 6b 5b 3c fc e4 59 6e b9 6e 1d b6 63 26 ef 4e 5c 28 72 e2 c2 ca 89 ed 5c c3 06 | _.3...k[<..Yn.n..c&.N\(r.....\.. |
0b00 | f3 49 fd 5a 8a 6b 36 1e fb ea 9c ef 2e 08 c2 52 33 27 c1 dd d8 9f 49 9a ce 34 f6 4d 88 85 b7 bf | .I.Z.k6........R3'....I..4.M.... |
0b20 | cb 08 e9 a5 89 22 fd dd 26 3e 3b 9b f0 36 b2 ae b7 36 19 16 b7 57 8c fb 2b ec de 31 50 d7 ac e6 | ....."..&>;..6...6...W..+..1P... |
0b40 | cc c5 69 6c 65 fa 35 0c 8f 15 38 53 bd 2e d4 67 3a 80 29 19 7e fa bc 14 40 08 82 b0 fa cc d9 c3 | ..ile.5...8S...g:.).~...@....... |
0b60 | 6d ec f6 d5 28 9e 71 c9 af 6d a9 59 fb 2d 34 9e eb 57 4a 90 33 62 dd ac d9 78 2c ac 60 3c da 98 | m...(.q..m.Y.-4..WJ.3b...x,.`<.. |
0b80 | 58 80 e3 c9 b1 89 42 85 07 1f 3f 9d 88 74 e3 1a 67 82 20 08 ab cd 9c b3 14 c0 64 1a 5c 49 78 a1 | X.....B...?..t..g.........d.\Ix. |
0ba0 | d6 73 e1 d2 44 91 9e 8e 0c 76 55 04 5b 09 ef 78 3e e4 c8 d9 9a 98 36 2e 9f b3 a1 bf bd 6e 1d b3 | .s..D....vU.[..x>.....6......n.. |
0bc0 | b4 37 fc fc 89 4b 75 c7 d2 42 9b 4c 9a ad 40 96 82 20 08 c2 95 98 57 1e 6e 5a 78 b7 0c b6 31 d8 | .7...Ku..B.L..@.......W.nZx...1. |
0be0 | d7 35 23 33 21 dd 29 2c 26 0c a3 44 74 61 a6 f0 c6 5c bb a9 bd e5 da 64 c3 63 85 3a 6f b7 31 74 | .5#3!.),&..Dta...\.....d.c.:o.1t |
0c00 | 70 c3 d6 ae a4 5f ee 6a 64 27 cc 96 6e 95 4e cd 9a 6b 5c 76 3e cc 5a 2e 9c c9 b4 3c 26 08 c2 ca | p...._.jd'..n.N..k\v>.Z....<&... |
0c20 | 32 27 c1 fd da c3 e6 0b fd b6 57 98 09 98 4d eb fa 92 49 b2 c6 cc 84 63 d5 a5 74 f6 5d 6f 16 8b | 2'........W...M...I....c..t.]o.. |
0c40 | 8c 43 0d 43 bd 33 fb d3 c6 c2 5b 29 d7 77 f5 4a 0b 6d 63 f6 c2 33 c7 2f d6 7d be f3 d6 2d 9c 1b | .C.C.3....[).w.J.mc..3./.}...-.. |
0c60 | 89 9b 99 d7 0b ed a7 a5 a4 57 10 84 35 c4 bc 3c dc 46 e1 1d 9b 36 61 85 81 ee b6 19 5e 6b ec f9 | .........W..5..<.F...6a.....^k.. |
0c80 | c6 a1 86 27 8f 8c 70 fd b6 3e 3c cf 21 0c 23 2e 4d 96 66 88 f0 96 0d 03 49 0c b6 51 68 1b 73 70 | ...'..p..><.!.#.M.f.....I..Qh.sp |
0ca0 | 5f 99 2a 0b de 38 d4 5b 77 4c 84 56 10 84 b5 c8 82 4a 7b 63 e1 7d d5 ee fa 02 88 a1 de 1c 2f bb | _.*..8.[wL.V.....J{c.}......../. |
0cc0 | 66 90 e7 4e 5e a6 e4 9b d7 fb 38 d4 90 75 6d 00 2a 95 20 09 2f c4 3d 75 07 7b b2 49 f3 9a b9 08 | f..N^.....8..um.*.../.=u.{.I.... |
0ce0 | ed e3 cf 1b 31 3f 37 7a 19 db b6 13 c1 5d ab 42 3b d7 ea ae c6 aa b0 a5 be be 20 08 ab cb 82 04 | ....1?7z.....].B;............... |
0d00 | 37 e6 07 cf 18 a1 7d e5 f5 66 a2 2a 16 5e 30 02 7b fd b6 be a4 c1 4d be e4 73 f8 b9 e1 24 d4 d0 | 7.....}..f.*.^0.{.....M..s...$.. |
0d20 | d8 07 77 78 ac 3e ac d0 ac aa ac 54 0e 00 d8 bc a1 9b 73 a3 97 93 63 f7 dc 5b 1f cf 15 04 41 58 | ..wx.>.....T......s...c..[....AX |
0d40 | 8b 2c 4a 70 63 7e f8 9c c9 73 8d 85 77 5d 2a 06 1b 0b 6c 3a d4 60 db 56 92 ed b0 69 5d 1f 9b 07 | .,Jpc~...s..w]*...l:.`.V...i]... |
0d60 | 3b 12 cf 76 b6 f2 dd f4 ea 0f 00 f7 3e 26 f9 b5 82 20 bc 78 58 12 c1 8d 69 14 de d1 b1 49 6c cb | ;..v........>&.....xX...i....Il. |
0d80 | 62 b0 af 8b ed eb db 09 a3 28 69 56 13 a7 95 6d 32 7a 3c 43 68 77 6d ea 48 42 05 8d 61 86 af fd | b........(iV...m2z<Chwm.HB..a... |
0da0 | 68 75 1b 8c 0b 82 20 2c 84 25 15 dc 98 58 78 6f db 61 d2 b8 46 2f 4f 32 d8 d7 c5 85 8b e3 49 97 | hu.....,.%...Xxo.a..F/O2......I. |
0dc0 | b0 58 70 1f 79 fa 3c cf b7 7b c9 b9 db d7 b7 61 db 26 de 3b 3a 5e 24 d2 b5 95 7f af 76 a1 95 58 | .Xp.y.<..{.....a.&.;:^$.....v..X |
0de0 | ac 20 5c dd 2c 8b e0 c6 3c 72 5c 03 21 af d8 65 04 74 b6 02 8a 74 c1 42 ec d9 8e 8e 1b e1 be da | ..\.,...<r\.!..e.t...t.B........ |
0e00 | 85 56 10 84 97 06 cb 2a b8 31 0f 1f 0d e1 e8 58 5d 1e 2f d4 84 37 5e b5 37 ce a3 8d 2b c7 fe fe | .V.....*.1.....X]./..7^.7...+... |
0e20 | 87 17 9b 5c 4d 10 04 e1 c5 c9 8a 08 6e 4c b3 02 0a 80 cd 83 1d 75 e3 24 eb 40 10 84 ab 91 15 15 | ...\M.......nL.......u.$.@...... |
0e40 | dc 98 46 e1 8d 59 ab 79 b4 82 20 08 4b c1 aa 08 6e 4c 2c bc 20 31 5a 41 10 ae 7e ac 2b 0f 11 04 | //! Add the glyph to a list of glyphs to be paged.
//! This collection will be cleared after updateTexture is called.
void pushGlyphToBePaged(const SGUITTGlyph* glyph)
{
glyph_to_be_paged.push_back(glyph);
}
//! Updates the texture atlas with new glyphs.
void updateTexture()
{
if (!dirty) return;
void* ptr = texture->lock();
video::ECOLOR_FORMAT format = texture->getColorFormat();
core::dimension2du size = texture->getOriginalSize();
video::IImage* pageholder = driver->createImageFromData(format, size, ptr, true, false);
for (u32 i = 0; i < glyph_to_be_paged.size(); ++i)
{
const SGUITTGlyph* glyph = glyph_to_be_paged[i];
if (glyph && glyph->isLoaded)
{
if (glyph->surface)
{
glyph->surface->copyTo(pageholder, glyph->source_rect.UpperLeftCorner);
glyph->surface->drop();
glyph->surface = 0;
}
else
{
; // TODO: add error message?
//currently, if we failed to create the image, just ignore this operation.
}
}
}
pageholder | ....}.{..'............b.?..S.... |
10e0 | f1 9e 1c 2e b1 1a ac b9 3c 5c 41 10 96 96 74 ec 36 4d 5a 84 2d cb 42 6b bd ea a2 0b c0 b6 77 b2 | ........<\A...t.6MZ.-.Bk......w. |
1100 | 63 fb 36 8e 3f f8 87 0b 16 de b8 4f 03 90 4c ca a5 85 77 fb 86 dc b2 fe 0a ad 90 90 82 20 bc 44 | c.6.?......O..L...w............D |
1120 | d9 bb 77 2f 7b f7 ee e5 a6 9b 6e aa 8b eb ae 15 76 dc f5 41 46 72 af 5f 50 a8 a1 19 8d bd 1a ce | ..w/{.....n.....v..AFr._P....... |
1140 | 8f 99 9f 95 64 51 1e ee 72 bc 1e cf c6 b7 be f9 f7 75 9f 1f f8 de 8f 92 ed 3f f8 c4 ef d5 1d fb | ....dQ..r........u.......?...... |
1160 | d0 47 ea 3f af 24 62 17 41 58 3a fe fa bb 25 6e 7f f9 6d ec e9 7e 72 5e 1e 6f 2b 5e 38 57 4a 3c | .G.?.$b.AX:...%n..m..~r^.o+^8WJ< |
1180 | dc 73 a3 53 cb f0 c4 ad 11 0f 57 10 84 ba 89 b4 b5 e4 e5 c6 1c fc f1 23 7c fb 99 7e 4a eb 7e 71 | .s.S......W............#|..~J.~q |
11a0 | 4e 1e 6f 2b e2 5e 0d f7 1d 9e e2 dc e8 14 bb b7 cf a1 02 63 09 11 c1 15 04 61 4d 87 16 62 ce 9c | N.o+.^.............c.....aM..b.. |
11c0 | 39 cb 03 0f 3e 48 69 e8 5f b2 fe e5 ff ee 8a c2 3b 1b af bc b9 73 c5 c5 16 44 70 05 41 48 d1 e8 | 9...>Hi._.......;....s...Dp.AH.. |
11e0 | e9 ae 35 e1 8d a2 88 07 1e 7c 90 13 27 4f b1 fe b6 0f b4 14 de 74 31 45 23 c9 e4 5a 60 7e 56 92 | ..5......|..'O.......t1E#..Z`~V. |
1200 | 2b c6 70 57 3a 1e 79 cf 67 3f dd f2 d8 3b de f1 f6 ba cf af f8 99 3b 92 ed 89 b1 cb 75 c7 fe f5 | +.pW:.y.g?...;........;.....u... |
1220 | af fc 2f 2d af f3 d5 af 7c 6d 81 4f 57 43 ec 22 5c 8d a4 53 c6 2c cb f8 63 6b 21 65 2c e6 dc b9 | ../-....|m.OWC."\..S.,..ck!e,... |
1240 | f3 dc fe f2 db 38 72 e4 08 00 db b7 6d 65 fd 6d 1f e0 e9 67 9e a1 6f fa 3b 33 62 bc ad 88 85 f6 | .....8r.....me.m...g..o.;3b..... |
1260 | e4 70 81 4f 7e e2 63 7c f8 23 1f 5d ae 47 ae 43 3c 5c 41 10 66 10 7b ba 6b 31 ae 7b f0 c7 8f 24 | .p.O~.c|.#.].G.C<\A.f.{.k1.{...$ |
1280 | db 27 4e d6 d2 bf 2e 77 bc 81 1d af fe 50 9d c7 db cc cb 3d 7e 2e cf c9 e1 02 27 87 6b 2d 22 3f | .'N....w.....P.....=~.....'.k-"? |
12a0 | f9 89 8f 2d d3 d3 d6 23 82 2b 08 cb 4c fc 6a 1e 86 e1 8a fe 04 41 40 10 04 68 ad 9b e6 e1 ce 46 | ...-...#.+..L.j......A@..h.....F |
12c0 | 1c d3 5d ab 71 dd 83 3f 7e 84 07 1e 7c 10 30 a2 7b e3 ee dd 00 1c 3a 74 98 1d 77 7d b0 4e 78 d3 | ..].q..?~...|.0.{.....:t..w}.Nx. |
12e0 | e1 85 1f bc e3 3a 06 7b 4d 8c 77 cf 8e 1c 7b 76 d4 e2 bd 9f fc c4 ef 2f fb 73 cf 3b 2d ec d3 7f | .....:.{M.w...{v......./.s.;-... |
1300 | f1 a9 64 fb 63 bf f7 bb 75 c7 6c bb 96 00 f7 91 df 69 ed a2 cf e7 f5 38 4d e3 eb 71 a1 58 4c b6 | ..d.c...u.l......i.....8M..q.XL. |
1320 | a7 a7 a6 5b 9e b7 12 88 5d 84 d9 48 7b 8b f3 15 bf 85 12 0b 64 63 29 ef 7c 89 0b 24 d6 54 71 04 | ...[....]..H{.......dc).|..$.Tq. |
1340 | b5 49 b4 57 df 75 17 00 37 ee de cd d3 cf 3c c3 a1 43 87 d9 bf 7f 1f 3b ee fa 20 1f fe c8 47 79 | .I.W.u..7.....<..C.....;......Gy |
1360 | ef bf c8 82 d6 3c fb 9e eb 18 00 2e 4e 51 27 b4 35 34 9f fc c4 ef f3 e1 8f fc 6e 93 63 4b 83 78 | .....<......NQ'.54........n.cK.x |
1380 | b8 82 20 bc 68 49 4f a2 01 89 a7 9b e6 af bf 5b 82 ed ff 2a f1 78 67 ef c5 bb bc 5e bc 94 f6 0a | ....hIO........[...*.xg....^.... |
13a0 | c2 32 91 6e 8d 18 04 01 7b f6 ec 59 e5 27 5a 18 8d 13 69 6b 7d 12 ed c6 dd bb 39 74 e8 30 b7 de | .2.n....{..Y.'Z...ik}.....9t.0.. |
13c0 | 7a 2b 6f 79 cb 9b f9 87 7f f8 86 19 bc ed 9d e6 ff 27 bf 04 80 ba fe 03 c6 1b 6e b8 e6 72 4e a2 | z+oy.............'........n..rN. |
13e0 | 89 87 2b 08 cb 4c 2c b8 2f 76 d6 6a 71 44 b3 49 34 cb b2 f9 c2 17 fe 8e 5b 6f 79 19 bf fe be 7f | ..+..L,./v.jqD.I4.......[oy..... |
1400 | 53 37 7e c7 5d 1f 44 5d ff 01 00 4e 9d 3a cd a1 43 87 67 5c 73 b9 26 d1 9a 7a b8 e9 94 a7 ff eb | S7~.].D]...N.:..C.g\s.&..z...... |
1420 | 37 7f a3 ee 58 b1 50 9b d9 fb c8 47 3e dc f2 c2 9f ff 9b bf 6a 79 6c 39 e2 91 ff f5 0b ff ad e5 | 7...X.P....G>.......jyl9........ |
1440 | b1 a5 ea 8a 25 76 11 5e ca c4 9e ee 33 cf 3c 93 a4 8c ad 36 5f fc ed 8d 00 7c ff c9 a7 79 fc 08 | ....%v.^....3.<....6_....|...y.. |
1460 | 5c 7b ed b5 9c 38 79 8a e9 e9 69 6e bc 71 37 3f fd e9 4f 29 14 8a 6c da bc a9 e9 f9 63 63 e3 c9 | \{...8y...in.q7?..O)..l.....cc.. |
1480 | f6 fe fd fb ea 8e 2d 47 3c 77 6d 58 4d 10 ae 62 5a 75 eb 12 16 c7 9b f6 bb 9c 1c 8d 40 29 d4 b6 | ......-G<wmXM..bZu..........@).. |
virtual void setBatchLoadSize(u32 batch_size) { batch_load_size = batch_size; }
//! Sets the maximum texture size for a page of glyphs.
virtual void setMaxPageTextureSize(const core::dimension2du& texture_size) { max_page_texture_size = texture_size; }
//! Get the font size.
virtual u32 getFontSize() const { return size; }
//! Check the font's transparency.
virtual bool isTransparent() const { return use_transparency; }
//! Check if the font auto-hinting is enabled.
//! Auto-hinting is FreeType's built-in font hinting engine.
virtual bool useAutoHinting() const { return use_auto_hinting; }
//! Check if the font hinting is enabled.
virtual bool useHinting() const { return use_hinting; }
//! Check if the font is being loaded as a monochrome font.
//! The font can either be a 256 color grayscale font, or a 2 color monochrome font.
virtual bool useMonochrome() const { return use_monochrome; }
//! Tells the font to allow transparency when rendering.
//! Default: true.
//! \param flag If true, the font draws using transparency.
virtual void setTransparency(const bool flag);
//! Tells the font to use monochrome rendering.
//! Default: false.
//! \param flag If true, the font draws using a monochrome image. If false, the font uses a grayscale image.
virtual void setMonochrome(const bool flag);
//! Enables or disables font hinting.
//! Default: Hinting and auto-hinting true.
//! \param enable If false, font hinting is turned off. If true, font hinting is turned on.
//! \param enable_auto_hinting If true, FreeType uses its own auto-hinting algorithm. If false, it tries to use the algorithm specified by the font.
virtual void setFontHinting(const bool enable, const bool enable_auto_hinting = true);
//! Draws some 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 character produced by this font.
virtual core::dimension2d<u32> getCharDimension(const wchar_t ch) const;
//! Returns the dimension of a text string.
virtual core::dimension2d<u32> getDimension(const wchar_t* text) const;
virtual core::dimension2d<u32> getDimension(const core::ustring& 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;
virtual s32 getCharacterFromPos(...xc...8>-.......N....-..6qO... | |
1940 | 7c f6 33 74 74 76 98 fd df ff 01 03 fd fd 94 2b 15 32 99 0c c3 c3 23 bc fe f5 ff 82 9d 3b 77 91 | |.3ttv.........+.2....#......;w. |
1960 | 6b ef a0 5c 2e f3 f0 c3 0f f3 d1 8f 7e 94 e1 e1 e1 59 ff 5e c4 c3 15 84 97 28 e9 3c db d5 2a 6a | k..\........~....Y.^.....(.<..*j |
1980 | 68 24 ed 65 c6 31 de 64 72 6d 01 1e ef b6 0d dd 9c 3c 7f e5 2c 85 53 a3 66 fc be b7 fe a7 19 42 | h$.e.1.drm.......<..,.S.f......B |
19a0 | db d9 d9 09 4a 31 3e 3e c1 ab 5f fd b3 dc b8 7b 37 9b 36 6f 65 fc c8 3f f0 1f fe f8 3f 33 36 55 | ....J1>
virtual s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const;
virtual s32 getKerningWidth(const uchar32_t thisLetter=0, const uchar32_t previousLetter=0) const;
//! Returns the distance between letters
virtual s32 getKerningHeight() const;
//! Define which characters should not be drawn by the font.
virtual void setInvisibleCharacters(const wchar_t *s);
virtual void setInvisibleCharacters(const core::ustring& s);
//! Get the last glyph page if there's still available slots.
//! If not, it will return zero.
CGUITTGlyphPage* getLastGlyphPage() const;
//! Create a new glyph page texture.
//! \param pixel_mode the pixel mode defined by FT_Pixel_Mode
//should be better typed. fix later.
CGUITTGlyphPage* createGlyphPage(const u8& pixel_mode);
//! Get the last glyph page's index.
u32 getLastGlyphPageIndex() const { return Glyph_Pages.size() - 1; }
//! Create corresponding character's software image copy from the font,
//! so you can use this data just like any ordinary video::IImage.
//! \param ch The character you need
virtual video::IImage* createTextureFromChar(const uchar32_t& ch);
//! This function is for debugging mostly. If the page doesn't exist it returns zero.
//! \param page_index Simply return the texture handle of a given page index.
virtual video::ITexture* getPageTextureByIndex(const u32& page_index) const;
//! Add a list of scene nodes generated by putting font textures on the 3D planes.
virtual core::array<scene::ISceneNode*> addTextSceneNode
(const wchar_t* text, scene::ISceneManager* smgr, scene::ISceneNode* parent = 0,
const video::SColor& color = video::SColor(255, 0, 0, 0), bool center = false );
protected:
bool use_monochrome;
bool use_transparency;
bool use_hinting;
bool use_auto_hinting;
u32 size;
u32 batch_load_size;
core::dimension2du max_page_texture_size;
private:
// Manages the FreeType library.
static FT_Library c_library;
static core::map<io::path, SGUITTFace*> c_faces;
static bool c_libraryLoaded;
static scene::IMesh* shared_plane_ptr_;
static scene::SMesh shared_plane_;
CGUITTFont(IGUIEnvironment *env);
bool load(const io::path& filename, const u32 size, const bool antialias, const bool transparency);
void reset_images();
void update_glyph_pages() const;
void update_load_flags()
{
// Set up our loading flags.
load_flags = FT_LOAD_DEFAULT | FT_LOAD_RENDER;
if (!useHinting()) load_flags |= FT_LOAD_NO_HINTING;
if (!useAutoHinting()) load_flags |= FT_LOAD_NO_AUTOHINT;
if (useMonochrome()) load_flags |= FT_LOAD_MONOCHROME | FT_LOAD_TARGET_MONO | FT_RENDER_MODE_MONO;
else load_flags |= FT_LOAD_TARGET_NORMAL;
}
u32 getWidthFromCharacter(wchar_t c) const;
u32 getWidthFromCharacter(uchar32_t c) const;
u32 getHeightFromCharacter(wchar_t c) const;
u32 getHeightFromCharacter(uchar32_t c) const;
u32 getGlyphIndexByChar(wchar_t c) const;
u32 getGlyphIndexByChar(uchar32_t c) const;
core::vector2di getKerning(const wchar_t thisLetter, const wchar_t previousLetter) const;
core::vector2di getKerning(const uchar32_t thisLetter, const uchar32_t previousLetter) const;
core::dimension2d<u32> getDimensionUntilEndOfLine(const wchar_t* p) const;
void createSharedPlane();
irr::IrrlichtDevice* Device;
gui::IGUIEnvironment* Environment;
video::IVideoDriver* Driver;
io::path filename;
FT_Face tt_face;
FT_Size_Metrics font_metrics;
FT_Int32 load_flags;
mutable core::array<CGUITTGlyphPage*> Glyph_Pages;
mutable core::array<SGUITTGlyph> Glyphs;
s32 GlobalKerningWidth;
s32 GlobalKerningHeight;
core::ustring Invisible;
u32 shadow_offset;
u32 shadow_alpha;
};
} // end namespace gui
} // end namespace irr
#endif // __C_GUI_TTFONT_H_INCLUDED__
|