summaryrefslogtreecommitdiff
path: root/apps/plugins/bitmaps/native/clock_binary.128x128x16.bmp
blob: 55945b090b6d8f0c67e46f9f54247cbe2b532d1f (plain)
ofshex dumpascii
0000 42 4d 56 0d 00 00 00 00 00 00 36 00 00 00 28 00 00 00 14 00 00 00 38 00 00 00 01 00 18 00 00 00 BMV.......6...(.......8.........
0020 00 00 20 0d 00 00 13 0b 00 00 13 0b 00 00 00 00 00 00 00 00 00 00 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 ................................
0040 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
0060 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
0080 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 ................................
00a0 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
00c0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
00e0 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 ................................
0100 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
0120 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 ba a4 96 88 7c 74 6c 65 ............................|tle
0140 60 5b 56 53 54 50 4d 62 5b 56 80 73 6b b5 9f 91 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 `[VSTPMb[V.sk...................
0160 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 c2 ab 9b 6f 68 63 40 40 40 37 37 37 2e 2e 2e 29 29 29 .................ohc@@@777...)))
0180 26 26 26 26 26 26 29 29 29 28 28 28 57 4f 4a c1 a8 98 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc &&&&&&)))(((WOJ.................
01a0 b9 e6 c8 b4 e6 c8 b4 ab 98 8c 4c 4b 4a 36 36 36 23 23 23 13 13 13 0b 0b 0b 07 07 07 05 05 05 07 ..........LKJ666###.............
01c0 07 07 0d 0d 0d 13 13 13 16 16 16 25 23 21 a2 8e 80 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 ...........%#!..................
01e0 b2 9e 90 41 41 41 2e 2e 2e 19 19 19 07 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...AAA..........................
0200 00 02 02 02 07 07 07 0d 0d 0d 10 10 10 a9 93 85 e6 c8 b4 e8 cc b9 e8 cc b9 d3 b8 a6 4b 48 47 2b ............................KHG+
0220 2b 2b 10 10 10 04 04 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ++..............................
0240 01 01 01 06 06 06 06 06 06 1c 18 16 d7 bb a8 e8 cc b9 e8 cc b9 87 7a 71 31 31 31 19 19 19 05 05 ......................zq111.....
0260 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................................
0280 01 01 02 02 02 00 00 00 74 65 5b e8 cc b9 d0 b7 a7 47 44 42 22 22 22 0a 0a 0a 00 00 00 00 00 00 ........te[......GDB""".........
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 ................................
02c0 01 00 00 00 1e 1a 17 d2 b8 a7 a5 94 87 2a 2a 2a 16 16 16 01 01 01 00 00 00 00 00 00 00 00 00 00 .............***................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 01 00 00 00 ................................
0300 00 00 00 a1 8e 80 84 76 6e 20 20 20 0d 0d 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .......vn.......................
0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7d ...............................}
0340 6d 64 75 69 61 1b 1b 1b 09 09 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 mduia...........................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 62 59 7b 6e ...........................pbY{n
0380 65 16 16 16 07 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e...............................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7b 6c 62 97 85 7a 10 10 10 .......................{lb..z...
03c0 06 06 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9e 8b 7e c5 ae 9f 17 15 13 05 05 05 00 .....................~..........
0400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0420 00 00 00 00 00 00 00 00 00 00 00 00 19 16 14 ce b5 a5 e8 cc b9 59 4e 46 01 01 01 00 00 00 00 00 .....................YNF........
0440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0460 00 00 00 00 00 00 00 00 67 59 50 e8 cc b9 e8 cc b9 c6 ac 9b 0d 0b 0a 00 00 00 00 00 00 00 00 00 ........gYP.....................
0480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04a0 00 14 11 10 cc b1 a0 e8 cc b9 e8 cc b9 e6 c8 b4 94 81 74 00 00 00 00 00 00 00 00 00 00 00 00 00 ..................t.............
04c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 02 01 9f 8a 7c ...............................|
04e0 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 7f 6f 64 02 02 01 00 00 00 00 00 00 00 00 00 00 00 ................od..............
0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 05 05 8d 7a 6e e6 c8 b4 e6 c8 b4 e8 .......................zn.......
0520 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 a3 8e 80 2e 28 24 00 00 00 00 00 00 00 00 00 00 00 00 ..................($............
0540 00 00 00 00 00 00 00 00 00 00 00 00 32 2b 27 ab 95 86 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc ............2+'.................
0560 b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e1 c3 b0 98 85 77 51 47 40 24 1f 1c 13 10 0f 13 10 0f 24 ..................wQG@$........$
0580 1f 1c 54 49 42 9d 88 7b e3 c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 ..TIB..{........................
05a0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 b9 a1 91 8c 7a 6d 70 61 58 71 62 58 8d 7a 6e bb a2 ...................zmpaXqbX.zn..
05c0 92 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 ................................
05e0 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
0600 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
0620 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 ................................
0640 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
0660 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
0680 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 ................................
06a0 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
06c0 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
06e0 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 ................................
0700 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
0720 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc ................................
0740 b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 ................................
0760 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 ................................
0780 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
07a0 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 ................................
07c0 c8 b4 e6 c8 b4 e5 c7 b3 c2 ad 9e 94 88 80 72 6b 66 5c 57 54 56 53 50 6d 66 61 8b 7e 76 ba a3 95 ..............rkf\WTVSPmfa.~v...
07e0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 c9 b2 ................................
0800 a2 74 6c 68 2b 2b 2b 05 05 05 00 00 00 00 00 00 00 00 00 00 00 00 07 07 07 24 24 24 5e 55 50 c3 .tlh+++..................$$$^UP.
0820 aa 9a e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 b3 a1 94 45 44 43 00 00 00 ..........................EDC...
0840 0a 09 08 51 47 40 94 81 74 b4 9d 8d b8 a0 90 91 7e 72 4e 43 3d 07 06 06 04 04 04 22 20 1f a4 8f ...QG@..t.......~rNC=......"....
0860 81 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 b9 a5 98 34 34 34 00 00 00 4e 44 3d c1 a8 97 e6 ...................444...ND=....
0880 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 bc a3 93 45 3c 36 00 00 00 0e 0e 0e a9 93 85 ....................E<6.........
08a0 e6 c8 b4 e8 cc b9 e8 cc b9 d6 bc aa 49 47 45 00 00 00 68 5a 51 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ............IGE...hZQ...........
08c0 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 59 4e 46 01 01 01 1b 18 15 d7 bb a8 e8 ...................YNF..........
08e0 cc b9 e8 cc b9 8e 81 78 0c 0c 0c 2b 26 22 e1 c3 b0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 .......x...+&"..................
0900 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 db bf ac 1e 1a 17 00 00 00 74 65 5b e8 cc b9 d4 bb ........................te[.....
0920 ab 41 3e 3c 00 00 00 98 84 77 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 .A><.....w......................
0940 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 88 76 6a 03 03 03 1e 1a 17 d2 b8 a7 ac 9a 8e 18 18 18 ...............vj...............
0960 17 14 12 d9 bd aa e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
0980 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d3 b8 a5 20 1e 1c 00 00 00 a1 8e 80 8c 7e 75 08 08 08 48 3f 38 e6 .......................~u...H?8.
09a0 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
09c0 e6 c8 b4 e6 c8 b4 e6 c8 b4 51 49 44 00 00 00 7d 6d 64 7c 70 68 03 03 03 64 57 4e e6 c8 b4 e6 c8 .........QID...}md|ph...dWN.....
09e0 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 ................................
0a00 c8 b4 e6 c8 b4 71 65 5e 00 00 00 70 62 59 7f 72 69 04 04 04 4b 41 3b e6 c8 b4 e6 c8 b4 e6 c8 b4 .....qe^...pbY.ri...KA;.........
0a20 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
0a40 b4 61 59 54 00 00 00 7b 6c 62 99 87 7c 0a 0a 0a 1c 18 16 dd c0 ad e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 .aYT...{lb..|...................
0a60 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 da bf ac 3a 38 36 .............................:86
0a80 00 00 00 9e 8b 7e c5 ae 9e 1f 1d 1c 00 00 00 a1 8c 7e e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 .....~...........~..............
0aa0 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 b0 9c 90 19 19 19 19 16 14 ce ................................
0ac0 b5 a5 e8 cc b9 5b 4f 47 07 07 07 33 2d 28 e4 c6 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 .....[OG...3-(..................
0ae0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e2 c5 b2 5d 57 54 00 00 00 67 59 50 e8 cc b9 e8 cc ..................]WT...gYP.....
0b00 b9 c6 ac 9b 0d 0b 0a 04 04 04 74 66 5c e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 ..........tf\...................
0b20 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 92 85 7c 0d 0d 0d 14 11 10 cc b1 a0 e8 cc b9 e8 cc b9 e6 c8 b4 .............|..................
0b40 94 81 74 00 00 00 0e 0e 0e 71 66 5e ce b4 a3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ..t......qf^....................
0b60 b4 d4 ba a9 8a 7f 78 1f 1f 1f 02 02 01 9f 8a 7c e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 7f ......x........|................
0b80 6f 64 00 00 00 00 00 00 39 37 35 83 77 6f b7 a2 94 d2 b8 a6 d3 b9 a8 be a9 9b 92 86 7e 4a 48 47 od......975.wo..............~JHG
0ba0 05 05 05 05 05 04 8d 7a 6e e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 a3 8e .......zn.......................
0bc0 80 2e 28 24 00 00 00 00 00 00 10 10 10 25 25 24 2c 2c 2b 1f 1f 1f 00 00 00 00 00 00 32 2b 27 ab ..($.........%%$,,+.........2+'.
0be0 95 86 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e1 c3 b0 ................................
0c00 98 85 77 51 47 40 23 1f 1c 0f 0d 0c 10 0e 0d 24 1f 1c 54 49 42 9d 88 7b e3 c6 b2 e6 c8 b4 e6 c8 ..wQG@#........$..TIB..{........
0c20 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 b9 ................................
0c40 a1 91 8c 7a 6d 70 61 58 71 62 58 8d 7a 6e bb a2 92 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ...zmpaXqbX.zn..................
0c60 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
0c80 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 ................................
0ca0 cc b9 e8 cc b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 ................................
0cc0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc ................................
0ce0 b9 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 ................................
0d00 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 e8 cc b9 e6 c8 b4 ................................
0d20 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 ................................
0d40 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e8 cc b9 ......................
id='n693' href='#n693'>693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995
/* Emacs style mode select   -*- C++ -*-
 *-----------------------------------------------------------------------------
 *
 *
 *  PrBoom a Doom port merged with LxDoom and LSDLDoom
 *  based on BOOM, a modified and improved DOOM engine
 *  Copyright (C) 1999 by
 *  id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
 *  Copyright (C) 1999-2000 by
 *  Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License
 *  as published by the Free Software Foundation; either version 2
 *  of the License, or (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 *  02111-1307, USA.
 *
 * DESCRIPTION:
 *  Refresh of things, i.e. objects represented by sprites.
 *
 *-----------------------------------------------------------------------------*/

#include "doomdef.h"
#include "m_swap.h"

#include "doomstat.h"
#include "w_wad.h"
#include "r_main.h"
#include "r_bsp.h"
#include "r_segs.h"
#include "r_draw.h"
#include "r_things.h"
#include "i_system.h"
//#include "lprintf.h"
#include "rockmacros.h"

#define MINZ    (FRACUNIT*4)
#define BASEYCENTER   100

typedef struct {
   int x1;
   int x2;
   int column;
   int topclip;
   int bottomclip;
}
maskdraw_t;

//
// Sprite rotation 0 is facing the viewer,
//  rotation 1 is one angle turn CLOCKWISE around the axis.
// This is not the same as the angle,
//  which increases counter clockwise (protractor).
// There was a lot of stuff grabbed wrong, so I changed it...
//
fixed_t  pspritescale;
fixed_t  pspriteiscale;
// proff 11/06/98: Added for high-res
fixed_t pspriteyscale;

static lighttable_t** spritelights;

// constant arrays
//  used for psprite clipping and initializing clipping
short  negonearray[MAX_SCREENWIDTH];
short  screenheightarray[MAX_SCREENWIDTH];


//
// INITIALIZATION FUNCTIONS
//

// variables used to look up and range check thing_t sprites patches

spritedef_t* sprites;
int  numsprites;

#define MAX_SPRITE_FRAMES 29          /* Macroized -- killough 1/25/98 */

static spriteframe_t sprtemp[MAX_SPRITE_FRAMES];
static int maxframe;

//
// R_InstallSpriteLump
// Local function for R_InitSprites.
//

static void R_InstallSpriteLump(int lump, unsigned frame,
                                unsigned rotation, boolean flipped)
{

   if (frame >= MAX_SPRITE_FRAMES || rotation > 8)
      I_Error("R_InstallSpriteLump: Bad frame characters in lump %i", lump);

   if ((int)frame > maxframe)
      maxframe = frame;

   if (rotation == 0)
   {    // the lump should be used for all rotations
      int r;
      for (r=0 ; r<8 ; r++)
         if (sprtemp[frame].lump[r]==-1)
         {
            sprtemp[frame].lump[r] = lump - firstspritelump;
            sprtemp[frame].flip[r] = (byte) flipped;
            sprtemp[frame].rotate = false; //jff 4/24/98 if any subbed, rotless
         }
      return;
   }

   // the lump is only used for one rotation

   if (sprtemp[frame].lump[--rotation] == -1)
   {
      sprtemp[frame].lump[rotation] = lump - firstspritelump;
      sprtemp[frame].flip[rotation] = (byte) flipped;
      sprtemp[frame].rotate = true; //jff 4/24/98 only change if rot used
   }
}

//
// R_InitSpriteDefs
// Pass a null terminated list of sprite names
// (4 chars exactly) to be used.
//
// Builds the sprite rotation matrixes to account
// for horizontally flipped sprites.
//
// Will report an error if the lumps are inconsistent.
// Only called at startup.
//
// Sprite lump names are 4 characters for the actor,
//  a letter for the frame, and a number for the rotation.
//
// A sprite that is flippable will have an additional
//  letter/number appended.
//
// The rotation character can be 0 to signify no rotations.
//
// 1/25/98, 1/31/98 killough : Rewritten for performance
//
// Empirically verified to have excellent hash
// properties across standard Doom sprites:

#define R_SpriteNameHash(s) ((unsigned)((s)[0]-((s)[1]*3-(s)[3]*2-(s)[2])*2))

void R_InitSpriteDefs(const char * const * namelist)
{
   size_t numentries = lastspritelump-firstspritelump+1;
   struct {
      int index, next;
   }
   *hash;
   int i;

   if (!numentries || !*namelist)
      return;

   // count the number of sprite names
   for (i=0; namelist[i]; i++)
      ;

   numsprites = i;

   sprites = Z_Malloc(numsprites *sizeof(*sprites), PU_STATIC, NULL);

   // Create hash table based on just the first four letters of each sprite
   // killough 1/31/98

   hash = malloc(sizeof(*hash)*numentries); // allocate hash table

   for (i=0; (size_t)i<numentries; i++)             // initialize hash table as empty
      hash[i].index = -1;

   for (i=0; (size_t)i<numentries; i++)             // Prepend each sprite to hash chain
   {                                      // prepend so that later ones win
      int j = R_SpriteNameHash(lumpinfo[i+firstspritelump].name) % numentries;
      hash[i].next = hash[j].index;
      hash[j].index = i;
   }

   // scan all the lump names for each of the names,
   //  noting the highest frame letter.

   for (i=0 ; i<numsprites ; i++)
   {
      const char *spritename = namelist[i];
      int j = hash[R_SpriteNameHash(spritename) % numentries].index;

      if (j >= 0)
      {
         memset(sprtemp, -1, sizeof(sprtemp));
         maxframe = -1;
         do
         {
            register lumpinfo_t *lump = lumpinfo + j + firstspritelump;

            // Fast portable comparison -- killough
            // (using int pointer cast is nonportable):

            if (!((lump->name[0] ^ spritename[0]) |
                  (lump->name[1] ^ spritename[1]) |
                  (lump->name[2] ^ spritename[2]) |
                  (lump->name[3] ^ spritename[3])))
            {
               R_InstallSpriteLump(j+firstspritelump,
                                   lump->name[4] - 'A',
                                   lump->name[5] - '0',
                                   false);
               if (lump->name[6])
                  R_InstallSpriteLump(j+firstspritelump,
                                      lump->name[6] - 'A',
                                      lump->name[7] - '0',
                                      true);
            }
         }
         while ((j = hash[j].next) >= 0)
            ;

         // check the frames that were found for completeness
         if ((sprites[i].numframes = ++maxframe))  // killough 1/31/98
         {
            int frame;
            for (frame = 0; frame < maxframe; frame++)
               switch ((int) sprtemp[frame].rotate)
               {
               case -1:
                  // no rotations were found for that frame at all
                  I_Error ("R_InitSprites: No patches found "
                           "for %.8s frame %c", namelist[i], frame+'A');
                  break;

               case 0:
                  // only the first rotation is needed
                  break;

               case 1:
                  // must have all 8 frames
                  {
                     int rotation;
                     for (rotation=0 ; rotation<8 ; rotation++)
                        if (sprtemp[frame].lump[rotation] == -1)
                           I_Error ("R_InitSprites: Sprite %.8s frame %c "
                                    "is missing rotations",
                                    namelist[i], frame+'A');
                     break;
                  }
               }
            // allocate space for the frames present and copy sprtemp to it
            sprites[i].spriteframes =
               Z_Malloc (maxframe * sizeof(spriteframe_t), PU_STATIC, NULL);
            memcpy (sprites[i].spriteframes, sprtemp,
                    maxframe*sizeof(spriteframe_t));
         }
      }
   }
   free(hash);             // free hash table
}

//
// GAME FUNCTIONS
//

static vissprite_t *vissprites, **vissprite_ptrs;  // killough
static size_t num_vissprite, num_vissprite_alloc, num_vissprite_ptrs;


//
// R_InitSprites
// Called at program start.
//
void R_InitSprites(const char * const *namelist)
{
   int  i;

   for (i=0 ; i<MAX_SCREENWIDTH ; i++)
      negonearray[i] = -1;
   R_InitSpriteDefs (namelist);
}

void R_ClearSprites (void)
{
   num_vissprite = 0;            // killough
}

//
// R_NewVisSprite
//

vissprite_t *R_NewVisSprite(void)
{
   if (num_vissprite >= num_vissprite_alloc)             // killough
   {
      num_vissprite_alloc = num_vissprite_alloc ? num_vissprite_alloc*2 : 128;
      vissprites = realloc(vissprites,num_vissprite_alloc*sizeof(*vissprites));
   }
   return vissprites + num_vissprite++;
}

//
// R_DrawMaskedColumn
// Used for sprites and masked mid textures.
// Masked means: partly transparent, i.e. stored
//  in posts/runs of opaque pixels.
//

short*  mfloorclip;
short*  mceilingclip;
fixed_t  spryscale;
fixed_t  sprtopscreen;

void R_DrawMaskedColumn(const column_t *column)
{
   int     topscreen;
   int     bottomscreen;
   fixed_t basetexturemid = dc_texturemid;

   dc_texheight = 0; // killough 11/98
   while (column->topdelta != 0xff)
   {
      // calculate unclipped screen coordinates for post
      topscreen = sprtopscreen + spryscale*column->topdelta;
      bottomscreen = topscreen + spryscale*column->length;

      dc_yl = (topscreen+FRACUNIT-1)>>FRACBITS;
      dc_yh = (bottomscreen-1)>>FRACBITS;

      if (dc_yh >= mfloorclip[dc_x])
         dc_yh = mfloorclip[dc_x]-1;

      if (dc_yl <= mceilingclip[dc_x])
         dc_yl = mceilingclip[dc_x]+1;

      // killough 3/2/98, 3/27/98: Failsafe against overflow/crash:
      if (dc_yl <= dc_yh && dc_yh < viewheight)
      {
         dc_source = (byte *)column + 3;
         dc_texturemid = basetexturemid - (column->topdelta<<FRACBITS);

         // Drawn by either R_DrawColumn
         //  or (SHADOW) R_DrawFuzzColumn.
         colfunc ();
      }
      column = (const column_t *)(  (byte *)column + column->length + 4);
   }
   dc_texturemid = basetexturemid;
}

//
// R_DrawVisSprite
//  mfloorclip and mceilingclip should also be set.
//
// CPhipps - new wad lump handling, *'s to const*'s
void R_DrawVisSprite(vissprite_t *vis, int x1, int x2)
{
   (void)x1;
   (void)x2;
   const column_t *column;
   int      texturecolumn;
   fixed_t  frac;
   const patch_t *patch = W_CacheLumpNum (vis->patch+firstspritelump);

   dc_colormap = vis->colormap;

   // killough 4/11/98: rearrange and handle translucent sprites
   // mixed with translucent/non-translucenct 2s normals

   if (!dc_colormap)   // NULL colormap = shadow draw
      colfunc = R_DrawFuzzColumn;    // killough 3/14/98
   else
      if (vis->mobjflags & MF_TRANSLATION)
      {
         colfunc = R_DrawTranslatedColumn;
         dc_translation = translationtables - 256 +
                          ((vis->mobjflags & MF_TRANSLATION) >> (MF_TRANSSHIFT-8) );
      }
      else
         if (vis->mobjflags & MF_TRANSLUCENT && general_translucency) // phares
         {
            colfunc = R_DrawTLColumn;
            tranmap = main_tranmap;       // killough 4/11/98
         }
         else
            colfunc = R_DrawColumn;         // killough 3/14/98, 4/11/98


   // proff 11/06/98: Changed for high-res
   dc_iscale = FixedDiv (FRACUNIT, vis->scale);
   dc_texturemid = vis->texturemid;
   frac = vis->startfrac;
   spryscale = vis->scale;
   sprtopscreen = centeryfrac - FixedMul(dc_texturemid,spryscale);

   for (dc_x=vis->x1 ; dc_x<=vis->x2 ; dc_x++, frac += vis->xiscale)
   {
      texturecolumn = frac>>FRACBITS;

#ifdef RANGECHECK

      if (texturecolumn < 0 || texturecolumn >= SHORT(patch->width))
         I_Error ("R_DrawSpriteRange: Bad texturecolumn");
#endif

      column = (const column_t *)((const byte *) patch +
                                  LONG(patch->columnofs[texturecolumn]));
      R_DrawMaskedColumn (column);
   }
   colfunc = R_DrawColumn;         // killough 3/14/98
   W_UnlockLumpNum(vis->patch+firstspritelump); // cph - release lump
}

//
// R_ProjectSprite
// Generates a vissprite for a thing if it might be visible.
//

void R_ProjectSprite (mobj_t* thing)
{
   fixed_t   gzt;               // killough 3/27/98
   fixed_t   tx;
   fixed_t   xscale;
   int       x1;
   int       x2;
   spritedef_t   *sprdef;
   spriteframe_t *sprframe;
   int       lump;
   boolean   flip;
   vissprite_t *vis;
#ifndef GL_DOOM

   fixed_t   iscale;
#endif

   int heightsec;      // killough 3/27/98

   // transform the origin point
   fixed_t tr_x = thing->x - viewx;
   fixed_t tr_y = thing->y - viewy;

   fixed_t gxt = FixedMul(tr_x,viewcos);
   fixed_t gyt = -FixedMul(tr_y,viewsin);

   fixed_t tz = gxt-gyt;

   // thing is behind view plane?
   if (tz < MINZ)
      return;

   xscale = FixedDiv(projection, tz);

   gxt = -FixedMul(tr_x,viewsin);
   gyt = FixedMul(tr_y,viewcos);
   tx = -(gyt+gxt);

   // too far off the side?
   if (D_abs(tx)>(tz<<2))
      return;

   // decide which patch to use for sprite relative to player
#ifdef RANGECHECK

   if ((unsigned) thing->sprite >= (unsigned)numsprites)
      I_Error ("R_ProjectSprite: Invalid sprite number %i", thing->sprite);
#endif

   sprdef = &sprites[thing->sprite];

#ifdef RANGECHECK

   if ((thing->frame&FF_FRAMEMASK) >= sprdef->numframes)
      I_Error ("R_ProjectSprite: Invalid sprite frame %i : %i", thing->sprite,
               thing->frame);
#endif

   sprframe = &sprdef->spriteframes[thing->frame & FF_FRAMEMASK];

   if (sprframe->rotate)
   {
      // choose a different rotation based on player view
      angle_t ang = R_PointToAngle(thing->x, thing->y);
      unsigned rot = (ang-thing->angle+(unsigned)(ANG45/2)*9)>>29;
      lump = sprframe->lump[rot];
      flip = (boolean) sprframe->flip[rot];
   }
   else
   {
      // use single rotation for all views
      lump = sprframe->lump[0];
      flip = (boolean) sprframe->flip[0];
   }

   /* calculate edges of the shape
    * cph 2003/08/1 - fraggle points out that this offset must be flipped if the