ExtPopupMenuWnd.cpp
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:735k
源码类别:

界面编程

开发平台:

Visual C++

  1. ASSERT( pSpecPopup != NULL );
  2. INT nCountOfMenuItems = ItemGetCount();
  3. if( nPos < 0 )
  4. nPos = nCountOfMenuItems;
  5. if( nPos > nCountOfMenuItems )
  6. {
  7. ASSERT( FALSE );
  8. return FALSE;
  9. }
  10. ASSERT( m_hWndCmdReceiver != NULL );
  11. ASSERT( ::IsWindow(m_hWndCmdReceiver) );
  12. MENUITEMDATA mi( this );
  13. mi.SetCmdReceiver( m_hWndCmdReceiver );
  14. pSpecPopup->m_bTopLevel = false;
  15. mi.SetPopup( nPos, sText, icon, pSpecPopup );
  16. ASSERT( mi.GetPopup()->m_pWndParentMenu == NULL ); // still not initialized
  17. ASSERT( !mi.GetPopup()->m_bTopLevel );
  18. mi.GetPopup()->m_pWndParentMenu = this;
  19. mi.SetDisplayed( true );
  20. _InsertItem( nPos, mi );
  21. if( m_bTopLevel )
  22. _SyncItems();
  23. else
  24. {
  25. ASSERT( m_pWndParentMenu != NULL );
  26. m_pWndParentMenu->_SyncItems();
  27. }
  28. return TRUE;
  29. }
  30. bool CExtPopupMenuWnd::ItemPaletteRowWrapGet(
  31. INT nPos
  32. ) const
  33. {
  34. ASSERT_VALID( this );
  35. INT nCountOfMenuItems = ItemGetCount();
  36. if( nPos < 0 || nPos >= nCountOfMenuItems )
  37. return false;
  38. const MENUITEMDATA & mi = ItemGetInfo( nPos );
  39. bool bWrap = mi.IsToolWrap();
  40. return bWrap;
  41. }
  42. void CExtPopupMenuWnd::ItemPaletteRowWrapSet(
  43. INT nPos,
  44. bool bWrap // = true
  45. )
  46. {
  47. ASSERT_VALID( this );
  48. ASSERT( GetTrackingMenu() != this );
  49. INT nCountOfMenuItems = ItemGetCount();
  50. if( nPos < 0 || nPos >= nCountOfMenuItems )
  51. return;
  52. MENUITEMDATA & mi = ItemGetInfo( nPos );
  53. mi.SetToolWrap( bWrap );
  54. }
  55. bool CExtPopupMenuWnd::ItemToolLayoutGet(
  56. INT nPos
  57. ) const
  58. {
  59. ASSERT_VALID( this );
  60. ASSERT( GetTrackingMenu() != this );
  61. INT nCountOfMenuItems = ItemGetCount();
  62. if( nPos < 0 || nPos >= nCountOfMenuItems )
  63. return false;
  64. const MENUITEMDATA & mi = ItemGetInfo( nPos );
  65. bool bToolButton = mi.IsToolButton();
  66. return bToolButton;
  67. }
  68. void CExtPopupMenuWnd::ItemToolLayoutSet(
  69. INT nPos,
  70. bool bToolButton // = true
  71. )
  72. {
  73. ASSERT_VALID( this );
  74. ASSERT( GetTrackingMenu() != this );
  75. INT nCountOfMenuItems = ItemGetCount();
  76. if( nPos < 0 || nPos >= nCountOfMenuItems )
  77. return;
  78. MENUITEMDATA & mi = ItemGetInfo( nPos );
  79. mi.SetToolButton( bToolButton );
  80. }
  81. bool CExtPopupMenuWnd::ItemEnabledGet(
  82. INT nPos
  83. ) const
  84. {
  85. ASSERT_VALID( this );
  86. ASSERT( GetTrackingMenu() != this );
  87. INT nCountOfMenuItems = ItemGetCount();
  88. if( nPos < 0 || nPos >= nCountOfMenuItems )
  89. return false;
  90. const MENUITEMDATA & mi = ItemGetInfo( nPos );
  91. bool bEnabled = mi.IsEnabled();
  92. return bEnabled;
  93. }
  94. void CExtPopupMenuWnd::ItemEnabledSet(
  95. INT nPos,
  96. bool bEnabled // = true
  97. )
  98. {
  99. ASSERT_VALID( this );
  100. ASSERT( GetTrackingMenu() != this );
  101. INT nCountOfMenuItems = ItemGetCount();
  102. if( nPos < 0 || nPos >= nCountOfMenuItems )
  103. return;
  104. MENUITEMDATA & mi = ItemGetInfo( nPos );
  105. mi.Enable( bEnabled );
  106. }
  107. bool CExtPopupMenuWnd::ItemBoldGet(
  108. INT nPos
  109. ) const
  110. {
  111. ASSERT_VALID( this );
  112. INT nCountOfMenuItems = ItemGetCount();
  113. if( nPos < 0 || nPos >= nCountOfMenuItems )
  114. return false;
  115. const MENUITEMDATA & mi = ItemGetInfo( nPos );
  116. bool bBold = mi.IsBold();
  117. return bBold;
  118. }
  119. void CExtPopupMenuWnd::ItemBoldSet(
  120. INT nPos,
  121. bool bBold // = true
  122. )
  123. {
  124. ASSERT_VALID( this );
  125. INT nCountOfMenuItems = ItemGetCount();
  126. if( nPos < 0 || nPos >= nCountOfMenuItems )
  127. return;
  128. MENUITEMDATA & mi = ItemGetInfo( nPos );
  129. mi.SetBold( bBold );
  130. }
  131. bool CExtPopupMenuWnd::ItemDefaultGet(
  132. INT nPos
  133. ) const
  134. {
  135. ASSERT_VALID( this );
  136. INT nCountOfMenuItems = ItemGetCount();
  137. if( nPos < 0 || nPos >= nCountOfMenuItems )
  138. return false;
  139. const MENUITEMDATA & mi = ItemGetInfo( nPos );
  140. bool bDefault = mi.IsDefault();
  141. return bDefault;
  142. }
  143. void CExtPopupMenuWnd::ItemDefaultSet(
  144. INT nPos,
  145. bool bDefault // = true
  146. )
  147. {
  148. ASSERT_VALID( this );
  149. INT nCountOfMenuItems = ItemGetCount();
  150. if( nPos < 0 || nPos >= nCountOfMenuItems )
  151. return;
  152. MENUITEMDATA & mi = ItemGetInfo( nPos );
  153. mi.SetDefault( bDefault );
  154. mi.SetBold( bDefault );
  155. }
  156. INT CExtPopupMenuWnd::ItemDefaultFind() const
  157. {
  158. ASSERT_VALID( this );
  159. INT nCountOfMenuItems = ItemGetCount();
  160. if( nCountOfMenuItems == 0 )
  161. return -1;
  162. for( INT nIndex = 0; nIndex < nCountOfMenuItems; nIndex++ )
  163. {
  164. if( ItemDefaultGet( nIndex ) )
  165. return nIndex;
  166. }
  167. return -1;
  168. }
  169. void CExtPopupMenuWnd::ItemDefaultUnset()
  170. {
  171. ASSERT_VALID( this );
  172. INT nCountOfMenuItems = ItemGetCount();
  173. if( nCountOfMenuItems == 0 )
  174. return;
  175. for( INT nIndex = 0; nIndex < nCountOfMenuItems; nIndex++ )
  176. ItemDefaultSet( nIndex, false );
  177. }
  178. bool CExtPopupMenuWnd::ItemEnabledAppearanceGet(
  179. INT nPos
  180. ) const
  181. {
  182. ASSERT_VALID( this );
  183. ASSERT( GetTrackingMenu() != this );
  184. INT nCountOfMenuItems = ItemGetCount();
  185. if( nPos < 0 || nPos >= nCountOfMenuItems )
  186. return false;
  187. const MENUITEMDATA & mi = ItemGetInfo( nPos );
  188. bool bEnabledAppearance = mi.IsEnabledAppearance();
  189. return bEnabledAppearance;
  190. }
  191. void CExtPopupMenuWnd::ItemEnabledAppearanceSet(
  192. INT nPos,
  193. bool bEnabledAppearance // = true
  194. )
  195. {
  196. ASSERT_VALID( this );
  197. ASSERT( GetTrackingMenu() != this );
  198. INT nCountOfMenuItems = ItemGetCount();
  199. if( nPos < 0 || nPos >= nCountOfMenuItems )
  200. return;
  201. MENUITEMDATA & mi = ItemGetInfo( nPos );
  202. mi.SetEnabledAppearance( bEnabledAppearance );
  203. }
  204. BOOL CExtPopupMenuWnd::ItemInsert(
  205. UINT nCmdID, // = TYPE_SEPARATOR,
  206. INT nPos, // = -1 // append
  207. __EXT_MFC_SAFE_LPCTSTR sText, // = NULL // for TYPE_POPUP only
  208. HICON hIcon, // = NULL // for TYPE_POPUP only
  209. HWND hWndSpecCmdReceiver // = NULL // specific command receiver
  210. )
  211. {
  212. ASSERT_VALID( this );
  213. CExtCmdIcon icon;
  214. if( hIcon != NULL )
  215. icon.AssignFromHICON( hIcon, false );
  216. return
  217. ItemInsert(
  218. nCmdID,
  219. nPos,
  220. sText,
  221. icon,
  222. hWndSpecCmdReceiver
  223. );
  224. }
  225. BOOL CExtPopupMenuWnd::ItemInsert(
  226. UINT nCmdID,
  227. INT nPos, // -1 - append
  228. __EXT_MFC_SAFE_LPCTSTR sText, // for TYPE_POPUP only
  229. const CExtCmdIcon & icon, // for TYPE_POPUP only
  230. HWND hWndSpecCmdReceiver // = NULL // specific command receiver
  231. )
  232. {
  233. ASSERT_VALID( this );
  234. ASSERT( GetTrackingMenu() != this );
  235. INT nCountOfMenuItems = ItemGetCount();
  236. if( nPos < 0 )
  237. nPos = nCountOfMenuItems;
  238. if( nPos > nCountOfMenuItems )
  239. {
  240. ASSERT( FALSE );
  241. return FALSE;
  242. }
  243. ASSERT( m_hWndCmdReceiver != NULL );
  244. ASSERT( ::IsWindow(m_hWndCmdReceiver) );
  245. MENUITEMDATA mi( this );
  246. mi.SetCmdReceiver( 
  247. (hWndSpecCmdReceiver != NULL)
  248. ? hWndSpecCmdReceiver
  249. : m_hWndCmdReceiver
  250. );
  251. switch( nCmdID )
  252. {
  253. case TYPE_POPUP:
  254. mi.SetPopup( nPos, sText, icon );
  255. break; // case TYPE_POPUP
  256. case TYPE_SEPARATOR:
  257. mi.SetSeparator( nPos );
  258. break; // case TYPE_SEPARATOR
  259. default:
  260. {
  261. ASSERT( m_hWndCmdReceiver != NULL );
  262. ASSERT( ::IsWindow(m_hWndCmdReceiver) );
  263. CExtCmdItem * pCmdItem =
  264. g_CmdManager->CmdGetPtr(
  265. g_CmdManager->ProfileNameFromWnd(
  266. (hWndSpecCmdReceiver != NULL)
  267. ? hWndSpecCmdReceiver
  268. : m_hWndCmdReceiver
  269. ),
  270. nCmdID
  271. );
  272. ASSERT( pCmdItem != NULL );
  273. if( pCmdItem == NULL )
  274. return FALSE;
  275. VERIFY(
  276. mi.UpdateCmdManagerCommand(
  277. pCmdItem,
  278. nPos
  279. )
  280. );
  281. }
  282. break; // default
  283. } // switch( nCmdID )
  284. if( mi.IsPopup() )
  285. {
  286. ASSERT( mi.GetPopup()->m_pWndParentMenu == NULL ); // still not initialized
  287. mi.GetPopup()->m_pWndParentMenu = this;
  288. ASSERT( !mi.GetPopup()->m_bTopLevel );
  289. }
  290. _InsertItem( nPos, mi );
  291. if( m_bTopLevel )
  292. _SyncItems();
  293. else
  294. {
  295. //ASSERT( m_pWndParentMenu != NULL );
  296. //m_pWndParentMenu->_SyncItems();
  297. if( m_pWndParentMenu != NULL )
  298. m_pWndParentMenu->_SyncItems();
  299. }
  300. return TRUE;
  301. }
  302. BOOL CExtPopupMenuWnd::ItemInsertCommand( // no references to command manager
  303. UINT nCmdID, // = TYPE_SEPARATOR
  304. INT nPos, // = -1 // append
  305. __EXT_MFC_SAFE_LPCTSTR sItemText, // = NULL
  306. __EXT_MFC_SAFE_LPCTSTR sAccelText, // = NULL
  307. HICON hIcon, // = NULL
  308. bool bCopyIcon, // = true
  309. int nCheck, // = 0 // 0 - no check, 1 - checked, 2 - indeterminate, 3 - radio
  310. HWND hWndSpecCmdReceiver // = NULL
  311. )
  312. {
  313. CExtCmdIcon icon;
  314. if( hIcon != NULL )
  315. icon.AssignFromHICON( hIcon, bCopyIcon );
  316. BOOL bRetVal =
  317. ItemInsertCommand(
  318. nCmdID, nPos, sItemText, sAccelText,
  319. icon, nCheck, hWndSpecCmdReceiver
  320. );
  321. return bRetVal;
  322. }
  323. INT CExtPopupMenuWnd::ItemGetIndexOf(
  324. const CExtPopupMenuWnd::MENUITEMDATA * pMII
  325. ) const
  326. {
  327. ASSERT_VALID( this );
  328. if( pMII == NULL
  329. || pMII->GetOwner() != this
  330. )
  331. return -1;
  332. INT nIndex, nCount = ItemGetCount();
  333. for( nIndex = 0; nIndex < nCount; nIndex ++ )
  334. {
  335. const CExtPopupMenuWnd::MENUITEMDATA * pOwnMII = &( ItemGetInfo( nIndex ) );
  336. if( pOwnMII == pMII )
  337. return nIndex;
  338. }
  339. return -1;
  340. }
  341. BOOL CExtPopupMenuWnd::ItemInsertCommand( // no references to command manager
  342. UINT nCmdID,
  343. INT nPos, // -1 append
  344. __EXT_MFC_SAFE_LPCTSTR sItemText, // may be NULL
  345. __EXT_MFC_SAFE_LPCTSTR sAccelText, // may be NULL
  346. const CExtCmdIcon & icon,
  347. int nCheck, // = 0 // 0 - no check, 1 - checked, 2 - indeterminate, 3 - radio
  348. HWND hWndSpecCmdReceiver // = NULL
  349. )
  350. {
  351. ASSERT_VALID( this );
  352. ASSERT( GetTrackingMenu() != this );
  353. INT nCountOfMenuItems = ItemGetCount();
  354. if( nPos < 0 )
  355. nPos = nCountOfMenuItems;
  356. if( nPos > nCountOfMenuItems )
  357. {
  358. ASSERT( FALSE );
  359. return FALSE;
  360. }
  361. ASSERT( m_hWndCmdReceiver != NULL );
  362. ASSERT( ::IsWindow(m_hWndCmdReceiver) );
  363. MENUITEMDATA mi( this );
  364. mi.SetCmdReceiver( 
  365. (hWndSpecCmdReceiver != NULL)
  366. ? hWndSpecCmdReceiver
  367. : m_hWndCmdReceiver
  368. );
  369. mi.SetNoCmdUI( true );
  370. switch( nCmdID )
  371. {
  372. case TYPE_POPUP:
  373. mi.SetPopup(
  374. nPos,
  375. (sItemText == NULL) ? _T("") : sItemText,
  376. NULL
  377. );
  378. mi.SetPopupIcon( icon );
  379. break; // case TYPE_POPUP
  380. case TYPE_SEPARATOR:
  381. mi.SetSeparator( nPos );
  382. break; // case TYPE_SEPARATOR
  383. default:
  384. {
  385. ASSERT( m_hWndCmdReceiver != NULL );
  386. ASSERT( ::IsWindow(m_hWndCmdReceiver) );
  387. mi.SetCmdID( nCmdID );
  388. mi.SetText( (sItemText == NULL) ? _T("") : sItemText );
  389. mi.SetAccelText( (sAccelText == NULL) ? _T("") : sAccelText );
  390. mi.AccelCharInit();
  391. mi.SetPopupIcon( icon );
  392. switch( nCheck )
  393. {
  394. case 1: mi.Check( true ); break;
  395. case 2: mi.Indeterminate( true ); break;
  396. case 3: mi.Radio( true ); break;
  397. } // switch( nCheck )
  398. mi.MeasureItem( NULL );
  399. }
  400. break; // default
  401. } // switch( nCmdID )
  402. mi.SetIndex( nPos );
  403. mi.SetDisplayed( true );
  404. if( mi.IsPopup() )
  405. {
  406. ASSERT( mi.GetPopup()->m_pWndParentMenu == NULL ); // still not initialized
  407. mi.GetPopup()->m_pWndParentMenu = this;
  408. ASSERT( !mi.GetPopup()->m_bTopLevel );
  409. }
  410. _InsertItem( nPos, mi );
  411. if( m_bTopLevel )
  412. _SyncItems();
  413. else
  414. {
  415. if( m_pWndParentMenu != NULL )
  416. m_pWndParentMenu->_SyncItems();
  417. }
  418. return TRUE;
  419. }
  420. void CExtPopupMenuWnd::SetLeftAreaWidth(
  421. UINT nWidth // = 0
  422. )
  423. {
  424. m_nLeftAreaWidth = nWidth;
  425. }
  426. UINT CExtPopupMenuWnd::GetLeftAreaWidth() const
  427. {
  428. return m_nLeftAreaWidth;
  429. }
  430. BOOL CExtPopupMenuWnd::CreatePopupMenu( HWND hWndCmdRecv )
  431. {
  432. ASSERT_VALID( this );
  433. ASSERT( ::IsWindow(hWndCmdRecv) );
  434. ASSERT( GetTrackingMenu() != this );
  435. if( ItemGetCount() != 0 )
  436. ItemRemove( -1 );
  437. if( m_pWndParentMenu != NULL
  438. //|| m_bTopLevel
  439. //|| ItemGetCount() != 0
  440. )
  441. {
  442. // already created
  443. ASSERT( FALSE );
  444. return FALSE;
  445. }
  446. m_sizeFullItems.cx = m_sizeFullItems.cy = 1;
  447. m_bTopLevel = true;
  448. m_pWndParentMenu = NULL;
  449. m_hWndCmdReceiver = hWndCmdRecv;
  450. return TRUE;
  451. }
  452. void CExtPopupMenuWnd::SetCmdTargetToAllItems(
  453. HWND hWndSpecCmdReceiver, // = NULL
  454. bool bOnlyThisLevel // = false
  455. )
  456. {
  457. ASSERT_VALID( this );
  458. ASSERT( GetTrackingMenu() != this );
  459. INT iter = 0;
  460. for( ; iter < m_items_all.GetSize(); iter++)
  461. {
  462. MENUITEMDATA & mi = ItemGetInfo( iter );
  463. if( mi.IsSeparator() )
  464. continue;
  465. if( mi.IsPopup() )
  466. {
  467. if( !bOnlyThisLevel )
  468. mi.GetPopup()->SetCmdTargetToAllItems(
  469. hWndSpecCmdReceiver,
  470. true
  471. );
  472. }
  473. else
  474. {
  475. mi.SetCmdReceiver( hWndSpecCmdReceiver );
  476. }
  477. }
  478. }
  479. //CExtPopupMenuWnd::const_items_container_t &
  480. // CExtPopupMenuWnd::_GetItemsContaner() const
  481. //{
  482. // return m_items_all;
  483. //}
  484. //
  485. //CExtPopupMenuWnd::items_container_t &
  486. // CExtPopupMenuWnd::_GetItemsContaner()
  487. //{
  488. // return m_items_all;
  489. //}
  490. CExtPopupMenuWnd::MENUITEMDATA &
  491. CExtPopupMenuWnd::_GetItemRef(int nIndex)
  492. {
  493. ASSERT_VALID( this );
  494. ASSERT( nIndex >= 0 && nIndex < m_items_all.GetSize() );
  495. MENUITEMDATA & mi = m_items_all.ElementAt( nIndex );
  496. return mi;
  497. }
  498. const CExtPopupMenuWnd::MENUITEMDATA &
  499. CExtPopupMenuWnd::_GetItemRef(int nIndex) const
  500. {
  501. ASSERT_VALID( this );
  502. return
  503. ( const_cast < CExtPopupMenuWnd * > ( this ) ) ->
  504. _GetItemRef( nIndex );
  505. }
  506. void CExtPopupMenuWnd::_InsertItem(
  507. int nInsertBefore,
  508. MENUITEMDATA & mi,
  509. bool bNoRefToCmdMngr // = false
  510. )
  511. {
  512. ASSERT_VALID( this );
  513. bNoRefToCmdMngr;
  514. m_items_all.InsertAt(
  515. (nInsertBefore < 0)
  516. ? m_items_all.GetSize()
  517. : nInsertBefore
  518. ,
  519. mi
  520. );
  521. }
  522. void CExtPopupBaseWnd::_EndAnimation()
  523. {
  524. ASSERT_VALID( this );
  525. _SurfacesDelete();
  526. }
  527. void CExtPopupMenuWnd::_EndAnimation()
  528. {
  529. ASSERT_VALID( this );
  530. CExtPopupBaseWnd::_EndAnimation();
  531. Invalidate( FALSE );
  532. _SetCapture();
  533. if( _IsPopupWithShadowsDynamic() )
  534. {
  535. if( m_bHelperReCreateDynamicShadowAtTheEndOfNearestAnimation
  536. && m_ctrlShadow.GetSafeHwnd() != NULL
  537. )
  538. m_ctrlShadow.DestroyWindow();
  539. m_bHelperReCreateDynamicShadowAtTheEndOfNearestAnimation = false;
  540. if( m_ctrlShadow.GetSafeHwnd() == NULL )
  541. m_ctrlShadow.Create( m_hWnd, PmBridge_GetPM()->GetMenuShadowSize() );
  542. }
  543. }
  544. bool CExtPopupBaseWnd::_IsPopupWithShadows() const
  545. {
  546. if( ! CExtPopupMenuWnd::g_bMenuWithShadows )
  547. return false;
  548. if( m_ctrlShadow.IsAvailable() )
  549. return false;
  550. return true;
  551. }
  552. bool CExtPopupBaseWnd::_IsPopupWithShadowsDynamic() const
  553. {
  554. if( ! CExtPopupMenuWnd::g_bMenuWithShadows )
  555. return false;
  556. if( ! m_ctrlShadow.IsAvailable() )
  557. return false;
  558. return true;
  559. }
  560. bool CExtPopupMenuWnd::_IsPopupWithShadows() const
  561. {
  562. if( ! CExtPopupBaseWnd::_IsPopupWithShadows() )
  563. return false;
  564. DWORD dwTrackFlags = TrackFlagsGet();
  565. if( ( dwTrackFlags & TPMX_NO_SHADOWS ) != 0 )
  566. return false;
  567. // if( ( dwTrackFlags & TPMX_NO_DYNAMIC_SHADOWS ) == 0 )
  568. // return false; // replacement with dynamic shadow
  569. return true;
  570. }
  571. bool CExtPopupMenuWnd::_IsPopupWithShadowsDynamic() const
  572. {
  573. DWORD dwTrackFlags = TrackFlagsGet();
  574. if( ( dwTrackFlags & TPMX_NO_DYNAMIC_SHADOWS ) != 0 )
  575. return false;
  576. return CExtPopupBaseWnd::_IsPopupWithShadowsDynamic();
  577. }
  578. bool CExtPopupMenuWnd::_IsRibbonMode() const
  579. {
  580. DWORD dwTrackFlags = TrackFlagsGet();
  581. if( dwTrackFlags & TPMX_RIBBON_MODE )
  582. return true;
  583. if( m_pWndParentMenu != NULL )
  584. return m_pWndParentMenu->_IsRibbonMode();
  585. return false;
  586. }
  587. bool CExtPopupBaseWnd::_IsFadeOutAnimation() const
  588. {
  589. return false;
  590. }
  591. bool CExtPopupMenuWnd::_IsFadeOutAnimation() const
  592. {
  593. if( _ItemFocusChangingIsInProgress() )
  594. return false;
  595. if( ! g_PaintManager.m_bIsWin2000orLater )
  596. return false;
  597. if( g_PaintManager.m_pfnSetLayeredWindowAttributes == NULL )
  598. return false;
  599. if( m_nFadeOutAnimationStepCount <= 0
  600. || m_nFadeOutAnimationEllapse <= 0
  601. )
  602. return false;
  603. const CExtPopupMenuWnd * pTLP = GetTopLevelMenuWnd();
  604. if( pTLP == NULL )
  605. return false;
  606. DWORD dwTrackFlags = pTLP->TrackFlagsGet();
  607. if( dwTrackFlags & TPMX_NO_FADE_OUT_ANIMATION )
  608. return false;
  609. #if (!defined __EXT_MFC_NO_RIBBON_BAR)
  610. if( m_hWndNotifyMenuClosed != NULL
  611. && ::IsWindow( m_hWndNotifyMenuClosed )
  612. )
  613. {
  614. CWnd * pWnd = CWnd::FromHandlePermanent( m_hWndNotifyMenuClosed );
  615. if( pWnd != NULL )
  616. {
  617. CExtRibbonPage * pRibbonPage = DYNAMIC_DOWNCAST( CExtRibbonPage, pWnd );
  618. if( pRibbonPage != NULL
  619. && pRibbonPage->m_bHelperPopupMode
  620. )
  621. return false;
  622. }
  623. }
  624. #endif // (!defined __EXT_MFC_NO_RIBBON_BAR)
  625. if( dwTrackFlags & TPMX_RIBBON_MODE )
  626. return true;
  627. if( m_pWndParentMenu != NULL )
  628. return m_pWndParentMenu->_IsFadeOutAnimation();
  629. return false;
  630. }
  631. int CExtPopupBaseWnd::OnQueryMenuShadowSize() const
  632. {
  633. if( ! _IsPopupWithShadows() )
  634. return 0;
  635. //int nBitsPerPixel = CExtPaintManager::stat_GetBPP();
  636. // if( nBitsPerPixel <= 8 )
  637. // return 0;
  638. return PmBridge_GetPM()->GetMenuShadowSize();
  639. };
  640. #if (!defined __EXT_MFC_NO_CUSTOMIZE)
  641. void CExtPopupMenuWnd::_SetDropIndexBefore(
  642. int nIndex // = -1 // reset
  643. )
  644. {
  645. ASSERT_VALID( this );
  646. if( m_nHelperDropIndexBefore == nIndex )
  647. return;
  648. m_nHelperDropIndexBefore = nIndex;
  649. if( GetSafeHwnd() == NULL
  650. || (! ::IsWindow(GetSafeHwnd()) )
  651. )
  652. return;
  653. CClientDC dc( this );
  654. _DoPaint( dc );
  655. }
  656. // CExtCustomizeSite::ICustomizeDropTarget
  657. DROPEFFECT CExtPopupMenuWnd::OnCustomizeTargetOver(
  658. CExtCustomizeSite::CCmdDragInfo & _dragInfo,
  659. CPoint point,
  660. DWORD dwKeyState
  661. )
  662. {
  663. ASSERT_VALID( this );
  664. ASSERT( !_dragInfo.IsEmpty() );
  665. dwKeyState;
  666. point;
  667. if( _IsPalette() )
  668. return DROPEFFECT_NONE;
  669. if( m_pDragSrcNode != NULL )
  670. m_bHelperDragOverPassed = true;
  671. ASSERT_VALID( m_pNode );
  672. ASSERT_VALID( _dragInfo.m_pDropNodeC );
  673. if( m_pNode == _dragInfo.m_pDropNodeC
  674. || _dragInfo.m_pDropNodeC->IsChild( m_pNode )
  675. )
  676. return DROPEFFECT_NONE;
  677. // _DoResetChainPositions();
  678. if( ItemGetCount() == 0 )
  679. {
  680. if( (dwKeyState & MK_CONTROL) != NULL )
  681. return DROPEFFECT_COPY;
  682. return DROPEFFECT_MOVE;
  683. }
  684. int nIndex = _HitTest( point );
  685. if( nIndex < 0 )
  686. {
  687. if( nIndex == IDX_SCROLL_TOP
  688. || nIndex == IDX_SCROLL_BOTTOM
  689. )
  690. {
  691. HWND hWndOwn = m_hWnd;
  692. if( ! ::IsWindow( hWndOwn ) )
  693. return DROPEFFECT_NONE;
  694. _StartScrolling( nIndex );
  695. if( ! ::IsWindow( hWndOwn ) )
  696. return DROPEFFECT_NONE;
  697. }
  698. _SetDropIndexBefore();
  699. return DROPEFFECT_NONE;
  700. }
  701. MENUITEMDATA & miPreTest = CExtPopupMenuWnd::ItemGetInfo( nIndex );
  702. if( miPreTest.IsSeparator() )
  703. {
  704. if( nIndex == 0 )
  705. {
  706. ASSERT( FALSE );
  707. _SetDropIndexBefore();
  708. _ItemFocusCancel( TRUE );
  709. return DROPEFFECT_NONE;
  710. } // if( nIndex == 0 )
  711. nIndex--;
  712. } // if( miPreTest.IsSeparator() )
  713. MENUITEMDATA & mi = CExtPopupMenuWnd::ItemGetInfo( nIndex );
  714. if( mi.IsSeparator() )
  715. {
  716. ASSERT( FALSE );
  717. _SetDropIndexBefore();
  718. _ItemFocusCancel( TRUE );
  719. return DROPEFFECT_NONE;
  720. } // if( mi.IsSeparator() )
  721. CRect rcItem;
  722. _GetItemRect( nIndex, rcItem );
  723. int nMidY = rcItem.CenterPoint().y;
  724. if( point.y > nMidY )
  725. nIndex++;
  726. _SetDropIndexBefore( nIndex );
  727. if( mi.IsPopup() )
  728. {
  729. HWND hWndOwn = m_hWnd;
  730. _ItemFocusSet( mi.GetIndex(), TRUE, TRUE, FALSE );
  731. if( ! ::IsWindow( hWndOwn ) )
  732. return DROPEFFECT_NONE;
  733. }
  734. else
  735. {
  736. HWND hWndOwn = m_hWnd;
  737. _ItemFocusCancel( TRUE );
  738. if( ! ::IsWindow( hWndOwn ) )
  739. return DROPEFFECT_NONE;
  740. }
  741. if( (dwKeyState & MK_CONTROL) != NULL )
  742. return DROPEFFECT_COPY;
  743. return DROPEFFECT_MOVE;
  744. }
  745. void CExtPopupMenuWnd::OnCustomizeTargetLeave()
  746. {
  747. ASSERT_VALID( this );
  748. if( _IsPalette() )
  749. return;
  750. _SetDropIndexBefore();
  751. }
  752. bool CExtPopupMenuWnd::OnCustomizeTargetDrop(
  753. CExtCustomizeSite::CCmdDragInfo & _dragInfo,
  754. CPoint point,
  755. DROPEFFECT de
  756. )
  757. {
  758. ASSERT_VALID( this );
  759. ASSERT( !_dragInfo.IsEmpty() );
  760. _dragInfo;
  761. point;
  762. ASSERT(
  763. de == DROPEFFECT_NONE
  764. || de == DROPEFFECT_MOVE
  765. || de == DROPEFFECT_COPY
  766. );
  767. if( _IsPalette() )
  768. return false;
  769. int nItemCount = ItemGetCount();
  770. if( de == DROPEFFECT_NONE
  771. || ( nItemCount > 0 && m_nHelperDropIndexBefore < 0 )
  772. )
  773. {
  774. _SetDropIndexBefore();
  775. m_ptHelperDragStart.x = m_ptHelperDragStart.y = 0;
  776. return false;
  777. }
  778. CExtCustomizeSite * pSite = _FindCustomizeSite();
  779. ASSERT( pSite != NULL );
  780. ASSERT_VALID( m_pNode );
  781. ASSERT_VALID( _dragInfo.m_pDropNodeC );
  782. bool bRetVal = true;
  783. m_bHelperNoHideChild = true;
  784. int nNodeInsertPos = -1;
  785. CExtCustomizeCmdTreeNode * pClonedNode = _dragInfo.m_pDropNodeC->CloneNode( pSite );
  786. ASSERT_VALID( pClonedNode );
  787. if( _dragInfo.m_pDropNodeI != NULL )
  788. {
  789. ASSERT_VALID( _dragInfo.m_pDropNodeI );
  790. // reset basic command ID
  791. pClonedNode->SetCmdID( _dragInfo.m_pDropNodeI->GetCmdID( false ), false );
  792. pClonedNode->SetCmdID( _dragInfo.m_pDropNodeC->GetCmdID( true ), true );
  793. } // if( _dragInfo.m_pDropNodeI != NULL )
  794. if( nItemCount == 0 )
  795. {
  796. nNodeInsertPos = 0;
  797. pClonedNode->ModifyFlags( 0, __ECTN_GROUP_START );
  798. } // if( nItemCount == 0 )
  799. else
  800. {
  801. ASSERT( m_nHelperDropIndexBefore >= 0 && m_nHelperDropIndexBefore <= nItemCount );
  802. if( m_nHelperDropIndexBefore == nItemCount )
  803. {
  804. nNodeInsertPos = m_pNode->GetNodeCount();
  805. } // if( m_nHelperDropIndexBefore == nItemCount )
  806. else
  807. {
  808. if( m_nHelperDropIndexBefore == 0 )
  809. pClonedNode->ModifyFlags( 0, __ECTN_GROUP_START );
  810. MENUITEMDATA & miDropPos = ItemGetInfo( m_nHelperDropIndexBefore );
  811. bool bDropPosIsExactlyBeforeSeparator = miDropPos.IsSeparator();
  812. CExtCustomizeCmdTreeNode * pDropBeforeNode =
  813. bDropPosIsExactlyBeforeSeparator
  814. ? ( ItemGetInfo( m_nHelperDropIndexBefore + 1 ).GetCmdNode() )
  815. : ( miDropPos.GetCmdNode() )
  816. ;
  817. ASSERT_VALID( pDropBeforeNode );
  818. nNodeInsertPos = pDropBeforeNode->GetOwnIndex();
  819. if( (! bDropPosIsExactlyBeforeSeparator ) && (pDropBeforeNode->GetFlags() & __ECTN_GROUP_START) != 0 )
  820. {
  821. ASSERT( m_nHelperDropIndexBefore > 0 );
  822. pClonedNode->ModifyFlags( __ECTN_GROUP_START, 0 );
  823. pDropBeforeNode->ModifyFlags( 0, __ECTN_GROUP_START );
  824. }
  825. if( m_pDragSrcNode != NULL )
  826. {
  827. ASSERT( 0 <= m_nDragSrcIdx && m_nDragSrcIdx < nItemCount );
  828. if( pDropBeforeNode == m_pDragSrcNode )
  829. {
  830. delete pClonedNode;
  831. _SetDropIndexBefore();
  832. ASSERT( m_nDragSrcIdx >= 0 && m_nDragSrcIdx < nItemCount );
  833. HWND hWndOwn = m_hWnd;
  834. _ItemFocusSet( m_nDragSrcIdx, TRUE, TRUE, FALSE );
  835. if( ! ::IsWindow( hWndOwn ) )
  836. return true;
  837. m_bHelperNoHideChild = true;
  838. CClientDC dc( this );
  839. _DoPaint( dc );
  840. m_bHelperNoRemoveSrc = true;
  841. return true;
  842. } // if( pDropBeforeNode == m_pDragSrcNode )
  843. int nDragNodeIdx = m_pDragSrcNode->GetOwnIndex();
  844. if( nDragNodeIdx > 0 )
  845. {
  846. CExtCustomizeCmdTreeNode * pDragNodePr = 
  847. m_pDragSrcNode->GetParentNode()->ElementAt( nDragNodeIdx-1 );
  848. ASSERT_VALID( pDragNodePr );
  849. if( pDragNodePr == m_pDragSrcNode )
  850. {
  851. delete pClonedNode;
  852. _SetDropIndexBefore();
  853. ASSERT( m_nDragSrcIdx >= 0 && m_nDragSrcIdx < nItemCount );
  854. HWND hWndOwn = m_hWnd;
  855. _ItemFocusSet( m_nDragSrcIdx, TRUE, TRUE, FALSE );
  856. if( ! ::IsWindow( hWndOwn ) )
  857. return true;
  858. m_bHelperNoHideChild = true;
  859. CClientDC dc( this );
  860. _DoPaint( dc );
  861. m_bHelperNoRemoveSrc = true;
  862. return true;
  863. } // if( pDragNodePr == m_pDragSrcNode )
  864. } // if( nDragNodeIdx > 0 )
  865. } // if( m_pDragSrcNode != NULL )
  866. } // else from if( m_nHelperDropIndexBefore == nItemCount )
  867. } // else from if( nItemCount == 0 )
  868. HWND hWndOwn = m_hWnd;
  869. _ItemFocusCancel( TRUE );
  870. if( ! ::IsWindow( hWndOwn ) )
  871. return true;
  872. ASSERT( 0 <= nNodeInsertPos && nNodeInsertPos <= m_pNode->GetNodeCount() );
  873. m_pNode->InsertNode( pSite, pClonedNode, nNodeInsertPos );
  874. MENUITEMDATA mi( this );
  875. mi.SetCmdReceiver( m_hWndCmdReceiver );
  876. VERIFY(
  877. mi.UpdateFromCmdTree(
  878. m_hWndCmdReceiver,
  879. pClonedNode,
  880. m_nHelperDropIndexBefore
  881. )
  882. );
  883. if( mi.IsPopup() )
  884. {
  885. mi.GetPopup()->m_hWndCmdReceiver = m_hWndCmdReceiver;
  886. mi.GetPopup()->UpdateFromCmdTree(
  887. m_hWndCmdReceiver,
  888. pClonedNode,
  889. false
  890. );
  891. mi.GetPopup()->m_pWndParentMenu = this;
  892. } // if( mi.IsPopup() )
  893. ASSERT( !mi.IsSeparator() );
  894. ASSERT( ((LPVOID)mi.GetCmdNode()) == ((LPVOID)pClonedNode) );
  895. _InsertItem( m_nHelperDropIndexBefore, mi );
  896. _SyncItems();
  897. ShowWindow( SW_HIDE );
  898. _RecalcLayoutImpl();
  899. VERIFY( SetWindowRgn( NULL, FALSE ) );
  900. ASSERT( !IsWindowVisible() );
  901. _FreeWinObjects();
  902. // adjust screen position
  903. CRect rcWnd = _CalcTrackRect();
  904. if( m_rgnWnd.GetSafeHandle() != NULL )
  905. {
  906. ASSERT( m_bExcludeAreaSpec );
  907. ASSERT( m_bCombineWithEA );
  908. ASSERT( m_eCombineAlign != __CMBA_NONE );
  909. CRgn rgnTmp;
  910. VERIFY( rgnTmp.CreateRectRgn(0,0,0,0) );
  911. rgnTmp.CopyRgn( &m_rgnWnd );
  912. ASSERT( rgnTmp.GetSafeHandle() != NULL );
  913. VERIFY(
  914. SetWindowRgn(
  915. (HRGN)rgnTmp.Detach(),
  916. FALSE
  917. )
  918. );
  919. } // if( m_rgnWnd.GetSafeHandle() != NULL )
  920. SetWindowPos(
  921. NULL,
  922. rcWnd.left, rcWnd.top, rcWnd.Width(), rcWnd.Height(),
  923. SWP_NOACTIVATE
  924. |SWP_NOZORDER //|SWP_NOOWNERZORDER
  925. );
  926. if( m_bScrollingAvailable )
  927. _RecalcLayoutImpl();
  928. ShowWindow( SW_SHOWNA );
  929. _SetDropIndexBefore();
  930. m_ptHelperDragStart.x = m_ptHelperDragStart.y = 0;
  931. return bRetVal;
  932. }
  933. // CExtCustomizeSite::ICustomizeDropSource
  934. void CExtPopupMenuWnd::OnCustomizeSourceDragComplete(
  935. DROPEFFECT de,
  936. bool bCanceled,
  937. bool * p_bNoResetActiveItem
  938. )
  939. {
  940. ASSERT_VALID( this );
  941. ASSERT(
  942. de == DROPEFFECT_NONE
  943. || de == DROPEFFECT_MOVE
  944. || de == DROPEFFECT_COPY
  945. );
  946. if( _IsPalette() )
  947. return;
  948. ASSERT( p_bNoResetActiveItem != NULL );
  949. // if( m_ptHelperDragStart.y != 0
  950. // && m_bHelperNoHideChild
  951. // && de != DROPEFFECT_NONE
  952. // )
  953. // {
  954. // m_ptHelperDragStart.x = m_ptHelperDragStart.y = 0;
  955. // return;
  956. // }
  957. m_ptHelperDragStart.x = m_ptHelperDragStart.y = 0;
  958. if( de == DROPEFFECT_NONE )
  959. _ItemFocusCancel( TRUE );
  960. if( GetSafeHwnd() != NULL && (!m_bHelperNoHideChild) )
  961. {
  962. HWND hWndOwn = m_hWnd;
  963. _ItemFocusCancel( TRUE );
  964. if( ! ::IsWindow( hWndOwn ) )
  965. return;
  966. }
  967. m_bHelperNoHideChild = false;
  968. CExtCustomizeSite * pSite = _FindCustomizeSite();
  969. ASSERT( pSite != NULL );
  970. if( (!m_bHelperDragOverPassed)
  971. && m_pDragSrcNode != NULL
  972. )
  973. m_bHelperNoRemoveSrc = true;
  974. if( bCanceled || m_bHelperNoRemoveSrc || de == DROPEFFECT_COPY )
  975. {
  976. m_bHelperNoRemoveSrc = false;
  977. if( pSite->IsCustomizeMode() )
  978. *p_bNoResetActiveItem = true;
  979. return;
  980. } // if( bCanceled || de == DROPEFFECT_COPY || m_bHelperAddRemSeparator )
  981. CExtCustomizeCmdTreeNode * pNode = pSite->DraggedNodeGet();
  982. ASSERT_VALID( pNode );
  983. ASSERT_VALID( m_pNode );
  984. ASSERT( ((LPVOID)pNode->GetParentNode()) == ((LPVOID)m_pNode) );
  985. int nItemCount = ItemGetCount();
  986. bool bPrevSeparator = false;
  987. int nItem = 0;
  988. for( nItem = 0; nItem < nItemCount; nItem++ )
  989. {
  990. MENUITEMDATA & mi = ItemGetInfo( nItem );
  991. if( mi.IsSeparator() )
  992. {
  993. ASSERT( !bPrevSeparator );
  994. bPrevSeparator = true;
  995. continue;
  996. }
  997. CExtCustomizeCmdTreeNode * pCurrNode = mi.GetCmdNode();
  998. ASSERT_VALID( pCurrNode );
  999. if( ((LPVOID)pCurrNode) == ((LPVOID)pNode) )
  1000. break;
  1001. bPrevSeparator = false;
  1002. } // for( nItem = 0; nItem < nItemCount; nItem++ )
  1003. ASSERT( nItem < nItemCount ); // should be found
  1004. if( bPrevSeparator )
  1005. {
  1006. // ASSERT( (pNode->GetFlags() & __ECTN_GROUP_START) != 0 );
  1007. MENUITEMDATA & miRemove2 = ItemGetInfo( nItem );
  1008. if( miRemove2.IsPopup() )
  1009. miRemove2.DestroyPopup();
  1010. pNode->ModifyFlags( __ECTN_GROUP_START, 0 );
  1011. ASSERT( nItem > 0 );
  1012. MENUITEMDATA & miRemove = ItemGetInfo( nItem-1 );
  1013. ASSERT( miRemove.IsSeparator() );
  1014. pNode->ModifyFlags( 0, __ECTN_GROUP_START );
  1015. m_items_all.RemoveAt( nItem-1, 2 );
  1016. m_nCurIndex = -1;
  1017. nItemCount -= 2;
  1018. } // if( bPrevSeparator )
  1019. else
  1020. {
  1021. // ASSERT( (pNode->GetFlags() & __ECTN_GROUP_START) == 0 );
  1022. pNode->ModifyFlags( 0, __ECTN_GROUP_START );
  1023. MENUITEMDATA & miRemove = ItemGetInfo( nItem );
  1024. if( miRemove.IsPopup() )
  1025. miRemove.DestroyPopup();
  1026. m_items_all.RemoveAt( nItem, 1 );
  1027. m_nCurIndex = -1;
  1028. nItemCount--;
  1029. } // else from if( bPrevSeparator )
  1030. CExtCmdItem * pCmdItem =
  1031. g_CmdManager->CmdGetPtr(
  1032. g_CmdManager->ProfileNameFromWnd(m_hWnd),
  1033. pNode->GetCmdID( false )
  1034. );
  1035. ASSERT( pCmdItem != NULL );
  1036. pNode->RemoveSelf( pCmdItem );
  1037. pSite->DraggedNodeSet( NULL );
  1038. if( nItemCount > 0
  1039. && ItemGetInfo(0).IsSeparator()
  1040. )
  1041. {
  1042. m_items_all.RemoveAt( 0, 1 );
  1043. m_nCurIndex = -1;
  1044. m_pNode->ElementAt(0)->ModifyFlags( 0, __ECTN_GROUP_START );
  1045. nItemCount--;
  1046. } // if( nItemCount > 0 ...
  1047. if( nItemCount > 0
  1048. && ItemGetInfo(nItemCount-1).IsSeparator()
  1049. )
  1050. {
  1051. m_items_all.RemoveAt( nItemCount-1, 1 );
  1052. m_nCurIndex = -1;
  1053. nItemCount--;
  1054. } // if( nItemCount > 0 ...
  1055. _SyncItems();
  1056. _SetDropIndexBefore();
  1057. if( m_hWnd == NULL || (! ::IsWindow(m_hWnd) ) )
  1058. return;
  1059. ShowWindow( SW_HIDE );
  1060. _RecalcLayoutImpl();
  1061. VERIFY( SetWindowRgn( NULL, FALSE ) );
  1062. ASSERT( !IsWindowVisible() );
  1063. _FreeWinObjects();
  1064. // adjust screen position
  1065. CRect rcWnd = _CalcTrackRect();
  1066. if( m_rgnWnd.GetSafeHandle() != NULL )
  1067. {
  1068. ASSERT( m_bExcludeAreaSpec );
  1069. ASSERT( m_bCombineWithEA );
  1070. ASSERT( m_eCombineAlign != __CMBA_NONE );
  1071. CRgn rgnTmp;
  1072. VERIFY( rgnTmp.CreateRectRgn(0,0,0,0) );
  1073. rgnTmp.CopyRgn( &m_rgnWnd );
  1074. ASSERT( rgnTmp.GetSafeHandle() != NULL );
  1075. VERIFY(
  1076. SetWindowRgn(
  1077. (HRGN)rgnTmp.Detach(),
  1078. FALSE
  1079. )
  1080. );
  1081. } // if( m_rgnWnd.GetSafeHandle() != NULL )
  1082. SetWindowPos(
  1083. NULL,
  1084. rcWnd.left, rcWnd.top, rcWnd.Width(), rcWnd.Height(),
  1085. SWP_NOACTIVATE
  1086. |SWP_NOZORDER //|SWP_NOOWNERZORDER
  1087. );
  1088. if( m_bScrollingAvailable )
  1089. _RecalcLayoutImpl();
  1090. ShowWindow( SW_SHOWNA );
  1091. }
  1092. #endif // (!defined __EXT_MFC_NO_CUSTOMIZE)
  1093. /////////////////////////////////////////////////////////////////////////////
  1094. // CExtPopupColorMenuWnd
  1095. IMPLEMENT_DYNCREATE(CExtPopupColorMenuWnd, CExtPopupMenuWnd)
  1096. BEGIN_MESSAGE_MAP(CExtPopupColorMenuWnd, CExtPopupMenuWnd)
  1097. //{{AFX_MSG_MAP(CExtPopupColorMenuWnd)
  1098. //}}AFX_MSG_MAP
  1099.     ON_WM_QUERYNEWPALETTE()
  1100.     ON_WM_PALETTECHANGED()
  1101. END_MESSAGE_MAP()
  1102. const UINT CExtPopupColorMenuWnd::g_nMsgNotifyColorChanged =
  1103. ::RegisterWindowMessage(
  1104. _T("CExtPopupColorMenuWnd::g_nMsgNotifyColorChanged")
  1105. );
  1106. const UINT CExtPopupColorMenuWnd::g_nMsgNotifyColorChangedFinally =
  1107. ::RegisterWindowMessage(
  1108. _T("CExtPopupColorMenuWnd::g_nMsgNotifyColorChangedFinally")
  1109. );
  1110. const UINT CExtPopupColorMenuWnd::g_nMsgNotifyCustColor =
  1111. ::RegisterWindowMessage(
  1112. _T("CExtPopupColorMenuWnd::g_nMsgNotifyCustColor")
  1113. );
  1114. #define __N_CLR_DX             8
  1115. #define __N_CLR_DY             5
  1116. #define __N_CLR_COUNT          (__N_CLR_DX*__N_CLR_DY)
  1117. CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY::COLORREF_TABLE_ENTRY()
  1118. : m_clrValue( RGB(0,0,0) )
  1119. , m_nStrTblResID( 0 )
  1120. {
  1121. }
  1122. CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY::COLORREF_TABLE_ENTRY(
  1123. const CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY & other
  1124. )
  1125. : m_clrValue( RGB(0,0,0) )
  1126. , m_nStrTblResID( 0 )
  1127. {
  1128. _AssignFromOther( other );
  1129. }
  1130. CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY::COLORREF_TABLE_ENTRY(
  1131. UINT     nStrTblResID,
  1132. COLORREF clrValue,
  1133. __EXT_MFC_SAFE_LPCTSTR strColorNameEnglish
  1134. )
  1135. : m_clrValue( clrValue )
  1136. , m_strColorNameEnglish( strColorNameEnglish )
  1137. , m_nStrTblResID( nStrTblResID )
  1138. {
  1139. nStrTblResID;
  1140. }
  1141. CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY::~COLORREF_TABLE_ENTRY()
  1142. {
  1143. }
  1144. CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY &
  1145. CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY:: operator = (
  1146. const CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY & other
  1147. )
  1148. {
  1149. _AssignFromOther( other );
  1150. return (*this);
  1151. }
  1152. void CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY::_AssignFromOther(
  1153. const CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY & other
  1154. )
  1155. {
  1156. m_nStrTblResID = other.m_nStrTblResID;
  1157. m_clrValue = other.m_clrValue;
  1158. m_strColorNameEnglish = other.m_strColorNameEnglish;
  1159. }
  1160. CExtSafeString CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY::GetLocalColorName() const
  1161. {
  1162. __PROF_UIS_MANAGE_STATE;
  1163. CExtSafeString _sColorNameLocal;
  1164. if( m_nStrTblResID != 0 )
  1165. {
  1166. g_ResourceManager->LoadString( _sColorNameLocal, m_nStrTblResID );
  1167. if( ! _sColorNameLocal.IsEmpty() )
  1168. return _sColorNameLocal;
  1169. }
  1170. return CExtSafeString( m_strColorNameEnglish );
  1171. }
  1172. // table captured from color picker
  1173. // control source by Chris Maunder
  1174. const CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY
  1175. CExtPopupColorMenuWnd::g_arrDefaultColors[ 40 ] =
  1176. {
  1177.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_BLACK,            RGB(0x00, 0x00, 0x00),    _T("Black")             ),
  1178.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_BROWN,            RGB(0xA5, 0x2A, 0x00),    _T("Brown")             ),
  1179.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_OLIVE_GREEN, RGB(0x00, 0x40, 0x40),    _T("Dark Olive Green")  ),
  1180.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_GREEN,       RGB(0x00, 0x55, 0x00),    _T("Dark Green")        ),
  1181.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_TEAL,        RGB(0x00, 0x00, 0x5E),    _T("Dark Teal")         ),
  1182.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_BLUE,        RGB(0x00, 0x00, 0x8B),    _T("Dark blue")         ),
  1183.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_INDIGO,           RGB(0x4B, 0x00, 0x82),    _T("Indigo")            ),
  1184.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_GREY,        RGB(0x28, 0x28, 0x28),    _T("Dark grey")         ),
  1185.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_RED,         RGB(0x8B, 0x00, 0x00),    _T("Dark red")          ),
  1186.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_ORANGE,           RGB(0xFF, 0x68, 0x20),    _T("Orange")            ),
  1187.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_YELLOW,      RGB(0x8B, 0x8B, 0x00),    _T("Dark yellow")       ),
  1188.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_GREEN,            RGB(0x00, 0x93, 0x00),    _T("Green")             ),
  1189.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_TEAL,             RGB(0x38, 0x8E, 0x8E),    _T("Teal")              ),
  1190.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_BLUE,             RGB(0x00, 0x00, 0xFF),    _T("Blue")              ),
  1191.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_BLUE_GREY,        RGB(0x7B, 0x7B, 0xC0),    _T("Blue-grey")         ),
  1192.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_GREY_50,          RGB(0x66, 0x66, 0x66),    _T("Grey - 50")         ),
  1193.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_RED,              RGB(0xFF, 0x00, 0x00),    _T("Red")               ),
  1194.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_LIGHT_ORANGE,     RGB(0xFF, 0xAD, 0x5B),    _T("Light orange")      ),
  1195.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_LIME,             RGB(0x32, 0xCD, 0x32),    _T("Lime")              ), 
  1196.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_SEA_GREEN,        RGB(0x3C, 0xB3, 0x71),    _T("Sea green")         ),
  1197.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_AQUA,             RGB(0x7F, 0xFF, 0xD4),    _T("Aqua")              ),
  1198.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_LIGHT_BLUE,       RGB(0x7D, 0x9E, 0xC0),    _T("Light blue")        ),
  1199.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_VIOLET,           RGB(0x80, 0x00, 0x80),    _T("Violet")            ),
  1200.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_GREY_40,          RGB(0x7F, 0x7F, 0x7F),    _T("Grey - 40")         ),
  1201.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_PINK,             RGB(0xFF, 0xC0, 0xCB),    _T("Pink")              ),
  1202.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_GOLD,             RGB(0xFF, 0xD7, 0x00),    _T("Gold")              ),
  1203.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_YELLOW,           RGB(0xFF, 0xFF, 0x00),    _T("Yellow")            ),    
  1204.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_BRIGHT_GREEN,     RGB(0x00, 0xFF, 0x00),    _T("Bright green")      ),
  1205.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_TURQUOISE,        RGB(0x40, 0xE0, 0xD0),    _T("Turquoise")         ),
  1206.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_SKYBLUE,          RGB(0xC0, 0xFF, 0xFF),    _T("Skyblue")           ),
  1207.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_PLUM,             RGB(0x48, 0x00, 0x48),    _T("Plum")              ),
  1208.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_LIGHT_GREY,       RGB(0xC0, 0xC0, 0xC0),    _T("Light grey")        ),
  1209.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_ROSE,             RGB(0xFF, 0xE4, 0xE1),    _T("Rose")              ),
  1210.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_TAN,              RGB(0xD2, 0xB4, 0x8C),    _T("Tan")               ),
  1211.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_LIGHT_YELLOW,     RGB(0xFF, 0xFF, 0xE0),    _T("Light yellow")      ),
  1212.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_PALE_GREEN,       RGB(0x98, 0xFB, 0x98),    _T("Pale green ")       ),
  1213.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_PALE_TURQUOISE,   RGB(0xAF, 0xEE, 0xEE),    _T("Pale turquoise")    ),
  1214.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_PALE_BLUE,        RGB(0x68, 0x83, 0x8B),    _T("Pale blue")         ),
  1215.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_LAVENDER,         RGB(0xE6, 0xE6, 0xFA),    _T("Lavender")          ),
  1216.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_WHITE,            RGB(0xFF, 0xFF, 0xFF),    _T("White")             ),
  1217. };
  1218. const CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY
  1219. CExtPopupColorMenuWnd::g_arrDefaultColorsLess[ 16 ] =
  1220. {
  1221.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_BLACK,            RGB(0x00, 0x00, 0x00),    _T("Black")             ),
  1222.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_GREY_50,          RGB(0x66, 0x66, 0x66),    _T("Grey - 50")         ),
  1223.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_RED,         RGB(0x8B, 0x00, 0x00),    _T("Dark red")          ),
  1224.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_YELLOW,      RGB(0x8B, 0x8B, 0x00),    _T("Dark yellow")       ),
  1225.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_GREEN,            RGB(0x00, 0x93, 0x00),    _T("Green")             ),
  1226.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_INDIGO,           RGB(0x4B, 0x00, 0x82),    _T("Indigo")            ),
  1227.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_BLUE,        RGB(0x00, 0x00, 0x8B),    _T("Dark blue")         ),
  1228.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_DARK_TEAL,        RGB(0x00, 0x00, 0x5E),    _T("Dark Teal")         ),
  1229.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_WHITE,            RGB(0xFF, 0xFF, 0xFF),    _T("White")             ),
  1230.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_LIGHT_GREY,       RGB(0xC0, 0xC0, 0xC0),    _T("Light grey")        ),
  1231.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_RED,              RGB(0xFF, 0x00, 0x00),    _T("Red")               ),
  1232.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_YELLOW,           RGB(0xFF, 0xFF, 0x00),    _T("Yellow")            ),    
  1233.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_BRIGHT_GREEN,     RGB(0x00, 0xFF, 0x00),    _T("Bright green")      ),
  1234.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_SKYBLUE,          RGB(0xC0, 0xFF, 0xFF),    _T("Skyblue")           ),
  1235.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_BLUE,             RGB(0x00, 0x00, 0xFF),    _T("Blue")              ),
  1236.     CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY( IDS_EXT_COLOR_NAME_ROSE,             RGB(0xFF, 0xE4, 0xE1),    _T("Rose")              ),
  1237. };
  1238. CExtPopupColorMenuWnd::CExtPopupColorMenuWnd()
  1239. : m_pClrValueFinal( NULL )
  1240. , m_bHelperInNotifyColorChanged( false )
  1241. , m_sizeColorItemCell( 16, 16 )
  1242. , m_sizeColorItemSpaces( 2, 2 )
  1243. , m_nColorIdxCurr( -1 )
  1244. , m_nInitialColorIdx( -1 )
  1245. , m_hWndNotifyColorChanged( NULL ) // - use command targed
  1246. , m_clrInitial( COLORREF(-1) ) // unexisting
  1247. , m_clrDefault( RGB( 0, 0, 0 ) )
  1248. , m_bEnableBtnColorDefault( true )
  1249. , m_bEnableBtnColorCustom( true )
  1250. , m_rcDefColorText( 0, 0, 0, 0 )
  1251. , m_rcCustColorText( 0, 0, 0, 0 )
  1252. , m_lParamCookie( 0 )
  1253. , m_nColorsInRow( 8 )
  1254. {
  1255. ASSERT(
  1256. __N_CLR_COUNT ==
  1257. (   sizeof( g_arrDefaultColors )
  1258. / sizeof( g_arrDefaultColors[ 0 ] )
  1259. )
  1260. );
  1261. if( ! g_ResourceManager->LoadString( m_sBtnTextColorDefault, IDS_COLOR_DEFAULT ) )
  1262. m_sBtnTextColorDefault = _T("Default Color");
  1263. if( ! g_ResourceManager->LoadString( m_sBtnTextColorCustom, IDS_COLOR_CUSTOM ) )
  1264. m_sBtnTextColorCustom = _T("Custom Color ...");
  1265. SetColors8x5();
  1266. }
  1267. CExtPopupColorMenuWnd::~CExtPopupColorMenuWnd()
  1268. {
  1269. _RemoveAllColorEntries();
  1270. }
  1271. void CExtPopupColorMenuWnd::_RemoveAllColorEntries()
  1272. {
  1273. int nIdx, nColorCellCount = (int)m_arrColors.GetSize();
  1274. for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  1275. {
  1276. COLORREF_TABLE_ENTRY * pCTE = m_arrColors[ nIdx ];
  1277. ASSERT( pCTE != NULL );
  1278. delete pCTE;
  1279. }
  1280. m_arrColors.RemoveAll();
  1281. }
  1282. bool CExtPopupColorMenuWnd::IsAllItemsRarelyUsed() const
  1283. {
  1284. ASSERT_VALID( this );
  1285. return false;
  1286. }
  1287. CExtPopupMenuTipWnd::e_tip_style_t CExtPopupColorMenuWnd::_CoolTipGetStyle() const
  1288. {
  1289. ASSERT_VALID( this );
  1290. return g_eTtsColorMenu;
  1291. }
  1292. BOOL CExtPopupColorMenuWnd::OnQueryNewPalette() 
  1293. {
  1294. ASSERT_VALID( this );
  1295. Invalidate();
  1296. return CWnd::OnQueryNewPalette();
  1297. }
  1298. void CExtPopupColorMenuWnd::OnPaletteChanged(CWnd* pFocusWnd) 
  1299. {
  1300. ASSERT_VALID( this );
  1301. CWnd::OnPaletteChanged(pFocusWnd);
  1302. if( pFocusWnd->GetSafeHwnd() != GetSafeHwnd() )
  1303. {
  1304. Invalidate();
  1305. }
  1306. }
  1307. CSize CExtPopupColorMenuWnd::_GetColorItemCellSize() const
  1308. {
  1309. ASSERT_VALID( this );
  1310. ASSERT( m_sizeColorItemCell.cx > 0 );
  1311. ASSERT( m_sizeColorItemCell.cy > 0 );
  1312. return m_sizeColorItemCell;
  1313. }
  1314. CSize CExtPopupColorMenuWnd::_GetColorItemSpaces() const
  1315. {
  1316. ASSERT_VALID( this );
  1317. ASSERT( m_sizeColorItemSpaces.cx >= 0 );
  1318. ASSERT( m_sizeColorItemSpaces.cy >= 0 );
  1319. return m_sizeColorItemSpaces;
  1320. }
  1321. int CExtPopupColorMenuWnd::_GetColorCellCount() const
  1322. {
  1323. ASSERT_VALID( this );
  1324. return int(m_arrColors.GetSize());
  1325. }
  1326. int CExtPopupColorMenuWnd::_GetColorsInRow() const
  1327. {
  1328. ASSERT_VALID( this );
  1329. ASSERT( m_nColorsInRow > 0 );
  1330. return m_nColorsInRow;
  1331. }
  1332. void CExtPopupColorMenuWnd::_SetColorsInRow( int nColorsInRow )
  1333. {
  1334. ASSERT_VALID( this );
  1335. ASSERT( nColorsInRow > 0 );
  1336. m_nColorsInRow = nColorsInRow;
  1337. }
  1338. CSize CExtPopupColorMenuWnd::_GetColorDimension() const
  1339. {
  1340. ASSERT_VALID( this );
  1341. int nColorCellCount = _GetColorCellCount();
  1342. int nColorsInRow = _GetColorsInRow();
  1343. int nRest = nColorCellCount % nColorsInRow;
  1344. CSize _sizeDimension(
  1345. nColorsInRow,
  1346. nColorCellCount / nColorsInRow +
  1347. ( ( nRest > 0 ) ? 1 : 0 )
  1348. );
  1349. if( _sizeDimension.cy == 1 )
  1350. _sizeDimension.cx = nColorCellCount;
  1351. return _sizeDimension;
  1352. }
  1353. const CExtPopupColorMenuWnd::COLORREF_TABLE_ENTRY *
  1354. CExtPopupColorMenuWnd::_GetColorEntry( int nIndex ) const
  1355. {
  1356. ASSERT_VALID( this );
  1357. if( nIndex < 0 || nIndex >= _GetColorCellCount() )
  1358. {
  1359. ASSERT( FALSE );
  1360. return NULL;
  1361. }
  1362. const COLORREF_TABLE_ENTRY * pCTE = m_arrColors[ nIndex ];
  1363. ASSERT( pCTE != NULL );
  1364. return pCTE;
  1365. }
  1366. COLORREF CExtPopupColorMenuWnd::_GetColorValue( int nIndex ) const
  1367. {
  1368. ASSERT_VALID( this );
  1369. const COLORREF_TABLE_ENTRY * pCTE = _GetColorEntry( nIndex );
  1370. if( pCTE == NULL )
  1371. return RGB( 0, 0, 0 );
  1372. return pCTE->m_clrValue;
  1373. }
  1374. CExtSafeString CExtPopupColorMenuWnd::_GetLocalColorName( int nIndex ) const
  1375. {
  1376. ASSERT_VALID( this );
  1377. const COLORREF_TABLE_ENTRY * pCTE = _GetColorEntry( nIndex );
  1378. if( pCTE == NULL )
  1379. return CExtSafeString( _T("") );
  1380. return pCTE->GetLocalColorName();
  1381. }
  1382. int CExtPopupColorMenuWnd::_GetNextKeyColor(
  1383. int nColorIndex,
  1384. UINT nChar // VK_LEFT, VK_RIGHT, VK_UP and VK_DOWN
  1385. )
  1386. {
  1387. ASSERT_VALID( this );
  1388. int nColorCellCount = _GetColorCellCount();
  1389. if( nColorCellCount == 0 )
  1390. return -1;
  1391. if( nColorIndex < 0 || nColorIndex >= nColorCellCount )
  1392. return 0;
  1393. int nColorsInRow = _GetColorsInRow();
  1394. int nRest = nColorCellCount % nColorsInRow;
  1395. CSize _sizeDimension(
  1396. nColorsInRow,
  1397. nColorCellCount / nColorsInRow +
  1398. ( ( nRest > 0 ) ? 1 : 0 )
  1399. );
  1400. if( _sizeDimension.cy == 1 )
  1401. _sizeDimension.cx = nColorCellCount;
  1402. int nColNo = nColorIndex % nColorsInRow;
  1403. ASSERT( 0 <= nColNo && nColNo < _sizeDimension.cx );
  1404. int nRowNo = nColorIndex / nColorsInRow;
  1405. ASSERT( 0 <= nRowNo && nRowNo < _sizeDimension.cy );
  1406. switch( nChar )
  1407. {
  1408. case VK_LEFT:
  1409. {
  1410. if( _sizeDimension.cx == 1 )
  1411. return nColorIndex;
  1412. if( nColNo > 0 )
  1413. nColNo --;
  1414. else
  1415. {
  1416. int nCountInRow = _sizeDimension.cx;
  1417. if( nRowNo == (_sizeDimension.cy-1) && nRest > 0 )
  1418. nCountInRow = nRest;
  1419. nColNo = nCountInRow - 1;
  1420. }
  1421. }
  1422. break;
  1423. case VK_RIGHT:
  1424. {
  1425. if( _sizeDimension.cx == 1 )
  1426. return nColorIndex;
  1427. int nCountInRow = _sizeDimension.cx;
  1428. if( nRowNo == (_sizeDimension.cy-1) && nRest > 0 )
  1429. nCountInRow = nRest;
  1430. if( nColNo >= (nCountInRow-1) )
  1431. nColNo = 0 ;
  1432. else
  1433. nColNo ++;
  1434. }
  1435. break;
  1436. case VK_UP:
  1437. {
  1438. if( _sizeDimension.cy == 1 )
  1439. return nColorIndex;
  1440. if( nRowNo > 0 )
  1441. nRowNo --;
  1442. else
  1443. {
  1444. nRowNo = _sizeDimension.cy - 1;
  1445. if( nRest > 0 && nColNo >= nRest )
  1446. {
  1447. nRowNo --;
  1448. ASSERT( nRowNo >= 0 );
  1449. }
  1450. }
  1451. }
  1452. break;
  1453. case VK_DOWN:
  1454. {
  1455. if( _sizeDimension.cy == 1 )
  1456. return nColorIndex;
  1457. nRowNo ++;
  1458. if( nRowNo >= _sizeDimension.cy )
  1459. nRowNo = 0;
  1460. else if( nRowNo == (_sizeDimension.cy-1) && ( nRest > 0 ) )
  1461. {
  1462. if( nColNo >= nRest )
  1463. nRowNo = 0;
  1464. }
  1465. }
  1466. break;
  1467. #ifdef _DEBUG
  1468. default:
  1469. {
  1470. ASSERT( FALSE );
  1471. }
  1472. break;
  1473. #endif // _DEBUG
  1474. } // switch( nChar )
  1475. nColorIndex = nRowNo * _sizeDimension.cx + nColNo;
  1476. ASSERT( 0 <= nColorIndex && nColorIndex < nColorCellCount );
  1477. return nColorIndex;
  1478. }
  1479. void CExtPopupColorMenuWnd::AddColor( COLORREF_TABLE_ENTRY * pCTE )
  1480. {
  1481. ASSERT_VALID( this );
  1482. ASSERT( pCTE != NULL );
  1483. m_arrColors.Add( pCTE );
  1484. }
  1485. void CExtPopupColorMenuWnd::RemoveAllColors()
  1486. {
  1487. ASSERT_VALID( this );
  1488. _RemoveAllColorEntries();
  1489. }
  1490. void CExtPopupColorMenuWnd::SetColorsInRow( int nColorsInRow )
  1491. {
  1492. ASSERT_VALID( this );
  1493. _SetColorsInRow( nColorsInRow );
  1494. }
  1495. void CExtPopupColorMenuWnd::SetColors8x5()
  1496. {
  1497. ASSERT_VALID( this );
  1498. SetColorsInRow( 8 );
  1499. RemoveAllColors();
  1500. int nIdx, nColorCellCount = sizeof( g_arrDefaultColors ) / sizeof( g_arrDefaultColors[ 0 ] );
  1501. for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  1502. {
  1503. const COLORREF_TABLE_ENTRY * pCTE = g_arrDefaultColors + nIdx;
  1504. AddColor( new COLORREF_TABLE_ENTRY( *pCTE ) );
  1505. } // for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  1506. }
  1507. void CExtPopupColorMenuWnd::SetColors8x2()
  1508. {
  1509. ASSERT_VALID( this );
  1510. SetColorsInRow( 8 );
  1511. RemoveAllColors();
  1512. int nIdx, nColorCellCount = sizeof( g_arrDefaultColorsLess ) / sizeof( g_arrDefaultColorsLess[ 0 ] );
  1513. for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  1514. {
  1515. const COLORREF_TABLE_ENTRY * pCTE = g_arrDefaultColorsLess + nIdx;
  1516. AddColor( new COLORREF_TABLE_ENTRY( *pCTE ) );
  1517. } // for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  1518. }
  1519. CSize CExtPopupColorMenuWnd::_CalcTrackSize()
  1520. {
  1521. ASSERT_VALID( this );
  1522. CExtPaintManager * pPM = PmBridge_GetPM();
  1523. ASSERT_VALID( pPM );
  1524. CRect rcMB = OnQueryMenuBorderMetrics();
  1525. int nMenuShadowSize = OnQueryMenuShadowSize();
  1526. CSize _sizeColorItemCell = _GetColorItemCellSize();
  1527. CSize _sizeColorItemSpaces = _GetColorItemSpaces();
  1528. CSize _sizeDimension = _GetColorDimension();
  1529. CSize _size(
  1530. (_sizeColorItemCell.cx + _sizeColorItemSpaces.cx * 2 )
  1531. * _sizeDimension.cx
  1532. + rcMB.left + rcMB.right + nMenuShadowSize
  1533. ,
  1534. (_sizeColorItemCell.cy + _sizeColorItemSpaces.cy * 2 )
  1535. * _sizeDimension.cy
  1536. + rcMB.left + rcMB.right + nMenuShadowSize
  1537. );
  1538. bool bTearOff = _IsTearOff();
  1539. int nTearOffCaptionHeight = bTearOff ? _GetTearOffCaptionHeight() : 0;
  1540. if( m_bEnableBtnColorDefault )
  1541. {
  1542. _size.cy +=
  1543. PmBridge_GetPM()->GetSeparatorHeight()
  1544. + __EXT_MENU_GAP*2;
  1545. CExtSafeString sMeasureText( m_sBtnTextColorDefault );
  1546. sMeasureText.Replace( _T("&"), _T("") );
  1547. CWindowDC dc(NULL);
  1548. CFont * pOldFont =
  1549. dc.SelectObject( &(PmBridge_GetPM()->m_FontNormal) );
  1550. ASSERT( pOldFont != NULL );
  1551. CRect rect(0,0,0,0);
  1552. CSize _sizeDefColorText;
  1553. _sizeDefColorText.cy = DrawText(
  1554. dc.GetSafeHdc(),
  1555. sMeasureText,
  1556. sMeasureText.GetLength(),
  1557. &rect,
  1558. DT_CALCRECT|DT_SINGLELINE
  1559. |DT_LEFT|DT_VCENTER
  1560. );
  1561. _sizeDefColorText.cx = rect.Width();
  1562. dc.SelectObject( pOldFont );
  1563. _sizeDefColorText.cx += pPM->UiScalingDo( __EXT_MENU_GAP * 2, CExtPaintManager::__EUIST_X );
  1564. INT nMenuMinHeight = pPM->UiScalingDo( __EXT_MENU_MIN_HEIGHT, CExtPaintManager::__EUIST_Y );
  1565. if( _sizeDefColorText.cy < nMenuMinHeight )
  1566. _sizeDefColorText.cy = nMenuMinHeight;
  1567. _size.cy += _sizeDefColorText.cy;
  1568. if( _size.cx < _sizeDefColorText.cx )
  1569. _size.cx = _sizeDefColorText.cx;
  1570. CPoint pt(
  1571. rcMB.left + __EXT_MENU_GAP,
  1572. rcMB.top + __EXT_MENU_GAP
  1573. );
  1574. m_rcDefColorText.SetRect(
  1575. pt,
  1576. pt
  1577. +
  1578. CSize(
  1579. max( _size.cx , _sizeDefColorText.cx )
  1580. - __EXT_MENU_GAP*2
  1581. - rcMB.left - rcMB.right
  1582. - nMenuShadowSize
  1583. ,
  1584. _sizeDefColorText.cy
  1585. )
  1586. );
  1587. if( bTearOff )
  1588. m_rcDefColorText.OffsetRect( 0, nTearOffCaptionHeight );
  1589. } // if( m_bEnableBtnColorDefault )
  1590. if( m_bEnableBtnColorCustom )
  1591. {
  1592. _size.cy +=
  1593. PmBridge_GetPM()->GetSeparatorHeight()
  1594. + __EXT_MENU_GAP*2
  1595. + 1 // + 2.28
  1596. ;
  1597. CExtSafeString sMeasureText( m_sBtnTextColorCustom );
  1598. sMeasureText.Replace( _T("&"), _T("") );
  1599. CWindowDC dc(NULL);
  1600. CFont * pOldFont =
  1601. dc.SelectObject( &(PmBridge_GetPM()->m_FontNormal) );
  1602. ASSERT( pOldFont != NULL );
  1603. CRect rect(0,0,0,0);
  1604. CSize _sizeCustColorText;
  1605. _sizeCustColorText.cy = DrawText(
  1606. dc.GetSafeHdc(),
  1607. sMeasureText,
  1608. sMeasureText.GetLength(),
  1609. &rect,
  1610. DT_CALCRECT|DT_SINGLELINE
  1611. |DT_LEFT|DT_VCENTER
  1612. );
  1613. _sizeCustColorText.cx = rect.Width();
  1614. dc.SelectObject( pOldFont );
  1615. _sizeCustColorText.cx += __EXT_MENU_GAP * 2;
  1616. INT nMenuMinHeight = pPM->UiScalingDo( __EXT_MENU_MIN_HEIGHT, CExtPaintManager::__EUIST_Y );
  1617. if( _sizeCustColorText.cy < nMenuMinHeight )
  1618. _sizeCustColorText.cy = nMenuMinHeight;
  1619. _size.cy += _sizeCustColorText.cy;
  1620. if( _size.cx < _sizeCustColorText.cx )
  1621. _size.cx = _sizeCustColorText.cx;
  1622. CPoint pt(
  1623. rcMB.left + __EXT_MENU_GAP,
  1624. rcMB.top + __EXT_MENU_GAP
  1625. );
  1626. m_rcCustColorText.SetRect(
  1627. pt,
  1628. pt
  1629. +
  1630. CSize(
  1631. max( _size.cx , _sizeCustColorText.cx )
  1632. - __EXT_MENU_GAP*2
  1633. - rcMB.left - rcMB.right
  1634. - nMenuShadowSize
  1635. ,
  1636. _sizeCustColorText.cy
  1637. )
  1638. );
  1639. if( m_bEnableBtnColorDefault )
  1640. m_rcCustColorText.OffsetRect(
  1641. 0,
  1642. m_rcCustColorText.Height()
  1643. + __EXT_MENU_GAP*2
  1644. + PmBridge_GetPM()->GetSeparatorHeight()
  1645. );
  1646. m_rcCustColorText.OffsetRect(
  1647. 0,
  1648. rcMB.top +
  1649. ( _sizeColorItemCell.cy + _sizeColorItemSpaces.cy * 2 )
  1650. * _sizeDimension.cy
  1651. + _sizeColorItemSpaces.cy
  1652. );
  1653. if( bTearOff )
  1654. m_rcCustColorText.OffsetRect( 0, nTearOffCaptionHeight );
  1655. } // if( m_bEnableBtnColorCustom )
  1656. _size.cx += m_nLeftAreaWidth;
  1657. return _size;
  1658. }
  1659. CPoint CExtPopupColorMenuWnd::_GetColorItemCoord( int nIdx )
  1660. {
  1661. ASSERT_VALID( this );
  1662. CSize _sizeDimension = _GetColorDimension();
  1663. ASSERT( nIdx >= 0 && nIdx < _GetColorCellCount() );
  1664. int nX = nIdx % _sizeDimension.cx;
  1665. ASSERT( nX < _sizeDimension.cx );
  1666. int nY = nIdx / _sizeDimension.cx;
  1667. ASSERT( nY < _sizeDimension.cy );
  1668. return CPoint( nX, nY );
  1669. }
  1670. CRect CExtPopupColorMenuWnd::_GetColorItemRect(int nIdx)
  1671. {
  1672. ASSERT_VALID( this );
  1673. ASSERT( nIdx >= 0 && nIdx < _GetColorCellCount() );
  1674. CPoint ptCoord =  _GetColorItemCoord( nIdx );
  1675. CRect rcMB = OnQueryMenuBorderMetrics();
  1676. CSize _sizeColorItemCell = _GetColorItemCellSize();
  1677. CSize _sizeColorItemSpaces = _GetColorItemSpaces();
  1678. CRect rcItem(
  1679. CPoint(
  1680. rcMB.left +
  1681. ( _sizeColorItemCell.cx + _sizeColorItemSpaces.cx*2) 
  1682. * ptCoord.x
  1683. + _sizeColorItemSpaces.cx
  1684. ,
  1685. rcMB.top +
  1686. ( _sizeColorItemCell.cy + _sizeColorItemSpaces.cy * 2 )
  1687. * ptCoord.y
  1688. + _sizeColorItemSpaces.cy
  1689. ),
  1690. _sizeColorItemCell
  1691. );
  1692. if( m_bEnableBtnColorDefault )
  1693. {
  1694. rcItem.OffsetRect(
  1695. 0,
  1696. m_rcDefColorText.Height()
  1697. + PmBridge_GetPM()->GetSeparatorHeight()
  1698. + __EXT_MENU_GAP*2
  1699. );
  1700. }
  1701. CRect rcClient;
  1702. _GetClientRect( &rcClient );
  1703. rcItem.OffsetRect( rcClient.TopLeft() );
  1704. rcItem.OffsetRect( m_nLeftAreaWidth, 0 );
  1705. if( _IsTearOff() )
  1706. {
  1707. int nTearOffCaptionHeight =
  1708. _GetTearOffCaptionHeight();
  1709. rcItem.OffsetRect( 0, nTearOffCaptionHeight );
  1710. }
  1711. return rcItem;
  1712. }
  1713. CRect CExtPopupColorMenuWnd::_CalcTrackRect()
  1714. {
  1715. ASSERT_VALID( this );
  1716. return CExtPopupMenuWnd::_CalcTrackRect();
  1717. }
  1718. bool CExtPopupColorMenuWnd::_CreateHelper(
  1719. CWnd * pWndCmdReceiver
  1720. )
  1721. {
  1722. ASSERT_VALID( this );
  1723. if( ! CExtPopupMenuWnd::_CreateHelper(
  1724. pWndCmdReceiver
  1725. )
  1726. )
  1727. return false;
  1728. int nIdx =
  1729. _FindCellByColorRef( m_clrInitial );
  1730. if( nIdx >= 0 )
  1731. {
  1732. m_nInitialColorIdx = nIdx;
  1733. m_nColorIdxCurr = nIdx;
  1734. Invalidate();
  1735. }
  1736. CRect rcClient;
  1737. _GetClientRect( &rcClient );
  1738. if( m_bEnableBtnColorDefault )
  1739. {
  1740. m_rcDefColorText.OffsetRect( rcClient.TopLeft() );
  1741. m_rcDefColorText.OffsetRect( m_nLeftAreaWidth, 0 );
  1742. }
  1743. if( m_bEnableBtnColorCustom )
  1744. {
  1745. m_rcCustColorText.OffsetRect( rcClient.TopLeft() );
  1746. m_rcCustColorText.OffsetRect( m_nLeftAreaWidth, 0 );
  1747. }
  1748. return true;
  1749. }
  1750. void CExtPopupColorMenuWnd::_DoPaint( CDC & dcPaint, bool bUseBackBuffer /*= true*/ )
  1751. {
  1752. ASSERT_VALID( this );
  1753. ASSERT_VALID( (&dcPaint) );
  1754. ASSERT( dcPaint.GetSafeHdc() != NULL );
  1755. CRect rcRealClient;
  1756. GetClientRect( &rcRealClient );
  1757. rcRealClient.OffsetRect( OnQueryMenuShadowSize(), 0 );
  1758. CRect rcClient;
  1759. _GetClientRect( &rcClient );
  1760.     // Select and realize the palette
  1761. CPalette * pOldPalette = NULL;
  1762.     if( ::GetDeviceCaps(dcPaint.m_hDC,RASTERCAPS) & RC_PALETTE )
  1763.     {
  1764.         pOldPalette = dcPaint.SelectPalette( &PmBridge_GetPM()->m_PaletteWide, FALSE );
  1765.         dcPaint.RealizePalette();
  1766.     }
  1767. CExtMemoryDC mdc;
  1768. if( bUseBackBuffer )
  1769. {
  1770. mdc.__InitMemoryDC(
  1771. &dcPaint,
  1772. &rcClient,
  1773. CExtMemoryDC::MDCOPT_TO_MEMORY|CExtMemoryDC::MDCOPT_FILL_SURFACE|CExtMemoryDC::MDCOPT_FORCE_DIB 
  1774. );
  1775. } // if( bUseBackBuffer )
  1776. CDC & dcDummyRef = mdc;
  1777. CDC & dc = bUseBackBuffer ? dcDummyRef : dcPaint;
  1778. CFont * pOldFont = (CFont *) dc.SelectObject( &PmBridge_GetPM()->m_FontNormal );
  1779. COLORREF clrFill = PmBridge_GetPM()->GetMenuFrameFillColor( this );
  1780. if( clrFill != COLORREF(-1L) )
  1781. dc.FillSolidRect( &rcClient, clrFill );
  1782. PmBridge_GetPM()->PaintMenuBorder( dc, rcClient, this );
  1783. ASSERT( !m_bExpandAvailable );
  1784. ASSERT( !m_bScrollingAvailable );
  1785. CRect rcMB = OnQueryMenuBorderMetrics();
  1786. int nMenuShadowSize = OnQueryMenuShadowSize();
  1787. if( rcClient.top >= rcRealClient.top )
  1788. {
  1789. CRect rcExcludePart(rcRealClient);
  1790. rcExcludePart.bottom =
  1791. rcClient.top + rcMB.top;
  1792. dc.ExcludeClipRect( rcExcludePart );
  1793. }
  1794. if( rcClient.bottom <= rcRealClient.bottom )
  1795. {
  1796. CRect rcExcludePart(rcRealClient);
  1797. rcExcludePart.top =
  1798. rcClient.bottom - rcMB.bottom;
  1799. dc.ExcludeClipRect( rcExcludePart );
  1800. }
  1801. // paint default color button
  1802. if( m_bEnableBtnColorDefault )
  1803. {
  1804. bool bSelected =
  1805. (m_nColorIdxCurr == IDX_DEFAULT_COLOR_BTN) ?
  1806. true : false;
  1807. CExtPaintManager::PAINTPUSHBUTTONDATA _ppbd(
  1808. this,
  1809. true,
  1810. m_rcDefColorText,
  1811. m_sBtnTextColorDefault,
  1812. NULL,
  1813. true,
  1814. bSelected,
  1815. false, // bSelected,
  1816. false,
  1817. true,
  1818. bSelected,
  1819. false,
  1820. false,
  1821. CExtPaintManager::__ALIGN_HORIZ_CENTER|CExtPaintManager::__ALIGN_VERT_CENTER,
  1822. NULL,
  1823. false,
  1824. 0,
  1825. !bSelected
  1826. );
  1827. PmBridge_GetPM()->PaintPushButton( dc, _ppbd );
  1828. CRect rcItem( m_rcDefColorText );
  1829. rcItem.OffsetRect( 0, rcItem.Height() + __EXT_MENU_GAP );
  1830. rcItem.bottom = rcItem.top + PmBridge_GetPM()->GetSeparatorHeight();
  1831. rcItem.top += rcItem.Height()/2;
  1832. rcItem.bottom = rcItem.top+1;
  1833. PmBridge_GetPM()->PaintSeparator( dc, rcItem, false, true, this );
  1834. }
  1835. CSize _sizeColorItemSpaces = _GetColorItemSpaces();
  1836. if( m_bEnableBtnColorCustom )
  1837. {
  1838. bool bSelected = ( m_nColorIdxCurr == IDX_CUSTOM_COLOR_BTN ) ? true : false;
  1839. CExtPaintManager::PAINTPUSHBUTTONDATA _ppbd(
  1840. this,
  1841. true,
  1842. m_rcCustColorText,
  1843. m_sBtnTextColorCustom,
  1844. NULL,
  1845. true,
  1846. bSelected,
  1847. false, // bSelected,
  1848. false,
  1849. true,
  1850. bSelected,
  1851. false,
  1852. false,
  1853. CExtPaintManager::__ALIGN_HORIZ_CENTER|CExtPaintManager::__ALIGN_VERT_CENTER,
  1854. NULL,
  1855. false,
  1856. 0,
  1857. !bSelected
  1858. );
  1859. PmBridge_GetPM()->PaintPushButton( dc, _ppbd );
  1860. CRect rcItem( m_rcCustColorText );
  1861. rcItem.OffsetRect( 0, - _sizeColorItemSpaces.cy );
  1862. rcItem.bottom = rcItem.top;
  1863. rcItem.top -= PmBridge_GetPM()->GetSeparatorHeight();
  1864. rcItem.top += rcItem.Height()/2;
  1865. rcItem.bottom = rcItem.top+1;
  1866. PmBridge_GetPM()->PaintSeparator( dc, rcItem, false, true, this );
  1867. }
  1868. // paint color buttons
  1869. COLORREF clrColorBorder =
  1870. PmBridge_GetPM()->GetColor( COLOR_3DDKSHADOW, this );
  1871. int nIdx, nColorCellCount = _GetColorCellCount();
  1872. for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  1873. {
  1874. bool bSelected = ( m_nColorIdxCurr == nIdx || m_nInitialColorIdx == nIdx ) ? true : false;
  1875. CRect rcItem = _GetColorItemRect( nIdx );
  1876. CExtPaintManager::PAINTPUSHBUTTONDATA _ppbd(
  1877. this,
  1878. true,
  1879. rcItem,
  1880. _T(""),
  1881. NULL,
  1882. true,
  1883. bSelected,
  1884. bSelected,
  1885. false,
  1886. true,
  1887. bSelected,
  1888. false,
  1889. false,
  1890. CExtPaintManager::__ALIGN_HORIZ_CENTER|CExtPaintManager::__ALIGN_VERT_CENTER,
  1891. NULL,
  1892. false,
  1893. 0,
  1894. !bSelected
  1895. );
  1896. _ppbd.m_bHelperColorCellButton = true;
  1897. PmBridge_GetPM()->PaintPushButton( dc, _ppbd );
  1898. rcItem.DeflateRect( _sizeColorItemSpaces.cx, _sizeColorItemSpaces.cy );
  1899. dc.FillSolidRect( &rcItem, _GetColorValue( nIdx ) );
  1900. dc.Draw3dRect( &rcItem, clrColorBorder,clrColorBorder );
  1901. } // for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  1902. if( m_nLeftAreaWidth > 0 )
  1903. {
  1904. CRect rcLeftArea( rcClient );
  1905. rcLeftArea.right = rcLeftArea.left + m_nLeftAreaWidth;
  1906. rcLeftArea.OffsetRect( rcMB.left, 0 );
  1907. rcLeftArea.DeflateRect( 0, rcMB.top, 0, rcMB.bottom );
  1908. DRAWLEFTAREADATA _DrawLeftAreaData( &dc, &rcLeftArea, this );
  1909. _DrawLeftAreaData.DoOwnerDrawPainting();
  1910. }
  1911. if( _IsTearOff() )
  1912. {
  1913. CPoint point( 0, 0 );
  1914. if( ::GetCursorPos( &point ) )
  1915. ScreenToClient( &point );
  1916. CRect rcTearOff;
  1917. _GetItemRect( IDX_TEAROFF, rcTearOff, false );
  1918. bool bHover =
  1919. (rcTearOff.PtInRect(point))? true : false;
  1920. if( bHover && _FindCustomizeMode() )
  1921. bHover = false;
  1922. bool bPushed = bHover;
  1923. PmBridge_GetPM()->PaintMenuTearOffButton( dc, rcTearOff, bHover, bPushed, this );
  1924. } // if( m_bExpandAvailable )
  1925. CPoint point( 0, 0 );
  1926. ::GetCursorPos( &point );
  1927. ScreenToClient( &point );
  1928. dc.SelectClipRgn( NULL );
  1929. dcPaint.SelectClipRgn( NULL );
  1930. CRgn _rgnCli;
  1931. if( _rgnCli.CreateRectRgnIndirect( &rcClient ) )
  1932. dcPaint.SelectClipRgn( &_rgnCli );
  1933. if( m_bCombineWithEA )
  1934. {
  1935. ASSERT( m_eCombineAlign != __CMBA_NONE );
  1936. dc.SelectClipRgn(NULL);
  1937. CRect rcExcludeClient( m_rcExcludeArea );
  1938. ScreenToClient( &rcExcludeClient );
  1939. CRgn _rgn;
  1940. if( _rgn.CreateRectRgnIndirect( &rcExcludeClient ) )
  1941. dcPaint.SelectClipRgn( &_rgn, RGN_OR );
  1942. PmBridge_GetPM()->PaintMenuCombinedArea( dc, rcExcludeClient, rcClient, m_eCombineAlign, this );
  1943. if( m_pCbPaintCombinedContent != NULL )
  1944. {
  1945. CExtMemoryDC dcCA( &dc, &rcExcludeClient, CExtMemoryDC::MDCOPT_TO_MEMORY|CExtMemoryDC::MDCOPT_FILL_BITS|CExtMemoryDC::MDCOPT_RTL_COMPATIBILITY );
  1946. m_pCbPaintCombinedContent( m_pCbPaintCombinedCookie, dcCA, *this, m_rcExcludeArea, m_eCombineAlign );
  1947. }
  1948. } // if( m_bCombineWithEA )
  1949. dc.SelectObject( pOldFont );
  1950. if( bUseBackBuffer )
  1951. {
  1952. CRgn _rgn;
  1953. if( _rgn.CreateRectRgnIndirect( &rcClient ) )
  1954. dcPaint.SelectClipRgn( &_rgn, RGN_OR );
  1955. ASSERT( mdc.GetSafeHdc() != NULL );
  1956. mdc.__Flush();
  1957. dcPaint.SelectClipRgn( NULL );
  1958. }
  1959. if( _IsPopupWithShadows()
  1960. && m_bAnimFinished
  1961. && nMenuShadowSize > 0
  1962. )
  1963. { // if we need to paint shadow for client area (and combined exclude area)
  1964. dcPaint.SelectClipRgn(NULL);
  1965. CRect
  1966. rcExcludeClient( 0,0,0,0 ),
  1967. rcExcludeScreen( 0,0,0,0 ),
  1968. rcBaseScreen( 0,0,0,0 );
  1969. if( m_bCombineWithEA )
  1970. {
  1971. if( _IsPopupWithShadows()
  1972. && m_bAnimFinished
  1973. && nMenuShadowSize > 0
  1974. )
  1975. { // if we need to paint shadow for combined exclude area
  1976. rcExcludeScreen = m_rcExcludeArea;
  1977. rcExcludeClient = rcExcludeScreen;
  1978. ScreenToClient( &rcExcludeClient );
  1979. dcPaint.ExcludeClipRect( &rcClient );
  1980. rcBaseScreen = rcClient;
  1981. ClientToScreen( &rcBaseScreen );
  1982. VERIFY(
  1983. m_ShadowCMBA.Paint(
  1984. PmBridge_GetPM(),
  1985. dcPaint,
  1986. rcExcludeClient,
  1987. rcExcludeScreen,
  1988. rcBaseScreen,
  1989. nMenuShadowSize
  1990. )
  1991. );
  1992. dcPaint.SelectClipRgn(NULL);
  1993. } // if we need to paint shadow for combined exclude area
  1994. CRect rcExcludePart( m_rcExcludeArea );
  1995. ScreenToClient( &rcExcludePart );
  1996. dcPaint.ExcludeClipRect( &rcExcludePart );
  1997. } // if( m_bCombineWithEA )
  1998. VERIFY(
  1999. m_ShadowMain.Paint(
  2000. PmBridge_GetPM(),
  2001. dcPaint,
  2002. rcClient,
  2003. rcBaseScreen,
  2004. rcExcludeScreen,
  2005. nMenuShadowSize
  2006. )
  2007. );
  2008. } // if we need to paint shadow for client area (and combined exclude area)
  2009. if( pOldPalette != NULL )
  2010. dcPaint.SelectPalette( pOldPalette, FALSE );
  2011. }
  2012. int CExtPopupColorMenuWnd::_ColorItemHitTest(
  2013. const CPoint & point
  2014. )
  2015. {
  2016. ASSERT_VALID( this );
  2017. int nIdx, nColorCellCount = _GetColorCellCount();
  2018. for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  2019. {
  2020. CRect rcItem = _GetColorItemRect( nIdx );
  2021. if( rcItem.PtInRect(point) )
  2022. return nIdx;
  2023. } // for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  2024. if( m_rcDefColorText.PtInRect(point) )
  2025. return IDX_DEFAULT_COLOR_BTN;
  2026. if( m_rcCustColorText.PtInRect(point) )
  2027. return IDX_CUSTOM_COLOR_BTN;
  2028. return -1;
  2029. }
  2030. bool CExtPopupColorMenuWnd::_CanStartLevelTracking()
  2031. {
  2032. ASSERT_VALID( this );
  2033. if( _FindHelpMode() )
  2034. return false;
  2035. if( _FindCustomizeMode() )
  2036. return false;
  2037. return true;
  2038. }
  2039. bool CExtPopupColorMenuWnd::_OnMouseWheel(
  2040. WPARAM wParam,
  2041. LPARAM lParam,
  2042. bool & bNoEat
  2043. )
  2044. {
  2045. ASSERT_VALID( this );
  2046. TranslateMouseWheelEventData_t _td( this, wParam, lParam, bNoEat );
  2047. if( _td.Notify() )
  2048. {
  2049. bNoEat = _td.m_bNoEat;
  2050. return true;
  2051. }
  2052. return true;
  2053. }
  2054. bool CExtPopupColorMenuWnd::_OnMouseMove(
  2055. UINT nFlags,
  2056. CPoint point,
  2057. bool & bNoEat
  2058. )
  2059. {
  2060. ASSERT_VALID( this );
  2061. if( GetSafeHwnd() == NULL )
  2062. return false;
  2063. if( GetSite().GetAnimated() != NULL )
  2064. return true;
  2065. TranslateMouseMoveEventData_t _td( this, nFlags, point, bNoEat );
  2066. if( _td.Notify() )
  2067. {
  2068. bNoEat = _td.m_bNoEat;
  2069. return true;
  2070. }
  2071. CPoint ptScreenClick( point );
  2072. ClientToScreen( &ptScreenClick );
  2073. HWND hWndFromPoint = ::WindowFromPoint( ptScreenClick );
  2074. if( hWndFromPoint != NULL
  2075. && (::__EXT_MFC_GetWindowLong(hWndFromPoint,GWL_STYLE)&WS_CHILD) != NULL
  2076. && ::GetParent(hWndFromPoint) == m_hWnd
  2077. )
  2078. {
  2079. return false; // inplace edit
  2080. }
  2081. if( ! _PtInWndArea( point ) )
  2082. {
  2083. if( m_pWndParentMenu != NULL
  2084. && m_pWndParentMenu->GetSafeHwnd() != NULL
  2085. )
  2086. {
  2087. ASSERT_VALID( m_pWndParentMenu );
  2088. ClientToScreen( &point );
  2089. m_pWndParentMenu->ScreenToClient( &point );
  2090. if( m_pWndParentMenu->_OnMouseMove(
  2091. nFlags,
  2092. point,
  2093. bNoEat
  2094. )
  2095. )
  2096. {
  2097. if( bNoEat )
  2098. return false;
  2099. _OnCancelMode();
  2100. return true;
  2101. }
  2102. }
  2103. return false;
  2104. }
  2105. if( _IsTearOff() )
  2106. {
  2107. if( CExtPopupMenuWnd::_HitTest(point) == IDX_TEAROFF )
  2108. {
  2109. HWND hWndOwn = m_hWnd;
  2110. _ItemFocusCancel( TRUE, FALSE );
  2111. if( ! ::IsWindow( hWndOwn ) )
  2112. return true;
  2113. _SetCapture();
  2114. HCURSOR hCursor = ::LoadCursor( NULL, IDC_SIZEALL );
  2115. ASSERT( hCursor != NULL );
  2116. ::SetCursor( hCursor );
  2117. if( g_bMenuShowCoolTips
  2118. && GetSite().GetCapture() == this
  2119. )
  2120. {
  2121. CRect rcItem;
  2122. _GetItemRect(IDX_TEAROFF,rcItem);
  2123. ClientToScreen( &rcItem );
  2124. bool bShowTip = (!m_bSuspendTips);
  2125. CExtPopupMenuTipWnd & _tipWnd = GetTip();
  2126. if( _tipWnd.GetSafeHwnd() != NULL )
  2127. {
  2128. CRect rcExcludeArea = _tipWnd.GetExcludeArea();
  2129. if( rcExcludeArea == rcItem )
  2130. bShowTip = false;
  2131. }
  2132. if( bShowTip )
  2133. {
  2134. CExtSafeString sTipText;
  2135. g_ResourceManager->LoadString( sTipText, ID_EXT_TEAR_OFF_MENU_TIP );
  2136. if( sTipText.IsEmpty() )
  2137. sTipText = _T("Drag to make this menu float");
  2138. _tipWnd.SetText( sTipText );
  2139. _tipWnd.SetTipStyle( _CoolTipGetStyle() );
  2140. VERIFY(
  2141. _tipWnd.Show(
  2142. this,
  2143. rcItem
  2144. )
  2145. );
  2146. }
  2147. }
  2148. return true;
  2149. }
  2150. HCURSOR hCursor = ::LoadCursor( NULL, IDC_ARROW );
  2151. ASSERT( hCursor != NULL );
  2152. ::SetCursor( hCursor );
  2153. }
  2154. bool bHoverChanged = false;
  2155. int nColorIdxCurr = _ColorItemHitTest(point);
  2156. if( m_nColorIdxCurr != nColorIdxCurr )
  2157. {
  2158. m_nColorIdxCurr = nColorIdxCurr;
  2159. bHoverChanged = true;
  2160. if( m_nColorIdxCurr != IDX_CUSTOM_COLOR_BTN )
  2161. _NotifyColorChanged();
  2162. Invalidate();
  2163. }
  2164. if( m_nColorIdxCurr >= 0 )
  2165. {
  2166. if( g_bMenuShowCoolTips
  2167. && (! m_bSuspendTips )
  2168. && bHoverChanged
  2169. )
  2170. {
  2171. CExtSafeString sTipText =
  2172. _GetLocalColorName( m_nColorIdxCurr );
  2173. if( !sTipText.IsEmpty()
  2174. && GetSite().GetCapture() == this
  2175. && ( GetSite().GetAnimated() == NULL )
  2176. )
  2177. {
  2178. CRect rcItem =
  2179. _GetColorItemRect(m_nColorIdxCurr);
  2180. ClientToScreen( &rcItem );
  2181. CExtPopupMenuTipWnd & _tipWnd = GetTip();
  2182. _tipWnd.SetText( sTipText );
  2183. _tipWnd.SetTipStyle( _CoolTipGetStyle() );
  2184. VERIFY(
  2185. _tipWnd.Show(
  2186. this,
  2187. rcItem
  2188. )
  2189. );
  2190. }
  2191. } // if( nOldCurIndex != nCurIndex )
  2192. }
  2193. else
  2194. {
  2195. HWND hWndOwn = m_hWnd;
  2196. _CoolTipHide();
  2197. if( ! ::IsWindow( hWndOwn ) )
  2198. return true;
  2199. }
  2200. return true;
  2201. }
  2202. bool CExtPopupColorMenuWnd::_OnMouseClick(
  2203. UINT nFlags,
  2204. CPoint point,
  2205. bool & bNoEat
  2206. )
  2207. {
  2208. ASSERT_VALID( this );
  2209. bNoEat;
  2210. if( GetSafeHwnd() == NULL )
  2211. return false;
  2212. if( GetSite().GetAnimated() != NULL )
  2213. return true;
  2214. TranslateMouseClickEventData_t _td( this, nFlags, point, bNoEat );
  2215. if( _td.Notify() )
  2216. {
  2217. bNoEat = _td.m_bNoEat;
  2218. return true;
  2219. }
  2220. bool bLButtonUpCall =
  2221. (nFlags==WM_LBUTTONUP || nFlags==WM_NCLBUTTONUP)
  2222. ? true : false;
  2223. if( m_eCombineAlign != __CMBA_NONE
  2224. && m_bTopLevel
  2225. )
  2226. {
  2227. CRect rcExcludeAreaTest( m_rcExcludeArea );
  2228. ScreenToClient( &rcExcludeAreaTest );
  2229. if( rcExcludeAreaTest.PtInRect( point ) )
  2230. {
  2231. if( !bLButtonUpCall )
  2232. {
  2233. _OnCancelMode();
  2234. return true;
  2235. }
  2236. return false;
  2237. } // if( rcExcludeAreaTest.PtInRect( point ) )
  2238. } // if( m_eCombineAlign != __CMBA_NONE ...
  2239. if( _IsTearOff() && CExtPopupMenuWnd::_HitTest(point) == IDX_TEAROFF )
  2240. {
  2241. if( ! bLButtonUpCall )
  2242. _DoTearOff();
  2243. return true;
  2244. }
  2245. if( ! bLButtonUpCall )
  2246. return false;
  2247. bool bEndSequence = false;
  2248. HWND hWndOwn = GetSafeHwnd();
  2249. ASSERT( hWndOwn != NULL && ::IsWindow(hWndOwn) );
  2250. int m_nColorIdxCurr = _ColorItemHitTest(point);
  2251. if( ( m_nColorIdxCurr >= 0
  2252. || m_nColorIdxCurr == IDX_DEFAULT_COLOR_BTN
  2253. || m_nColorIdxCurr == IDX_CUSTOM_COLOR_BTN
  2254. )
  2255. && ( ! _FindCustomizeMode() )
  2256. )
  2257. {
  2258. bEndSequence = true;
  2259. _NotifyColorChanged( true );
  2260. g_SoundPlayer->PlaySound( CExtSoundPlayer::__ON_MENU_CMD_CLICKED );
  2261. }
  2262. if( ! ::IsWindow(hWndOwn) )
  2263. return true;
  2264. CPoint ptScreenClick( point );
  2265. ClientToScreen( &ptScreenClick );
  2266. HWND hWndFromPoint = ::WindowFromPoint( ptScreenClick );
  2267. if( hWndFromPoint != NULL
  2268. && hWndFromPoint == m_pWndParentMenu->GetSafeHwnd()
  2269. )
  2270. {
  2271. m_pWndParentMenu->ScreenToClient( &ptScreenClick );
  2272. return
  2273. m_pWndParentMenu->_OnMouseClick(
  2274. nFlags,
  2275. ptScreenClick,
  2276. bNoEat
  2277. );
  2278. }
  2279. if( bEndSequence || ( ! bLButtonUpCall ) )
  2280. {
  2281. COLORREF clr = (COLORREF)__ECST_NONE;
  2282. switch( m_nColorIdxCurr )
  2283. {
  2284. case IDX_DEFAULT_COLOR_BTN:
  2285. clr = (COLORREF)__ECST_BUTTON_DEFAULT;
  2286. break;
  2287. case IDX_CUSTOM_COLOR_BTN:
  2288. clr = (COLORREF)__ECST_BUTTON_CUSTOM;
  2289.     break;
  2290. default:
  2291. clr = _GetColorValue( m_nColorIdxCurr );
  2292.     break;
  2293. }
  2294. _EndSequence( clr );
  2295. //  _EndSequence( 0xFFFF );
  2296. }
  2297. return true;
  2298. }
  2299. bool CExtPopupColorMenuWnd::_OnKeyDown(
  2300. UINT nChar,
  2301. UINT nRepCnt,
  2302. UINT nFlags,
  2303. bool & bNoEat
  2304. )
  2305. {
  2306. ASSERT_VALID( this );
  2307. nRepCnt;
  2308. nFlags;
  2309. bNoEat;
  2310. if( GetSafeHwnd() == NULL )
  2311. return true; //false;
  2312. if( GetSite().GetAnimated() != NULL )
  2313. return true;
  2314. TranslateKeyboardEventData_t _td( this, nChar, nRepCnt, nFlags, bNoEat );
  2315. if( _td.Notify() )
  2316. {
  2317. bNoEat = _td.m_bNoEat;
  2318. return true;
  2319. }
  2320. bool bEat = false;
  2321. switch( nChar )
  2322. {
  2323. case VK_RETURN:
  2324. {
  2325. HWND hWndThis = GetSafeHwnd();
  2326. if( ( m_nColorIdxCurr >= 0
  2327. || m_nColorIdxCurr == IDX_DEFAULT_COLOR_BTN
  2328. || m_nColorIdxCurr == IDX_CUSTOM_COLOR_BTN
  2329. )
  2330. && ( ! _FindCustomizeMode() )
  2331. )
  2332. {
  2333. _NotifyColorChanged( true );
  2334. g_SoundPlayer->PlaySound( CExtSoundPlayer::__ON_MENU_CMD_CLICKED );
  2335. }
  2336. if( !::IsWindow(hWndThis) )
  2337. return true;
  2338. COLORREF clr = (COLORREF)__ECST_NONE;
  2339. switch( m_nColorIdxCurr )
  2340. {
  2341. case IDX_DEFAULT_COLOR_BTN:
  2342. clr = (COLORREF)__ECST_BUTTON_DEFAULT;
  2343. break;
  2344. case IDX_CUSTOM_COLOR_BTN:
  2345. clr = (COLORREF)__ECST_BUTTON_CUSTOM;
  2346.     break;
  2347. default:
  2348. clr = _GetColorValue( m_nColorIdxCurr );
  2349.     break;
  2350. }
  2351. _EndSequence( clr );
  2352. return true;
  2353. } // VK_RETURN
  2354. case VK_MENU:
  2355. _EndSequence();
  2356. return true;
  2357. case VK_ESCAPE:
  2358. if( m_bTopLevel )
  2359. _EndSequence();
  2360. else
  2361. {
  2362. int nParentCurIndex =
  2363. m_pWndParentMenu->_GetCurIndex();
  2364. ASSERT(
  2365. nParentCurIndex >= 0
  2366. &&
  2367. nParentCurIndex <=
  2368. m_pWndParentMenu->ItemGetCount()
  2369. );
  2370. HWND hWndOwn = m_hWnd;
  2371. m_pWndParentMenu->_SetCapture();
  2372. m_pWndParentMenu->_ItemFocusCancel(
  2373. FALSE
  2374. );
  2375. m_pWndParentMenu->_ItemFocusSet(
  2376. nParentCurIndex,
  2377. FALSE,
  2378. TRUE
  2379. );
  2380. if( ! ::IsWindow( hWndOwn ) )
  2381. return true;
  2382. m_pWndParentMenu->_SetCapture();
  2383. }
  2384. return true;
  2385. // case VK_RIGHT:
  2386. // bEat = true;
  2387. // if( m_nColorIdxCurr < 0 )
  2388. // m_nColorIdxCurr = 0;
  2389. // else
  2390. // {
  2391. // CPoint ptCoord =
  2392. // _GetColorItemCoord( m_nColorIdxCurr );
  2393. // ptCoord.x++;
  2394. // CSize _sizeDimension = _GetColorDimension();
  2395. // if( ptCoord.x >= _sizeDimension.cx )
  2396. // ptCoord.x = 0;
  2397. // m_nColorIdxCurr = 
  2398. // ptCoord.x + ptCoord.y * _sizeDimension.cx;
  2399. // }
  2400. // break;
  2401. // case VK_LEFT:
  2402. // bEat = true;
  2403. // if( m_nColorIdxCurr < 0 )
  2404. // m_nColorIdxCurr = 0;
  2405. // else
  2406. // {
  2407. // CPoint ptCoord =
  2408. // _GetColorItemCoord( m_nColorIdxCurr );
  2409. // ptCoord.x--;
  2410. // CSize _sizeDimension = _GetColorDimension();
  2411. // if( ptCoord.x < 0 )
  2412. // ptCoord.x = _sizeDimension.cx - 1;
  2413. // m_nColorIdxCurr = 
  2414. // ptCoord.x + ptCoord.y * _sizeDimension.cx;
  2415. // }
  2416. // break;
  2417. // case VK_DOWN:
  2418. // bEat = true;
  2419. // if( m_nColorIdxCurr < 0 )
  2420. // m_nColorIdxCurr = 0;
  2421. // else
  2422. // {
  2423. // CPoint ptCoord =
  2424. // _GetColorItemCoord( m_nColorIdxCurr );
  2425. // ptCoord.y++;
  2426. // CSize _sizeDimension = _GetColorDimension();
  2427. // if( ptCoord.y >= _sizeDimension.cy )
  2428. // ptCoord.y = 0;
  2429. // m_nColorIdxCurr = 
  2430. // ptCoord.x + ptCoord.y * _sizeDimension.cx;
  2431. // }
  2432. // break;
  2433. // case VK_UP:
  2434. // bEat = true;
  2435. // if( m_nColorIdxCurr < 0 )
  2436. // m_nColorIdxCurr = 0;
  2437. // else
  2438. // {
  2439. // CPoint ptCoord =
  2440. // _GetColorItemCoord( m_nColorIdxCurr );
  2441. // ptCoord.y--;
  2442. // CSize _sizeDimension = _GetColorDimension();
  2443. // if( ptCoord.y < 0 )
  2444. // ptCoord.y = _sizeDimension.cy - 1;
  2445. // m_nColorIdxCurr = 
  2446. // ptCoord.x + ptCoord.y * _sizeDimension.cx;
  2447. // }
  2448. // break;
  2449. case VK_LEFT:
  2450. case VK_RIGHT:
  2451. case VK_UP:
  2452. case VK_DOWN:
  2453. case VK_TAB:
  2454. {
  2455. if( nChar == VK_TAB )
  2456. {
  2457. bool bAlt =
  2458. ( (::GetAsyncKeyState(VK_MENU)&0x8000) != 0 )
  2459. ? true : false;
  2460. bool bCtrl =
  2461. ( (::GetAsyncKeyState(VK_CONTROL)&0x8000) != 0 )
  2462. ? true : false;
  2463. if( bCtrl || bAlt )
  2464. break;
  2465. bool bShift =
  2466. ( (::GetAsyncKeyState(VK_SHIFT)&0x8000) != 0 )
  2467. ? true : false;
  2468. nChar = bShift ? VK_LEFT : VK_RIGHT;
  2469. }
  2470. int nOldIdx = m_nColorIdxCurr;
  2471. m_nColorIdxCurr = _GetNextKeyColor( nOldIdx, nChar );
  2472. bEat = ( m_nColorIdxCurr != nOldIdx ) ? true : false;
  2473. }
  2474. break;
  2475. } // switch( nChar )
  2476. if( bEat )
  2477. {
  2478. HWND hWndOwn = m_hWnd;
  2479. _CoolTipHide();
  2480. if( ! ::IsWindow( hWndOwn ) )
  2481. return true;
  2482. _NotifyColorChanged();
  2483. Invalidate();
  2484. }
  2485. return bEat;
  2486. }
  2487. HWND CExtPopupColorMenuWnd::_GetWndNotifyColorChanged()
  2488. {
  2489. ASSERT_VALID( this );
  2490. if( m_hWndNotifyColorChanged != NULL )
  2491. {
  2492. ASSERT( ::IsWindow(m_hWndNotifyColorChanged) );
  2493. return m_hWndNotifyColorChanged;
  2494. }
  2495. ASSERT( m_hWndCmdReceiver != NULL );
  2496. ASSERT( ::IsWindow(m_hWndCmdReceiver) );
  2497. return m_hWndCmdReceiver;
  2498. }
  2499. void CExtPopupColorMenuWnd::_NotifyColorChanged(
  2500. bool bFinal // = false
  2501. )
  2502. {
  2503. ASSERT_VALID( this );
  2504. if( m_bHelperInNotifyColorChanged )
  2505. return;
  2506. m_bHelperInNotifyColorChanged = true;
  2507. HWND hWndNotify = _GetWndNotifyColorChanged();
  2508. ASSERT( hWndNotify != NULL );
  2509. ASSERT( ::IsWindow(hWndNotify) );
  2510. COLORREF clr = RGB(0,0,0);
  2511. if( m_nColorIdxCurr == IDX_CUSTOM_COLOR_BTN )
  2512. {
  2513. if( bFinal && m_pClrValueFinal != NULL )
  2514. (*m_pClrValueFinal) = (COLORREF)__ECST_BUTTON_CUSTOM;
  2515. // if the following pSite->OnColorItemCustom method invoke return false the method will continue
  2516. // but the popup menu object may be invalid because of it can be closed
  2517. HWND hWnd = m_hWnd;
  2518. LPARAM lParamCookie = m_lParamCookie;
  2519. #if (!defined __EXT_MFC_NO_CUSTOMIZE)
  2520. if( m_pNode != NULL )
  2521. {
  2522. ASSERT_VALID( m_pNode );
  2523. CExtCustomizeSite * pSite = _FindCustomizeSite();
  2524. if( pSite != NULL
  2525. && pSite->OnColorItemCustom( m_pNode )
  2526. )
  2527. {
  2528. if( ! ::IsWindow(hWnd) )
  2529. return;
  2530. m_bHelperInNotifyColorChanged = false;
  2531. return;
  2532. }
  2533. } // if( m_pNode != NULL )
  2534. #endif // (!defined __EXT_MFC_NO_CUSTOMIZE)
  2535. ::PostMessage(
  2536. hWndNotify,
  2537. g_nMsgNotifyCustColor,
  2538. 0,
  2539. lParamCookie
  2540. );
  2541. if( hWnd != NULL 
  2542. && ::IsWindow( hWnd )
  2543. )
  2544. m_bHelperInNotifyColorChanged = false;
  2545. return;
  2546. } // if( m_nColorIdxCurr == IDX_CUSTOM_COLOR_BTN )
  2547. else if( m_nColorIdxCurr == IDX_DEFAULT_COLOR_BTN )
  2548. clr = m_clrDefault;
  2549. else
  2550. {
  2551. if( m_nColorIdxCurr < 0 )
  2552. {
  2553. clr = m_clrInitial;
  2554. //m_bHelperInNotifyColorChanged = false;
  2555. //return;
  2556. // if( bFinal )
  2557. // {
  2558. // m_bHelperInNotifyColorChanged = false;
  2559. // return;
  2560. // }
  2561. // clr = m_clrInitial;
  2562. }
  2563. else
  2564. clr = _GetColorValue( m_nColorIdxCurr );
  2565. }
  2566. if( bFinal && m_pClrValueFinal != NULL )
  2567. (*m_pClrValueFinal) = clr;
  2568. #if (!defined __EXT_MFC_NO_CUSTOMIZE)
  2569. if( m_pNode != NULL )
  2570. {
  2571. ASSERT_VALID( m_pNode );
  2572. CExtCustomizeSite * pSite = _FindCustomizeSite();
  2573. if( pSite != NULL
  2574. && pSite->OnColorItemChanged(
  2575. NULL,
  2576. m_pNode,
  2577. bFinal,
  2578. clr,
  2579. m_lParamCookie
  2580. )
  2581. )
  2582. {
  2583. m_bHelperInNotifyColorChanged = false;
  2584. return;
  2585. }
  2586. } // if( m_pNode != NULL )
  2587. #endif // (!defined __EXT_MFC_NO_CUSTOMIZE)
  2588. ::PostMessage(
  2589. hWndNotify,
  2590. bFinal
  2591. ? g_nMsgNotifyColorChangedFinally
  2592. : g_nMsgNotifyColorChanged
  2593. ,
  2594. (WPARAM)clr,
  2595. m_lParamCookie
  2596. );
  2597. m_bHelperInNotifyColorChanged = false;
  2598. }
  2599. int CExtPopupColorMenuWnd::_FindCellByColorRef(COLORREF clr)
  2600. {
  2601. ASSERT_VALID( this );
  2602. int nIdx, nColorCellCount = _GetColorCellCount();
  2603. for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  2604. {
  2605. if( _GetColorValue( nIdx ) == clr )
  2606. return nIdx;
  2607. } // for( nIdx = 0; nIdx < nColorCellCount; nIdx++ )
  2608. return -1;
  2609. }
  2610. #if (!defined __EXT_MFC_NO_CUSTOMIZE)
  2611. // CExtCustomizeSite::ICustomizeDropTarget
  2612. DROPEFFECT CExtPopupColorMenuWnd::OnCustomizeTargetOver(
  2613. CExtCustomizeSite::CCmdDragInfo & _dragInfo,
  2614. CPoint point,
  2615. DWORD dwKeyState
  2616. )
  2617. {
  2618. ASSERT_VALID( this );
  2619. ASSERT( !_dragInfo.IsEmpty() );
  2620. _dragInfo;
  2621. point;
  2622. dwKeyState;
  2623. return DROPEFFECT_NONE;
  2624. }
  2625. void CExtPopupColorMenuWnd::OnCustomizeTargetLeave()
  2626. {
  2627. ASSERT_VALID( this );
  2628. }
  2629. bool CExtPopupColorMenuWnd::OnCustomizeTargetDrop(
  2630. CExtCustomizeSite::CCmdDragInfo & _dragInfo,
  2631. CPoint point,
  2632. DROPEFFECT de
  2633. )
  2634. {
  2635. ASSERT_VALID( this );
  2636. ASSERT( !_dragInfo.IsEmpty() );;
  2637. _dragInfo;
  2638. point;
  2639. de;
  2640. return false;
  2641. }
  2642. // CExtCustomizeSite::ICustomizeDropSource
  2643. void CExtPopupColorMenuWnd::OnCustomizeSourceDragComplete(
  2644. DROPEFFECT de,
  2645. bool bCanceled,
  2646. bool * p_bNoResetActiveItem
  2647. )
  2648. {
  2649. ASSERT_VALID( this );
  2650. ASSERT( p_bNoResetActiveItem != NULL );
  2651. de;
  2652. bCanceled;
  2653. p_bNoResetActiveItem;
  2654. }
  2655. #endif // (!defined __EXT_MFC_NO_CUSTOMIZE)
  2656. /////////////////////////////////////////////////////////////////////////////
  2657. // CExtPopupMenuWnd::CInPlaceEditWnd
  2658. const UINT CExtPopupMenuWnd::CInPlaceEditWnd::g_nMsgDeleteSelection =
  2659. ::RegisterWindowMessage(
  2660. _T("CExtPopupMenuWnd::CInPlaceEditWnd::g_nMsgDeleteSelection")
  2661. );
  2662. const UINT CExtPopupMenuWnd::CInPlaceEditWnd::g_nMsgSelectAll =
  2663. ::RegisterWindowMessage(
  2664. _T("CExtPopupMenuWnd::CInPlaceEditWnd::g_nMsgSelectAll")
  2665. );
  2666. CExtPopupMenuWnd::CInPlaceEditWnd::CInPlaceEditWnd(
  2667. CExtSafeString * pStr,
  2668. CExtPopupMenuWnd::pCbVerifyTextInput pCbVerify, // = NULL
  2669. CExtPopupMenuWnd::pCbPutTextInputResult pCbResult, // = NULL
  2670. CExtPopupMenuWnd::pCbInplaceEditWndProc pCbWndProc, // = NULL
  2671. LPVOID pCbCookie // = NULL
  2672. )
  2673. : m_pStr( pStr )
  2674. , m_pCbVerifyTextInput( pCbVerify )
  2675. , m_pCbPutTextInputResult( pCbResult )
  2676. , m_pCbWndProc( pCbWndProc )
  2677. , m_pCbCookie( pCbCookie )
  2678. , m_bNoCancelAtKillFocus( false )
  2679. {
  2680. ASSERT( m_pStr != NULL );
  2681. }
  2682. CExtPopupMenuWnd::CInPlaceEditWnd::~CInPlaceEditWnd()
  2683. {
  2684. }
  2685. #ifdef _DEBUG
  2686. void CExtPopupMenuWnd::CInPlaceEditWnd::AssertValid() const
  2687. {
  2688. CEdit::AssertValid();
  2689. ASSERT( m_pStr != NULL );
  2690. }
  2691. #endif // _DEBUG
  2692. bool CExtPopupMenuWnd::CInPlaceEditWnd::Create(
  2693. CExtPopupMenuWnd * pPopup,
  2694. CRect rc,
  2695. UINT nDlgCtrlID
  2696. )
  2697. {
  2698. ASSERT_VALID( this );
  2699. ASSERT_VALID( pPopup );
  2700. ASSERT( pPopup->GetSafeHwnd() != NULL && ::IsWindow(pPopup->GetSafeHwnd()) );
  2701. m_bNoCancelAtKillFocus = false;
  2702. m_sTextSaved = *m_pStr;
  2703. bool bRTL = pPopup->OnQueryLayoutRTL();
  2704. if( ! CEdit::Create(
  2705. WS_CHILD|ES_LEFT|ES_AUTOHSCROLL,
  2706. rc,
  2707. pPopup,
  2708. nDlgCtrlID
  2709. )
  2710. )
  2711. {
  2712. ASSERT( FALSE );
  2713. return false;
  2714. }
  2715. SetFont( & pPopup->PmBridge_GetPM()->m_FontNormal );
  2716. SetWindowText( *m_pStr );
  2717. SetSel( 0, -1 ); // SetSel( 0, 0 );
  2718. if( bRTL )
  2719. ModifyStyleEx( 0, WS_EX_LAYOUTRTL, SWP_FRAMECHANGED );
  2720. return true;
  2721. }
  2722. LRESULT CExtPopupMenuWnd::CInPlaceEditWnd::WindowProc(
  2723. UINT message,
  2724. WPARAM wParam,
  2725. LPARAM lParam
  2726. )
  2727. {
  2728. if( m_pCbWndProc != NULL )
  2729. {
  2730. LRESULT lResult = 0L;
  2731. if( m_pCbWndProc(
  2732. lResult,
  2733. message,
  2734. wParam,
  2735. lParam,
  2736. *this,
  2737. m_pCbCookie
  2738. )
  2739. )
  2740. return lResult;
  2741. } // if( m_pCbWndProc != NULL )
  2742. if( message == WM_NCCALCSIZE )
  2743. {
  2744. NCCALCSIZE_PARAMS * pNCCSP =
  2745. reinterpret_cast < NCCALCSIZE_PARAMS * > ( lParam );
  2746. ASSERT( pNCCSP != NULL );
  2747. CRect rcInBarWnd( pNCCSP->rgrc[0] );
  2748. //rcInBarWnd.DeflateRect( 2, 2, 0, 2 );
  2749. rcInBarWnd.DeflateRect( 1, 1, 0, 2 );
  2750. ::CopyRect( &(pNCCSP->rgrc[0]), rcInBarWnd );
  2751. return 0;
  2752. } // if( message == WM_NCCALCSIZE )
  2753. if( message == WM_NCPAINT )
  2754. {
  2755. CRect rcInBarWnd, rcInBarClient;
  2756. GetWindowRect( &rcInBarWnd );
  2757. GetClientRect( &rcInBarClient );
  2758. ClientToScreen( &rcInBarClient );
  2759. if( rcInBarWnd == rcInBarClient )
  2760. return 0;
  2761. CPoint ptDevOffset = -rcInBarWnd.TopLeft();
  2762. rcInBarWnd.OffsetRect( ptDevOffset );
  2763. rcInBarClient.OffsetRect( ptDevOffset );
  2764. CWindowDC dc( this );
  2765. ASSERT( dc.GetSafeHdc() != NULL );
  2766. dc.ExcludeClipRect( &rcInBarClient );
  2767. dc.FillSolidRect(
  2768. rcInBarWnd,
  2769. GetPopupMenu()->PmBridge_GetPM()->GetColor( COLOR_WINDOW, this )
  2770. );
  2771. return 0;
  2772. } // if( message == WM_NCPAINT )
  2773. if( message == WM_GETDLGCODE )
  2774. return DLGC_WANTALLKEYS|DLGC_WANTCHARS|DLGC_WANTTAB;
  2775. if( message == WM_RBUTTONDOWN
  2776. || message == WM_RBUTTONUP
  2777. || message == WM_RBUTTONDBLCLK
  2778. || message == WM_CONTEXTMENU
  2779. )
  2780. return 0;
  2781. if( message == WM_KEYDOWN )
  2782. {
  2783. ASSERT( m_pStr != NULL );
  2784. if( int(wParam) == VK_SHIFT
  2785. || int(wParam) == VK_CONTROL
  2786. || int(wParam) == VK_MENU
  2787. )
  2788. return CEdit::WindowProc( message, wParam, lParam );
  2789. if( int(wParam) == VK_ESCAPE || int(wParam) == VK_MENU )
  2790. {
  2791. // if( m_pCbVerifyTextInput != NULL )
  2792. // {
  2793. // if( m_pCbVerifyTextInput(
  2794. // *this,
  2795. // m_pCbCookie,
  2796. // m_sTextSaved.IsEmpty() ? _T("") : ((LPCTSTR)m_sTextSaved),
  2797. // m_sTextSaved.IsEmpty() ? _T("") : ((LPCTSTR)m_sTextSaved)
  2798. // )
  2799. // )
  2800. // {
  2801. // if( m_pCbPutTextInputResult != NULL )
  2802. // m_pCbPutTextInputResult(
  2803. // *this,
  2804. // m_pCbCookie,
  2805. // m_sTextSaved.IsEmpty() ? _T("") : ((LPCTSTR)m_sTextSaved)
  2806. // );
  2807. // else
  2808. // *m_pStr = m_sTextSaved;
  2809. // }
  2810. // } // if( m_pCbVerifyTextInput != NULL )
  2811. // else
  2812. // {
  2813. // if( m_pCbPutTextInputResult != NULL )
  2814. // m_pCbPutTextInputResult(
  2815. // *this,
  2816. // m_pCbCookie,
  2817. // m_sTextSaved.IsEmpty() ? _T("") : ((LPCTSTR)m_sTextSaved)
  2818. // );
  2819. // else
  2820. // *m_pStr = m_sTextSaved;
  2821. // } // else from if( m_pCbVerifyTextInput != NULL )
  2822. if( int(wParam) == VK_MENU )
  2823. {
  2824. GetPopupMenu()->PostMessage( WM_CANCELMODE );
  2825. return 0;
  2826. }
  2827. CExtPopupMenuWnd * pPopup = GetPopupMenu();
  2828. int nCurIndex = pPopup->_GetCurIndex();
  2829. ASSERT(
  2830. 0 <= nCurIndex
  2831. && nCurIndex < pPopup->ItemGetCount()
  2832. );
  2833. pPopup->SetFocus();
  2834. HWND hWndOwn = m_hWnd;
  2835. pPopup->_ItemFocusCancel( FALSE );
  2836. if( ! ::IsWindow( hWndOwn ) )
  2837. return 0;
  2838. pPopup->_ItemFocusSet( nCurIndex, FALSE, TRUE );
  2839. if( ! ::IsWindow( hWndOwn ) )
  2840. return 0;
  2841. return 0;
  2842. } // if( int(wParam) == VK_ESCAPE || int(wParam) == VK_MENU )
  2843. if( int(wParam) == VK_RETURN )
  2844. {
  2845. ASSERT( m_pStr != NULL );
  2846. m_bNoCancelAtKillFocus = true;
  2847. CString sText;
  2848. GetWindowText( sText );
  2849. HWND hWndThis = GetSafeHwnd();
  2850. ASSERT( hWndThis != NULL && ::IsWindow(hWndThis) );
  2851. if( m_pCbVerifyTextInput != NULL )
  2852. {
  2853. if( m_pCbVerifyTextInput(
  2854. *this,
  2855. m_pCbCookie,
  2856. sText.IsEmpty() ? _T("") : ((LPCTSTR)sText),
  2857. sText.IsEmpty() ? _T("") : ((LPCTSTR)sText)
  2858. )
  2859. )
  2860. {
  2861. if( ! ::IsWindow(hWndThis) )
  2862. return 0;
  2863. if( m_pCbPutTextInputResult != NULL )
  2864. m_pCbPutTextInputResult(
  2865. *this,
  2866. m_pCbCookie,
  2867. sText.IsEmpty() ? _T("") : ((LPCTSTR)sText)
  2868. );
  2869. else
  2870. *m_pStr = sText;
  2871. }
  2872. } // if( m_pCbVerifyTextInput != NULL )
  2873. else
  2874. {
  2875. if( ! ::IsWindow(hWndThis) )
  2876. return 0;
  2877. if( m_pCbPutTextInputResult != NULL )
  2878. m_pCbPutTextInputResult(
  2879. *this,
  2880. m_pCbCookie,
  2881. sText.IsEmpty() ? _T("") : ((LPCTSTR)sText)
  2882. );
  2883. else
  2884. *m_pStr = sText;
  2885. } // else from if( m_pCbVerifyTextInput != NULL )
  2886. if( ! ::IsWindow(hWndThis) )
  2887. return 0;
  2888. CExtPopupMenuWnd * pPopup = GetPopupMenu();
  2889. pPopup->PostMessage( WM_CANCELMODE );
  2890. return 0;
  2891. } // if( int(wParam) == VK_RETURN )
  2892. bool bAlt =
  2893. ( (::GetAsyncKeyState(VK_MENU)&0x8000) != 0 )
  2894. ? true : false;
  2895. if( bAlt )
  2896. {
  2897. GetPopupMenu()->PostMessage( WM_CANCELMODE );
  2898. return 0;
  2899. }
  2900. ASSERT( m_pStr != NULL );
  2901. CString sTextOld;
  2902. GetWindowText( sTextOld );
  2903. DWORD dwSelSaved = CEdit::GetSel();
  2904. CEdit::SetRedraw( FALSE );
  2905. LRESULT lResult = CEdit::WindowProc( message, wParam, lParam );
  2906. CString sTextNew;
  2907. GetWindowText( sTextNew );
  2908. if( m_pCbVerifyTextInput != NULL )
  2909. {
  2910. if( m_pCbVerifyTextInput(
  2911. *this,
  2912. m_pCbCookie,
  2913. sTextOld.IsEmpty() ? _T("") : ((LPCTSTR)sTextOld),
  2914. sTextNew.IsEmpty() ? _T("") : ((LPCTSTR)sTextNew)
  2915. )
  2916. )
  2917. {
  2918. //*m_pStr = sTextNew;
  2919. }
  2920. else
  2921. {
  2922. CEdit::SetSel( 0, -1 );
  2923. CEdit::ReplaceSel( sTextOld );
  2924. CEdit::SetSel( dwSelSaved );
  2925. }
  2926. } // if( m_pCbVerifyTextInput != NULL )
  2927. //else
  2928. //*m_pStr = sTextNew;
  2929. CEdit::SetRedraw( TRUE );
  2930. Invalidate();
  2931. UpdateWindow();
  2932. return lResult;
  2933. } // if( message == WM_KEYDOWN )
  2934. else if( message == WM_CHAR )
  2935. {
  2936. if( wParam == VK_RETURN )
  2937. return 0;
  2938. ASSERT( m_pStr != NULL );
  2939. CString sTextOld;
  2940. GetWindowText( sTextOld );
  2941. DWORD dwSelSaved = CEdit::GetSel();
  2942. CEdit::SetRedraw( FALSE );
  2943. LRESULT lResult = CEdit::WindowProc( message, wParam, lParam );
  2944. CString sTextNew;
  2945. GetWindowText( sTextNew );
  2946. if( m_pCbVerifyTextInput != NULL )
  2947. {
  2948. if( m_pCbVerifyTextInput(
  2949. *this,
  2950. m_pCbCookie,
  2951. sTextOld.IsEmpty() ? _T("") : ((LPCTSTR)sTextOld),
  2952. sTextNew.IsEmpty() ? _T("") : ((LPCTSTR)sTextNew)
  2953. )
  2954. )
  2955. {
  2956. //*m_pStr = sTextNew;
  2957. }
  2958. else
  2959. {
  2960. CEdit::SetSel( 0, -1 );
  2961. CEdit::ReplaceSel( sTextOld );
  2962. CEdit::SetSel( dwSelSaved );
  2963. }
  2964. } // if( m_pCbVerifyTextInput != NULL )
  2965. //else
  2966. //*m_pStr = sTextNew;
  2967. CEdit::SetRedraw( TRUE );
  2968. Invalidate();
  2969. UpdateWindow();
  2970. return lResult;
  2971. } // else if( message == WM_CHAR )
  2972. else if( message == CExtPopupMenuWnd::CInPlaceEditWnd::g_nMsgDeleteSelection )
  2973. {
  2974. //int nChrStart = 0, nChrEnd = 0;
  2975. //CEdit::GetSel( nChrStart, nChrEnd );
  2976. DWORD dwSelSaved = CEdit::GetSel();
  2977. int nChrStart = int(LOWORD(dwSelSaved));
  2978. int nChrEnd = int(HIWORD(dwSelSaved));
  2979. if( m_pCbVerifyTextInput != NULL )
  2980. {
  2981. CString sTextOld, sTextNew;
  2982. GetWindowText( sTextOld );
  2983. SetRedraw( FALSE );
  2984. if( nChrStart != nChrEnd )
  2985. CEdit::ReplaceSel( _T("") );
  2986. else
  2987. {
  2988. nChrEnd = nChrStart + 1;
  2989. SetSel( nChrStart, nChrEnd );
  2990. CEdit::ReplaceSel( _T("") );
  2991. SetSel( nChrStart, nChrStart );
  2992. } // else from if( nChrStart != nChrEnd )
  2993. GetWindowText( sTextNew );
  2994. if( m_pCbVerifyTextInput(
  2995. *this,
  2996. m_pCbCookie,
  2997. sTextOld.IsEmpty() ? _T("") : ((LPCTSTR)sTextOld),
  2998. sTextNew.IsEmpty() ? _T("") : ((LPCTSTR)sTextNew)
  2999. )
  3000. )
  3001. {
  3002. //*m_pStr = sTextNew;
  3003. }
  3004. else
  3005. {
  3006. CEdit::SetSel( 0, -1 );
  3007. CEdit::ReplaceSel( sTextOld );
  3008. CEdit::SetSel( dwSelSaved );
  3009. }
  3010. SetRedraw( TRUE );
  3011. Invalidate();
  3012. } // if( m_pCbVerifyTextInput != NULL )
  3013. // if( nChrStart != nChrEnd )
  3014. // CEdit::ReplaceSel( _T("") );
  3015. // else
  3016. // {
  3017. // nChrEnd = nChrStart + 1;
  3018. // SetRedraw( FALSE );
  3019. // SetSel( nChrStart, nChrEnd );
  3020. // CEdit::ReplaceSel( _T("") );
  3021. // SetSel( nChrStart, nChrStart );
  3022. // SetRedraw( TRUE );
  3023. // Invalidate();
  3024. // } // else from if( nChrStart != nChrEnd )
  3025. return 0;
  3026. } // else if( message == CExtPopupMenuWnd::CInPlaceEditWnd::g_nMsgDeleteSelection )
  3027. else if( message == CExtPopupMenuWnd::CInPlaceEditWnd::g_nMsgSelectAll )
  3028. {
  3029. CEdit::SetSel( 0, -1 );
  3030. return 0;
  3031. } // else if( message == CExtPopupMenuWnd::CInPlaceEditWnd::g_nMsgSelectAll )
  3032. else if( message == WM_KILLFOCUS )
  3033. {
  3034. ASSERT( m_pStr != NULL );
  3035. ShowWindow( SW_HIDE );
  3036. if( !m_bNoCancelAtKillFocus )
  3037. SetWindowText( *m_pStr );
  3038. // ASSERT( m_pStr != NULL );
  3039. // CString sText;
  3040. // if( m_bNoCancelAtKillFocus )
  3041. // GetWindowText( sText );
  3042. // else
  3043. // sText = (LPCTSTR)m_sTextSaved;
  3044. // if( m_pCbVerifyTextInput != NULL )
  3045. // {
  3046. // if( m_pCbVerifyTextInput(
  3047. // *this,
  3048. // m_pCbCookie,
  3049. // sText.IsEmpty() ? _T("") : ((LPCTSTR)sText),
  3050. // sText.IsEmpty() ? _T("") : ((LPCTSTR)sText)
  3051. // )
  3052. // )
  3053. // {
  3054. // if( m_pCbPutTextInputResult != NULL )
  3055. // m_pCbPutTextInputResult(
  3056. // *this,
  3057. // m_pCbCookie,
  3058. // sText.IsEmpty() ? _T("") : ((LPCTSTR)sText)
  3059. // );
  3060. // else
  3061. // *m_pStr = sText;
  3062. // }
  3063. // } // if( m_pCbVerifyTextInput != NULL )
  3064. // else
  3065. // {
  3066. // if( m_pCbPutTextInputResult != NULL )
  3067. // m_pCbPutTextInputResult(
  3068. // *this,
  3069. // m_pCbCookie,
  3070. // sText.IsEmpty() ? _T("") : ((LPCTSTR)sText)
  3071. // );
  3072. // else
  3073. // *m_pStr = sText;
  3074. // } // else from if( m_pCbVerifyTextInput != NULL )
  3075. } // else if( message == WM_KILLFOCUS )
  3076. return CEdit::WindowProc( message, wParam, lParam );
  3077. }
  3078. void CExtPopupMenuWnd::CInPlaceEditWnd::PostNcDestroy()
  3079. {
  3080. ASSERT_VALID( this );
  3081. delete this;
  3082. }
  3083. CExtPopupMenuWnd * CExtPopupMenuWnd::CInPlaceEditWnd::GetPopupMenu()
  3084. {
  3085. ASSERT_VALID( this );
  3086. ASSERT( GetSafeHwnd() != NULL && ::IsWindow(GetSafeHwnd()) );
  3087. CWnd * pWndParent = GetParent();
  3088. ASSERT_VALID( pWndParent );
  3089. ASSERT_KINDOF( CExtPopupMenuWnd, pWndParent );
  3090. ASSERT( pWndParent->GetSafeHwnd() != NULL && ::IsWindow(pWndParent->GetSafeHwnd()) );
  3091. return STATIC_DOWNCAST( CExtPopupMenuWnd, pWndParent );
  3092. }
  3093. /////////////////////////////////////////////////////////////////////////////
  3094. // CExtShadowCtrl
  3095. IMPLEMENT_DYNCREATE( CExtShadowCtrl, CWnd );
  3096. CExtShadowCtrl::CExtShadowCtrl()
  3097. : m_rcOuterPadding( 0, 0, 0, 0 )
  3098. , m_rcRenderingPaddingData( 0, 0, 0, 0 )
  3099. , m_hWndParent( NULL )
  3100. {
  3101. }
  3102. CExtShadowCtrl::~CExtShadowCtrl()
  3103. {
  3104. }
  3105. bool CExtShadowCtrl::IsAvailable() const
  3106. {
  3107. ASSERT_VALID( this );
  3108. if( ! g_PaintManager.m_bIsWin2000orLater )
  3109. return false;
  3110. // if( ! CExtPopupMenuWnd::g_bMenuWithShadows )
  3111. // return false;
  3112. if( g_PaintManager.m_pfnSetLayeredWindowAttributes == NULL
  3113. || g_PaintManager.m_pfnUpdateLayeredWindow == NULL
  3114. || CExtPaintManager::stat_GetBPP() < 15
  3115. )
  3116. return false;
  3117. return true;
  3118. }
  3119. bool CExtShadowCtrl::Create(
  3120. HWND hWndParent,
  3121. INT nShadowSize
  3122. )
  3123. { ////// return false;
  3124. ASSERT_VALID( this );
  3125. ASSERT( m_hWnd == NULL );
  3126. ASSERT( nShadowSize >= 0 );
  3127. if( ! IsAvailable() )
  3128. return false;
  3129. ASSERT( g_PaintManager.m_bIsWin2000orLater );
  3130. ASSERT( g_PaintManager.m_pfnSetLayeredWindowAttributes != NULL );
  3131. ASSERT( g_PaintManager.m_pfnUpdateLayeredWindow != NULL );
  3132. if( hWndParent == NULL
  3133. || (! ::IsWindow( hWndParent ) )
  3134. )
  3135. {
  3136. ASSERT( FALSE );
  3137. return false;
  3138. }
  3139. __EXT_MFC_LONG_PTR dwParentStyle = ::__EXT_MFC_GetWindowLong( hWndParent, GWL_STYLE );
  3140. if( ( dwParentStyle & WS_CHILD ) != 0 )
  3141. {
  3142. ASSERT( FALSE );
  3143. return false;
  3144. }
  3145. static TCHAR strShadowClassName[] = _T("Professional Shadow");
  3146. static bool g_bWndClassRegistered = false;
  3147. if( ! g_bWndClassRegistered )
  3148. {
  3149. WNDCLASS _wndClassInfo;
  3150. HINSTANCE hInst = ::AfxGetInstanceHandle();
  3151. if( ! ::GetClassInfo( hInst, strShadowClassName, &_wndClassInfo ) )
  3152. {
  3153. _wndClassInfo.style = __SHADOW_WNDCLASS_STYLES__;
  3154. _wndClassInfo.lpfnWndProc = ::DefWindowProc;
  3155. _wndClassInfo.cbClsExtra = _wndClassInfo.cbWndExtra = 0;
  3156. _wndClassInfo.hInstance = hInst;
  3157. _wndClassInfo.hIcon = NULL;
  3158. _wndClassInfo.hCursor = ::LoadCursor( NULL, IDC_ARROW );
  3159. ASSERT( _wndClassInfo.hCursor != NULL );
  3160. _wndClassInfo.hbrBackground = NULL; 
  3161. _wndClassInfo.lpszMenuName = NULL;
  3162. _wndClassInfo.lpszClassName = strShadowClassName;
  3163. if( !::AfxRegisterClass( & _wndClassInfo ) )
  3164. {
  3165. ASSERT( FALSE );
  3166. return false;
  3167. }
  3168. }
  3169. g_bWndClassRegistered = true;
  3170. } // if( ! g_bWndClassRegistered )
  3171. if( m_bmpLayerSource.IsEmpty() )
  3172. {
  3173. static BYTE g_arrBmpBytes1x1[] =
  3174. {
  3175. 0x42,0x4D,0x36,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x2B,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,
  3176. 0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x2B,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3177. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3178. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3179. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3180. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3181. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3182. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3183. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3184. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3185. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3186. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3187. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3188. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3189. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3190. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3191. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3192. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3193. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3194. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3195. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3196. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3197. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3198. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3199. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3200. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3201. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3202. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3203. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3204. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3205. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3206. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x2B,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3207. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x0E,0x0E
  3208. };
  3209. static BYTE g_arrBmpBytes2x2[] =
  3210. {
  3211. 0x42,0x4D,0x36,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x2B,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,
  3212. 0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x2B,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,
  3213. 0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3214. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3215. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3216. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3217. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3218. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3219. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3220. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3221. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3222. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3223. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3224. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3225. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3226. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3227. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3228. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3229. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3230. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3231. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3232. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3233. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3234. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3235. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3236. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3237. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3238. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3239. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3240. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x13,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3241. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x2B,0x00,0x00,0x00,0x0E,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3242. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x05,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3243. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  3244. };
  3245. static BYTE g_arrBmpBytes3x3[] =
  3246. {
  3247. 0x42,0x4D,0x36,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,
  3248. 0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x3D,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,
  3249. 0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x3D,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,
  3250. 0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3251. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3252. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3253. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3254. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3255. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3256. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3257. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3258. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3259. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3260. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3261. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3262. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3263. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3264. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3265. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3266. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3267. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3268. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3269. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3270. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3271. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3272. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3273. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3274. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x1A,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3275. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3D,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x17,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3276. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x11,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3277. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x08,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3278. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3279. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  3280. };
  3281. static BYTE g_arrBmpBytes4x4[] =
  3282. {
  3283. 0x42,0x4D,0x36,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,
  3284. 0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,
  3285. 0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,
  3286. 0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,
  3287. 0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3288. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3289. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3290. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3291. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3292. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3293. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3294. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3295. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3296. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3297. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3298. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3299. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3300. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3301. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3302. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3303. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3304. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3305. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3306. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3307. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3308. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3309. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x1B,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3310. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x18,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3311. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3312. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0C,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3313. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3314. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x04,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3315. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x01
  3316. };
  3317. static BYTE g_arrBmpBytes5x5[] =
  3318. {
  3319. 0x42,0x4D,0x36,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,
  3320. 0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,
  3321. 0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,
  3322. 0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,
  3323. 0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,
  3324. 0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x4A,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3325. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3326. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3327. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3328. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3329. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3330. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3331. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3332. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3333. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3334. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3335. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3336. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3337. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3338. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3339. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3340. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3341. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3342. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3343. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3344. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x12,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3345. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x10,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3346. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0E,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3347. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0B,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3348. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3349. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x05,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3350. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3351. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x01
  3352. };
  3353. static BYTE g_arrBmpBytes6x6[] =
  3354. {
  3355. 0x42,0x4D,0x36,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,
  3356. 0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,
  3357. 0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,
  3358. 0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x35,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,
  3359. 0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x35,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,
  3360. 0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x49,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,
  3361. 0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x4B,0x00,0x00,0x00,0x49,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0C,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3362. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3363. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3364. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3365. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3366. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3367. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3368. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3369. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3370. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3371. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3372. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3373. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3374. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3375. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3376. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3377. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3378. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x0C,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3379. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3380. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x35,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0B,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3381. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x09,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3382. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x08,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3383. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x05,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3384. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3385. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3386. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
  3387. 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00
  3388. };
  3389. LPBYTE pArrBmpBytes = NULL;
  3390. INT nBmpBytesCount = 0;
  3391. CRect _rcOuterPadding( 0, 0, 0, 0 ), _rcRenderingPaddingData( 0, 0, 0, 0 );
  3392. switch( nShadowSize )
  3393. {
  3394. case 0:
  3395. return false;
  3396. case 1:
  3397. pArrBmpBytes = g_arrBmpBytes1x1;
  3398. nBmpBytesCount = INT( sizeof( g_arrBmpBytes1x1 ) / sizeof( g_arrBmpBytes1x1[0] ) );
  3399. _rcOuterPadding.SetRect( 0, 0, 1, 1 );
  3400. _rcRenderingPaddingData.SetRect( 3, 3, 3, 3 );
  3401. break;
  3402. case 2:
  3403. pArrBmpBytes = g_arrBmpBytes2x2;
  3404. nBmpBytesCount = INT( sizeof( g_arrBmpBytes2x2 ) / sizeof( g_arrBmpBytes2x2[0] ) );
  3405. _rcOuterPadding.SetRect( 0, 0, 2, 2 );
  3406. _rcRenderingPaddingData.SetRect( 4, 4, 4, 4 );
  3407. break;
  3408. case 3:
  3409. pArrBmpBytes = g_arrBmpBytes3x3;
  3410. nBmpBytesCount = INT( sizeof( g_arrBmpBytes3x3 ) / sizeof( g_arrBmpBytes3x3[0] ) );
  3411. _rcOuterPadding.SetRect( 0, 0, 3, 3 );
  3412. _rcRenderingPaddingData.SetRect( 6, 6, 6, 6 );
  3413. break;
  3414. case 4:
  3415. pArrBmpBytes = g_arrBmpBytes4x4;
  3416. nBmpBytesCount = INT( sizeof( g_arrBmpBytes4x4 ) / sizeof( g_arrBmpBytes4x4[0] ) );
  3417. _rcOuterPadding.SetRect( 0, 0, 4, 4 );
  3418. _rcRenderingPaddingData.SetRect( 8, 8, 8, 8 );
  3419. break;
  3420. case 5:
  3421. pArrBmpBytes = g_arrBmpBytes5x5;
  3422. nBmpBytesCount = INT( sizeof( g_arrBmpBytes5x5 ) / sizeof( g_arrBmpBytes5x5[0] ) );
  3423. _rcOuterPadding.SetRect( 0, 0, 5, 5 );
  3424. _rcRenderingPaddingData.SetRect( 8, 8, 8, 8 );
  3425. break;
  3426. default:
  3427. nShadowSize = 6;
  3428. pArrBmpBytes = g_arrBmpBytes6x6;
  3429. nBmpBytesCount = INT( sizeof( g_arrBmpBytes6x6 ) / sizeof( g_arrBmpBytes6x6[0] ) );
  3430. _rcOuterPadding.SetRect( 0, 0, 6, 6 );
  3431. _rcRenderingPaddingData.SetRect( 10, 10, 10, 10 );
  3432. break;
  3433. } // switch( nShadowSize )
  3434. ASSERT( pArrBmpBytes != NULL );
  3435. ASSERT( nBmpBytesCount > 0 );
  3436. if( ! m_bmpLayerSource.LoadBMP_Buffer( pArrBmpBytes, nBmpBytesCount, true ) )
  3437. {
  3438. ASSERT( FALSE );
  3439. return false;
  3440. }
  3441. m_rcOuterPadding = _rcOuterPadding;
  3442. m_rcRenderingPaddingData = _rcRenderingPaddingData;
  3443. } // if( m_bmpLayerSource.IsEmpty() )
  3444. CRect rcWnd;
  3445. ::GetWindowRect( hWndParent, &rcWnd );
  3446.   rcWnd.InflateRect(
  3447.   m_rcOuterPadding.left,
  3448.   m_rcOuterPadding.top,
  3449.   m_rcOuterPadding.right,
  3450.   m_rcOuterPadding.bottom
  3451.   );
  3452. CSize _sizeWnd = rcWnd.Size();
  3453. if( m_bmpLayerData.GetSafeHandle() == NULL )
  3454. {
  3455. CExtBitmap _bmpColored;
  3456. CExtBitmap * pBmpSrc = &m_bmpLayerSource;
  3457. COLORREF clrShadow = g_PaintManager->GetShadowAdjustColor();
  3458. if( clrShadow != COLORREF(-1L) )
  3459. {
  3460. _bmpColored = (*pBmpSrc);
  3461. if( ! _bmpColored.IsEmpty() )
  3462. {
  3463. _bmpColored.AdjustHLS( COLORREF(-1L), RGB(0,0,0), 0.0, 0.30, 0.5 );
  3464. _bmpColored.ColorizeMono( COLORREF(-1L), clrShadow );
  3465. pBmpSrc = &_bmpColored;
  3466. }
  3467. } // if( clrShadow != COLORREF(-1L) )
  3468. pBmpSrc->PreMultiplyRGBChannels();
  3469. CWindowDC dcDesktop(NULL);
  3470. BITMAPINFOHEADER bih;
  3471. bih.biSize = sizeof(BITMAPINFOHEADER);
  3472. bih.biWidth = _sizeWnd.cx;
  3473. bih.biHeight = _sizeWnd.cy;
  3474. bih.biPlanes = 1;
  3475. bih.biBitCount = 32;
  3476. bih.biCompression = BI_RGB;
  3477. bih.biSizeImage = bih.biWidth*bih.biHeight;
  3478. bih.biXPelsPerMeter = 0;
  3479. bih.biYPelsPerMeter = 0;
  3480. bih.biClrUsed = 0;
  3481. bih.biClrImportant = 0;
  3482. COLORREF * pClrSurface = NULL;
  3483. HBITMAP hDIB =
  3484. ::CreateDIBSection(
  3485. dcDesktop.GetSafeHdc(),
  3486. (LPBITMAPINFO)&bih,
  3487. DIB_RGB_COLORS,
  3488. (void **)&pClrSurface,
  3489. NULL,
  3490. NULL
  3491. );
  3492. if( hDIB == NULL )
  3493. {
  3494. ASSERT( FALSE );
  3495. return false;
  3496. }
  3497. ASSERT( pClrSurface != NULL );
  3498. CDC dc;
  3499. if( ! dc.CreateCompatibleDC( &dcDesktop ) )
  3500. {
  3501. ASSERT( FALSE );
  3502. return false;
  3503. }
  3504. HGDIOBJ hOld = dc.SelectObject( hDIB );
  3505. CRect rcPadding = m_rcRenderingPaddingData;
  3506. if( ( rcPadding.left + rcPadding.right ) >= _sizeWnd.cx )
  3507. rcPadding.left = rcPadding.right = 0;
  3508. if( ( rcPadding.top + rcPadding.bottom ) >= _sizeWnd.cy )
  3509. rcPadding.top = rcPadding.bottom = 0;
  3510. CWnd * pWndPermanent = CWnd::FromHandlePermanent( hWndParent );
  3511. bool bDefaultSimpleShadow = true;
  3512. if( pWndPermanent != NULL )
  3513. {
  3514. ASSERT_VALID( pWndPermanent );
  3515. CExtPopupMenuWnd * pPopup = DYNAMIC_DOWNCAST( CExtPopupMenuWnd, pWndPermanent );
  3516. if( pPopup != NULL )
  3517. {
  3518. if( pPopup->_IsCombineWithEA() )
  3519. {
  3520. bDefaultSimpleShadow = false;
  3521. CRect rcClient, rcExcludeArea = pPopup->GetExcludeArea();
  3522. pPopup->ScreenToClient( &rcExcludeArea );
  3523. pPopup->_GetClientRect( &rcClient );
  3524. dc.ExcludeClipRect( &rcExcludeArea );
  3525. dc.ExcludeClipRect( &rcClient );
  3526. rcExcludeArea.InflateRect( 0, 0, nShadowSize, nShadowSize );
  3527. rcClient.InflateRect( 0, 0, nShadowSize, nShadowSize );
  3528. pBmpSrc->AlphaBlendSkinParts(
  3529. dc.GetSafeHdc(),
  3530. rcExcludeArea,
  3531. rcPadding,
  3532. CExtBitmap::__EDM_STRETCH,
  3533. true
  3534. );
  3535. pBmpSrc->AlphaBlendSkinParts(
  3536. dc.GetSafeHdc(),
  3537. rcClient,
  3538. rcPadding,
  3539. CExtBitmap::__EDM_STRETCH,
  3540. true
  3541. );
  3542. } // if( pPopup->_IsCombineWithEA() )
  3543. } // if( pPopup != NULL )
  3544. } // if( pWndPermanent != NULL )
  3545. if( bDefaultSimpleShadow )
  3546. {
  3547. CRect rcDst( 0, 0, _sizeWnd.cx, _sizeWnd.cy );
  3548. pBmpSrc->AlphaBlendSkinParts(
  3549. dc.GetSafeHdc(),
  3550. rcDst,
  3551. rcPadding,
  3552. CExtBitmap::__EDM_STRETCH,
  3553. true
  3554. );
  3555. } // if( bDefaultSimpleShadow )
  3556. dc.SelectObject( hOld );
  3557. m_bmpLayerData.Attach( hDIB );
  3558. } // if( m_bmpLayerData.GetSafeHandle() == NULL )
  3559. if( ! CWnd::CreateEx(
  3560. WS_EX_TOPMOST
  3561. |__EXT_MFC_WS_EX_LAYERED
  3562. | WS_EX_TRANSPARENT
  3563. | ( g_PaintManager.m_bIsWin2000orLater
  3564. ? (WS_EX_NOINHERITLAYOUT)
  3565. : 0
  3566. )
  3567. ,
  3568. strShadowClassName,
  3569. NULL,
  3570. WS_POPUP|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,
  3571. rcWnd.left,
  3572. rcWnd.top,
  3573. _sizeWnd.cx,
  3574. _sizeWnd.cy,
  3575. hWndParent,
  3576. (HMENU)NULL
  3577. )
  3578. )
  3579. {
  3580. ASSERT( FALSE );
  3581. return false;
  3582. }
  3583. if( UpdateWindowLayer( (BYTE)255 ) )
  3584. {
  3585. ::SetWindowPos(
  3586. m_hWnd, hWndParent, 0, 0, 0, 0,
  3587. SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE
  3588.   |SWP_SHOWWINDOW
  3589. |SWP_NOSENDCHANGING
  3590. |SWP_NOREDRAW
  3591.  //|SWP_NOCOPYBITS
  3592. );
  3593. }
  3594. m_hWndParent = hWndParent;
  3595. //SetupHookWndSink( m_hWndParent );
  3596. return true;
  3597. }
  3598. bool CExtShadowCtrl::UpdateWindowLayer(
  3599. BYTE nConstantAlpha
  3600. )
  3601. {
  3602. ASSERT_VALID( this );
  3603. ASSERT( GetSafeHwnd() != NULL );
  3604. ASSERT( g_PaintManager.m_bIsWin2000orLater );
  3605. ASSERT( g_PaintManager.m_pfnSetLayeredWindowAttributes != NULL );
  3606. ASSERT( g_PaintManager.m_pfnUpdateLayeredWindow != NULL );
  3607. return UpdateWindowLayer( m_bmpLayerData, nConstantAlpha );
  3608. }
  3609. bool CExtShadowCtrl::UpdateWindowLayer(
  3610. CBitmap & _bmpLayer,
  3611. BYTE nConstantAlpha
  3612. )
  3613. {
  3614. ASSERT_VALID( this );
  3615. ASSERT( GetSafeHwnd() != NULL );
  3616. ASSERT( g_PaintManager.m_bIsWin2000orLater );
  3617. ASSERT( g_PaintManager.m_pfnSetLayeredWindowAttributes != NULL );
  3618. ASSERT( g_PaintManager.m_pfnUpdateLayeredWindow != NULL );
  3619. if( _bmpLayer.GetSafeHandle() == NULL )
  3620. return false;
  3621. bool bRetVal = false;
  3622. CWindowDC dcDesktop( NULL );
  3623. CDC dcMem;
  3624. if( dcMem.CreateCompatibleDC( &dcDesktop ) )
  3625. {
  3626. CBitmap * pOldBmp = dcMem.SelectObject( &_bmpLayer );
  3627. BITMAP _bi;
  3628. ::memset( &_bi, 0, sizeof(BITMAP) );
  3629. _bmpLayer.GetBitmap( &_bi );
  3630. CExtPaintManager::CExtPaintManagerAutoPtr::__EXT_MFC_BLENDFUNCTION _bf =
  3631. {
  3632. __EXT_MFC_AC_SRC_OVER,
  3633. 0,
  3634. nConstantAlpha,
  3635. __EXT_MFC_AC_SRC_ALPHA
  3636. };
  3637. CRect rcWnd;
  3638. GetWindowRect( &rcWnd );
  3639. CPoint ptSrc( 0, 0 ), ptDst( rcWnd.TopLeft() );
  3640. CSize sizeDst = rcWnd.Size();
  3641. bRetVal =
  3642. g_PaintManager.m_pfnUpdateLayeredWindow(
  3643. GetSafeHwnd(),
  3644. dcDesktop,
  3645. &ptDst,
  3646. &sizeDst,
  3647. dcMem,
  3648. &ptSrc,
  3649. 0,
  3650. &_bf,
  3651. __EXT_MFC_ULW_ALPHA
  3652. ) ? true : false;
  3653. dcMem.SelectObject( pOldBmp );
  3654. } // if( dcMem.CreateCompatibleDC( &dcDesktop ) )
  3655. return bRetVal;
  3656. }
  3657. LRESULT CExtShadowCtrl::WindowProc(
  3658. UINT message,
  3659. WPARAM wParam,
  3660. LPARAM lParam
  3661. )
  3662. {
  3663. switch( message )
  3664. {
  3665. case WM_NCCALCSIZE:
  3666. return 0;
  3667. case WM_NCDESTROY:
  3668. case WM_DESTROY:
  3669. m_hWndParent = NULL;
  3670. // RemoveAllWndHooks();
  3671. if( m_bmpLayerData.GetSafeHandle() != NULL )
  3672. m_bmpLayerData.DeleteObject();
  3673. break;
  3674. } // switch( message )
  3675. LRESULT lResult = CWnd::WindowProc( message, wParam, lParam );
  3676. return lResult;
  3677. }
  3678. //bool CExtShadowCtrl::OnHookWndMsg(
  3679. // LRESULT & lResult,
  3680. // HWND hWndHooked,
  3681. // UINT nMessage,
  3682. // WPARAM & wParam,
  3683. // LPARAM & lParam
  3684. // )
  3685. //{
  3686. //__PROF_UIS_MANAGE_STATE;
  3687. // if( hWndHooked == m_hWndParent && GetSafeHwnd() != NULL )
  3688. // {
  3689. // switch( nMessage )
  3690. // {
  3691. // case WM_DESTROY:
  3692. // case WM_NCDESTROY:
  3693. // DestroyWindow();
  3694. // break;
  3695. // } // switch( nMessage )
  3696. // } // if( hWndHooked == m_hWndParent ...
  3697. //bool bRetVal =
  3698. // CExtHookSink::OnHookWndMsg(
  3699. // lResult,
  3700. // hWndHooked,
  3701. // nMessage,
  3702. // wParam,
  3703. // lParam
  3704. // );
  3705. // return bRetVal;
  3706. //}
  3707. void CExtPopupMenuWnd::_ForceCancelCallbacs()
  3708. {
  3709. ASSERT_VALID( this );
  3710. }