Ticket #11017: 0001-CDPlayer-remove-from-image-delete.patch
File 0001-CDPlayer-remove-from-image-delete.patch, 218.1 KB (added by , 10 years ago) |
---|
-
build/jam/images/definitions/regular
From 98a0031ed1d6675d54c4669412f9c24657009a9b Mon Sep 17 00:00:00 2001 From: Augustin Cavalier <waddlesplash@gmail.com> Date: Tue, 8 Jul 2014 16:24:56 -0400 Subject: [PATCH] CDPlayer: remove from image & delete * Does not work on recent hardware * It now lives at: https://github.com/HaikuArchives/CDPlayer --- build/jam/images/definitions/regular | 4 +- src/apps/Jamfile | 1 - src/apps/cdplayer/ButtonBitmaps.h | 1318 ---------------------------- src/apps/cdplayer/CDAudioDevice.cpp | 632 ------------- src/apps/cdplayer/CDAudioDevice.h | 142 --- src/apps/cdplayer/CDDBSupport.cpp | 1179 ------------------------- src/apps/cdplayer/CDDBSupport.h | 212 ----- src/apps/cdplayer/CDPlayer.cpp | 678 -------------- src/apps/cdplayer/CDPlayer.h | 89 -- src/apps/cdplayer/CDPlayer.rdef | 407 --------- src/apps/cdplayer/DoubleShotDrawButton.cpp | 27 - src/apps/cdplayer/DoubleShotDrawButton.h | 29 - src/apps/cdplayer/DrawButton.cpp | 88 -- src/apps/cdplayer/DrawButton.h | 40 - src/apps/cdplayer/Jamfile | 24 - src/apps/cdplayer/LICENSE | 31 - src/apps/cdplayer/PlayList.cpp | 299 ------- src/apps/cdplayer/PlayList.h | 49 -- src/apps/cdplayer/TrackMenu.cpp | 274 ------ src/apps/cdplayer/TrackMenu.h | 39 - src/apps/cdplayer/TwoStateDrawButton.cpp | 166 ---- src/apps/cdplayer/TwoStateDrawButton.h | 51 -- src/apps/cdplayer/VolumeSlider.cpp | 37 - src/apps/cdplayer/VolumeSlider.h | 29 - 24 files changed, 2 insertions(+), 5843 deletions(-) delete mode 100644 src/apps/cdplayer/ButtonBitmaps.h delete mode 100644 src/apps/cdplayer/CDAudioDevice.cpp delete mode 100644 src/apps/cdplayer/CDAudioDevice.h delete mode 100644 src/apps/cdplayer/CDDBSupport.cpp delete mode 100644 src/apps/cdplayer/CDDBSupport.h delete mode 100644 src/apps/cdplayer/CDPlayer.cpp delete mode 100644 src/apps/cdplayer/CDPlayer.h delete mode 100644 src/apps/cdplayer/CDPlayer.rdef delete mode 100644 src/apps/cdplayer/DoubleShotDrawButton.cpp delete mode 100644 src/apps/cdplayer/DoubleShotDrawButton.h delete mode 100644 src/apps/cdplayer/DrawButton.cpp delete mode 100644 src/apps/cdplayer/DrawButton.h delete mode 100644 src/apps/cdplayer/Jamfile delete mode 100644 src/apps/cdplayer/LICENSE delete mode 100644 src/apps/cdplayer/PlayList.cpp delete mode 100644 src/apps/cdplayer/PlayList.h delete mode 100644 src/apps/cdplayer/TrackMenu.cpp delete mode 100644 src/apps/cdplayer/TrackMenu.h delete mode 100644 src/apps/cdplayer/TwoStateDrawButton.cpp delete mode 100644 src/apps/cdplayer/TwoStateDrawButton.h delete mode 100644 src/apps/cdplayer/VolumeSlider.cpp delete mode 100644 src/apps/cdplayer/VolumeSlider.h diff --git a/build/jam/images/definitions/regular b/build/jam/images/definitions/regular index bf55473..f17a5fa 100644
a b SYSTEM_BIN += [ FFilterByBuildFeatures 15 15 ] ; 16 16 17 17 SYSTEM_APPS += [ FFilterByBuildFeatures 18 C DPlayer CodyCam18 CodyCam 19 19 GLInfo@mesa 20 20 HaikuDepot 21 21 Icon-O-Matic Installer LaunchBox … … SYSTEM_APPS += [ FFilterByBuildFeatures 28 28 ] ; 29 29 30 30 DESKBAR_APPLICATIONS += 31 CodyCam CDPlayer31 CodyCam 32 32 HaikuDepot 33 33 Icon-O-Matic Installer 34 34 Magnify Mail MediaConverter MediaPlayer MidiPlayer -
src/apps/Jamfile
diff --git a/src/apps/Jamfile b/src/apps/Jamfile index 6b85ddc..8bdd434 100644
a b HaikuSubInclude activitymonitor ; 6 6 HaikuSubInclude autoraise ; 7 7 HaikuSubInclude bsnow ; 8 8 HaikuSubInclude bootmanager ; 9 HaikuSubInclude cdplayer ;10 9 HaikuSubInclude charactermap ; 11 10 HaikuSubInclude clock ; 12 11 HaikuSubInclude codycam ; -
deleted file src/apps/cdplayer/ButtonBitmaps.h
diff --git a/src/apps/cdplayer/ButtonBitmaps.h b/src/apps/cdplayer/ButtonBitmaps.h deleted file mode 100644 index ef85e71..0000000
+ - 1 /*2 * Copyright 2006, Haiku.3 * Distributed under the terms of the MIT License.4 *5 * Authors:6 * Stephan Aßmus <superstippi@gmx.de>7 */8 9 // NOTE: The images in here originate from Be Sample code. They have been10 // integrated in the BeOS interface for the VLC Media Player code. When I11 // worked on VLC during the 0.4.3-0.4.6 times, I reworked the bitmaps, and12 // all code left in this file is from my own work on the Be Sample code13 // buttons. -Stephan Aßmus14 15 #ifndef BUTTON_BITMAPS_H16 #define BUTTON_BITMAPS_H17 18 #include <SupportDefs.h>19 20 // #pragma mark play21 22 const int32 kPlayPauseBitmapWidth = 48;23 const int32 kPlayPauseBitmapHeight = 21;24 25 const unsigned char kPlayButtonBitmapBits [] = {26 0xff,0xff,0xff,0xff,0xff,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,27 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,28 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0xff,0xff,0xff,0xff,29 0xff,0xff,0xff,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,30 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,31 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0xff,0xff,0xff,32 0xff,0xff,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,33 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,34 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0xff,0xff,35 0xff,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,36 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,37 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0xff,38 0xff,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,39 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,40 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0xff,41 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,42 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,43 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,44 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,45 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,46 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,47 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,48 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,49 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,50 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,51 0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,52 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,53 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,54 0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,55 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,56 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,57 0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,58 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,59 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,60 0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,61 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,62 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,63 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,64 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,65 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,66 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,67 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,68 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,69 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,70 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,71 0xff,0xff,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,72 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,73 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,74 0xff,0xff,0xff,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,75 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,76 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,77 0xff,0xff,0xff,0xff,0xff,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,78 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,79 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0xff,80 0xff,0xff,0xff,0xff,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,81 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,82 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0xff,0xff,83 0xff,0xff,0xff,0xff,0xff,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,84 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,85 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0xff,0xff,0xff,86 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,87 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,88 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0xff,0xff,0xff,0xff,0xff89 };90 91 const unsigned char kDisabledPlayButtonBitmapBits [] = {92 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,93 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,94 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,95 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,96 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,97 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,98 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,99 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,100 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,101 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,102 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,103 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,104 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,105 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,106 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,107 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,108 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,109 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,110 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,111 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x16,0x1b,0x1b,0x1b,112 0x16,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,113 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,114 0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,115 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,116 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,117 0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,118 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,119 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,120 0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,121 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,122 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,123 0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,124 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,125 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,126 0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,127 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,128 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,129 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x1c,0x1b,0x1b,130 0x16,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,131 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,132 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,133 0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,134 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,135 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,136 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,137 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,138 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,139 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,140 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,141 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,142 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,143 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,144 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,145 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,146 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,147 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,148 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,149 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,150 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,151 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,152 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,153 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,154 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b155 };156 157 const unsigned char kPressedPlayButtonBitmapBits [] = {158 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,159 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,160 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,161 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,162 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,163 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,164 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,165 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,166 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,167 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,168 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,169 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,170 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,171 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,172 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,173 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,174 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,175 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,176 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,177 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,178 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,179 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x00,180 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,181 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,182 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,183 0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,184 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,185 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,186 0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,187 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,188 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,189 0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,190 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,191 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,192 0x10,0x10,0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,193 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,194 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,195 0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,196 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,197 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,198 0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,199 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,200 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x19,201 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,202 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,203 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,204 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,205 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,206 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,207 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,208 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,209 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,210 0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,211 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,212 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,213 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,214 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,215 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,216 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,217 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,218 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,219 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,220 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b221 };222 223 const unsigned char kPlayingPlayButtonBitmapBits [] = {224 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,225 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,226 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,227 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,228 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,229 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,230 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,231 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,232 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,233 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,234 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,235 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,236 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,237 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,238 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,239 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,240 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,241 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,242 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x00,0x00,243 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,244 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,245 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,246 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,247 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,248 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,249 0x34,0x34,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,250 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,251 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,252 0x34,0x34,0x34,0x34,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,253 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,254 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,255 0x34,0x34,0x34,0x34,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,256 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,257 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,258 0x34,0x34,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,259 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,260 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x34,261 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x3f,0x1a,0x1a,262 0x00,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,263 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x3f,0x3f,264 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,265 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,266 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,267 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,268 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,269 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,270 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,271 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,272 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,273 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,274 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,275 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,276 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,277 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,278 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,279 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,280 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,281 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,282 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,283 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,284 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,285 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,286 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b287 };288 289 const unsigned char kPressedPlayingPlayButtonBitmapBits [] = {290 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,291 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,292 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,293 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,294 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,295 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,296 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,297 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,298 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,299 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,300 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,301 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,302 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,303 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,304 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,305 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,306 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,307 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,308 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,309 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,310 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,311 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,312 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,313 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,314 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,315 0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,316 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,317 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,318 0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,319 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,320 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,321 0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,322 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,323 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,324 0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,325 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,326 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,327 0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,328 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,329 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,330 0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,0x19,0x13,331 0x13,0x00,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,332 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,333 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,334 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,335 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,336 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,337 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,338 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,339 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,340 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,341 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,342 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,343 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,344 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,345 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,346 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,347 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,348 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,349 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,350 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,351 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,352 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b353 };354 355 const unsigned char kPausedPlayButtonBitmapBits [] = {356 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,357 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,358 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,359 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,360 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,361 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,362 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,363 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,364 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,365 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,366 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,367 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,368 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,369 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,370 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,371 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,372 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,373 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,374 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,375 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x10,0x1a,0x1a,376 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,377 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,378 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,379 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,380 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,381 0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,382 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,383 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,384 0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,385 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,386 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,387 0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,388 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,389 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,390 0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,391 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,392 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,393 0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x34,0x34,0x3f,0x1a,0x1a,394 0x00,0x34,0x34,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,395 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,396 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,0x1a,0x1a,397 0x10,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,398 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,399 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,400 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,401 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,402 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,403 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,404 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,405 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,406 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,407 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,408 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,409 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,410 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,411 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,412 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,413 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,414 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,415 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,416 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,417 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,418 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b419 };420 421 const unsigned char kPressedPausedPlayButtonBitmapBits [] = {422 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,423 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,424 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,425 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,426 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,427 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,428 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,429 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,430 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,431 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,432 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,433 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,434 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,435 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,436 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,437 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,438 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,439 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,440 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,441 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,442 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,443 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x00,444 0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x10,0x13,445 0x13,0x00,0x00,0x00,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,446 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,447 0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,448 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,449 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,450 0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,451 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,452 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,453 0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,454 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,455 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,456 0x10,0x10,0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,457 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,458 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,459 0x10,0x10,0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,460 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,461 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,462 0x10,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x19,0x13,463 0x13,0x00,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,464 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x19,465 0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x10,0x19,0x19,0x19,0x13,466 0x13,0x10,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,467 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,468 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,469 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,470 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,471 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,472 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,473 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,474 0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,475 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,476 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,477 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,478 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,479 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,480 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,481 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,482 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,483 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,484 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b485 };486 487 // #pragma mark stop488 489 const int32 kStopBitmapWidth = 31;490 const int32 kStopBitmapHeight = 21;491 492 const unsigned char kStopButtonBitmapBits [] = {493 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,494 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,495 0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,496 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,497 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,498 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,499 0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,500 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,501 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,502 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,503 0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,504 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,505 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x00,0x00,506 0x00,0x00,0x00,0x10,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,507 0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,508 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,509 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,510 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,511 0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,512 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,513 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,514 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,515 0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,516 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,517 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,518 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,519 0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x10,0x3f,0x3f,0x3f,520 0x3f,0x3f,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,521 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,522 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,523 0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,524 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,525 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,526 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,527 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,528 0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,529 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,530 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,531 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,532 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,533 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,534 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f535 };536 537 538 const unsigned char kDisabledStopButtonBitmapBits [] = {539 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,540 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,541 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,542 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,543 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,544 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,545 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,546 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,547 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,548 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,549 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,550 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,551 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x16,0x16,552 0x16,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,553 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,554 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,555 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,556 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,557 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,558 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,559 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,560 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,561 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,562 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,563 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,564 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,565 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,566 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,567 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,568 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,569 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,570 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,571 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,572 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,573 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,574 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,575 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,576 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,577 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,578 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,579 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,580 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f581 };582 583 584 const unsigned char kPressedStopButtonBitmapBits [] = {585 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,586 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,587 0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,588 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,589 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,590 0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,591 0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,592 0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,593 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,594 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,595 0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,596 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,597 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,598 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,599 0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x00,600 0x00,0x00,0x00,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,601 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,602 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,603 0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,604 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,605 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,606 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,607 0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,608 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,609 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,610 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,611 0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x10,0x10,612 0x10,0x10,0x10,0x10,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,613 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x19,614 0x19,0x19,0x19,0x19,0x19,0x13,0x13,0x13,0x13,0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,615 0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,616 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,617 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,618 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,619 0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,620 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,621 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,622 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,623 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,624 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,625 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,626 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f627 };628 629 // #pragma mark rewind630 631 const int32 kRewindBitmapWidth = 38;632 const int32 kRewindBitmapHeight = 21;633 634 const unsigned char kRewindBitmapBits [] = {635 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,636 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,637 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,638 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,639 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,640 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,641 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,642 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,643 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,644 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,645 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,646 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,647 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,648 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,649 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,650 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,651 0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,652 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,653 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,654 0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,655 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,656 0x17,0x3f,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,657 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,658 0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x00,0x00,0x17,0x17,0x17,659 0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,660 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,661 0x17,0x3f,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,662 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,663 0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,664 0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,665 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,666 0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,667 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,668 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,669 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,670 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,671 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,672 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,673 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,674 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,675 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,676 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,677 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,678 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,679 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,680 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,681 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,682 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,683 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,684 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,685 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,686 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,687 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f688 };689 690 691 const unsigned char kDisabledRewindBitmapBits [] = {692 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,693 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,694 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,695 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,696 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,697 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,698 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,699 0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,700 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,701 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,702 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,703 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,704 0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,705 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,706 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,707 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,708 0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,709 0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,710 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,711 0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,712 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,713 0x19,0x1c,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,714 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,715 0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x16,0x16,0x19,0x19,0x19,716 0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,717 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,718 0x19,0x1c,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,719 0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,720 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,721 0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,722 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,723 0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,724 0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,725 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,726 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,727 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,728 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,729 0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,730 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,731 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,732 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,733 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,734 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,735 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,736 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,737 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,738 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,739 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,740 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,741 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,742 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,743 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,744 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f745 };746 747 748 const unsigned char kPressedRewindBitmapBits [] = {749 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,750 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,751 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,752 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,753 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,754 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,755 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,756 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,757 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,758 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,759 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,760 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,761 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,762 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,763 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,764 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,765 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,766 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,767 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,768 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,769 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,770 0x00,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x19,0x13,0x13,0x13,0x13,771 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,772 0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x00,0x00,773 0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,774 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,775 0x34,0x34,0x19,0x13,0x00,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,776 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,777 0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x19,0x19,0x34,0x34,778 0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,779 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,780 0x34,0x34,0x19,0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,781 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,782 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x13,0x13,783 0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,784 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,785 0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,786 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,787 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,788 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,789 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,790 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,791 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,792 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,793 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,794 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,795 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,796 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,797 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,798 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,799 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,800 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,801 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f802 };803 804 const unsigned char kForwardBitmapBits [] = {805 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,806 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,807 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,808 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,809 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,810 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,811 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,812 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,813 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,814 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,815 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,816 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,817 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,818 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,819 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,820 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,821 0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,822 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,823 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,824 0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,825 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,826 0x00,0x00,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,827 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,828 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x00,0x17,0x17,829 0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,830 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,831 0x17,0x17,0x3f,0x3f,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,832 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,833 0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x00,0x17,0x17,834 0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,835 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,836 0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,837 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,838 0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,839 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,840 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,841 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,842 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,843 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,844 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,845 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,846 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,847 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,848 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,849 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,850 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,851 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,852 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,853 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,854 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,855 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,856 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,857 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f858 };859 860 const unsigned char kDisabledForwardBitmapBits [] = {861 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,862 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,863 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,864 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,865 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,866 0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,867 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,868 0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,869 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,870 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,871 0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,872 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,873 0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,874 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,875 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,876 0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,877 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,878 0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,879 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,880 0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,881 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,882 0x16,0x16,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,883 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,884 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x16,0x19,0x19,885 0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,886 0x1b,0x13,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,887 0x19,0x19,0x1c,0x1c,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,888 0x1b,0x1b,0x1b,0x1b,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,889 0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x16,0x19,0x19,890 0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,891 0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,892 0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,893 0x1b,0x1b,0x1b,0x18,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,894 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,895 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x18,0x1b,0x3f,0x3f,896 0x1b,0x1b,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,897 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,898 0x1b,0x1b,0x18,0x16,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x19,0x16,0x1a,0x1b,0x1b,0x1b,899 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,900 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x16,0x19,0x1b,0x1b,0x3f,0x3f,901 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,902 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,903 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x16,0x18,904 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,905 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x16,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,906 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,907 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,908 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,909 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,910 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,911 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,912 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,913 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f914 };915 916 const unsigned char kPressedForwardBitmapBits [] = {917 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,918 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,919 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,920 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,921 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,922 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,923 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,924 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,925 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,926 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,927 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,928 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,929 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,930 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,931 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,932 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,933 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,934 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,935 0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,936 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,937 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,938 0x00,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,939 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,940 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x00,0x34,941 0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,942 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,943 0x34,0x34,0x34,0x00,0x00,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x13,944 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,945 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x00,0x34,946 0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,947 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,948 0x34,0x19,0x19,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x13,949 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,950 0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x34,951 0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,952 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,953 0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,954 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,955 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,956 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,957 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,958 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,959 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,960 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,961 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,962 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,963 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,964 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,965 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,966 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,967 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,968 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,969 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f970 };971 972 973 // #pragma mark skip back974 975 const unsigned char kSkipBackBitmapBits [] = {976 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x10,0x10,0x10,0x10,0x10,0x10,977 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,978 0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,979 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,980 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,981 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,982 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,983 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,984 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,985 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,986 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,987 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,988 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,989 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,990 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,991 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,992 0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,993 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,994 0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,995 0x1a,0x00,0x00,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,996 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x00,0x00,997 0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x00,0x00,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,998 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,999 0x1a,0x00,0x3f,0x1a,0x00,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x00,0x00,0x17,1000 0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,1001 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x3f,0x3f,0x17,0x17,1002 0x17,0x17,0x17,0x3f,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,1003 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,1004 0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x3f,1005 0x3f,0x17,0x17,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,1006 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,1007 0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x17,0x3f,0x1a,0x1a,0x1a,1008 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,1009 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,1010 0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,1011 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1012 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1013 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,1014 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1015 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,1016 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1017 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,1018 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,1019 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,1020 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,1021 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,1022 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,1023 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,1024 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,1025 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,1026 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,1027 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,1028 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f1029 };1030 1031 const unsigned char kDisabledSkipBackBitmapBits [] = {1032 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1033 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1034 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,1035 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,1036 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,1037 0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,1038 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,1039 0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,1040 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1041 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,1042 0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1043 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1044 0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,1045 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1046 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,1047 0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,1048 0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,1049 0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,1050 0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,1051 0x1b,0x16,0x16,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,1052 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x16,0x16,1053 0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x16,0x16,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,1054 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,1055 0x1b,0x16,0x1c,0x1b,0x16,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x16,0x16,0x19,1056 0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,1057 0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1c,0x1c,0x19,0x19,1058 0x19,0x19,0x19,0x1c,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,1059 0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,1060 0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1c,1061 0x1c,0x19,0x19,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,1062 0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,1063 0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x1c,0x1b,0x1b,0x1b,1064 0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,1065 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,1066 0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,1067 0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1068 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1069 0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,1070 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1071 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,1072 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1073 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1074 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,1075 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,1076 0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,1077 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,1078 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,1079 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1080 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1081 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,1082 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1083 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1084 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f1085 };1086 1087 1088 const unsigned char kPressedSkipBackBitmapBits [] = {1089 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,1090 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,1091 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,1092 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,1093 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,1094 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,1095 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,1096 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,1097 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,1098 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,1099 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1100 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,1101 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,1102 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1103 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,1104 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1105 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1106 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,1107 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,1108 0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,1109 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,1110 0x13,0x00,0x00,0x34,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x34,0x19,0x13,0x13,1111 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,1112 0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,1113 0x00,0x00,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,1114 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x00,0x00,0x34,1115 0x34,0x34,0x34,0x34,0x19,0x13,0x00,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,1116 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,1117 0x13,0x13,0x00,0x19,0x13,0x19,0x19,0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x19,0x19,1118 0x34,0x34,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,1119 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x19,1120 0x19,0x34,0x34,0x34,0x19,0x13,0x13,0x13,0x19,0x19,0x34,0x34,0x34,0x19,0x13,0x13,1121 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,1122 0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,1123 0x13,0x13,0x19,0x19,0x34,0x19,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,1124 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,1125 0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,1126 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,1127 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1128 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,1129 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,1130 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,1131 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,1132 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,1133 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,1134 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1135 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,1136 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,1137 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,1138 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,1139 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,1140 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,1141 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f1142 };1143 1144 // #pragma mark skip forward1145 1146 const unsigned char kSkipForwardBitmapBits [] = {1147 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,0x11,0x10,0x10,0x10,0x10,0x10,0x10,1148 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,1149 0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x18,0x14,0x10,0x0d,1150 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,1151 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0f,0x13,0x17,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,1152 0x1b,0x1b,0x1a,0x17,0x11,0x0b,0x10,0x16,0x1a,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,1153 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x19,1154 0x12,0x12,0x16,0x19,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x10,0x0d,0x16,0x1e,0x1e,1155 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,1156 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x14,0x17,0x1a,0x1b,0x3f,0x3f,1157 0x1a,0x18,0x11,0x0d,0x18,0x1e,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1158 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1159 0x1b,0x1b,0x19,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0c,0x16,0x1e,0x1c,0x1b,0x1a,1160 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1161 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x18,0x1a,0x3f,0x3f,1162 0x17,0x11,0x10,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,1163 0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x00,0x1a,0x1a,0x1a,1164 0x1a,0x1a,0x1a,0x17,0x18,0x1b,0x3f,0x3f,0x16,0x0f,0x17,0x1d,0x1b,0x1a,0x1a,0x1a,1165 0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x00,0x00,0x1a,0x1a,1166 0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x16,0x1b,0x3f,0x3f,1167 0x14,0x0f,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,1168 0x1a,0x1a,0x00,0x17,0x17,0x17,0x00,0x00,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,1169 0x1a,0x1a,0x1a,0x16,0x12,0x1c,0x3f,0x3f,0x14,0x0f,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,1170 0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x00,0x00,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,1171 0x00,0x00,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x16,0x0f,0x1c,0x3f,0x3f,1172 0x14,0x10,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,1173 0x3f,0x1a,0x00,0x17,0x17,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,1174 0x1a,0x1a,0x1a,0x16,0x0f,0x1d,0x3f,0x3f,0x16,0x11,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,1175 0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x00,0x17,0x17,0x17,0x3f,0x3f,1176 0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x14,0x0e,0x1d,0x3f,0x3f,1177 0x17,0x13,0x19,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,1178 0x1a,0x1a,0x00,0x17,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x00,0x3f,0x1a,0x1a,0x1a,1179 0x1a,0x1a,0x18,0x12,0x10,0x1d,0x3f,0x3f,0x18,0x16,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,1180 0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,1181 0x1a,0x1a,0x1a,0x3f,0x3f,0x1a,0x1a,0x1a,0x1a,0x19,0x16,0x0f,0x13,0x1d,0x3f,0x3f,1182 0x1a,0x19,0x17,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1183 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1184 0x1a,0x18,0x12,0x0c,0x19,0x1d,0x3f,0x3f,0x1b,0x1b,0x19,0x17,0x16,0x17,0x19,0x1a,1185 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1186 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x18,0x13,0x0c,0x13,0x1e,0x1d,0x3f,0x3f,1187 0x1b,0x1b,0x1b,0x1a,0x16,0x13,0x16,0x17,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1188 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x16,1189 0x12,0x0b,0x10,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x10,0x10,1190 0x12,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,1191 0x14,0x14,0x14,0x14,0x14,0x13,0x11,0x0d,0x0a,0x11,0x1c,0x1e,0x1c,0x1b,0x3f,0x3f,1192 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x19,0x13,0x0f,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,1193 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0b,0x0f,1194 0x19,0x1e,0x1e,0x1c,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,1195 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,1196 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1b,0x1b,0x1b,0x3f,0x3f,1197 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,1198 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,1199 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f1200 };1201 1202 1203 const unsigned char kDisabledSkipForwardBitmapBits [] = {1204 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1205 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1206 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,1207 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,1208 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,1209 0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,1210 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,1211 0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,1212 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1213 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,1214 0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1215 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1216 0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,1217 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1218 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,1219 0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,1220 0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x16,0x1b,0x1b,0x1b,1221 0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,1222 0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x16,0x16,0x1b,0x1b,1223 0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,1224 0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,1225 0x1b,0x1b,0x16,0x19,0x19,0x19,0x16,0x16,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,1226 0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,1227 0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x16,0x16,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,1228 0x16,0x16,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,1229 0x1b,0x13,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,1230 0x1c,0x1b,0x16,0x19,0x19,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,1231 0x1b,0x1b,0x1b,0x1a,0x13,0x1b,0x3f,0x3f,0x1b,0x14,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,1232 0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x16,0x19,0x19,0x19,0x1c,0x1c,1233 0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x14,0x1b,0x3f,0x3f,1234 0x1b,0x16,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,1235 0x1b,0x1b,0x16,0x19,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x16,0x1c,0x1b,0x1b,0x1b,1236 0x1b,0x1b,0x1b,0x17,0x16,0x1b,0x3f,0x3f,0x1b,0x18,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,1237 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,1238 0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x15,0x18,0x1b,0x3f,0x3f,1239 0x1b,0x1a,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1240 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1241 0x1b,0x1b,0x18,0x15,0x1a,0x1b,0x3f,0x3f,0x1b,0x1b,0x18,0x16,0x19,0x1b,0x1b,0x1b,1242 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1243 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x16,0x18,0x1b,0x1b,0x3f,0x3f,1244 0x1b,0x1b,0x1b,0x18,0x16,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1245 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1246 0x18,0x16,0x18,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x15,0x15,0x17,1247 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,1248 0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x15,0x15,0x18,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,1249 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x18,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,1250 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x18,1251 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1252 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1253 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,1254 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1255 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1256 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f1257 };1258 1259 1260 const unsigned char kPressedSkipForwardBitmapBits [] = {1261 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,1262 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,1263 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1a,0x19,0x17,0x14,0x13,1264 0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,1265 0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x16,0x19,0x1a,0x1b,0x1b,0x1b,0x3f,0x3f,1266 0x1b,0x1b,0x1a,0x18,0x14,0x11,0x0d,0x0b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,1267 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,0x0c,0x0e,1268 0x12,0x14,0x18,0x1a,0x1a,0x1b,0x3f,0x3f,0x1b,0x1a,0x17,0x13,0x0e,0x0b,0x0c,0x0d,1269 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,1270 0x10,0x10,0x10,0x10,0x10,0x0f,0x0d,0x0d,0x0f,0x11,0x14,0x18,0x1a,0x1a,0x3f,0x3f,1271 0x1a,0x18,0x13,0x0d,0x0c,0x0e,0x11,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1272 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,1273 0x0f,0x0f,0x13,0x16,0x19,0x1a,0x3f,0x3f,0x19,0x14,0x0e,0x0c,0x0f,0x12,0x13,0x13,1274 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1275 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x0f,0x10,0x16,0x18,0x1a,0x3f,0x3f,1276 0x17,0x11,0x0c,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1277 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1278 0x13,0x12,0x0f,0x13,0x18,0x1b,0x3f,0x3f,0x16,0x0d,0x0d,0x11,0x13,0x13,0x13,0x13,1279 0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,1280 0x13,0x13,0x13,0x13,0x00,0x00,0x13,0x13,0x13,0x13,0x11,0x10,0x17,0x1b,0x3f,0x3f,1281 0x14,0x0d,0x0e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,1282 0x13,0x13,0x13,0x00,0x34,0x00,0x00,0x13,0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,1283 0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,0x14,0x0d,0x0f,0x12,0x13,0x13,0x13,0x13,1284 0x13,0x13,0x00,0x34,0x34,0x34,0x00,0x00,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x00,1285 0x00,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x16,0x1c,0x3f,0x3f,1286 0x14,0x0e,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,1287 0x00,0x00,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x00,0x00,0x13,0x00,0x19,0x13,0x13,1288 0x13,0x13,0x12,0x0f,0x16,0x1c,0x3f,0x3f,0x16,0x0e,0x0f,0x12,0x13,0x13,0x13,0x13,1289 0x13,0x13,0x00,0x34,0x34,0x34,0x34,0x34,0x19,0x19,0x13,0x00,0x34,0x34,0x34,0x34,1290 0x34,0x19,0x19,0x13,0x00,0x19,0x13,0x13,0x13,0x13,0x12,0x10,0x17,0x1c,0x3f,0x3f,1291 0x17,0x10,0x0f,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,1292 0x13,0x13,0x13,0x00,0x34,0x34,0x34,0x19,0x19,0x13,0x13,0x13,0x00,0x19,0x13,0x13,1293 0x13,0x13,0x11,0x11,0x18,0x1c,0x3f,0x3f,0x18,0x12,0x0f,0x10,0x12,0x13,0x13,0x13,1294 0x13,0x13,0x00,0x34,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x00,0x34,0x19,0x19,0x13,1295 0x13,0x13,0x13,0x13,0x00,0x19,0x13,0x13,0x13,0x12,0x10,0x13,0x1a,0x1c,0x3f,0x3f,1296 0x1a,0x16,0x11,0x0f,0x11,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,1297 0x13,0x13,0x13,0x19,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x19,0x19,0x13,0x13,1298 0x12,0x11,0x11,0x18,0x1b,0x1c,0x3f,0x3f,0x1b,0x1a,0x16,0x11,0x0f,0x11,0x12,0x13,1299 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,1300 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x16,0x1b,0x1d,0x1c,0x3f,0x3f,1301 0x1b,0x1b,0x1a,0x16,0x12,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,1302 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,1303 0x11,0x16,0x1b,0x1c,0x1d,0x1c,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x18,0x16,0x12,0x10,1304 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,1305 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x14,0x19,0x1b,0x1d,0x1d,0x1c,0x1b,0x3f,0x3f,1306 0x1b,0x1b,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,1307 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,1308 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,1309 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,1310 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x3f,0x3f,1311 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,1312 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,1313 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f1314 };1315 1316 1317 #endif // BUTTON_BITMAPS_H1318 -
deleted file src/apps/cdplayer/CDAudioDevice.cpp
diff --git a/src/apps/cdplayer/CDAudioDevice.cpp b/src/apps/cdplayer/CDAudioDevice.cpp deleted file mode 100644 index bb84e32..0000000
+ - 1 /*2 * Copyright 2006-2007, Haiku, Inc. All Rights Reserved.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm, bpmagic@columbus.rr.com7 */8 9 10 #include "CDAudioDevice.h"11 #include "scsi.h"12 13 #include <Debug.h>14 #include <Directory.h>15 #include <Entry.h>16 #include <Path.h>17 #include <String.h>18 19 #include <errno.h>20 #include <stdio.h>21 #include <stdlib.h>22 #include <string.h>23 #include <unistd.h>24 25 26 struct ConvertedToc {27 int32 min;28 int32 sec;29 int32 frame;30 };31 32 33 static int3234 cddb_sum(int n)35 {36 char buf[12];37 int32 ret = 0;38 39 sprintf(buf, "%u", n);40 for (const char *p = buf; *p != '\0'; p++)41 ret += (*p - '0');42 return ret;43 }44 45 46 // #pragma mark -47 48 49 CDAudioData::CDAudioData(const int32 &id, const int32 &count,50 const int32 &discLength)51 :52 fDiscId(id),53 fTrackCount(count),54 fLength(discLength)55 {56 }57 58 59 CDAudioData::CDAudioData(const CDAudioData &from)60 :61 fDiscId(from.fDiscId),62 fTrackCount(from.fTrackCount),63 fLength(from.fLength)64 {65 }66 67 68 CDAudioData &69 CDAudioData::operator=(const CDAudioData &from)70 {71 fDiscId = from.fDiscId;72 fTrackCount = from.fTrackCount;73 fLength = from.fLength;74 fFrameOffsets = from.fFrameOffsets;75 return *this;76 }77 78 79 // #pragma mark -80 81 82 CDAudioTime::CDAudioTime(const int32 min,const int32 &sec)83 :84 fMinutes(min),85 fSeconds(sec)86 {87 }88 89 90 CDAudioTime::CDAudioTime(const CDAudioTime &from)91 :92 fMinutes(from.fMinutes),93 fSeconds(from.fSeconds)94 {95 }96 97 98 CDAudioTime &99 CDAudioTime::operator=(const CDAudioTime &from)100 {101 fMinutes = from.fMinutes;102 fSeconds = from.fSeconds;103 return *this;104 }105 106 107 CDAudioTime108 CDAudioTime::operator+(const CDAudioTime &from)109 {110 CDAudioTime time;111 112 time.fMinutes = fMinutes + from.fMinutes;113 time.fSeconds = fSeconds + from.fSeconds;114 115 while (time.fSeconds > 59) {116 time.fMinutes++;117 time.fSeconds -= 60;118 }119 return time;120 }121 122 123 CDAudioTime124 CDAudioTime::operator-(const CDAudioTime &from)125 {126 CDAudioTime time;127 128 int32 tsec = ((fMinutes * 60) + fSeconds) - ((from.fMinutes * 60)129 + from.fSeconds);130 if (tsec < 0) {131 time.fMinutes = 0;132 time.fSeconds = 0;133 return time;134 }135 136 time.fMinutes = tsec / 60;137 time.fSeconds = tsec % 60;138 139 return time;140 }141 142 143 // #pragma mark -144 145 146 CDAudioDevice::CDAudioDevice()147 {148 _FindDrives("/dev/disk");149 if (CountDrives() > 0)150 SetDrive(0);151 }152 153 154 CDAudioDevice::~CDAudioDevice()155 {156 for (int32 i = 0; i < fDriveList.CountItems(); i++)157 delete (BString*) fDriveList.ItemAt(i);158 }159 160 161 162 //! This plays only one track - the track specified163 bool164 CDAudioDevice::Play(const int16 &track)165 {166 if (GetState() == kNoCD) {167 // no CD available, bail out168 ioctl(fFileHandle, B_LOAD_MEDIA, 0, 0);169 return false;170 }171 172 scsi_play_track playtrack;173 174 playtrack.start_track = track;175 playtrack.start_index = 1;176 playtrack.end_track = track;177 playtrack.end_index = 1;178 179 status_t result = ioctl(fFileHandle, B_SCSI_PLAY_TRACK, &playtrack);180 if (result != B_OK) {181 printf("Couldn't play track: %s\n", strerror(errno));182 return false;183 }184 185 return true;186 }187 188 189 bool190 CDAudioDevice::Pause()191 {192 status_t result = ioctl(fFileHandle, B_SCSI_PAUSE_AUDIO);193 if (result != B_OK) {194 printf("Couldn't pause track: %s\n", strerror(errno));195 return false;196 }197 return true;198 }199 200 201 bool202 CDAudioDevice::Resume()203 {204 CDState state = GetState();205 if (state == kNoCD) {206 // no CD available, bail out207 ioctl(fFileHandle, B_LOAD_MEDIA, 0, 0);208 return false;209 } else {210 if (state == kStopped)211 return Play(0);212 }213 214 status_t result = ioctl(fFileHandle, B_SCSI_RESUME_AUDIO);215 if (result != B_OK) {216 printf("Couldn't resume track: %s\n", strerror(errno));217 return false;218 }219 return true;220 }221 222 223 bool224 CDAudioDevice::Stop()225 {226 status_t result = ioctl(fFileHandle, B_SCSI_STOP_AUDIO);227 if (result != B_OK) {228 printf("Couldn't stop CD: %s\n", strerror(errno));229 return false;230 }231 return true;232 }233 234 235 //! Open or close the CD tray236 bool237 CDAudioDevice::Eject()238 {239 status_t media_status = B_DEV_NO_MEDIA;240 241 // get the status first242 ioctl(fFileHandle, B_GET_MEDIA_STATUS, &media_status, sizeof(media_status));243 244 // if door open, load the media, else eject the CD245 status_t result = ioctl(fFileHandle,246 media_status == B_DEV_DOOR_OPEN ? B_LOAD_MEDIA : B_EJECT_DEVICE);247 248 if (result != B_OK) {249 printf("Couldn't eject CD: %s\n", strerror(errno));250 return false;251 }252 return true;253 }254 255 256 bool257 CDAudioDevice::StartFastFwd()258 {259 scsi_scan scan;260 scan.direction = 1;261 scan.speed = 1;262 status_t result = ioctl(fFileHandle, B_SCSI_SCAN, &scan);263 if (result != B_OK) {264 printf("Couldn't fast forward: %s\n", strerror(errno));265 return false;266 }267 return true;268 }269 270 271 bool272 CDAudioDevice::StopFastFwd()273 {274 scsi_scan scan;275 scan.direction = 0;276 scan.speed = 1;277 status_t result = ioctl(fFileHandle, B_SCSI_SCAN, &scan);278 if (result != B_OK) {279 printf("Couldn't stop fast forwarding: %s\n", strerror(errno));280 return false;281 }282 return true;283 }284 285 286 bool287 CDAudioDevice::StartRewind()288 {289 scsi_scan scan;290 scan.direction = -1;291 scan.speed = 1;292 status_t result = ioctl(fFileHandle, B_SCSI_SCAN, &scan);293 if (result != B_OK) {294 printf("Couldn't rewind: %s\n", strerror(errno));295 return false;296 }297 return true;298 }299 300 301 bool302 CDAudioDevice::StopRewind()303 {304 scsi_scan scan;305 scan.direction = 0;306 scan.speed = 1;307 status_t result = ioctl(fFileHandle, B_SCSI_SCAN, &scan);308 if (result != B_OK) {309 printf("Couldn't stop rewinding: %s\n", strerror(errno));310 return false;311 }312 return true;313 }314 315 316 bool317 CDAudioDevice::SetVolume(uint8 value)318 {319 scsi_volume vol;320 321 // change only port0's volume322 vol.flags = 2;323 vol.port0_volume = value;324 325 status_t result = ioctl(fFileHandle, B_SCSI_SET_VOLUME, &vol);326 if (result != B_OK) {327 printf("Couldn't set volume: %s\n", strerror(errno));328 return false;329 }330 return true;331 }332 333 334 uint8335 CDAudioDevice::GetVolume()336 {337 scsi_volume vol;338 ioctl(fFileHandle, B_SCSI_GET_VOLUME, &vol);339 return vol.port0_volume;340 }341 342 343 //! Check the current CD play state344 CDState345 CDAudioDevice::GetState()346 {347 scsi_position pos;348 status_t media_status = B_DEV_NO_MEDIA;349 350 ioctl(fFileHandle, B_GET_MEDIA_STATUS, &media_status, sizeof(media_status));351 if (media_status != B_OK)352 return kNoCD;353 354 status_t result = ioctl(fFileHandle, B_SCSI_GET_POSITION, &pos);355 if (result != B_OK)356 return kNoCD;357 else if ((!pos.position[1]) || (pos.position[1] >= 0x13) ||358 ((pos.position[1] == 0x12) && (!pos.position[6])))359 return kStopped;360 else if (pos.position[1] == 0x11)361 return kPlaying;362 else363 return kPaused;364 }365 366 367 int16368 CDAudioDevice::CountTracks()369 {370 scsi_toc toc;371 status_t result = ioctl(fFileHandle, B_SCSI_GET_TOC, &toc);372 373 if (result != B_OK)374 return -1;375 376 return toc.toc_data[3];377 }378 379 380 //! Get the 0-based index of the current track381 int16382 CDAudioDevice::GetTrack()383 {384 scsi_position pos;385 386 status_t media_status = B_DEV_NO_MEDIA;387 388 ioctl(fFileHandle, B_GET_MEDIA_STATUS, &media_status, sizeof(media_status));389 if (media_status != B_OK)390 return -1;391 392 status_t result = ioctl(fFileHandle, B_SCSI_GET_POSITION, &pos);393 if (result != B_OK)394 return -1;395 396 if (!pos.position[1] || pos.position[1] >= 0x13397 || (pos.position[1] == 0x12 && !pos.position[6]))398 return 0;399 else400 return pos.position[6];401 }402 403 404 uint8405 CDAudioDevice::CountDrives()406 {407 return fDriveList.CountItems();408 }409 410 411 bool412 CDAudioDevice::SetDrive(const int32 &drive)413 {414 BString *path = (BString*) fDriveList.ItemAt(drive);415 416 if (!path)417 return false;418 419 int device = open(path->String(), O_RDONLY);420 if (device >= 0) {421 fFileHandle = device;422 fDrivePath = path;423 fDriveIndex = drive;424 return true;425 }426 427 return false;428 }429 430 431 const char *432 CDAudioDevice::GetDrivePath() const433 {434 if (!fDrivePath)435 return NULL;436 437 return fDrivePath->String();438 }439 440 441 int32442 CDAudioDevice::_FindDrives(const char *path)443 {444 BDirectory dir(path);445 446 if (dir.InitCheck() != B_OK)447 return B_ERROR;448 449 dir.Rewind();450 451 BEntry entry;452 while (dir.GetNextEntry(&entry) >= 0) {453 BPath path;454 const char *name;455 entry_ref e;456 457 if (entry.GetPath(&path) != B_OK)458 continue;459 460 name = path.Path();461 if (entry.GetRef(&e) != B_OK)462 continue;463 464 if (entry.IsDirectory()) {465 // ignore floppy -- it is not silent466 if (strcmp(e.name, "floppy") == 0)467 continue;468 else if (strcmp(e.name, "ata") == 0)469 continue;470 471 // Note that if we check for the count here, we could472 // just search for one drive. However, we want to find *all* drives473 // that are available, so we keep searching even if we've found one474 _FindDrives(name);475 476 } else {477 int devfd;478 device_geometry g;479 480 // ignore partitions481 if (strcmp(e.name, "raw") != 0)482 continue;483 484 devfd = open(name, O_RDONLY);485 if (devfd < 0)486 continue;487 488 if (ioctl(devfd, B_GET_GEOMETRY, &g, sizeof(g)) >= 0) {489 if (g.device_type == B_CD)490 fDriveList.AddItem(new BString(name));491 }492 close(devfd);493 }494 }495 return fDriveList.CountItems();496 }497 498 499 bool500 CDAudioDevice::GetTime(CDAudioTime &track, CDAudioTime &disc)501 {502 scsi_position pos;503 504 // Sanity check505 status_t media_status = B_DEV_NO_MEDIA;506 ioctl(fFileHandle, B_GET_MEDIA_STATUS, &media_status, sizeof(media_status));507 if (media_status != B_OK)508 return false;509 510 status_t result = ioctl(fFileHandle, B_SCSI_GET_POSITION, &pos);511 512 if (result != B_OK)513 return false;514 515 if ((!pos.position[1]) || (pos.position[1] >= 0x13) ||516 ((pos.position[1] == 0x12) && (!pos.position[6]))) {517 // This indicates that we have a CD, but we are stopped.518 return false;519 }520 521 disc.SetMinutes(pos.position[9]);522 disc.SetSeconds(pos.position[10]);523 track.SetMinutes(pos.position[13]);524 track.SetSeconds(pos.position[14]);525 return true;526 }527 528 529 bool530 CDAudioDevice::GetTimeForTrack(const int16 &index, CDAudioTime &track)531 {532 scsi_toc toc;533 status_t result = ioctl(fFileHandle, B_SCSI_GET_TOC, &toc);534 535 if (result != B_OK)536 return false;537 538 int16 trackcount = toc.toc_data[3] - toc.toc_data[2] + 1;539 540 if (index < 1 || index > trackcount)541 return false;542 543 TrackDescriptor *desc = (TrackDescriptor*)&(toc.toc_data[4]);544 545 int32 tracktime = (desc[index].min * 60) + desc[index].sec;546 547 tracktime -= (desc[index - 1].min * 60) + desc[index - 1].sec;548 track.SetMinutes(tracktime / 60);549 track.SetSeconds(tracktime % 60);550 551 return true;552 }553 554 555 bool556 CDAudioDevice::GetTimeForDisc(CDAudioTime &disc)557 {558 scsi_toc toc;559 status_t result = ioctl(fFileHandle, B_SCSI_GET_TOC, &toc);560 561 if (result != B_OK)562 return false;563 564 int16 trackcount = toc.toc_data[3] - toc.toc_data[2] + 1;565 TrackDescriptor *desc = (TrackDescriptor*)&(toc.toc_data[4]);566 567 disc.SetMinutes(desc[trackcount].min);568 disc.SetSeconds(desc[trackcount].sec);569 570 return true;571 }572 573 574 int32575 CDAudioDevice::GetDiscID()576 {577 // Read the disc578 scsi_toc toc;579 status_t result = ioctl(fFileHandle, B_SCSI_GET_TOC, &toc);580 581 if (result != B_OK)582 return -1;583 584 585 int32 id, numTracks;586 BString frameOffsetsString;587 588 ConvertedToc tocData[100];589 590 // figure out the disc ID591 for (int index = 0; index < 100; index++) {592 tocData[index].min = toc.toc_data[9 + 8 * index];593 tocData[index].sec = toc.toc_data[10 + 8 * index];594 tocData[index].frame = toc.toc_data[11 + 8 * index];595 }596 numTracks = toc.toc_data[3] - toc.toc_data[2] + 1;597 598 int32 sum1 = 0;599 int32 sum2 = 0;600 for (int index = 0; index < numTracks; index++) {601 sum1 += cddb_sum((tocData[index].min * 60) + tocData[index].sec);602 603 // the following is probably running over too far604 sum2 += (tocData[index + 1].min * 60 + tocData[index + 1].sec) -605 (tocData[index].min * 60 + tocData[index].sec);606 }607 id = ((sum1 % 0xff) << 24) + (sum2 << 8) + numTracks;608 609 return id;610 }611 612 613 bool614 CDAudioDevice::IsDataTrack(const int16 &track)615 {616 scsi_toc toc;617 status_t result = ioctl(fFileHandle, B_SCSI_GET_TOC, &toc);618 619 if (result != B_OK)620 return false;621 622 TrackDescriptor *trackindex = (TrackDescriptor*) &(toc.toc_data[4]);623 if (track > toc.toc_data[3])624 return false;625 626 // At least under R5, the SCSI CD drive has each legitimate audio track627 // have a value of 0x10. Data tracks have a value of 0x14;628 if (trackindex[track].adr_control & 4)629 return true;630 631 return false;632 } -
deleted file src/apps/cdplayer/CDAudioDevice.h
diff --git a/src/apps/cdplayer/CDAudioDevice.h b/src/apps/cdplayer/CDAudioDevice.h deleted file mode 100644 index 14f8d37..0000000
+ - 1 /*2 * Copyright 2006-2007, Haiku, Inc. All Rights Reserved.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm, bpmagic@columbus.rr.com7 */8 #ifndef CDAUDIODEVICE_H9 #define CDAUDIODEVICE_H10 11 #include <List.h>12 #include <String.h>13 #include <SupportDefs.h>14 15 16 // The SCSI table of contents consists of a 4-byte header followed by 100 track17 // descriptors, which are each 8 bytes. We don't really need the first 5 bytes18 // of the track descriptor, so we'll just ignore them. All we really want is the19 // fLength of each track, which happen to be the last 3 bytes of the descriptor.20 typedef struct {21 uint8 reserved;22 uint8 adr_control; // bytes 0-3 are control, 4-7 are ADR23 uint8 track_number;24 uint8 reserved2;25 26 uint8 reserved3;27 uint8 min;28 uint8 sec;29 uint8 frame;30 } TrackDescriptor;31 32 enum CDState {33 kNoCD = 0,34 kStopped,35 kPaused,36 kPlaying,37 kSkipping,38 kError,39 kInit40 };41 42 43 class CDAudioTime {44 public:45 CDAudioTime(const int32 min = -1, const int32 &sec = -1);46 CDAudioTime(const CDAudioTime &from);47 CDAudioTime &operator=(const CDAudioTime &from);48 CDAudioTime operator+(const CDAudioTime &from);49 CDAudioTime operator-(const CDAudioTime &from);50 51 void SetMinutes(const int32& minutes)52 {53 fMinutes = minutes;54 }55 56 void SetSeconds(const int32& seconds)57 {58 fSeconds = seconds;59 }60 61 int32 GetMinutes() const62 {63 return fMinutes;64 }65 66 int32 GetSeconds() const67 {68 return fSeconds;69 }70 71 private:72 int32 fMinutes;73 int32 fSeconds;74 };75 76 77 class CDAudioData {78 public:79 CDAudioData(const int32 &id = -1, const int32 &count = -1,80 const int32 &discLength = -1);81 CDAudioData(const CDAudioData &from);82 CDAudioData &operator=(const CDAudioData &from);83 84 private:85 int32 fDiscId;86 int32 fTrackCount;87 int32 fLength;88 BString fFrameOffsets;89 };90 91 92 class CDAudioDevice {93 public:94 CDAudioDevice();95 ~CDAudioDevice();96 97 bool Play(const int16 &track);98 bool Pause();99 bool Resume();100 bool Stop();101 bool Eject();102 103 bool StartFastFwd();104 bool StopFastFwd();105 106 bool StartRewind();107 bool StopRewind();108 109 bool SetVolume(uint8 value);110 uint8 GetVolume();111 112 CDState GetState();113 114 int16 CountTracks();115 int16 GetTrack();116 117 uint8 CountDrives();118 bool SetDrive(const int32 &drive);119 const char* GetDrivePath() const;120 121 int32 GetDrive() const122 {123 return fDriveIndex;124 }125 126 bool GetTime(CDAudioTime &track, CDAudioTime &disc);127 bool GetTimeForTrack(const int16 &index, CDAudioTime &track);128 bool GetTimeForDisc(CDAudioTime &disc);129 int32 GetDiscID();130 131 bool IsDataTrack(const int16 &track);132 133 private:134 int32 _FindDrives(const char *path);135 136 int fFileHandle;137 BString* fDrivePath;138 BList fDriveList;139 int32 fDriveIndex;140 };141 142 #endif // CDAUDIODEVICE_H -
deleted file src/apps/cdplayer/CDDBSupport.cpp
diff --git a/src/apps/cdplayer/CDDBSupport.cpp b/src/apps/cdplayer/CDDBSupport.cpp deleted file mode 100644 index d108901..0000000
+ - 1 // Copyright 1992-2000, Be Incorporated, All Rights Reserved.2 // This file may be used under the terms of the Be Sample Code License.3 //4 // send comments/suggestions/feedback to pavel@be.com5 //6 7 #include "CDDBSupport.h"8 9 #include <Alert.h>10 #include <Debug.h>11 #include <Directory.h>12 #include <Entry.h>13 #include <File.h>14 #include <FindDirectory.h>15 #include <fs_attr.h>16 #include <fs_index.h>17 #include <NetAddress.h>18 #include <Path.h>19 #include <Query.h>20 #include <UTF8.h>21 #include <Volume.h>22 #include <VolumeRoster.h>23 24 #include <errno.h>25 #include <netdb.h>26 #include <signal.h>27 #include <stdio.h>28 #include <stdlib.h>29 #include <stdlib.h>30 31 32 //#define DEBUG_CDDB33 34 #ifdef DEBUG_CDDB35 #define STRACE(x) printf x36 #else37 #define STRACE(x) /* nothing */38 #endif39 40 const int kTerminatingSignal = SIGINT; // SIGCONT;41 42 // The SCSI table of contents consists of a 4-byte header followed by 100 track43 // descriptors, which are each 8 bytes. We don't really need the first 5 bytes44 // of the track descriptor, so we'll just ignore them. All we really want is the45 // length of each track, which happen to be the last 3 bytes of the descriptor.46 struct TrackRecord {47 int8 unused[5];48 49 int8 min;50 int8 sec;51 int8 frame;52 };53 54 55 static void56 DoNothing(int)57 {58 }59 60 61 static int3262 cddb_sum(int n)63 {64 char buf[12];65 int32 ret = 0;66 67 sprintf(buf, "%u", n);68 for (const char *p = buf; *p != '\0'; p++)69 ret += (*p - '0');70 return ret;71 }72 73 74 BString75 GetLineFromString(const char *string)76 {77 if (!string)78 return NULL;79 80 BString out(string);81 82 int32 lineFeed = out.FindFirst("\n");83 84 if (lineFeed > 0)85 out.Truncate(lineFeed);86 87 return out;88 }89 90 91 // #pragma mark -92 93 94 CDDBData::CDDBData(int32 discId)95 :96 fDiscID(discId),97 fYear(-1)98 {99 }100 101 102 CDDBData::CDDBData(const CDDBData &from)103 :104 fDiscID(from.fDiscID),105 fArtist(from.fArtist),106 fAlbum(from.fAlbum),107 fGenre(from.fGenre),108 fDiscTime(from.fDiscTime),109 fYear(from.fYear)110 {111 STRACE(("CDDBData::Copy Constructor\n"));112 113 for (int32 i = 0; i < from.fTrackList.CountItems(); i++) {114 BString *string = (BString*)from.fTrackList.ItemAt(i);115 CDAudioTime *time = (CDAudioTime*)from.fTimeList.ItemAt(i);116 117 if (!string || !time)118 continue;119 120 AddTrack(string->String(), *time);121 }122 }123 124 125 CDDBData::~CDDBData()126 {127 STRACE(("CDDBData::~CDDBData\n"));128 _EmptyLists();129 }130 131 132 CDDBData &133 CDDBData::operator=(const CDDBData &from)134 {135 _EmptyLists();136 fDiscID = from.fDiscID;137 fArtist = from.fArtist;138 fAlbum = from.fAlbum;139 fGenre = from.fGenre;140 fDiscTime = from.fDiscTime;141 fYear = from.fYear;142 143 for (int32 i = 0; i < from.fTrackList.CountItems(); i++) {144 BString *string = (BString*)from.fTrackList.ItemAt(i);145 CDAudioTime *time = (CDAudioTime*)from.fTimeList.ItemAt(i);146 147 if (!string || !time)148 continue;149 150 AddTrack(string->String(),*time);151 }152 return *this;153 }154 155 156 void157 CDDBData::MakeEmpty()158 {159 STRACE(("CDDBData::MakeEmpty\n"));160 161 _EmptyLists();162 fDiscID = -1;163 fArtist = "";164 fAlbum = "";165 fGenre = "";166 fDiscTime.SetMinutes(-1);167 fDiscTime.SetSeconds(-1);168 fYear = -1;169 }170 171 172 void173 CDDBData::_EmptyLists()174 {175 STRACE(("CDDBData::_EmptyLists\n"));176 177 for (int32 i = 0; i < fTrackList.CountItems(); i++) {178 BString *string = (BString*)fTrackList.ItemAt(i);179 delete string;180 }181 fTrackList.MakeEmpty();182 183 for (int32 j = 0; j < fTimeList.CountItems(); j++) {184 CDAudioTime *time = (CDAudioTime*)fTimeList.ItemAt(j);185 delete time;186 }187 fTimeList.MakeEmpty();188 }189 190 191 status_t192 CDDBData::Load(const entry_ref &ref)193 {194 STRACE(("CDDBData::Load(%s)\n", ref.name));195 196 BFile file(&ref, B_READ_ONLY);197 198 if (file.InitCheck() != B_OK) {199 STRACE(("CDDBData::Load failed\n"));200 return file.InitCheck();201 }202 203 attr_info info;204 205 if (file.GetAttrInfo("Audio:Genre", &info) == B_OK && info.size > 0) {206 char genreData[info.size + 2];207 208 if (file.ReadAttr("Audio:Genre", B_STRING_TYPE, 0, genreData, info.size) > 0)209 fGenre = genreData;210 }211 212 if (file.GetAttrInfo("Audio:Year", &info) == B_OK && info.size > 0) {213 int32 yearData;214 215 if (file.ReadAttr("Audio:Year", B_INT32_TYPE, 0, &yearData, info.size) > 0)216 fYear = yearData;217 }218 219 // TODO: Attempt reading the file before attempting to read the attributes220 if (file.GetAttrInfo("CD:tracks", &info) == B_OK && info.size > 0) {221 char trackData[info.size + 2];222 223 if (file.ReadAttr("CD:tracks", B_STRING_TYPE, 0, trackData, info.size) > 0) {224 trackData[info.size] = 0;225 BString tmp = GetLineFromString(trackData);226 char *index;227 228 if (fTrackList.CountItems() > 0)229 _EmptyLists();230 231 fArtist = tmp;232 fArtist.Truncate(fArtist.FindFirst(" - "));233 STRACE(("CDDBData::Load: Artist set to %s\n", fArtist.String()));234 235 fAlbum = tmp.String() + (tmp.FindFirst(" - ") + 3);236 STRACE(("CDDBData::Load: Album set to %s\n", fAlbum.String()));237 238 index = strchr(trackData, '\n') + 1;239 while (*index) {240 tmp = GetLineFromString(index);241 242 if (tmp.CountChars() > 0) {243 BString *newTrack = new BString(tmp);244 CDAudioTime *time = new CDAudioTime;245 time->SetMinutes(0);246 time->SetSeconds(0);247 248 STRACE(("CDDBData::Load: Adding Track %s (%" B_PRId32 ":%" B_PRId32 ")\n", newTrack->String(),249 time->minutes, time->seconds));250 251 fTrackList.AddItem(newTrack);252 fTimeList.AddItem(time);253 }254 255 index = strchr(index,'\n') + 1;256 }257 258 // We return this so that the caller knows to initialize tracktimes259 return B_NO_INIT;260 }261 }262 263 return B_ERROR;264 }265 266 267 status_t268 CDDBData::Load()269 {270 // This uses the default R5 path271 272 BPath path;273 if (find_directory(B_USER_DIRECTORY, &path, true) != B_OK)274 return B_ERROR;275 276 path.Append("cd");277 create_directory(path.Path(), 0755);278 279 BString filename(path.Path());280 filename << "/" << Artist() << " - " << Album();281 282 if (filename.Compare("Artist") == 0)283 filename << "." << DiscID();284 285 BEntry entry(filename.String());286 if (entry.InitCheck() != B_OK)287 return entry.InitCheck();288 289 entry_ref ref;290 entry.GetRef(&ref);291 292 return Load(ref);293 }294 295 296 status_t297 CDDBData::Save()298 {299 // This uses the default R5 path300 301 BPath path;302 if (find_directory(B_USER_DIRECTORY, &path, true) != B_OK)303 return B_ERROR;304 305 path.Append("cd");306 create_directory(path.Path(), 0755);307 308 BString filename(path.Path());309 filename << "/" << Artist() << " - " << Album();310 311 if (filename.Compare("Artist")==0)312 filename << "." << DiscID();313 314 return Save(filename.String());315 }316 317 318 status_t319 CDDBData::Save(const char *filename)320 {321 if (!filename) {322 STRACE(("CDDBData::Save failed - NULL filename\n"));323 return B_ERROR;324 }325 326 BFile file(filename, B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE);327 if (file.InitCheck() != B_OK) {328 STRACE(("CDDBData::Save failed - couldn't create file %s\n", filename));329 return file.InitCheck();330 }331 332 BString entry;333 char timestring[10];334 335 sprintf(timestring,"%.2" B_PRId32 ":%.2" B_PRId32 "", fDiscTime.GetMinutes(),336 fDiscTime.GetSeconds());337 338 entry << fArtist << " - " << fAlbum << "\t" << timestring << "\n";339 file.Write(entry.String(), entry.Length());340 341 STRACE(("CDDBData::Save: wrote first line: %s", entry.String()));342 343 BString tracksattr(fArtist);344 tracksattr << " - " << fAlbum << "\n";345 346 for (int32 i = 0; i < fTrackList.CountItems(); i++) {347 BString *trackstr = (BString *)fTrackList.ItemAt(i);348 CDAudioTime *time= (CDAudioTime*)fTimeList.ItemAt(i);349 350 if (!trackstr || !time)351 continue;352 353 entry = *trackstr;354 355 sprintf(timestring,"%.2" B_PRId32 ":%.2" B_PRId32 "", time->GetMinutes(),356 time->GetSeconds());357 358 entry << "\t" << timestring << "\n";359 file.Write(entry.String(), entry.Length());360 STRACE(("CDDBData::Save: Wrote line: %s", entry.String()));361 362 tracksattr << *trackstr << "\n";363 }364 365 file.WriteAttr("CD:key", B_INT32_TYPE, 0, &fDiscID, sizeof(int32));366 STRACE(("CDDBData::Save: Wrote CD identifier: %" B_PRId32 "(%" B_PRIx32 ")\n",367 fDiscID, fDiscID));368 file.WriteAttr("CD:tracks", B_STRING_TYPE, 0, tracksattr.String(), tracksattr.Length() + 1);369 370 if (fGenre.CountChars() > 0)371 file.WriteAttr("Audio:Genre",B_STRING_TYPE, 0, fGenre.String(), fGenre.Length() + 1);372 373 if (fYear > 0)374 file.WriteAttr("Audio:Year", B_INT32_TYPE, 0, &fYear, sizeof(int32));375 376 return B_OK;377 }378 379 380 uint16381 CDDBData::CountTracks() const382 {383 return fTrackList.CountItems();384 }385 386 387 bool388 CDDBData::RenameTrack(const int32 &index, const char *newName)389 {390 if (!newName) {391 STRACE(("CDDBData::RenameTrack failed - NULL newName\n"));392 return false;393 }394 395 BString *name = (BString*)fTrackList.ItemAt(index);396 if (name) {397 STRACE(("CDDBData::RenameTrack(%" B_PRId32 ",%s)\n", index, newName));398 name->SetTo(newName);399 return true;400 }401 402 STRACE(("CDDBData::RenameTrack failed - invalid index\n"));403 return false;404 }405 406 407 void408 CDDBData::AddTrack(const char *track, const CDAudioTime &time,409 const int16 &index)410 {411 if (!track) {412 STRACE(("CDDBData::AddTrack failed - NULL name\n"));413 return;414 }415 STRACE(("CDDBData::AddTrack(%s, %" B_PRId32 ":%.2" B_PRId32 ",%d)\n", track,416 time.minutes, time.seconds, index));417 418 fTrackList.AddItem(new BString(track));419 fTimeList.AddItem(new CDAudioTime(time));420 }421 422 423 void424 CDDBData::RemoveTrack(const int16 &index)425 {426 // This breaks the general following of the BList style because427 // removing a track would require returning 2 pointers428 429 fTrackList.RemoveItem(index);430 fTimeList.RemoveItem(index);431 432 STRACE(("CDDBData::RemoveTrack(%d)\n", index));433 }434 435 436 const char *437 CDDBData::TrackAt(const int16 &index) const438 {439 BString *track = (BString*)fTrackList.ItemAt(index);440 if (!track)441 return NULL;442 443 return track->String();444 }445 446 447 CDAudioTime *448 CDDBData::TrackTimeAt(const int16 &index)449 {450 return (CDAudioTime *)fTimeList.ItemAt(index);451 }452 453 454 // #pragma mark -455 456 457 CDDBQuery::CDDBQuery(const char *server, int32 port)458 :459 fServerName(server),460 fPort(port),461 fConnected(false),462 fState(kInitial)463 {464 }465 466 467 CDDBQuery::~CDDBQuery()468 {469 kill_thread(fThread);470 }471 472 473 void474 CDDBQuery::SetToSite(const char *server, int32 port)475 {476 _Disconnect();477 fServerName = server;478 fPort = port;479 fState = kInitial;480 }481 482 483 void484 CDDBQuery::SetToCD(const char *path)485 {486 if (!path)487 return;488 489 // Get the SCSI table of contents from the device passed to us490 int device = open(path, O_RDONLY);491 if (device < 0)492 return;493 494 status_t result = ioctl(device, B_SCSI_GET_TOC, &fSCSIData);495 496 close(device);497 498 if (result != B_OK)499 return;500 501 // Calculate the disc's CDDB ID502 if (fState == kInitial) {503 fCDData.SetDiscID(GetDiscID(&fSCSIData));504 fCDData.SetDiscTime(GetDiscTime(&fSCSIData));505 } else {506 int32 discID = GetDiscID(&fSCSIData);507 508 if (fCDData.DiscID() == discID)509 return;510 511 fCDData.SetDiscID(discID);512 fCDData.SetDiscTime(GetDiscTime(&fSCSIData));513 fFrameOffsetString = OffsetsToString(&fSCSIData);514 }515 516 result = B_OK;517 fState = kReading;518 fThread = spawn_thread(&CDDBQuery::_QueryThread, "CDDBLookup", B_NORMAL_PRIORITY, this);519 520 if (fThread >= 0)521 resume_thread(fThread);522 else {523 fState = kError;524 result = fThread;525 }526 }527 528 529 const char *530 CDDBQuery::_GetToken(const char *stream, BString &result)531 {532 result = "";533 while (*stream && *stream <= ' ')534 stream++;535 while (*stream && *stream > ' ')536 result += *stream++;537 538 return stream;539 }540 541 542 status_t543 CDDBQuery::GetSites(bool (*eachFunc)(const char *site, int port, const char *latitude,544 const char *longitude, const char *description, void *state), void *passThru)545 {546 if (!_IsConnected())547 _Connect();548 549 BString tmp;550 551 tmp = "sites\n";552 STRACE((">%s", tmp.String()));553 554 if (fSocket.Send(tmp.String(), tmp.Length()) == -1)555 return B_ERROR;556 557 _ReadLine(tmp);558 559 if (tmp.FindFirst("210") == -1) {560 _Disconnect();561 return B_ERROR;562 }563 564 for (;;) {565 BString site;566 int32 sitePort;567 BString latitude;568 BString longitude;569 BString description;570 571 _ReadLine(tmp);572 if (tmp == ".")573 break;574 const char *scanner = tmp.String();575 576 scanner = _GetToken(scanner, site);577 BString portString;578 scanner = _GetToken(scanner, portString);579 sitePort = atoi(portString.String());580 scanner = _GetToken(scanner, latitude);581 scanner = _GetToken(scanner, longitude);582 description = scanner;583 584 if (eachFunc(site.String(), sitePort, latitude.String(),585 longitude.String(), description.String(), passThru))586 break;587 }588 _Disconnect();589 return B_OK;590 }591 592 593 bool594 CDDBQuery::GetData(CDDBData *data, bigtime_t timeout)595 {596 if (!data)597 return false;598 599 bigtime_t deadline = system_time() + timeout;600 while (fState == kReading) {601 snooze(50000);602 if (system_time() > deadline)603 break;604 }605 if (fState != kDone)606 return false;607 608 *data = fCDData;609 610 return true;611 }612 613 614 int32615 CDDBQuery::GetDiscID(const scsi_toc *toc)616 {617 // The SCSI TOC data has a 4-byte header and then each track record starts618 TrackRecord *tocData = (TrackRecord*)&(toc->toc_data[4]);619 620 int32 numTracks = toc->toc_data[3] - toc->toc_data[2] + 1;621 622 int32 sum1 = 0;623 int32 sum2 = 0;624 for (int index = 0; index < numTracks; index++) {625 sum1 += cddb_sum((tocData[index].min * 60) + tocData[index].sec);626 627 // the following is probably running over too far628 sum2 += (tocData[index + 1].min * 60 + tocData[index + 1].sec)629 - (tocData[index].min * 60 + tocData[index].sec);630 }631 int32 discID = ((sum1 % 0xff) << 24) + (sum2 << 8) + numTracks;632 633 return discID;634 }635 636 637 BString638 CDDBQuery::OffsetsToString(const scsi_toc *toc)639 {640 TrackRecord *tocData = (TrackRecord*)&(toc->toc_data[4]);641 642 int32 numTracks = toc->toc_data[3] - toc->toc_data[2] + 1;643 644 BString string;645 for (int index = 0; index < numTracks; index++) {646 string << tocData[index].min * 4500 + tocData[index].sec * 75647 + tocData[index].frame << ' ';648 }649 650 return string;651 }652 653 654 int32655 CDDBQuery::GetTrackCount(const scsi_toc *toc)656 {657 return toc->toc_data[3] - toc->toc_data[2] + 1;658 }659 660 661 CDAudioTime662 CDDBQuery::GetDiscTime(const scsi_toc *toc)663 {664 int16 trackcount = toc->toc_data[3] - toc->toc_data[2] + 1;665 TrackRecord *desc = (TrackRecord*)&(toc->toc_data[4]);666 667 CDAudioTime disc;668 disc.SetMinutes(desc[trackcount].min);669 disc.SetSeconds(desc[trackcount].sec);670 671 return disc;672 }673 674 675 void676 CDDBQuery::GetTrackTimes(const scsi_toc *toc, vector<CDAudioTime> ×)677 {678 TrackRecord *tocData = (TrackRecord*)&(toc->toc_data[4]);679 int16 trackCount = toc->toc_data[3] - toc->toc_data[2] + 1;680 681 for (int index = 0; index < trackCount + 1; index++) {682 CDAudioTime cdtime;683 cdtime.SetMinutes(tocData[index].min);684 cdtime.SetSeconds(tocData[index].sec);685 times.push_back(cdtime);686 }687 }688 689 690 status_t691 CDDBQuery::_ReadFromServer(BString &data)692 {693 // This function queries the given CDDB server for the existence of the694 // disc's data and saves the data to file once obtained.695 696 // Query for the existence of the disc in the database697 char idString[10];698 sprintf(idString, "%08" B_PRIx32, fCDData.DiscID());699 BString query;700 701 int32 trackCount = GetTrackCount(&fSCSIData);702 BString offsetString = OffsetsToString(&fSCSIData);703 int32 discLength = (fCDData.DiscTime()->GetMinutes() * 60)704 + fCDData.DiscTime()->GetSeconds();705 706 query << "cddb query " << idString << ' ' << trackCount << ' '707 << offsetString << ' ' << discLength << '\n';708 709 STRACE((">%s", query.String()));710 711 if (fSocket.Send(query.String(), query.Length()) == -1) {712 _Disconnect();713 return B_ERROR;714 }715 716 BString tmp;717 _ReadLine(tmp);718 STRACE(("<%s", tmp.String()));719 720 BString category;721 BString queryDiscID(idString);722 723 if (tmp.FindFirst("200") != 0) {724 if (tmp.FindFirst("211") == 0) {725 // A 211 means that the query was not exact. To make sure that we726 // don't have a problem with this in the future, we will choose the727 // first entry that the server returns. This may or may not be wise,728 // but in my experience, the first one has been the right one.729 730 _ReadLine(tmp);731 732 // Get the category from the what the server returned733 _GetToken(tmp.String(), category);734 735 // Now we will get the disc ID for the CD. We will need this when we736 // query for the track name list. If we send the track name query737 // with the real discID, nothing will be returned. However, if we738 // send the one from the entry, we'll get the names and we can take739 // these names attach them to the disc that we have.740 _GetToken(tmp.String() + category.CountChars(), queryDiscID);741 742 // This is to suck up any more search results that the server sends743 // us.744 BString throwaway;745 _ReadLine(throwaway);746 while (throwaway.ByteAt(0) != '.')747 _ReadLine(throwaway);748 } else {749 // We get here for any time the CDDB server does not recognize the750 // CD, amongst other things751 STRACE(("CDDB lookup error: %s\n", tmp.String()));752 fCDData.SetGenre("misc");753 return B_NAME_NOT_FOUND;754 }755 } else {756 _GetToken(tmp.String() + 3, category);757 }758 STRACE(("CDDBQuery::_ReadFromServer: Genre: %s\n", category.String()));759 if (!category.Length()) {760 STRACE(("Set genre to 'misc'\n"));761 category = "misc";762 }763 764 // Query for the disc's data - artist, album, tracks, etc.765 query = "";766 query << "cddb read " << category << ' ' << queryDiscID << '\n' ;767 if (fSocket.Send(query.String(), query.Length()) == -1) {768 _Disconnect();769 return B_ERROR;770 }771 772 while (true) {773 _ReadLine(tmp);774 775 if (tmp == "." || tmp == ".\n")776 break;777 778 data << tmp << '\n';779 }780 781 return B_OK;782 }783 784 785 status_t786 CDDBQuery::_Connect()787 {788 if (fConnected)789 _Disconnect();790 791 BNetAddress address;792 793 status_t status = address.SetTo(fServerName.String(), fPort);794 if (status != B_OK)795 return status;796 797 status = fSocket.Connect(address);798 if (status != B_OK)799 return status;800 801 fConnected = true;802 803 BString tmp;804 _ReadLine(tmp);805 _IdentifySelf();806 807 return B_OK;808 }809 810 811 bool812 CDDBQuery::_IsConnected() const813 {814 return fConnected;815 }816 817 818 void819 CDDBQuery::_Disconnect()820 {821 if (fConnected) {822 fSocket.Close();823 fConnected = false;824 }825 }826 827 828 void829 CDDBQuery::_ReadLine(BString &buffer)830 {831 buffer = "";832 unsigned char ch;833 834 for (;;) {835 if (fSocket.Receive(&ch, 1) <= 0)836 break;837 838 839 // This function is more work than it should have to be. FreeDB lookups840 // can sometimes be in a non-ASCII encoding, such as Latin-1 or UTF8.841 // The problem lies in Be's implementation of BString, which does not842 // support UTF8 string assignments. The Be Book says we have to flatten843 // the string and adjust the character counts manually. Man, this844 // *really* sucks.845 if (ch > 0x7f) {846 // Obviously non-ASCII character detected. Let's see if it's Latin-1847 // or UTF8.848 unsigned char *string, *stringindex;849 int32 length = buffer.Length();850 851 // The first byte of a UTF8 string will be 110xxxxx852 if ( ((ch & 0xe0) == 0xc0)) {853 // This is UTF8. Get the next byte854 unsigned char ch2;855 if (fSocket.Receive(&ch2, 1) <= 0)856 break;857 858 if ( (ch2 & 0xc0) == 0x80) {859 string = (unsigned char *)buffer.LockBuffer(length + 10);860 stringindex = string + length;861 862 stringindex[0] = ch;863 stringindex[1] = ch2;864 stringindex[2] = 0;865 866 buffer.UnlockBuffer();867 868 // We've added the character, so go to the next iteration869 continue;870 }871 }872 873 // Nope. Just Latin-1. Convert to UTF8 and assign874 char srcstr[2], deststr[5];875 int32 srclen, destlen, state;876 877 srcstr[0] = ch;878 srcstr[1] = '\0';879 srclen = 1;880 destlen = 5;881 memset(deststr, 0, 5);882 883 if (convert_to_utf8(B_ISO1_CONVERSION, srcstr, &srclen, deststr,884 &destlen, &state) == B_OK) {885 // We succeeded. Amazing. Now we hack the string into having the886 // character887 length = buffer.Length();888 889 string = (unsigned char *)buffer.LockBuffer(length + 10);890 stringindex = string + length;891 892 for (int i = 0; i < 5; i++) {893 stringindex[i] = deststr[i];894 if (!deststr[i])895 break;896 }897 898 buffer.UnlockBuffer();899 } else {900 // well, we tried. Append the character to the string and live901 // with it902 buffer += ch;903 }904 } else905 buffer += ch;906 907 if (ch == '\n')908 break;909 }910 911 buffer.RemoveAll("\r");912 STRACE(("<%s", buffer.String()));913 }914 915 916 status_t917 CDDBQuery::_IdentifySelf()918 {919 BString username, hostname;920 921 username = getenv("USER");922 hostname = getenv("HOSTNAME");923 924 if (username.Length() < 1)925 username = "baron";926 927 if (hostname.Length() < 1)928 hostname = "haiku";929 930 BString tmp;931 tmp << "cddb hello " << username << " " << hostname932 << " HaikuCDPlayer 1.0\n";933 934 STRACE((">%s", tmp.String()));935 if (fSocket.Send(tmp.String(), tmp.Length())==-1) {936 _Disconnect();937 return B_ERROR;938 }939 940 _ReadLine(tmp);941 942 return B_OK;943 }944 945 946 status_t947 CDDBQuery::_OpenContentFile(const int32 &discID)948 {949 // Makes sure that the lookup has a valid file to work with for the CD950 // content. Returns true if there is an existing file, false if a lookup is951 // required.952 953 BFile file;954 BString predicate;955 predicate << "CD:key == " << discID;956 entry_ref ref;957 958 BVolumeRoster roster;959 BVolume volume;960 roster.Rewind();961 while (roster.GetNextVolume(&volume) == B_OK) {962 if (volume.IsReadOnly() || !volume.IsPersistent() || !volume.KnowsAttr()963 || !volume.KnowsQuery())964 continue;965 966 // make sure the volume we are looking at is indexed right967 fs_create_index(volume.Device(), "CD:key", B_INT32_TYPE, 0);968 969 BQuery query;970 query.SetVolume(&volume);971 query.SetPredicate(predicate.String());972 if (query.Fetch() != B_OK)973 continue;974 975 if (query.GetNextRef(&ref) == B_OK)976 break;977 }978 979 status_t status = fCDData.Load(ref);980 if (status == B_NO_INIT) {981 // We receive this error when the Load() function couldn't load the982 // track times This just means that we get it from the SCSI data given983 // to us in SetToCD984 vector<CDAudioTime> times;985 GetTrackTimes(&fSCSIData,times);986 987 for (int32 i = 0; i < fCDData.CountTracks(); i++) {988 CDAudioTime *item = fCDData.TrackTimeAt(i);989 *item = times[i + 1] - times[i];990 }991 992 status = B_OK;993 }994 995 return status;996 }997 998 999 int321000 CDDBQuery::_QueryThread(void *owner)1001 {1002 CDDBQuery *query = (CDDBQuery *)owner;1003 1004 signal(kTerminatingSignal, DoNothing);1005 1006 if (query->_OpenContentFile(query->fCDData.DiscID()) != B_OK) {1007 // new content file, read it in from the server1008 if (query->_Connect() == B_OK) {1009 BString data;1010 1011 query->_ReadFromServer(data);1012 query->_ParseData(data);1013 query->_WriteFile();1014 } else {1015 // We apparently couldn't connect to the server, so we'll need to1016 // handle creating tracknames. Note that we do not save to disk.1017 // This is because it should be up to the user what to do.1018 query->_SetDefaultInfo();1019 }1020 }1021 1022 query->fState = kDone;1023 query->fThread = -1;1024 query->fResult = B_OK;1025 1026 return 0;1027 }1028 1029 1030 void1031 CDDBQuery::_WriteFile()1032 {1033 BPath path;1034 if (find_directory(B_USER_DIRECTORY, &path, true) != B_OK)1035 return;1036 1037 path.Append("cd");1038 create_directory(path.Path(), 0755);1039 1040 BString filename(path.Path());1041 filename << "/" << fCDData.Artist() << " - " << fCDData.Album();1042 1043 if (filename.Compare("Artist") == 0)1044 filename << "." << fCDData.DiscID();1045 1046 fCDData.Save(filename.String());1047 }1048 1049 1050 void1051 CDDBQuery::_SetDefaultInfo()1052 {1053 for (int16 i = fCDData.CountTracks(); i >= 0; i--)1054 fCDData.RemoveTrack(i);1055 1056 vector<CDAudioTime> trackTimes;1057 GetTrackTimes(&fSCSIData, trackTimes);1058 int32 trackCount = GetTrackCount(&fSCSIData);1059 1060 fCDData.SetArtist("Artist");1061 fCDData.SetAlbum("Audio CD");1062 fCDData.SetGenre("Misc");1063 1064 for (int32 i = 0; i < trackCount; i++) {1065 BString trackname("Track ");1066 1067 if (i < 9)1068 trackname << "0";1069 1070 trackname << i + 1;1071 1072 CDAudioTime time = trackTimes[i + 1] - trackTimes[i];1073 fCDData.AddTrack(trackname.String(), time);1074 }1075 }1076 1077 1078 void1079 CDDBQuery::_ParseData(const BString &data)1080 {1081 // Can't simply call MakeEmpty() because the thread is spawned when the1082 // discID kept in fCDData is not the same as what's in the drive and1083 // MakeEmpty invalidates *everything* in the object. Considering that we1084 // reassign everything here, simply emptying the track list should be sufficient1085 for (int16 i = fCDData.CountTracks(); i >= 0; i--)1086 fCDData.RemoveTrack(i);1087 1088 vector<CDAudioTime> trackTimes;1089 GetTrackTimes(&fSCSIData,trackTimes);1090 int32 trackCount = GetTrackCount(&fSCSIData);1091 1092 if (data.CountChars() < 1) {1093 // This case occurs when the CDDB lookup fails. On these occasions, we1094 // need to generate the file ourselves. This is actually pretty easy.1095 fCDData.SetArtist("Artist");1096 fCDData.SetAlbum("Audio CD");1097 fCDData.SetGenre("Misc");1098 1099 for (int32 i = 0; i < trackCount; i++) {1100 BString trackname("Track ");1101 1102 if (i < 9)1103 trackname << "0";1104 1105 trackname << i + 1;1106 1107 CDAudioTime time = trackTimes[i + 1] - trackTimes[i];1108 fCDData.AddTrack(trackname.String(), time);1109 }1110 }1111 1112 // TODO: This function is dog slow, but it works. Optimize.1113 1114 // Ideally, the search should be done sequentially using GetLineFromString()1115 // and strchr(). Order: genre(category), frame offsets, disc length,1116 // artist/album, track titles1117 1118 int32 pos;1119 1120 pos = data.FindFirst("DYEAR=");1121 if (pos > 0) {1122 BString artist,album;1123 artist = album = GetLineFromString(data.String() + sizeof("DYEAR")1124 + pos);1125 1126 // TODO: finish, once I find an entry which actually has a year in it1127 BAlert *alert = new BAlert("SimplyVorbis", "DYEAR entry found\n", "OK");1128 alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);1129 alert->Go();1130 1131 }1132 1133 pos = data.FindFirst("DTITLE=");1134 if (pos > 0) {1135 BString artist,album;1136 artist = album = GetLineFromString(data.String() + sizeof("DTITLE")1137 + pos);1138 1139 pos = artist.FindFirst(" / ");1140 if (pos > 0)1141 artist.Truncate(pos);1142 fCDData.SetArtist(artist.String());1143 1144 album = album.String() + pos + sizeof(" / ") - 1;1145 fCDData.SetAlbum(album.String());1146 }1147 1148 BString category = GetLineFromString(data.String() + 4);1149 pos = category.FindFirst(" ");1150 if (pos > 0)1151 category.Truncate(pos);1152 fCDData.SetGenre(category.String());1153 1154 pos = data.FindFirst("TTITLE0=");1155 if (pos > 0) {1156 int32 trackCount = 0;1157 BString searchString = "TTITLE0=";1158 1159 while (pos > 0) {1160 BString trackName = data.String() + pos + searchString.Length();1161 trackName.Truncate(trackName.FindFirst("\n"));1162 1163 CDAudioTime tracktime = trackTimes[trackCount + 1]1164 - trackTimes[trackCount];1165 fCDData.AddTrack(trackName.String(),tracktime);1166 1167 trackCount++;1168 searchString = "TTITLE";1169 searchString << trackCount << "=";1170 pos = data.FindFirst(searchString.String(),pos);1171 }1172 }1173 }1174 1175 1176 void CDDBQuery::SetData(const CDDBData &data)1177 {1178 fCDData = data;1179 } -
deleted file src/apps/cdplayer/CDDBSupport.h
diff --git a/src/apps/cdplayer/CDDBSupport.h b/src/apps/cdplayer/CDDBSupport.h deleted file mode 100644 index df3c724..0000000
+ - 1 #ifndef CDDBSUPPORT_H2 #define CDDBSUPPORT_H3 4 #include "CDAudioDevice.h"5 6 #include <Entry.h>7 #include <List.h>8 #include <NetEndpoint.h>9 #include <String.h>10 11 #include <scsi.h>12 #include <vector>13 14 using std::vector;15 16 17 class CDDBData {18 public:19 CDDBData(int32 discid = -1);20 CDDBData(const CDDBData &from);21 ~CDDBData();22 CDDBData& operator=(const CDDBData &from);23 24 status_t Load(const entry_ref &ref);25 status_t Save(const char *filename);26 27 status_t Load();28 status_t Save();29 30 void MakeEmpty();31 32 void SetDiscID(const int32 &id)33 {34 fDiscID = id;35 }36 37 int32 DiscID() const38 {39 return fDiscID;40 }41 42 uint16 CountTracks() const;43 const char* TrackAt(const int16 &index) const;44 bool RenameTrack(const int32 &index, const char *newname);45 void AddTrack(const char *track, const CDAudioTime &time,46 const int16 &index=-1);47 void RemoveTrack(const int16 &index);48 49 CDAudioTime* TrackTimeAt(const int16 &index);50 51 void SetDiscTime(const CDAudioTime time)52 {53 fDiscTime = time;54 }55 56 CDAudioTime* DiscTime()57 {58 return &fDiscTime;59 }60 61 void SetGenre(const char *genre)62 {63 fGenre=genre;64 }65 66 const char* Genre()67 {68 return fGenre.String();69 }70 71 void SetArtist(const char *artist)72 {73 fArtist = artist;74 }75 76 const char* Artist() const77 {78 return fArtist.String();79 }80 81 void SetAlbum(const char *album)82 {83 fAlbum = album;84 }85 86 const char* Album() const87 {88 return fAlbum.String();89 }90 91 void SetYear(const int16 &year)92 {93 fYear = year;94 }95 96 int16 Year() const97 {98 return fYear;99 }100 101 private:102 void _EmptyLists();103 104 int32 fDiscID;105 106 BString fArtist;107 BString fAlbum;108 BString fGenre;109 110 BList fTrackList;111 BList fTimeList;112 113 CDAudioTime fDiscTime;114 int32 fYear;115 };116 117 118 // based on Jukebox by Chip Paul119 120 121 class CDDBQuery {122 public:123 CDDBQuery(const char *server, int32 port = 888);124 ~CDDBQuery();125 void SetToSite(const char *server, int32 port);126 status_t GetSites(bool (*)(const char *site, int port,127 const char *latitude, const char *longitude,128 const char *description, void *state), void *);129 130 void SetToCD(const char *devicepath);131 132 const char* GetArtist()133 {134 return fCDData.Artist();135 }136 137 const char* GetAlbum()138 {139 return fCDData.Album();140 }141 142 const char* GetGenre()143 {144 return fCDData.Genre();145 }146 147 bool GetData(CDDBData *data, bigtime_t timeout);148 void SetData(const CDDBData &data);149 150 bool Ready() const151 {152 return fState == kDone;153 }154 155 int32 CurrentDiscID() const156 {157 return fCDData.DiscID();158 }159 160 static int32 GetDiscID(const scsi_toc *);161 static int32 GetTrackCount(const scsi_toc *);162 static CDAudioTime GetDiscTime(const scsi_toc *);163 static void GetTrackTimes(const scsi_toc *, vector<CDAudioTime> ×);164 static BString OffsetsToString(const scsi_toc *);165 166 private:167 status_t _Connect();168 void _Disconnect();169 bool _IsConnected() const;170 171 static int32 _QueryThread(void *);172 173 // cached retrieved data174 enum State {175 kInitial,176 kReading,177 kDone,178 kInterrupting,179 kError180 };181 182 void _SetDefaultInfo();183 status_t _OpenContentFile(const int32 &discID);184 185 status_t _ReadFromServer(BString &data);186 void _ParseData(const BString &data);187 void _WriteFile();188 189 void _ReadLine(BString &);190 status_t _IdentifySelf();191 192 const char* _GetToken(const char*, BString &);193 194 // state data195 BString fServerName;196 BNetEndpoint fSocket;197 int32 fPort;198 bool fConnected;199 200 thread_id fThread;201 State fState;202 status_t fResult;203 204 // disc information205 CDDBData fCDData;206 BString fFrameOffsetString;207 scsi_toc fSCSIData;208 };209 210 BString GetLineFromString(const char *string);211 212 #endif // CDDBSUPPORT_H -
deleted file src/apps/cdplayer/CDPlayer.cpp
diff --git a/src/apps/cdplayer/CDPlayer.cpp b/src/apps/cdplayer/CDPlayer.cpp deleted file mode 100644 index b4304b3..0000000
+ - 1 /*2 * Copyright 2006-2009, Haiku, Inc. All Rights Reserved.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm, bpmagic@columbus.rr.com7 */8 9 10 #include "ButtonBitmaps.h"11 #include "CDPlayer.h"12 #include "DrawButton.h"13 #include "DoubleShotDrawButton.h"14 #include "TwoStateDrawButton.h"15 16 #include <Alert.h>17 #include <Application.h>18 #include <Bitmap.h>19 #include <BitmapStream.h>20 #include <Box.h>21 #include <Button.h>22 #include <Catalog.h>23 #include <Debug.h>24 #include <Deskbar.h>25 #include <Dragger.h>26 #include <Entry.h>27 #include <MenuItem.h>28 #include <PopUpMenu.h>29 #include <Roster.h>30 #include <TranslatorFormats.h>31 #include <TranslatorRoster.h>32 #include <TranslationUtils.h>33 #include <Window.h>34 35 #include <stdlib.h>36 #include <string.h>37 38 #undef B_TRANSLATION_CONTEXT39 #define B_TRANSLATION_CONTEXT "CDPlayer"40 41 enum {42 M_STOP = 'mstp',43 M_PLAY,44 M_NEXT_TRACK,45 M_PREV_TRACK,46 M_FFWD,47 M_REWIND,48 M_EJECT,49 M_SAVE,50 M_SHUFFLE,51 M_REPEAT,52 M_SET_VOLUME,53 M_SET_CD_TITLE54 };55 56 57 class CDPlayerWindow : public BWindow {58 public:59 CDPlayerWindow();60 bool QuitRequested();61 };62 63 64 inline void65 SetLabel(BStringView *label, const char *text)66 {67 if (strcmp(label->Text(), text) != 0)68 label->SetText(text);69 }70 71 72 // #pragma mark -73 74 75 CDPlayer::CDPlayer(BRect frame, const char *name, uint32 resizeMask,76 uint32 flags)77 : BView(frame, name, resizeMask, flags | B_FRAME_EVENTS),78 fCDQuery("freedb.freedb.org")79 {80 SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));81 82 fVolume = 255;83 84 BuildGUI();85 86 if (fCDDrive.CountDrives() < 1) {87 BAlert *alert = new BAlert("CDPlayer", B_TRANSLATE(88 "It appears that there are no CD"89 " drives on your computer or there is no system software to "90 "support one. Sorry."), B_TRANSLATE("OK"));91 alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);92 alert->Go();93 }94 95 fWindowState = fCDDrive.GetState();96 fVolumeSlider->SetValue(fCDDrive.GetVolume());97 if (fVolumeSlider->Value() <= 2) {98 fCDDrive.SetVolume(255);99 fVolumeSlider->SetValue(255);100 }101 _WatchCDState();102 }103 104 105 CDPlayer::~CDPlayer()106 {107 fCDDrive.Stop();108 }109 110 111 bool112 CDPlayer::InitCheck()113 {114 return fCDDrive.CountDrives() > 0;115 }116 117 118 void119 CDPlayer::BuildGUI()120 {121 fStopColor.red = 80;122 fStopColor.green = 164;123 fStopColor.blue = 80;124 fStopColor.alpha = 255;125 126 fPlayColor.red = 40;127 fPlayColor.green = 230;128 fPlayColor.blue = 40;129 fPlayColor.alpha = 255;130 131 BRect r(Bounds().InsetByCopy(10, 10));132 BBox *box = new BBox(r, "", B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);133 AddChild(box);134 135 r = box->Bounds().InsetByCopy(10, 10);136 r.bottom = 25;137 138 float labelWidth, labelHeight;139 fCDTitle = new BStringView(r, "CDTitle", B_TRANSLATE("CD drive is empty"),140 B_FOLLOW_LEFT_RIGHT);141 fCDTitle->GetPreferredSize(&labelWidth, &labelHeight);142 fCDTitle->ResizeTo(r.Width(), labelHeight);143 box->AddChild(fCDTitle);144 145 r.bottom = r.top + labelHeight;146 r.OffsetBy(0, r.Height() + 5);147 148 fCurrentTrack = new BStringView(r, "TrackNumber",149 "", B_FOLLOW_LEFT_RIGHT);150 box->AddChild(fCurrentTrack);151 152 r.OffsetBy(0, r.Height() + 5);153 r.right = r.left + (r.Width() / 2);154 fTrackTime = new BStringView(r, "TrackTime",155 B_TRANSLATE("Track: 88:88 / 88:88"), B_FOLLOW_LEFT_RIGHT);156 fTrackTime->ResizeToPreferred();157 fTrackTime->SetText(B_TRANSLATE("Track: --:-- / --:--"));158 box->AddChild(fTrackTime);159 160 r.OffsetTo(fTrackTime->Frame().right + 5, r.top);161 fDiscTime = new BStringView(r, "DiscTime",162 B_TRANSLATE("Disc: 88:88 / 88:88"), B_FOLLOW_RIGHT);163 fDiscTime->ResizeToPreferred();164 fDiscTime->SetText(B_TRANSLATE("Disc: --:-- / --:--"));165 box->AddChild(fDiscTime);166 167 float maxWidth = max_c(fDiscTime->Frame().right, fCDTitle->Frame().right);168 169 box->ResizeTo(maxWidth + 5, fDiscTime->Frame().bottom + 10);170 171 fStop = new DrawButton(BRect(0, 0, 1, 1), "Stop",172 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "stop_up"),173 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "stop_down"),174 new BMessage(M_STOP), B_FOLLOW_BOTTOM, B_WILL_DRAW);175 fStop->ResizeToPreferred();176 fStop->MoveTo(10, box->Frame().bottom + 15);177 fStop->SetDisabled(BTranslationUtils::GetBitmap(B_PNG_FORMAT,178 "stop_disabled"));179 AddChild(fStop);180 float stopTop = fStop->Frame().top;181 182 183 fPlay = new TwoStateDrawButton(BRect(0, 0, 1, 1), "Play",184 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "play_up"),185 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "play_down"),186 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "play_up_on"),187 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "play_down"),188 new BMessage(M_PLAY), B_FOLLOW_NONE, B_WILL_DRAW);189 190 fPlay->ResizeToPreferred();191 fPlay->MoveTo(fStop->Frame().right + 2, stopTop);192 AddChild(fPlay);193 194 fPrevTrack = new DrawButton(BRect(0, 0, 1, 1), "PrevTrack",195 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "prev_up"),196 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "prev_down"),197 new BMessage(M_PREV_TRACK), 0, B_WILL_DRAW);198 fPrevTrack->ResizeToPreferred();199 fPrevTrack->MoveTo(fPlay->Frame().right + 40, stopTop);200 AddChild(fPrevTrack);201 202 fNextTrack = new DrawButton(BRect(0, 0, 1, 1), "NextTrack",203 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "next_up"),204 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "next_down"),205 new BMessage(M_NEXT_TRACK), 0, B_WILL_DRAW);206 fNextTrack->ResizeToPreferred();207 fNextTrack->MoveTo(fPrevTrack->Frame().right + 1, stopTop);208 AddChild(fNextTrack);209 210 fRewind = new DoubleShotDrawButton(BRect(0, 0, 1, 1), "Rewind",211 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "rew_up"),212 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "rew_down"),213 new BMessage(M_REWIND), 0, B_WILL_DRAW);214 fRewind->ResizeToPreferred();215 fRewind->MoveTo(fNextTrack->Frame().right + 40, stopTop);216 AddChild(fRewind);217 218 fFastFwd = new DoubleShotDrawButton(BRect(0, 0, 1, 1), "FastFwd",219 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "ffwd_up"),220 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "ffwd_down"),221 new BMessage(M_FFWD), 0, B_WILL_DRAW);222 fFastFwd->ResizeToPreferred();223 fFastFwd->MoveTo(fRewind->Frame().right + 1, stopTop);224 AddChild(fFastFwd);225 226 r.left = 10;227 r.right = fPlay->Frame().right;228 r.top = fStop->Frame().bottom + 14;229 r.bottom = r.top + 14;230 fVolumeSlider = new VolumeSlider(r, "VolumeSlider",231 0, 255, new BMessage(M_SET_VOLUME), this);232 AddChild(fVolumeSlider);233 234 fRepeat = new TwoStateDrawButton(BRect(0, 0, 1, 1), "Repeat",235 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "repeat_up_off"),236 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "repeat_down"),237 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "repeat_up_on"),238 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "repeat_down"),239 new BMessage(M_REPEAT), B_FOLLOW_NONE, B_WILL_DRAW);240 fRepeat->ResizeToPreferred();241 fRepeat->MoveTo(fPrevTrack->Frame().left, fVolumeSlider->Frame().top -242 ((fRepeat->Frame().Height() - fVolumeSlider->Frame().Height()) / 2));243 AddChild(fRepeat);244 245 fShuffle = new TwoStateDrawButton(BRect(0, 0, 1, 1), "Shuffle",246 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "shuffle_up_off"),247 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "shuffle_down"),248 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "shuffle_up_on"),249 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "shuffle_down"),250 new BMessage(M_SHUFFLE), B_FOLLOW_NONE, B_WILL_DRAW);251 fShuffle->ResizeToPreferred();252 fShuffle->MoveTo(fRepeat->Frame().right + 2, fRepeat->Frame().top);253 AddChild(fShuffle);254 255 fEject = new DrawButton(BRect(0, 0, 1, 1), "Eject",256 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "eject_up"),257 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "eject_down"),258 new BMessage(M_EJECT), 0, B_WILL_DRAW);259 fEject->ResizeToPreferred();260 fEject->MoveTo(fFastFwd->Frame().left, fShuffle->Frame().top);261 AddChild(fEject);262 263 ResizeTo(box->Frame().right + 10, fVolumeSlider->Frame().bottom + 10);264 }265 266 267 void268 CDPlayer::MessageReceived(BMessage *msg)269 {270 switch (msg->what) {271 case M_SET_VOLUME:272 fCDDrive.SetVolume(fVolumeSlider->Value());273 break;274 275 case M_STOP:276 if (fWindowState == kPaused) {277 fPlay->SetBitmaps(0, BTranslationUtils::GetBitmap(B_PNG_FORMAT,278 "play_up"),279 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "play_down"));280 fPlay->SetState(1);281 }282 fWindowState = kStopped;283 fCDDrive.Stop();284 break;285 286 case M_PLAY:287 // If we are currently playing, then we will be showing288 // the pause images and will want to switch back to the play images289 if (fWindowState == kPlaying) {290 fWindowState = kPaused;291 fCDDrive.Pause();292 fPlay->SetBitmaps(0, BTranslationUtils::GetBitmap(B_PNG_FORMAT,293 "paused_up"),294 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "play_down"));295 } else if (fWindowState == kPaused) {296 fWindowState = kPlaying;297 fCDDrive.Resume();298 fPlay->SetBitmaps(0, BTranslationUtils::GetBitmap(B_PNG_FORMAT,299 "play_up"),300 BTranslationUtils::GetBitmap(B_PNG_FORMAT, "play_down"));301 } else {302 fWindowState = kPlaying;303 fCDDrive.Play(fPlayList.GetCurrentTrack());304 }305 break;306 307 case M_EJECT:308 fCDDrive.Eject();309 break;310 311 case M_NEXT_TRACK:312 {313 int16 next = fPlayList.GetNextTrack();314 if (next <= 0) {315 // force a "wrap around" when possible. This makes it316 // possible for the user to be able to, for example, jump317 // back to the first track from the last one with 1 button push318 next = fPlayList.GetFirstTrack();319 }320 321 if (next > 0) {322 CDState state = fCDDrive.GetState();323 if (state == kPlaying) {324 while (!fCDDrive.Play(next)) {325 next = fPlayList.GetNextTrack();326 if (next < 1) {327 fWindowState = kStopped;328 fCDDrive.Stop();329 fPlayList.Rewind();330 break;331 }332 }333 }334 else if (state == kPaused) {335 fCDDrive.Play(next);336 fCDDrive.Pause();337 }338 else339 fPlayList.SetCurrentTrack(next);340 341 // Force an update for better responsiveness342 _WatchCDState();343 }344 break;345 }346 347 case M_PREV_TRACK:348 {349 int16 prev = fPlayList.GetPreviousTrack();350 if (prev <= 0) {351 // force a "wrap around" when possible. This makes it352 // possible for the user to be able to, for example, jump353 // back to the first track from the last one with 1 button push354 prev = fPlayList.GetLastTrack();355 }356 357 if (prev > 0) {358 CDState state = fCDDrive.GetState();359 if (state == kPlaying) {360 while (!fCDDrive.Play(prev)) {361 prev = fPlayList.GetPreviousTrack();362 if (prev < 1) {363 fWindowState = kStopped;364 fCDDrive.Stop();365 fPlayList.Rewind();366 break;367 }368 }369 } else if (state == kPaused) {370 fCDDrive.Play(prev);371 fCDDrive.Pause();372 } else373 fPlayList.SetCurrentTrack(prev);374 375 // Force an update for better responsiveness376 _WatchCDState();377 }378 break;379 }380 381 case M_FFWD:382 if (fFastFwd->Value() == B_CONTROL_ON)383 fCDDrive.StartFastFwd();384 else385 fCDDrive.StopFastFwd();386 break;387 388 case M_REWIND:389 if (fRewind->Value() == B_CONTROL_ON)390 fCDDrive.StartRewind();391 else392 fCDDrive.StopRewind();393 break;394 395 case M_SHUFFLE:396 if (fPlayList.IsShuffled()) {397 int16 track = fPlayList.GetCurrentTrack();398 fPlayList.SetShuffle(false);399 fPlayList.SetStartingTrack(track);400 fPlayList.SetTrackCount(fCDDrive.CountTracks());401 fShuffle->SetState(0);402 } else {403 fPlayList.SetTrackCount(fCDDrive.CountTracks());404 fPlayList.SetShuffle(true);405 fShuffle->SetState(1);406 }407 break;408 409 case M_REPEAT:410 if (fPlayList.IsLoop()) {411 fPlayList.SetLoop(false);412 fRepeat->SetState(0);413 } else {414 fPlayList.SetLoop(true);415 fRepeat->SetState(1);416 }417 break;418 419 default:420 BView::MessageReceived(msg);421 break;422 423 }424 }425 426 427 void428 CDPlayer::AttachedToWindow()429 {430 fStop->SetTarget(this);431 fPlay->SetTarget(this);432 fNextTrack->SetTarget(this);433 fPrevTrack->SetTarget(this);434 fFastFwd->SetTarget(this);435 fRewind->SetTarget(this);436 fEject->SetTarget(this);437 fShuffle->SetTarget(this);438 fRepeat->SetTarget(this);439 }440 441 442 void443 CDPlayer::Pulse()444 {445 _WatchCDState();446 }447 448 449 void450 CDPlayer::_WatchCDState()451 {452 // One watcher function to rule them all453 454 // first, watch the one setting independent of having a CD: volume455 uint8 driveVolume = fCDDrive.GetVolume();456 if (fVolume == driveVolume) {457 fVolume = driveVolume;458 fVolumeSlider->SetValue(fVolume);459 }460 461 // Second, establish whether or not we have a CD in the drive462 CDState playState = fCDDrive.GetState();463 bool internalTrackChange = false;464 465 if (playState == kNoCD) {466 // Yes, we have no bananas!467 468 // Do something only if there is a change in the app's play state469 if (fWindowState != kNoCD) {470 // We have just discovered that we have no bananas471 fWindowState = kNoCD;472 473 // Because we are changing play states, we will need to update474 // the GUI475 fCDData.SetDiscID(-1);476 SetLabel(fCDTitle, B_TRANSLATE("CD drive is empty"));477 478 SetLabel(fCurrentTrack, "");479 SetLabel(fTrackTime, B_TRANSLATE("Track: --:-- / --:--"));480 SetLabel(fDiscTime, B_TRANSLATE("Disc: --:-- / --:--"));481 fPlayList.SetTrackCount(0);482 fPlayList.SetStartingTrack(1);483 fPlayList.SetCurrentTrack(1);484 485 if (fPlay->GetState() == 1)486 fPlay->SetState(0);487 }488 489 return;490 }491 492 // Now otherwise handle the play state493 if (playState == kStopped) {494 if (fWindowState == kPlaying) {495 internalTrackChange = true;496 497 // This means that the drive finished playing the song, so get498 // the next one from the list and play it499 int16 next = fPlayList.GetNextTrack();500 if (next > 0)501 fCDDrive.Play(next);502 }503 504 if (fPlay->GetState() == 1)505 fPlay->SetState(0);506 } else if (playState == kPlaying) {507 if (fPlay->GetState() == 0)508 fPlay->SetState(1);509 } else if (playState == kPaused)510 fPlay->SetState(0);511 512 // If we got this far, then there must be a CD in the drive. The next order513 // on the agenda is to find out which CD it is514 int32 discId = fCDDrive.GetDiscID();515 bool updateTrackGui = false;516 517 if (discId != fCDData.DiscID()) {518 updateTrackGui = true;519 520 // Apparently the disc has changed since we last looked.521 if (fCDQuery.CurrentDiscID() != discId)522 fCDQuery.SetToCD(fCDDrive.GetDrivePath());523 524 if (fCDQuery.Ready()) {525 // Note that we only update the CD title for now. We still need a526 // track number in order to update the display for the selected track527 if (fCDQuery.GetData(&fCDData, 1000000)) {528 BString display(fCDData.Artist());529 display << " - " << fCDData.Album();530 SetLabel(fCDTitle, display.String());531 } else532 SetLabel(fCDTitle, B_TRANSLATE("Audio CD"));533 }534 }535 536 // Now that we know which CD it is, update the track info537 int16 driveCount = fCDDrive.CountTracks();538 int16 driveTrack = fCDDrive.GetTrack();539 540 int16 playlistTrack = fPlayList.GetCurrentTrack();541 int16 playlistCount = fPlayList.TrackCount();542 543 if (playState == kPlaying) {544 if (playlistTrack != driveTrack) {545 playlistTrack = driveTrack;546 547 if (!internalTrackChange) {548 // The main thing is that we need to make sure that the549 // playlist and the drive's track stay in sync. The CD's550 // track may have been changed by an outside source, so if551 // the drive is playing, check for playlist sync.552 fPlayList.SetTrackCount(driveCount);553 fPlayList.SetCurrentTrack(driveTrack);554 }555 }556 updateTrackGui = true;557 } else {558 if (playlistCount != driveCount) {559 // This happens only when CDs are changed560 if (driveCount < 0) {561 // There is no CD in the drive. The playlist needs to have its562 // track count set to 0 and it also needs to be rewound.563 fPlayList.SetStartingTrack(1);564 fPlayList.SetTrackCount(0);565 playlistTrack = 1;566 playlistCount = 0;567 } else {568 // Two possible cases here: playlist is empty or playlist has a569 // different number of tracks. In either case, the playlist570 // needs to be reinitialized to the current track data571 fPlayList.SetStartingTrack(1);572 fPlayList.SetTrackCount(driveCount);573 playlistTrack = fPlayList.GetCurrentTrack();574 playlistCount = driveCount;575 }576 } else {577 // update only with a track change578 if (playlistTrack != driveTrack)579 updateTrackGui = true;580 }581 }582 583 if (updateTrackGui) {584 BString currentTrackName(B_TRANSLATE("Track %whichTrack%: %trackAt%"));585 586 if (playlistTrack >= 0) {587 int16 whichTrack = playlistTrack;588 589 if (whichTrack == 0)590 whichTrack++;591 592 BString stringTrack;593 stringTrack << whichTrack;594 595 BString stringTrackAt;596 stringTrack << fCDData.TrackAt(whichTrack - 1);597 598 currentTrackName.ReplaceFirst("%whichTrack%", stringTrack);599 currentTrackName.ReplaceFirst("%trackAt%", stringTrackAt);600 601 SetLabel(fCurrentTrack, currentTrackName.String());602 603 } else604 SetLabel(fCurrentTrack, "");605 }606 607 // Now update the time info608 CDAudioTime trackTime;609 CDAudioTime discTime;610 CDAudioTime trackTotal;611 CDAudioTime discTotal;612 char timeString[1024];613 614 if (fCDDrive.GetTime(trackTime, discTime)) {615 fCDDrive.GetTimeForDisc(discTotal);616 sprintf(timeString, B_TRANSLATE("Disc: %ld:%.2ld / %ld:%.2ld"),617 discTime.GetMinutes(), discTime.GetSeconds(),618 discTotal.GetMinutes(), discTotal.GetSeconds());619 SetLabel(fDiscTime, timeString);620 621 fCDDrive.GetTimeForTrack(playlistTrack, trackTotal);622 sprintf(timeString, B_TRANSLATE("Track: %ld:%.2ld / %ld:%.2ld"),623 trackTime.GetMinutes(), trackTime.GetSeconds(),624 trackTotal.GetMinutes(), trackTotal.GetSeconds());625 SetLabel(fTrackTime, timeString);626 } else {627 SetLabel(fTrackTime, B_TRANSLATE("Track: --:-- / --:--"));628 SetLabel(fDiscTime, B_TRANSLATE("Disc: --:-- / --:--"));629 }630 }631 632 633 // #pragma mark -634 635 636 CDPlayerWindow::CDPlayerWindow()637 :638 BWindow(BRect (100, 100, 405, 280), B_TRANSLATE_SYSTEM_NAME("CDPlayer"),639 B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE640 | B_ASYNCHRONOUS_CONTROLS)641 {642 }643 644 645 bool646 CDPlayerWindow::QuitRequested()647 {648 be_app->PostMessage(B_QUIT_REQUESTED);649 return true;650 }651 652 653 // #pragma mark -654 655 656 CDPlayerApplication::CDPlayerApplication()657 : BApplication("application/x-vnd.Haiku-CDPlayer")658 {659 BWindow *window = new CDPlayerWindow();660 CDPlayer *view = new CDPlayer(window->Bounds(), B_TRANSLATE("CD"));661 if (view->InitCheck()) {662 window->ResizeTo(view->Bounds().Width(), view->Bounds().Height());663 window->AddChild(view);664 window->Show();665 } else666 PostMessage(B_QUIT_REQUESTED);667 }668 669 670 int671 main(int, char **argv)672 {673 CDPlayerApplication app;674 app.Run();675 676 return 0;677 }678 -
deleted file src/apps/cdplayer/CDPlayer.h
diff --git a/src/apps/cdplayer/CDPlayer.h b/src/apps/cdplayer/CDPlayer.h deleted file mode 100644 index b79167a..0000000
+ - 1 /*2 Copyright 1999, Be Incorporated. All Rights Reserved.3 This file may be used under the terms of the Be Sample Code License.4 */5 // This defines the replicant button6 7 #ifndef CDPLAYER_H8 #define CDPLAYER_H9 10 #include "CDAudioDevice.h"11 #include "CDDBSupport.h"12 #include "PlayList.h"13 #include "VolumeSlider.h"14 15 #include <Application.h>16 #include <Box.h>17 #include <Button.h>18 #include <StringView.h>19 #include <TextControl.h>20 #include <View.h>21 #include <Window.h>22 23 24 class DrawButton;25 class DoubleShotDrawButton;26 class TwoStateDrawButton;27 28 29 class CDPlayer : public BView {30 public:31 CDPlayer(BRect frame, const char *name, uint32 resizeMask = B_FOLLOW_ALL,32 uint32 flags = B_WILL_DRAW | B_NAVIGABLE | B_PULSE_NEEDED);33 virtual ~CDPlayer();34 35 void BuildGUI();36 bool InitCheck();37 38 virtual void AttachedToWindow();39 virtual void Pulse();40 virtual void MessageReceived(BMessage *);41 42 private:43 void _WatchCDState();44 45 DrawButton *fStop,46 *fNextTrack,47 *fPrevTrack,48 *fEject;49 50 DoubleShotDrawButton51 *fFastFwd,52 *fRewind;53 54 TwoStateDrawButton *fShuffle,55 *fRepeat,56 *fPlay;57 58 VolumeSlider *fVolumeSlider;59 60 BStringView *fCDTitle,61 *fCurrentTrack,62 *fTrackTime,63 *fDiscTime;64 65 BBox *fCDBox,66 *fTrackBox,67 *fTimeBox;68 69 CDState fCDState;70 71 rgb_color fStopColor;72 rgb_color fPlayColor;73 74 CDAudioDevice fCDDrive;75 PlayList fPlayList;76 CDState fWindowState;77 CDDBQuery fCDQuery;78 CDDBData fCDData;79 uint8 fVolume;80 };81 82 83 class CDPlayerApplication : public BApplication {84 public:85 CDPlayerApplication();86 };87 88 89 #endif // CDPLAYER_H -
deleted file src/apps/cdplayer/CDPlayer.rdef
diff --git a/src/apps/cdplayer/CDPlayer.rdef b/src/apps/cdplayer/CDPlayer.rdef deleted file mode 100644 index d0985ab..0000000
+ - 1 resource app_signature "application/x-vnd.Haiku-CDPlayer";2 3 resource app_name_catalog_entry "x-vnd.Haiku-CDPlayer:System name:CDPlayer";4 5 resource app_flags B_SINGLE_LAUNCH;6 7 resource app_version {8 major = 1,9 middle = 0,10 minor = 0,11 12 /* 0 = development 1 = alpha 2 = beta13 3 = gamma 4 = golden master 5 = final */14 variety = 2,15 16 internal = 0,17 18 short_info = "CDPlayer",19 long_info = "CDPlayer ©2005-2009 Haiku, Inc."20 };21 22 resource vector_icon {23 $"6E6369660F050004006A02000602AD28AB3B838DBC3FFCAE05CB4B2E7848A224"24 $"00FF5E06FFFF9806020006023C60000000000000004000004AD00000000000FF"25 $"7200FFFF980002000602B78719BB8D143DE1CFB9DB454A835A491AE900DD6311"26 $"FEFF9F59020006023A98E5BA20E63A20E63A98E54A99374A20B800FFD600FFD7"27 $"4F0502000604B8123C00000000000038123C4A9CEB4A564700CBCBFF54CBFFCB"28 $"AACBFF33FFFFCB6603FFA200020006023B77D73A60C0BAD3D43C0FD7487A314A"29 $"859D00FFDD59FFFFCB00020006023C8000000000000000400000484000000000"30 $"00FEFFACFFFFEA3E03005C00038EB68E02030605B63D2FBC2D3D3C1BD3B62B46"31 $"4A1AE649E3B100F1F1F136D9DDF48A9996B9B4B8BEDBFFF4F4F403C9A5880200"32 $"06023C92C0388F5FB854503C576348D8DF48895B004137A9FFB9B9B9110A065C"33 $"42415E485E574E604E5E430A0D552A372236233E35294426422246224E3E5C42"34 $"5C5A445A405B3F0A043E355A40465328450A0446585A445A404653020442364A"35 $"363A363240323A3246424A3A4A4A4A52405246523A0204423D443D403D3F3F3F"36 $"3E3F40424140414441453F4540453E0204483F483D4841424346433E433C3F3C"37 $"413C3D423B3E3B463B0A043E543E5C425C42540A0446504254425C46580A0422"38 $"483E543E5C224E0A062642224622483E54425446500A06264246504653475247"39 $"4F26400A04552A542B5A405B3F0A043623542B552A37220A043E355A40542B36"40 $"230A06304931C323B64FC19EB524C2C92648B64FC2040A043049B649C20A2648"41 $"2E4B120A010100000A0001011001178400040A050102000A030103000A04010C"42 $"000A08010D000A02010E000A000204051001178400040A0C020604000A0D0205"43 $"06000A0E01061001178200040A070107000A030108000A080109000A09010A00"44 $"0A00010B000A0A010F0815FF0A0B011000"45 };46 47 resource(1, "stop_down") #'PNG ' array {48 $"89504E470D0A1A0A0000000D494844520000001C00000015080300000062DC7E"49 $"6E0000000467414D410000AFC837058AE90000001974455874536F6674776172"50 $"650041646F626520496D616765526561647971C9653C00000021504C54451818"51 $"18BFBFBFCECBCE101010848284000000E7E7E76361637B7D7B2124216365639D"52 $"66D1620000008E4944415478DA6260C203000288818985031760010820A02403"53 $"330EC0021040404966561C80052080C0920CD8010B4000E19504082024494618"54 $"804B0204105E498000C22B0910407825010208AF244000E195040820BC920001"55 $"8457122080F04A020410DE10020820BC920001049264E0C40E5800020828C9C9"56 $"8503B000041050921D27000820062636DC0020C0004B4D065C99EE4871000000"57 $"0049454E44AE426082"58 };59 60 resource(2, "stop_up") #'PNG ' array {61 $"89504E470D0A1A0A0000000D494844520000001C00000015080300000062DC7E"62 $"6E0000000467414D410000AFC837058AE90000001974455874536F6674776172"63 $"650041646F626520496D616765526561647971C9653C0000001B504C54459C9A"64 $"9CDEDBDE636163EFEFEFCECBCE848284404040FFFFFFE7E7E724E86FE5000000"65 $"8C4944415478DA6260C10300028881851537000820A02407330EC00A10404049"66 $"66761C80152080C0921CD8012B4000E19504082024493618804B0204105E4980"67 $"00C22B0910407825010208AF244000E195040820BC9200018457122080F04A02"68 $"0410DE10020820BC9200010492E460C40E5801020828C9C88003B00204105092"69 $"092700082006160EDC0020C00066DB0D59EF1DF8F60000000049454E44AE4260"70 $"82"71 };72 73 resource(3, "shuffle_up_on") #'PNG ' array {74 $"89504E470D0A1A0A0000000D494844520000003A000000150803000000209F0D"75 $"F90000000467414D410000AFC837058AE90000001974455874536F6674776172"76 $"650041646F626520496D616765526561647971C9653C000000DE504C54456D6D"77 $"6DDCDCDCC6C6C6D1D1D15656566161614B4B4BAFAFAFA4A4A48E8E8E69BA59E9"78 $"E9E9E8E8E86CBB5CD8D8D886C87AE3E3E33F7035EBEBEB4F6A4BA7C7A1979797"79 $"577452D2D2D2579A4A91BD87C3C3C3727D7042753894CE89838383B2B2B2DEDE"80 $"DEECECEC85BF7885C77884BE788AA385EAEAEA9D9D9D9A9A9A559748F0F0F0AD"81 $"C1A97D8B7A62AE53CCD8CA597753A8A8A892B38BE4E7E3788A74EBECEBD9D9D9"82 $"529045B7B9B7BCBCBC8DA788C2CEC0EDEDED599E4B8C8C8CAAD8A1404040BABA"83 $"BADEDBDE9C9A9CEFEFEF636163848284CECBCE999999FFFFFFE7E7E7FF841062"84 $"0000019D4944415478DA6270231B000410839B2B99C0132080805A3D9DC9008E"85 $"2E9E000104D4EAEC413AF07472F1040820B0564F928123502B400051A0152080"86 $"30B5323A38307A3231200BB933B8833007278A5680008269E593175597520032"87 $"98D95859183C1DEC917432D9B3B383B03B038A568000826A15B795B634543537"88 $"05DAC002D40ED4CAE8C0ECE909B29FD9D3DDDE81118C815A99814250AD000104"89 $"D56AA06327CBAFACC227E0C96ECF099474B067616563F6B477F004BA95D59E81"90 $"0984815A39D840C210AD000104D5AA21C9CFC5C56BA60714656761E3006AE500"91 $"E9836805B91E84815A59381D58DCA15A010208AAD54289978B4B57C68A1B144E"92 $"9CF64C2095D8B4DAB332307040B50204102C9844346D2404C54CB881FEF464B4"93 $"77806B656243B5550E114C000104D5CAC3ADAD2F6C6CA40894B7676083843050"94 $"2B2B0B0BAA56763656569883010208662B8F9AB596B310382A1C9840910B0E5E"95 $"6030034318C4016166B08403CC568000A22035010410055A010208A4D5D39174"96 $"00D40A104040AD8E4E640057174F8000026A75210F78020410839B27B90020C0"97 $"0028E229A6998C9D9D0000000049454E44AE426082"98 };99 100 resource(4, "shuffle_up_off") #'PNG ' array {101 $"89504E470D0A1A0A0000000D494844520000003A000000150803000000209F0D"102 $"F90000000467414D410000AFC837058AE90000001974455874536F6674776172"103 $"650041646F626520496D616765526561647971C9653C000000D5504C54456D6D"104 $"6DDCDCDCC6C6C6D1D1D16161614B4B4B565656AFAFAFA4A4A48E8E8EC4C4C4EB"105 $"EBEBE9E9E9D5D5D5CACACAC5C5C5D0D0D09DA19C757874E5E7E4C6CFC5A2A2A2"106 $"DDDDDD8A9288939593ECECECF2F2F2B8B8B86B706AABB0AAEFF0EFBABFB97B7B"107 $"7BCBCBCBBBC2BA989898F5F5F59F9F9FF0F0F0A7B9A4838383686C67CFCFCF67"108 $"6767BFBFBF595C58A6B0A48A8A8A7A7A7A5D605DDFDFDF6B6B6B767676636363"109 $"BCC3BB555555656964A6A6A6F4F4F4ADBBAA404040BABABADEDBDE9C9A9CEFEF"110 $"EF636163848284CECBCE999999FFFFFFE7E7E7D832BDA00000019D4944415478"111 $"DA6270261B00041083B31399C00D2080805ADD1CC800768E6E000104D4EAE04A"112 $"3A70B37774030820B0563792811D502B400051A015208030B532DADA32BA3131"113 $"200BB930B8803007278A5680008269E5D33735E6E00532985959D818DC6C6D90"114 $"7432D9B0B383B00B038A568000826AD531D7159415975004DAC006D40ED4CA68"115 $"CBECE606B29FD9CDC5C696118C815A99814250AD000104D56A2023C62BA065CD"116 $"67E4C66EC30994B4B56163616576B3B17503BA95C586810984815A395841C210"117 $"AD000104D5AA2D2FC0C5C5AF2C0214656763E5006AE500E9836805B91E84815A"118 $"D9386DD95CA05A010208AAD5C58C9F8B4B5A41891B144E9C364C2095D8B4DAB0"119 $"30307040B50204102C98D4552D454D2CE4B881FE7463B4B1856B656245B55503"120 $"114C000104D5CAC3ADA7692824AC0694B76160858430502B0B1B1BAA56765616"121 $"169883010208662B8FA4948A9503382A6C9940910B0E5E6030034318C4016166"122 $"B0842DCC568000A22035010410055A010208A4D5CD8E7400D40A104040AD76F6"123 $"64002747378000026A75240FB801041083B31BB90020C0003F2F1CF1AA88B47B"124 $"0000000049454E44AE426082"125 };126 127 resource(5, "shuffle_down") #'PNG ' array {128 $"89504E470D0A1A0A0000000D494844520000003A000000150803000000209F0D"129 $"F90000000467414D410000AFC837058AE90000001974455874536F6674776172"130 $"650041646F626520496D616765526561647971C9653C000000E4504C54451818"131 $"18CECBCEE7E7E7848284636163101010636563212421000000454545BFBFBF66"132 $"66669292922323233939392E2E2EA9A9A99E9E9EB4B4B45050505B5B5B717171"133 $"9645A61616167937852727279344A31717177C7C7C1212126E42781414148274"134 $"857A388787758B212121A661B4AA68B7725877686868262626BD8AC7B095B448"135 $"4648523E564343431515158D828F6D4C746565659D51ACC08FCA332735A688AC"136 $"141314AD6FBAA88BAD7A4087755C7A5757573C3C3C6262626B31767B41871313"137 $"131B181C3D313F55275E7373732D2D2D7B7D7B4D4D4D0F0F0FA865B51C1C1C58"138 $"385E209137060000019D4944415478DA6260241B000410032333998009208080"139 $"5A1958C900EC2C4C000104D4CACA413A60606361020820B0560692013B502B40"140 $"0051A015208030B5F27272F232F0F1200B71F37083B088288A56800082699574"141 $"57B7B5510632F8850405781838B99074F271090B8330370F8A568000826A7575"142 $"D15733B0D2D600DA2000D40ED4CACBC9CFC000B29F9F819B8B93178C815AF981"143 $"4250AD000104D56AADE06C27A1682FE9C520CC250A94E4E4121014E267E0E264"144 $"00BA55908B870F84815A458440C210AD000104D56A2827212626656E02141516"145 $"1012016A1501E9836805B91E84815A05443905B8A15A010208AA55D7524A4CCC"146 $"48D3491C144EA25C7C2095D8B47209F2F08840B50204102C98BC55553C8D2DCC"147 $"C481FE64E0E5E2846BE51342B55506114C000104D52A2DAE63AAA5E4E80094E7"148 $"E21182843050ABA08000AA5661214141988301020866ABB49EAC07AB3C382A38"149 $"F940910B0E5E6030034318C401617EB00427CC568000A22035010410055A0102"150 $"08A495819D7400D40A104040ADEC6C64003716268000026A65210F3001041003"151 $"2313B90020C000992E1E6DC556B8640000000049454E44AE426082"152 };153 154 resource(6, "rew_down") #'PNG ' array {155 $"89504E470D0A1A0A0000000D4948445200000023000000150803000000FB24A7"156 $"DB0000000467414D410000AFC837058AE90000001974455874536F6674776172"157 $"650041646F626520496D616765526561647971C9653C00000024504C54451818"158 $"18BFBFBFCECBCE848284101010000000E7E7E76361632124216365637B7D7B1C"159 $"1C1CBC1DBBD0000000B24944415478DA6260220C00028881899920000820A01A"160 $"0616FC800B2080806A5858F1032E800002AB61C00BB80002881835000184AE86"161 $"911183C5051040A86A1819613208160317400021AB616484C920582035000184"162 $"50C3C8089341B0206A000208A686110B80A901082062CC010820B81A6EB82BB8"163 $"D1DD031040C4F80B208088091F800022269C010288183500010452C3C0811770"164 $"010410500D07277EC00510404035EC840040003130B1110400010600A1E40785"165 $"A9210D8B0000000049454E44AE426082"166 };167 168 resource(7, "rew_up") #'PNG ' array {169 $"89504E470D0A1A0A0000000D4948445200000023000000150803000000FB24A7"170 $"DB0000000467414D410000AFC837058AE90000001974455874536F6674776172"171 $"650041646F626520496D616765526561647971C9653C0000001E504C5445E3E3"172 $"E39C9A9CDEDBDE636163EFEFEFCECBCE848284404040FFFFFFE7E7E7E071FC71"173 $"000000B24944415478DA6260250C00028881958D20000820A01A4E16FC800D20"174 $"80806A5838F00336800002ABE1C40BD80002881835000184AE869D1D83C50610"175 $"40A86AD8D961320816271B400021AB616787C92058203500018450C3CE0E9341"176 $"B0206A000208A6861D0B80A901082062CC010820B81A06B82B18D0DD031040C4"177 $"F80B208088091F800022269C010288183500010452C3C98417B0010410500D13"178 $"237EC00610404035CC8400400031B072120400010600E9AA13AA1F2D6E440000"179 $"000049454E44AE426082"180 };181 182 resource(8, "prev_down") #'PNG ' array {183 $"89504E470D0A1A0A0000000D494844520000001F00000015080300000089EBC5"184 $"6D0000000467414D410000AFC837058AE90000001974455874536F6674776172"185 $"650041646F626520496D616765526561647971C9653C00000021504C54451818"186 $"18BFBFBF848284CECBCE101010000000E7E7E76361636365632124211C1C1C7E"187 $"A8A44E000000A34944415478DA6260C60F0002888199092F000820A03C030B6E"188 $"C004104040791656DC80092080C0F20C38011340001192070820247946464698"189 $"309CC5041040D8E419112A99000208539E9111591E2080D0E5191951E5010208"190 $"551E0160F2000144483F4000A1C973A1DB0F104084DC0F104084FC0F104084C2"191 $"0F208008C9030410489E81132760020820A03C27076EC00410404079767C0020"192 $"801898D9F002800003004041062DA94CAAB70000000049454E44AE426082"193 };194 195 resource(9, "prev_up") #'PNG ' array {196 $"89504E470D0A1A0A0000000D494844520000001F00000015080300000089EBC5"197 $"6D0000000467414D410000AFC837058AE90000001974455874536F6674776172"198 $"650041646F626520496D616765526561647971C9653C0000001E504C5445E3E3"199 $"E39C9A9CDEDBDE636163EFEFEFCECBCE848284404040FFFFFFE7E7E7E071FC71"200 $"000000A34944415478DA6260C50F00028881950D2F000820A03C270B6EC00610"201 $"404079160EDC800D2080C0F29C38011B40001192070820247976767698309CC5"202 $"061040D8E4D9112AD9000208539E9D1D591E2080D0E5D9D951E5010208551E01"203 $"60F2000144483F4000A1C933A0DB0F104084DC0F104084FC0F104084C20F2080"204 $"08C9030410489E93092760030820A03C13236EC00610404079667C0020801858"205 $"39F1028000030094AB11758434ABDD0000000049454E44AE426082"206 };207 208 resource(10, "play_down") #'PNG ' array {209 $"89504E470D0A1A0A0000000D494844520000002800000015080300000003C45C"210 $"2C0000000467414D410000AFC837058AE90000001974455874536F6674776172"211 $"650041646F626520496D616765526561647971C9653C00000024504C54451818"212 $"18BFBFBFE7E7E7636163848284636563212421CECBCE1010100000007B7D7B1C"213 $"1C1CE52CB398000000B14944415478DA62602712000410030B71800920801858"214 $"3888006CCC4C0001C4C0C2491830B03233010410030B0361C00654081040442B"215 $"040820B8424646241946108F112E0452081040480A91946251081040280A4132"216 $"DC38140204109A42A81C1685000184A1102C8B45214000116D22400061B81197"217 $"42800022DAD70001447438020410D131031040442B0408200616362200502140"218 $"0031B0B01201B89899000288819938C00410400C4C4402800003000BCF081A22"219 $"DA76AF0000000049454E44AE426082"220 };221 222 resource(11, "play_up") #'PNG ' array {223 $"89504E470D0A1A0A0000000D494844520000002800000015080300000003C45C"224 $"2C0000000467414D410000AFC837058AE90000001974455874536F6674776172"225 $"650041646F626520496D616765526561647971C9653C0000001E504C5445E3E3"226 $"E3EFEFEFCECBCEDEDBDE9C9A9C636163848284404040FFFFFFE7E7E7217A6570"227 $"000000B14944415478DA62602212000410031B718013208018D8188900CCAC9C"228 $"0001C4C0C6411870B2B072020410031B2761C00C54081040442B040820B84276"229 $"76241976108F1D2E0452081040480A91946251081040280A41320C3814020410"230 $"9A42A81C1685000184A1102C8B45214000116D22400061B8119742800022DAD7"231 $"0001447438020410D131031040442B04082006366622005021400031B0B11001"232 $"D85839010288819538C00910400C9C440280000300C6C8169FB4102432000000"233 $"0049454E44AE426082"234 };235 236 resource(12, "next_down") #'PNG ' array {237 $"89504E470D0A1A0A0000000D494844520000001D0000001508030000008D1E15"238 $"500000000467414D410000AFC837058AE90000001974455874536F6674776172"239 $"650041646F626520496D616765526561647971C9653C00000024504C54451818"240 $"18BFBFBFE7E7E7636163636563212421CECBCE8482841010100000001C1C1C7B"241 $"7D7B41373F2B000000A04944415478DA6260C307000288811D0F60020820060E"242 $"9C8095990920801838710106166626800062C0095881B20001845F162080606C"243 $"4646048B112E0B104048628C98B20001842C0B12E6429105082054599004B22C"244 $"4000A1CB323222CB0204107EBD0001846E2FAA2C4000E177334000E1F72F4000"245 $"E10F2B8000C22F0B10400CAC380150162080185870026E662680006260C60398"246 $"00028881091F00083000D82205D9820E455D0000000049454E44AE426082"247 };248 249 resource(13, "next_up") #'PNG ' array {250 $"89504E470D0A1A0A0000000D494844520000001D0000001508030000008D1E15"251 $"500000000467414D410000AFC837058AE90000001974455874536F6674776172"252 $"650041646F626520496D616765526561647971C9653C0000001E504C5445E3E3"253 $"E3EFEFEFCECBCE848284DEDBDE9C9A9C636163404040FFFFFFE7E7E7CD8E4595"254 $"000000A34944415478DA6260C20700028881190FE004082006469C80858D1320"255 $"80183870014E56364E800062E0C4055880B20001845F16208060B2ECEC9C7016"256 $"3B5C16208010B23079645980004296050933A0C8020410AA2C480259162080D0"257 $"65D9D99165010208BF5E800042B71755162080F0BB192080F0FB172080F08715"258 $"4000E19705082006169C00280B10400CAC3801331B27400031B0E1019C000184"259 $"DB5E1000083000F03F1072763DB7B80000000049454E44AE426082"260 };261 262 resource(14, "repeat_up_on") #'PNG ' array {263 $"89504E470D0A1A0A0000000D494844520000002C0000001508030000000A2FFC"264 $"560000000467414D410000AFC837058AE90000001974455874536F6674776172"265 $"650041646F626520496D616765526561647971C9653C000000B7504C544569BA"266 $"59E9E9E96CBB5C86C87AD8D8D8E8E8E885C778577452F0F0F09A9A9AEAEAEA7D"267 $"8B7AE3E3E3427538D2D2D2D9D9D9A7C7A18C8C8CADC1A962AE534F6A4B599E4B"268 $"EBECEBCCD8CAB7B9B7529045BCBCBCA8A8A8DEDEDEC2CEC0579A4A91BD87EDED"269 $"ED788A74597753559748C3C3C392B38BE4E7E3EBEBEB84BE7885BF7894CE8972"270 $"7D708DA7883F7035B2B2B29797979D9D9DAAD8A1ECECEC8AA385DEDBDE9C9A9C"271 $"EFEFEF636163848284CECBCE494949FFFFFFE7E7E72E5D330E0000010F494441"272 $"5478DA62B0240100041083A505D1C0062080808A6DCC880226E636000104546C"273 $"664D0CB03135B7010820B0621B2280095031400091A4182080B02AB6B2022204"274 $"802B0608209862163D7D031519985A2CAA418A010208AA984F505B47D558821F"275 $"AA166A3C5C2F5431400041154B731B6A31B369B0F020A9B24272154431400041"276 $"1573CA33333030498AA31889A1182080A08AA5349918188479651951145BA129"277 $"0608209807059445E574D9C518116E866B43B8192080A08A591985944414D58C"278 $"E0A1010F08E4D000082098C9AC5C0A1C66EA08FF23AB86873340009114830001"279 $"44926280000229B6312106001503041050B1892951C0C2DC062080808ACD8905"280 $"360001C46069433C00083000A3F2C770525CB4110000000049454E44AE426082"281 };282 283 resource(15, "repeat_up_off") #'PNG ' array {284 $"89504E470D0A1A0A0000000D494844520000002C0000001508030000000A2FFC"285 $"560000000467414D410000AFC837058AE90000001974455874536F6674776172"286 $"650041646F626520496D616765526561647971C9653C000000A5504C5445C4C4"287 $"C4E9E9E9C5C5C5D0D0D0C3C3C3D8D8D8ECECECE8E8E8D9D9D99898989F9F9FA6"288 $"A6A68B8B8BBCBCBCB7B7B7C7C7C77B7B7BD2D2D2B9B9B9CFCFCF8D8D8DB2B2B2"289 $"CBCBCB6D6D6D7A7A7ADADADAEBEBEBDEDEDEDDDDDDEDEDED9D9D9DE3E3E38C8C"290 $"8C979797F0F0F0A2A2A2A8A8A8767676B8B8B8EAEAEA7E7E7ED5D5D5ABABAB77"291 $"77779A9A9AA7A7A7DEDBDE9C9A9CEFEFEF636163848284CECBCE494949FFFFFF"292 $"E7E7E70B3909DF0000010F4944415478DA6230260100041083B111D1C00C2080"293 $"808ACD0C88027A8666000104546C604A0C30D33734030820B0623322801E5031"294 $"400091A4182080B02A3631012204802B0608209862565145391669985A2CAA41"295 $"8A010208AA585041438B4F578803AA166A3C5C2F543140004115AB88C868320B"296 $"33B1CA23A932417215443140004115EB3030333030714AA21889A1182080A08A"297 $"79F9991818D404981951149BA0290608209807C5B8B89555B5D918116E866B43"298 $"B8192080A08AD9195924C479CCD8E0A1010F08E4D000082098C9ECEAB24A0652"299 $"08FF23AB868733400091148300014492628000022936D32306001503041050B1"300 $"9E3E51C0C8D00C2080808A0D8905660001C4606C463C000830007CBDB25B32D5"301 $"44EB0000000049454E44AE426082"302 };303 304 resource(16, "repeat_down") #'PNG ' array {305 $"89504E470D0A1A0A0000000D494844520000002C0000001508030000000A2FFC"306 $"560000000467414D410000AFC837058AE90000001974455874536F6674776172"307 $"650041646F626520496D616765526561647971C9653C000000BD504C54451818"308 $"18B6B6B6CECBCEE7E7E78482846361631010106365632124210000009645A616"309 $"16162727271717177937859344A313131387758B212121151515725877262626"310 $"58385E6E4278BD8AC77B7D7B523E56A688AC434343A88BAD1C1C1CAA68B76B31"311 $"76AD6FBAA661B48274856868684D4D4D6D4C74C08FCA7A38871B181C7B418714"312 $"14143C3C3C121212484648B095B4A865B59D51AC0F0F0F6565653327357A4087"313 $"3D313F737373755C7A55275E1413142D2D2D5757578D828F626262FA21648900"314 $"00010F4944415478DA6260220100041003130BD180192080808A19D888021CAC"315 $"CC00010454CCC6490C60606765060820B062062200075031400091A4182080B0"316 $"2A6664042204802B06082098621E55153B1D21985A2CAA418A010208AAD8DADC"317 $"5644CD424F14AA166A3C5C2F543140004115DB285B2AF06968F1C821A9624472"318 $"154431400041151B8BF37171F12B9AA01889A1182080A08A654CF9B9B80C25CC"319 $"B8511433A2290608209807C5E4950CD465ADB8116E866B43B8192080A08A79B9"320 $"A5A4F5053505E0A1010F08E4D000082098C9BCC2BA466CDA08FF23AB86873340"321 $"0091148300014492628000022966E0200600150304105031073B514092951920"322 $"80808A598905CC0001C4C0C44C3C00083000D89E119E45174D07000000004945"323 $"4E44AE426082"324 };325 326 resource(17, "ffwd_down") #'PNG ' array {327 $"89504E470D0A1A0A0000000D494844520000001E0000001508030000006629AE"328 $"530000000467414D410000AFC837058AE90000001974455874536F6674776172"329 $"650041646F626520496D616765526561647971C9653C00000024504C54451818"330 $"18BFBFBFE7E7E7636163636563212421CECBCE8482841010100000001C1C1C7B"331 $"7D7B41373F2B000000A84944415478DA6260C30B000288811D1F60020820060E"332 $"DC8095990920801838710206166626800062C00D5881D2000144401A20804034"333 $"23234C04C1824A0304104410268C6041A5010208260812E6426241A501020821"334 $"0D1246B0A0D20001842C8D0CA0D20001444037400021DB8DCC824A0304100197"335 $"030410017F030410815003082002D20001C4C08A1B00A5010288810537E06666"336 $"02082006667C800920801898F0028000030099530626E0F55351000000004945"337 $"4E44AE426082"338 };339 340 resource(18, "ffwd_up") #'PNG ' array {341 $"89504E470D0A1A0A0000000D494844520000001E0000001508030000006629AE"342 $"530000000467414D410000AFC837058AE90000001974455874536F6674776172"343 $"650041646F626520496D616765526561647971C9653C0000001E504C5445E3E3"344 $"E3EFEFEFCECBCE848284DEDBDE9C9A9C636163404040FFFFFFE7E7E7CD8E4595"345 $"000000A94944415478DA6260C20B00028881191FE00408200646DC80858D1320"346 $"80183870024E56364E800062E0C4095880D2000144401A208040D2ECEC301104"347 $"0B2A0D104010699830820595060820983448980189059506082084344818C182"348 $"4A030410B23432804A03041001DD0001846C37320B2A0D1040045C0E104004FC"349 $"0D104004420D20800848030410030B6E00940608200656DC80998D13208018D8"350 $"F0014E8000C26337080004180000C610D6FAA81D2B0000000049454E44AE4260"351 $"82"352 };353 354 resource(19, "eject_down") #'PNG ' array {355 $"89504E470D0A1A0A0000000D494844520000002000000015080300000010131C"356 $"D80000000467414D410000AFC837058AE90000001974455874536F6674776172"357 $"650041646F626520496D616765526561647971C9653C00000021504C54451818"358 $"18BFBFBFCECBCEE7E7E78482846361631010106365632124210000007B7D7B54"359 $"B16A73000000AC4944415478DA626022000002888189052F60060820A0020636"360 $"9C808395192080800AD8387101067656668000022B60C00138800A000288A002"361 $"80004257C0C888A6002080D014303222AB002900082054058C8C282A400A0002"362 $"0845012323AA0A9002800022A8002080082A00082082DE040820822600041041"363 $"05000144D00A800022A8002080400A18387001A0028000022AE060C709B85899"364 $"010208A880151F60060820062666FC0020C000DD73078EF9B85C950000000049"365 $"454E44AE426082"366 };367 368 resource(20, "eject_up") #'PNG ' array {369 $"89504E470D0A1A0A0000000D494844520000002000000015080300000010131C"370 $"D80000000467414D410000AFC837058AE90000001974455874536F6674776172"371 $"650041646F626520496D616765526561647971C9653C0000001B504C5445DEDB"372 $"DE9C9A9CEFEFEF636163848284404040CECBCEFFFFFFE7E7E70F06920C000000"373 $"AC4944415478DA62602300000288818D052FE0000820A0020E269C8081990320"374 $"80800A98D871010E46660E8000022BE0C00118800A000288A00280004257C0CA"375 $"8AA6002080D014B0B222AB00290008205405ACAC282A400A00020845012B2BAA"376 $"0A9002800022A8002080082A00082082DE04082082260004104105000144D00A"377 $"800022A8002080400A38187001A0028000022A6060C409589839000208A88019"378 $"1FE000082006360EFC0020C000B61F0ED83F7D28B30000000049454E44AE4260"379 $"82"380 };381 382 resource(21, "paused_up") #'PNG ' array {383 $"89504E470D0A1A0A0000000D494844520000002800000015080300000003C45C"384 $"2C0000000467414D410000AFC837058AE90000001974455874536F6674776172"385 $"650041646F626520496D616765526561647971C9653C00000021504C5445E7E7"386 $"E784828463616369BA599C9A9CDEDBDE404040CECBCEEFEFEFFFFFFFE3E3E3BB"387 $"3117C6000000AF4944415478DA62602712000410032371800120801818398800"388 $"AC4C0C0001C4C0C8491830B0303100041003230361C00A54081040442B040820"389 $"B84236362419666666280157081040480A91946251081040280A414AB9702804"390 $"082034855053B1280408200C8560A55814020410D126020410861B7129040820"391 $"A27D0D10404487234000111D33000144B4428000626064250200150204100323"392 $"0B11809189012080189888030C0001C4402C00083000E49407BBAA2FBF830000"393 $"000049454E44AE426082"394 };395 396 resource(22, "play_up_on") #'PNG ' array {397 $"89504E470D0A1A0A0000000D4948445200000028000000150802000000BB783B"398 $"49000000D549444154789CC5D5310A83301406E0DF9203E4223D90B374922E1E"399 $"A08360C75E2337B09B3D40C1C503644C86824BC125438740905A4D02E9F39F5E"400 $"10F97C0F79C9FA678F3DC2DA7B4BAF16A7820128CF251939BEC6E6DA00600038"401 $"E734AAD6BA7B74B666F64C034FEFC9D5071A7219B6F6A01E2A0097E36DFBFD3C"402 $"CF6D2184581E37E2E9B81E2AFB05C91334EA396F8C4902AF8EFA278F80E10726"403 $"FAE74A35FC888E6D52751C01A72223E0B46410FC0FD20307925F8BC2BB375C76"404 $"5D99F3DD4D0ABBAB8A20EE2664524A292519EC9229A5E855001F00D549BD62C7"405 $"07500000000049454E44AE426082"406 };407 -
deleted file src/apps/cdplayer/DoubleShotDrawButton.cpp
diff --git a/src/apps/cdplayer/DoubleShotDrawButton.cpp b/src/apps/cdplayer/DoubleShotDrawButton.cpp deleted file mode 100644 index b5e7fd3..0000000
+ - 1 /*2 * Copyright (c) 2006-2007, Haiku, Inc.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm <bpmagic@columbus.rr.com>7 */8 #include "DoubleShotDrawButton.h"9 #include <stdio.h>10 11 // The only difference between this class and DrawButton is the fact that it is12 // invoked twice during a mousedown-mouseup cycle. It fires when pushed, and13 // then again when released.14 15 DoubleShotDrawButton::DoubleShotDrawButton(BRect frame, const char *name,16 BBitmap *up, BBitmap *down,BMessage *msg, int32 resize, int32 flags)17 : DrawButton(frame, name, up,down, msg, resize, flags)18 {19 }20 21 22 void23 DoubleShotDrawButton::MouseDown(BPoint point)24 {25 Invoke();26 DrawButton::MouseDown(point);27 } -
deleted file src/apps/cdplayer/DoubleShotDrawButton.h
diff --git a/src/apps/cdplayer/DoubleShotDrawButton.h b/src/apps/cdplayer/DoubleShotDrawButton.h deleted file mode 100644 index 7b1c763..0000000
+ - 1 /*2 * Copyright (c) 2006-2007, Haiku, Inc.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm <bpmagic@columbus.rr.com>7 */8 #ifndef _DOUBLESHOT_DRAW_BUTTON_H9 #define _DOUBLESHOT_DRAW_BUTTON_H10 11 #include <Looper.h>12 #include <Application.h>13 #include <Window.h>14 #include <Button.h>15 #include <Bitmap.h>16 #include <Rect.h>17 #include "DrawButton.h"18 19 class DoubleShotDrawButton : public DrawButton20 {21 public:22 DoubleShotDrawButton(BRect frame, const char *name, BBitmap *up,23 BBitmap *down,BMessage *msg, int32 resize,24 int32 flags);25 26 void MouseDown(BPoint point);27 };28 29 #endif -
deleted file src/apps/cdplayer/DrawButton.cpp
diff --git a/src/apps/cdplayer/DrawButton.cpp b/src/apps/cdplayer/DrawButton.cpp deleted file mode 100644 index bcf9bc9..0000000
+ - 1 /*2 * Copyright (c) 2006-2007, Haiku, Inc.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm <bpmagic@columbus.rr.com>7 */8 #include "DrawButton.h"9 10 DrawButton::DrawButton(BRect frame, const char *name, BBitmap *up, BBitmap *down,11 BMessage *msg, int32 resize, int32 flags)12 : BButton(frame, name, "", msg, resize, flags)13 {14 fUp = up;15 fDown = down;16 fDisabled = NULL;17 }18 19 20 DrawButton::~DrawButton(void)21 {22 delete fUp;23 delete fDown;24 delete fDisabled;25 }26 27 28 void29 DrawButton::SetBitmaps(BBitmap *up, BBitmap *down)30 {31 delete fUp;32 delete fDown;33 34 fUp = up;35 fDown = down;36 37 if (IsEnabled())38 Invalidate();39 }40 41 42 void43 DrawButton::SetDisabled(BBitmap *disabled)44 {45 delete fDisabled;46 47 fDisabled = disabled;48 49 if (!IsEnabled())50 Invalidate();51 }52 53 54 void55 DrawButton::Draw(BRect update)56 {57 if (!IsEnabled()) {58 if (fDisabled)59 DrawBitmap(fDisabled, BPoint(0,0));60 else61 StrokeRect(Bounds());62 return;63 }64 65 if (Value() == B_CONTROL_ON) {66 if (fDown)67 DrawBitmap(fDown, BPoint(0,0));68 else69 StrokeRect(Bounds());70 } else {71 if (fUp)72 DrawBitmap(fUp, BPoint(0,0));73 else74 StrokeRect(Bounds());75 }76 }77 78 79 void80 DrawButton::ResizeToPreferred(void)81 {82 if (fUp)83 ResizeTo(fUp->Bounds().Width(),fUp->Bounds().Height());84 else if (fDown)85 ResizeTo(fDown->Bounds().Width(),fDown->Bounds().Height());86 else if (fDisabled)87 ResizeTo(fDisabled->Bounds().Width(),fDisabled->Bounds().Height());88 } -
deleted file src/apps/cdplayer/DrawButton.h
diff --git a/src/apps/cdplayer/DrawButton.h b/src/apps/cdplayer/DrawButton.h deleted file mode 100644 index 7c43f75..0000000
+ - 1 /*2 * Copyright (c) 2006-2007, Haiku, Inc.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm <bpmagic@columbus.rr.com>7 */8 #ifndef _DRAW_BUTTON_H9 #define _DRAW_BUTTON_H10 11 #include <Looper.h>12 #include <Application.h>13 #include <Window.h>14 #include <Button.h>15 #include <Bitmap.h>16 #include <Rect.h>17 18 19 class DrawButton : public BButton20 {21 public:22 DrawButton(BRect frame, const char *name, BBitmap *up,23 BBitmap *down,BMessage *msg, int32 resize,24 int32 flags);25 virtual ~DrawButton(void);26 27 void Draw(BRect update);28 29 void SetBitmaps(BBitmap *up, BBitmap *down);30 void ResizeToPreferred(void);31 void SetDisabled(BBitmap *disabled);32 33 private:34 35 BBitmap *fUp,36 *fDown,37 *fDisabled;38 };39 40 #endif -
deleted file src/apps/cdplayer/Jamfile
diff --git a/src/apps/cdplayer/Jamfile b/src/apps/cdplayer/Jamfile deleted file mode 100644 index aec488d..0000000
+ - 1 SubDir HAIKU_TOP src apps cdplayer ;2 3 SetSubDirSupportedPlatformsBeOSCompatible ;4 5 Application CDPlayer :6 CDAudioDevice.cpp7 CDDBSupport.cpp8 CDPlayer.cpp9 DoubleShotDrawButton.cpp10 DrawButton.cpp11 PlayList.cpp12 TwoStateDrawButton.cpp13 VolumeSlider.cpp14 15 : be $(TARGET_SELECT_UNAME_ETC_LIB) $(TARGET_NETAPI_LIB) $(TARGET_LIBSTDC++)16 localestub translation textencoding17 : CDPlayer.rdef18 ;19 20 DoCatalogs CDPlayer :21 x-vnd.Haiku-CDPlayer22 :23 CDPlayer.cpp24 ; -
deleted file src/apps/cdplayer/LICENSE
diff --git a/src/apps/cdplayer/LICENSE b/src/apps/cdplayer/LICENSE deleted file mode 100644 index 86a4268..0000000
+ - 1 ----------------------2 Be Sample Code License3 ----------------------4 5 Copyright 1991-1999, Be Incorporated.6 All rights reserved.7 8 Redistribution and use in source and binary forms, with or without9 modification, are permitted provided that the following conditions10 are met:11 12 1. Redistributions of source code must retain the above copyright13 notice, this list of conditions, and the following disclaimer.14 15 2. Redistributions in binary form must reproduce the above copyright16 notice, this list of conditions, and the following disclaimer in the17 documentation and/or other materials provided with the distribution.18 19 3. The name of the author may not be used to endorse or promote products20 derived from this software without specific prior written permission.21 22 THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR23 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES24 OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR25 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY26 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES27 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;28 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED29 AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR30 TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE31 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -
deleted file src/apps/cdplayer/PlayList.cpp
diff --git a/src/apps/cdplayer/PlayList.cpp b/src/apps/cdplayer/PlayList.cpp deleted file mode 100644 index a7a0127..0000000
+ - 1 #include "PlayList.h"2 3 #include <OS.h>4 5 #include <stdlib.h>6 #include <string.h>7 8 //#define DEBUG_PLAYLIST9 10 #ifdef DEBUG_PLAYLIST11 #include <stdio.h>12 #define STRACE(x) printf x13 #else14 #define STRACE(x) /* nothing */15 #endif16 17 18 PlayList::PlayList(int16 count, int16 start)19 :20 fTrackCount(count),21 fTrackIndex(0),22 fStartingTrack(start),23 fRandom(false),24 fLoop(false)25 {26 STRACE(("PlayList(count=%d,start=%d)\n",count,start));27 28 srand(real_time_clock_usecs());29 30 if (fTrackCount < 0)31 fTrackCount = 0;32 else if (fTrackCount > 500)33 fTrackCount = 500;34 35 if (fStartingTrack >= fTrackCount)36 fStartingTrack = fTrackCount - 1;37 38 if (fStartingTrack < 1)39 fStartingTrack = 1;40 41 memset(fTrackList, -1, 500);42 43 Unrandomize();44 }45 46 47 void48 PlayList::SetTrackCount(const int16 &count)49 {50 fLocker.Lock();51 52 STRACE(("PlayList::SetTrackCount(%d)\n",count));53 54 if (count <= 0) {55 fTrackCount = 0;56 fTrackIndex = 0;57 }58 else if (count > 500)59 fTrackCount = 500;60 else61 fTrackCount = count;62 63 memset(fTrackList, -1, 500);64 SetShuffle(IsShuffled());65 66 fLocker.Unlock();67 }68 69 70 void71 PlayList::SetStartingTrack(const int16 &start)72 {73 fLocker.Lock();74 75 STRACE(("PlayList::SetStartingTrack(%d)\n",start));76 77 fStartingTrack = start;78 79 fLocker.Unlock();80 }81 82 83 void84 PlayList::Rewind()85 {86 STRACE(("PlayList::Rewind()\n"));87 fLocker.Lock();88 89 fTrackIndex = 0;90 91 fLocker.Unlock();92 }93 94 95 void96 PlayList::SetShuffle(const bool &random)97 {98 STRACE(("PlayList::SetShuffle(%s)\n", random ? "random" : "sequential"));99 fLocker.Lock();100 101 if (random)102 Randomize();103 else104 Unrandomize();105 106 fRandom = random;107 108 fLocker.Unlock();109 }110 111 112 void113 PlayList::SetLoop(const bool &loop)114 {115 STRACE(("PlayList::SetLoop(%s)\n", loop ? "loop" : "non-loop"));116 fLocker.Lock();117 118 fLoop = loop;119 120 fLocker.Unlock();121 }122 123 124 void125 PlayList::SetCurrentTrack(const int16 &track)126 {127 STRACE(("PlayList::SetCurrentTrack(%d)\n",track));128 129 if (track < 0 || track > fTrackCount)130 return;131 132 fLocker.Lock();133 134 for (int16 i = 0; i < fTrackCount; i++) {135 if (fTrackList[i] == track) {136 fTrackIndex = i;137 break;138 }139 }140 141 fLocker.Unlock();142 }143 144 145 int16146 PlayList::GetCurrentTrack()147 {148 fLocker.Lock();149 150 int16 value = fTrackList[fTrackIndex];151 // STRACE(("PlayList::GetCurrentTrack()=%d\n",value));152 153 fLocker.Unlock();154 return value;155 }156 157 158 int16159 PlayList::GetNextTrack()160 {161 fLocker.Lock();162 163 if (fTrackCount < 1) {164 fLocker.Unlock();165 STRACE(("PlayList::GetNextTrack()=-1 (no tracks)\n"));166 return -1;167 }168 169 if (fTrackIndex > (fTrackCount - fStartingTrack)) {170 if (fLoop)171 fTrackIndex = 0;172 else {173 fLocker.Unlock();174 STRACE(("PlayList::GetNextTrack()=-1 (track index out of range)\n"));175 return -1;176 }177 }178 else179 fTrackIndex++;180 181 int16 value = fTrackList[fTrackIndex];182 STRACE(("PlayList::GetNextTrack()=%d\n",value));183 184 fLocker.Unlock();185 return value;186 }187 188 189 int16190 PlayList::GetPreviousTrack()191 {192 fLocker.Lock();193 194 if (fTrackCount < 1) {195 fLocker.Unlock();196 STRACE(("PlayList::GetPreviousTrack()=-1 (no tracks)\n"));197 return -1;198 }199 200 if (fTrackIndex == 0) {201 if (fLoop)202 fTrackIndex = (fTrackCount - fStartingTrack);203 else {204 fLocker.Unlock();205 STRACE(("PlayList::GetPreviousTrack()=-1 (track index out of range)\n"));206 return -1;207 }208 }209 else210 fTrackIndex--;211 212 int16 value = fTrackList[fTrackIndex];213 STRACE(("PlayList::GetPreviousTrack()=%d\n",value));214 fLocker.Unlock();215 return value;216 }217 218 219 int16220 PlayList::GetLastTrack()221 {222 fLocker.Lock();223 224 if (fTrackCount < 1) {225 fLocker.Unlock();226 STRACE(("PlayList::GetLastTrack()=-1 (no tracks)\n"));227 return -1;228 }229 230 fTrackIndex = fTrackCount - 1;231 int16 value = fTrackList[fTrackIndex];232 STRACE(("PlayList::GetLastTrack()=%d\n",value));233 fLocker.Unlock();234 return value;235 }236 237 238 int16239 PlayList::GetFirstTrack()240 {241 fLocker.Lock();242 243 if (fTrackCount < 1) {244 fLocker.Unlock();245 STRACE(("PlayList::GetFirstTrack()=-1 (no tracks)\n"));246 return -1;247 }248 249 fTrackIndex = 0;250 int16 value = fTrackList[fTrackIndex];251 STRACE(("PlayList::GetFirstTrack()=%d\n",value));252 fLocker.Unlock();253 return value;254 }255 256 257 void258 PlayList::Randomize()259 {260 STRACE(("PlayList::Randomize()\n"));261 262 // Reinitialize the count263 for (int16 i = fStartingTrack; i <= fTrackCount; i++)264 fTrackList[i - fStartingTrack] = i;265 266 // There are probably *much* better ways to do this,267 // but this is the only one I could think of. :(268 269 int32 listcount = (fTrackCount - fStartingTrack);270 int32 swapcount = listcount * 2;271 272 int16 temp, first, second;273 for (int32 i = 0; i < swapcount; i++) {274 // repeatedly pick two elements at random and swap them275 // This way we are sure to not have any duplicates and still have276 // all tracks eventually be played.277 278 first = (int16)(listcount * ((float)rand() / RAND_MAX));279 second = (int16)(listcount * ((float)rand() / RAND_MAX));280 281 temp = fTrackList[first];282 fTrackList[first] = fTrackList[second];283 fTrackList[second] = temp;284 }285 286 #ifdef DEBUG_PLAYLIST287 for (int16 i = fStartingTrack; i <= fTrackCount; i++)288 printf("\tSlot %d: track %d\n", i, fTrackList[i]);289 #endif290 }291 292 293 void294 PlayList::Unrandomize()295 {296 STRACE(("PlayList::Unrandomize()\n"));297 for (int16 i = fStartingTrack; i <= fTrackCount; i++)298 fTrackList[i - fStartingTrack] = i;299 } -
deleted file src/apps/cdplayer/PlayList.h
diff --git a/src/apps/cdplayer/PlayList.h b/src/apps/cdplayer/PlayList.h deleted file mode 100644 index 39abc74..0000000
+ - 1 #ifndef PLAYLIST_H2 #define PLAYLIST_H3 4 #include <Locker.h>5 #include <SupportDefs.h>6 7 class PlayList {8 public:9 PlayList(int16 tracks = 0, int16 startingtrack = 1);10 11 void SetTrackCount(const int16 &count);12 int16 TrackCount() const { return fTrackCount; }13 14 void SetStartingTrack(const int16 &start);15 int16 StartingTrack() const { return fStartingTrack; }16 17 void Rewind();18 19 void SetShuffle(const bool &random);20 bool IsShuffled() const { return fRandom; }21 22 void SetLoop(const bool &loop);23 bool IsLoop() const { return fLoop; }24 25 void SetCurrentTrack(const int16 &track);26 int16 GetCurrentTrack();27 28 int16 GetNextTrack();29 int16 GetPreviousTrack();30 31 int16 GetFirstTrack();32 int16 GetLastTrack();33 34 private:35 void Randomize();36 void Unrandomize();37 38 int16 fTrackCount;39 int16 fTrackIndex;40 int16 fStartingTrack;41 int16 fTrackList[500]; // This should be big enough. :)42 43 bool fRandom;44 bool fLoop;45 46 BLocker fLocker;47 };48 49 #endif // PLAYLIST_H -
deleted file src/apps/cdplayer/TrackMenu.cpp
diff --git a/src/apps/cdplayer/TrackMenu.cpp b/src/apps/cdplayer/TrackMenu.cpp deleted file mode 100644 index 02e547a..0000000
+ - 1 #include "TrackMenu.h"2 3 #include <Font.h>4 #include <Message.h>5 #include <Region.h>6 #include <String.h>7 #include <Window.h>8 9 #include <stdio.h>10 11 12 TrackMenu::TrackMenu(const BRect &frame, const char *name, BMessage *msg,13 const int32 &resize, const int32 &flags)14 : BView(frame, name, resize, flags), BInvoker(msg, NULL),15 fCurrentItem(-1),16 fCount(0),17 fIsTracking(false)18 {19 SetViewColor(20, 20, 20);20 21 fItemRect.Set(1, 1, 1 + StringWidth("00") + 3, Bounds().bottom - 1);22 23 BFont font;24 font.SetSize(11);25 font.SetSpacing(B_STRING_SPACING);26 SetFont(&font);27 28 font_height fh;29 GetFontHeight(&fh);30 31 fFontHeight = fh.ascent + fh.descent + fh.leading;32 }33 34 35 TrackMenu::~TrackMenu()36 {37 }38 39 40 void41 TrackMenu::AttachedToWindow()42 {43 if (!Messenger().IsValid())44 SetTarget(Window());45 46 BView::AttachedToWindow();47 }48 49 50 void51 TrackMenu::MessageReceived(BMessage *msg)52 {53 switch (msg->what) {54 default:55 BView::MessageReceived(msg);56 break;57 }58 }59 60 61 void62 TrackMenu::SetItemCount(const int32 &count)63 {64 if (count < 0) {65 fCount = 0;66 fCurrentItem = -1;67 Invalidate();68 return;69 }70 71 fCount = count;72 73 if (fCurrentItem > fCount - 1)74 fCurrentItem = fCount - 1;75 else if(fCurrentItem < 0)76 fCurrentItem = 0;77 78 Invalidate();79 }80 81 82 void83 TrackMenu::SetValue(const int32 &value)84 {85 if (value < 0 || value > fCount)86 return;87 88 if (value != Value()) {89 fCurrentItem = value;90 Invalidate();91 }92 }93 94 95 int3296 TrackMenu::ItemAt(const BPoint &pt)97 {98 // TODO: Optimize. This is simple, but costly in performance99 BRect r(fItemRect);100 for (int32 i = 0; i < fCount; i++) {101 if (r.Contains(pt))102 return i;103 r.OffsetBy(r.Width()+1,0);104 }105 106 return -1;107 }108 109 110 void111 TrackMenu::MouseDown(BPoint point)112 {113 BPoint pt(point);114 int32 saveditem = fCurrentItem;115 int32 item = ItemAt(pt);116 117 if (item >= 0) {118 fCurrentItem = item;119 Invalidate();120 121 // Shamelessly stolen from BButton. :D122 if (Window()->Flags() & B_ASYNCHRONOUS_CONTROLS) {123 SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS);124 fIsTracking = true;125 126 } else {127 uint32 buttons;128 129 do {130 Window()->UpdateIfNeeded();131 132 snooze(40000);133 134 GetMouse(&pt, &buttons, true);135 136 int32 mouseitem = ItemAt(pt);137 if (mouseitem > -1) {138 fCurrentItem = mouseitem;139 Draw(Bounds());140 }141 142 } while (buttons != 0);143 144 if (fCurrentItem != saveditem)145 Invoke();146 }147 }148 }149 150 151 void152 TrackMenu::MouseUp(BPoint pt)153 {154 if (!fIsTracking)155 return;156 157 int32 item = ItemAt(pt);158 159 if (item >= 0)160 Invoke();161 162 fIsTracking = false;163 }164 165 166 void167 TrackMenu::MouseMoved(BPoint pt, uint32 transit, const BMessage *msg)168 {169 if (!fIsTracking)170 return;171 172 int32 item = ItemAt(pt);173 174 if (item >= 0) {175 fCurrentItem = item;176 Invalidate();177 }178 }179 180 181 void182 TrackMenu::Draw(BRect update)183 {184 rgb_color dark = {20, 20, 20, 255};185 rgb_color light = {200, 200, 200, 255};186 BPoint pt1, pt2;187 188 // Draw the frame189 SetHighColor(dark);190 pt1.Set(0, 0);191 pt2 = Bounds().RightTop();192 StrokeLine(pt1, pt2);193 194 pt2.Set(0, Bounds().bottom);195 StrokeLine(pt1, pt2);196 197 SetHighColor(255,255,255);198 pt1 = Bounds().RightBottom();199 pt2.Set(Bounds().right, 1);200 StrokeLine(pt1, pt2);201 202 pt2.Set(1,Bounds().bottom);203 StrokeLine(pt1, pt2);204 205 // Draw the items206 BRect r(fItemRect);207 208 for (int32 i = 0; i < fCount; i++) {209 // Draw the item's frame210 if (i == fCurrentItem)211 SetHighColor(dark);212 else213 SetHighColor(light);214 215 pt1.Set(r.left, r.top);216 pt2.Set(r.right, r.top);217 StrokeLine(pt1, pt2);218 219 pt2.Set(r.left, r.bottom);220 StrokeLine(pt1, pt2);221 222 if (i == fCurrentItem) {223 SetHighColor(light);224 pt1.Set(r.right, r.bottom);225 pt2.Set(r.right, r.top + 1);226 StrokeLine(pt1, pt2);227 228 pt2.Set(r.left + 1, r.bottom);229 StrokeLine(pt1, pt2);230 231 SetHighColor(light);232 FillRect(r.InsetByCopy(1, 1));233 SetHighColor(dark);234 }235 else if (i == fCount - 1) {236 SetHighColor(light);237 pt1.Set(r.right, r.bottom);238 pt2.Set(r.right, r.top + 1);239 StrokeLine(pt1, pt2);240 }241 242 // Draw the label, center justified243 244 BString label;245 label << (i + 1);246 247 BPoint labelpt;248 labelpt.x = r.left + (r.Width() - StringWidth(label.String())) / 2 + 2;249 labelpt.y = r.bottom - (r.Height() - fFontHeight + 4) / 2;250 251 if (i == fCurrentItem) {252 SetHighColor(dark);253 SetLowColor(light);254 } else {255 SetHighColor(light);256 SetLowColor(dark);257 }258 DrawString(label.String(), labelpt);259 260 // Setup for next iteration261 r.OffsetBy(r.Width() + 1, 0);262 263 if (r.left > Bounds().right - 2) {264 ConstrainClippingRegion(NULL);265 break;266 }267 268 if (r.right > Bounds().right - 2) {269 r.right = Bounds().right - 2;270 BRegion reg(r);271 ConstrainClippingRegion(®);272 }273 }274 } -
deleted file src/apps/cdplayer/TrackMenu.h
diff --git a/src/apps/cdplayer/TrackMenu.h b/src/apps/cdplayer/TrackMenu.h deleted file mode 100644 index 2e5abc6..0000000
+ - 1 #ifndef TRACKMENU_H2 #define TRACKMENU_H3 4 #include <Invoker.h>5 #include <View.h>6 7 class TrackMenu : public BView, public BInvoker {8 public:9 TrackMenu(const BRect &frame, const char *name, BMessage *msg,10 const int32 &resize = B_FOLLOW_LEFT | B_FOLLOW_TOP,11 const int32 &flags = B_WILL_DRAW);12 ~TrackMenu();13 14 void AttachedToWindow();15 void MessageReceived(BMessage *msg);16 void Draw(BRect update);17 void MouseDown(BPoint pt);18 void MouseUp(BPoint pt);19 void MouseMoved(BPoint pt, uint32 transit, const BMessage *msg);20 21 int32 CountItems() const { return fCount; }22 void SetItemCount(const int32 &count);23 24 int32 Value() const { return fCurrentItem; }25 void SetValue(const int32 &value);26 27 private:28 int32 ItemAt(const BPoint &pt);29 30 int32 fCurrentItem;31 int32 fCount;32 BRect fItemRect;33 34 bool fIsTracking;35 36 float fFontHeight;37 };38 39 #endif // TRACKMENU_H -
deleted file src/apps/cdplayer/TwoStateDrawButton.cpp
diff --git a/src/apps/cdplayer/TwoStateDrawButton.cpp b/src/apps/cdplayer/TwoStateDrawButton.cpp deleted file mode 100644 index 4197925..0000000
+ - 1 /*2 * Copyright (c) 2006-2007, Haiku, Inc.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm, bpmagic@columbus.rr.com7 */8 9 10 #include "TwoStateDrawButton.h"11 12 13 TwoStateDrawButton::TwoStateDrawButton(BRect frame, const char *name,14 BBitmap *upone, BBitmap *downone, BBitmap *uptwo, BBitmap *downtwo,15 BMessage *msg, const int32 &resize, const int32 &flags)16 : BButton(frame, name, "", msg, resize, flags),17 fUpOne(upone),18 fDownOne(downone),19 fUpTwo(uptwo),20 fDownTwo(downtwo),21 fDisabledOne(NULL),22 fDisabledTwo(NULL),23 fButtonState(true)24 25 {26 fButtonState = false;27 }28 29 30 TwoStateDrawButton::~TwoStateDrawButton()31 {32 delete fUpOne;33 delete fDownOne;34 delete fUpTwo;35 delete fDownTwo;36 delete fDisabledOne;37 delete fDisabledTwo;38 }39 40 41 void42 TwoStateDrawButton::ResizeToPreferred()43 {44 if (fUpOne)45 ResizeTo(fUpOne->Bounds().Width(), fUpOne->Bounds().Height());46 else if (fDownOne)47 ResizeTo(fDownOne->Bounds().Width(), fDownOne->Bounds().Height());48 else if (fUpTwo)49 ResizeTo(fUpTwo->Bounds().Width(),fUpTwo->Bounds().Height());50 else if (fDownTwo)51 ResizeTo(fDownTwo->Bounds().Width(), fDownTwo->Bounds().Height());52 else if (fDisabledOne)53 ResizeTo(fDisabledOne->Bounds().Width(), fDisabledOne->Bounds().Height());54 else if(fDisabledTwo)55 ResizeTo(fDisabledTwo->Bounds().Width(), fDisabledTwo->Bounds().Height());56 }57 58 59 void60 TwoStateDrawButton::SetBitmaps(BBitmap *upone, BBitmap *downone, BBitmap *uptwo,61 BBitmap *downtwo)62 {63 delete fUpOne;64 delete fDownOne;65 delete fUpTwo;66 delete fDownTwo;67 68 fUpOne = upone;69 fDownOne = downone;70 fUpTwo = uptwo;71 fDownTwo = downtwo;72 }73 74 75 void76 TwoStateDrawButton::SetBitmaps(const int32 state, BBitmap *up, BBitmap *down)77 {78 if (state == 0) {79 delete fUpOne;80 delete fDownOne;81 fUpOne = up;82 fDownOne = down;83 } else {84 delete fUpTwo;85 delete fDownTwo;86 fUpTwo = up;87 fDownTwo = down;88 }89 }90 91 92 void93 TwoStateDrawButton::SetDisabled(BBitmap *disabledone, BBitmap *disabledtwo)94 {95 delete fDisabledOne;96 delete fDisabledTwo;97 98 fDisabledOne = disabledone;99 fDisabledTwo = disabledtwo;100 }101 102 103 void104 TwoStateDrawButton::MouseUp(BPoint pt)105 {106 BButton::MouseUp(pt);107 fButtonState = fButtonState ? false : true;108 Invalidate();109 }110 111 112 void113 TwoStateDrawButton::SetState(int32 value)114 {115 if (fButtonState != value) {116 fButtonState = (value == 0) ? false : true;117 Invalidate();118 }119 }120 121 122 void123 TwoStateDrawButton::Draw(BRect update)124 {125 if (fButtonState) {126 if (!IsEnabled()) {127 if (fDisabledTwo)128 DrawBitmap(fDisabledTwo, BPoint(0,0));129 else130 StrokeRect(Bounds());131 return;132 }133 134 if (Value() == B_CONTROL_ON) {135 if (fDownTwo)136 DrawBitmap(fDownTwo, BPoint(0,0));137 else138 StrokeRect(Bounds());139 } else {140 if (fUpTwo)141 DrawBitmap(fUpTwo, BPoint(0,0));142 else143 StrokeRect(Bounds());144 }145 } else {146 if (!IsEnabled()) {147 if (fDisabledOne)148 DrawBitmap(fDisabledOne, BPoint(0,0));149 else150 StrokeRect(Bounds());151 return;152 }153 154 if (Value() == B_CONTROL_ON) {155 if (fDownOne)156 DrawBitmap(fDownOne, BPoint(0,0));157 else158 StrokeRect(Bounds());159 } else {160 if (fUpOne)161 DrawBitmap(fUpOne, BPoint(0,0));162 else163 StrokeRect(Bounds());164 }165 }166 } -
deleted file src/apps/cdplayer/TwoStateDrawButton.h
diff --git a/src/apps/cdplayer/TwoStateDrawButton.h b/src/apps/cdplayer/TwoStateDrawButton.h deleted file mode 100644 index 65d7080..0000000
+ - 1 /*2 * Copyright (c) 2006-2007, Haiku, Inc.3 * Distributed under the terms of the MIT license.4 *5 * Author:6 * DarkWyrm <bpmagic@columbus.rr.com>7 */8 #ifndef _TWOSTATE_DRAWBUTTON_H9 #define _TWOSTATE_DRAWBUTTON_H10 11 12 #include <Bitmap.h>13 #include <Button.h>14 #include <View.h>15 #include <Window.h>16 17 18 class TwoStateDrawButton : public BButton {19 public:20 TwoStateDrawButton(BRect frame, const char *name, BBitmap *upone,21 BBitmap *downone, BBitmap *uptwo, BBitmap *downtwo,22 BMessage *msg, const int32 &resize, const int32 &flags);23 24 ~TwoStateDrawButton();25 26 void Draw(BRect update);27 28 void SetBitmaps(BBitmap *upone, BBitmap *downone, BBitmap *uptwo,29 BBitmap *downtwo);30 31 void SetBitmaps(const int32 state, BBitmap *up, BBitmap *down);32 void ResizeToPreferred();33 void SetDisabled(BBitmap *disabledone, BBitmap *disabledtwo);34 void MouseUp(BPoint pt);35 36 int32 GetState() { return fButtonState ? 1 : 0; };37 void SetState(int32 value);38 39 private:40 BBitmap *fUpOne,41 *fDownOne,42 *fUpTwo,43 *fDownTwo,44 *fDisabledOne,45 *fDisabledTwo;46 47 bool fButtonState;48 // true if in state two49 };50 51 #endif // _TWOSTATE_DRAWBUTTON_H -
deleted file src/apps/cdplayer/VolumeSlider.cpp
diff --git a/src/apps/cdplayer/VolumeSlider.cpp b/src/apps/cdplayer/VolumeSlider.cpp deleted file mode 100644 index fe63bbe..0000000
+ - 1 /*2 * Copyright 2009, Haiku.3 * Distributed under the terms of the MIT License.4 *5 * Authors:6 * Stephan Aßmus, superstippi@gmx.de7 * Jonas Sundström, jonas@kirilla.com8 */9 10 11 #include "VolumeSlider.h"12 13 14 VolumeSlider::VolumeSlider(BRect frame, const char* name, int32 minValue,15 int32 maxValue, BMessage* message, BHandler* target)16 :17 BSlider(frame, name, NULL, message, minValue, maxValue)18 {19 SetTarget(target);20 }21 22 23 VolumeSlider::~VolumeSlider()24 {25 }26 27 28 void29 VolumeSlider::SetValue(int32 value)30 {31 if (value == Value())32 return;33 34 BSlider::SetValue(value);35 Invoke();36 }37 -
deleted file src/apps/cdplayer/VolumeSlider.h
diff --git a/src/apps/cdplayer/VolumeSlider.h b/src/apps/cdplayer/VolumeSlider.h deleted file mode 100644 index ce1e6b3..0000000
+ - 1 /*2 * Copyright 2009, Haiku.3 * Distributed under the terms of the MIT License.4 *5 * Authors:6 * Stephan Aßmus, superstippi@gmx.de7 * Jonas Sundström, jonas@kirilla.com8 */9 #ifndef VOLUME_SLIDER_H10 #define VOLUME_SLIDER_H11 12 13 #include <Slider.h>14 15 16 class VolumeSlider : public BSlider {17 public:18 VolumeSlider(BRect frame, const char* name,19 int32 minValue, int32 maxValue,20 BMessage* message = NULL,21 BHandler* target = NULL);22 23 virtual ~VolumeSlider();24 virtual void SetValue(int32 value);25 26 };27 28 #endif // VOLUME_SLIDER_H29