⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visual.c

📁 An complete pmp solution for mattel juicebox player. Using crossworks for arm.
💻 C
字号:
#include "visual.h"

//=====================================================================================
//                                   Custom list
/*-------------------------------------------------------------------------------------
    The simpliest list with selected item highlighting. Without scroll-bars.
    Uses xTStringList as base.
*/ 
void wvisCustomListInit (visTCustomList *pxList)
{
  pxList->xLineRect.x1 = pxList->xWorkRect.x1;
  pxList->xLineRect.x2 = pxList->xWorkRect.x2;
  pxList->xLineRect.y1 = pxList->xWorkRect.y1;
  pxList->xLineRect.y2 = pxList->xWorkRect.y1 + pxList->pxFont->uiSizeY;
  u16 uiFontSize = pxList->pxFont->uiSizeY;
  uiFontSize += uiFontSize>>2;
  pxList->ulWindowSize = pxList->pxBitmap->uiSizeY / uiFontSize - 1;
  pxList->ulWindowStart = 0;
}
//---------------------------------------------------------
void wvisCustomListRefresh (visTCustomList *pxList)
{
  i32 lItemIndex = pxList->lItemIndex;
  u32 ulWindowSize = pxList->ulWindowSize;
  u32 ulWindowStart = pxList->ulWindowStart;
  u32 ulBufferSize = pxList->ulWindowBuffer;
  u32 ulLength = pxList->pxItems->ulLength;
  if (lItemIndex < 0) lItemIndex = 0; 
  if (lItemIndex >= ulLength) lItemIndex = ulLength - 1;
  {
  if (ulLength<ulWindowSize) {ulWindowStart = 0; ulWindowSize = ulLength;}
  else if (lItemIndex < ulBufferSize) ulWindowStart = 0;
  else if (lItemIndex > ulLength - ulBufferSize) ulWindowStart = ulLength - ulWindowSize;
  else 
    {
    if (lItemIndex < ulWindowStart + ulBufferSize) 
       ulWindowStart = lItemIndex - ulBufferSize;
    if (lItemIndex > ulWindowStart + ulWindowSize - ulBufferSize) 
       ulWindowStart = lItemIndex - ulWindowSize + ulBufferSize;  
    }
  }
  
  wFloodFill (pxList->pxBitmap, &(pxList->xWorkRect), 0, pxList->uiColorBackground);
  u32 i;
  u32 ulShift = 0x00000000;
  u32 ulShiftAdd = pxList->pxFont->uiSizeY;
  ulShiftAdd+= ulShiftAdd >> 2;
  ulShiftAdd<<= 16;
  for (i = ulWindowStart; i< lItemIndex;i++)
    {
    wDrawString (pxList->pxBitmap,
                 pxList->pxFont,
                 (u08*)(*((u32*)pxList->pxItems->pxItems + i)),
				 &(pxList->xLineRect),
                 ulShift, pxList->uiColorFont);
    ulShift+=ulShiftAdd;
    }
  
  wFloodFill (pxList->pxBitmap,
              &(pxList->xLineRect),
              ulShift,
              pxList->uiColorHlBackground);
              
  wDrawString (pxList->pxBitmap,
               pxList->pxFont,
               (u08*)(*((u32*)pxList->pxItems->pxItems + i)),
               &(pxList->xLineRect),
               ulShift, pxList->uiColorHlFont);
  i++;
  ulShift+=ulShiftAdd;
  for (; i< ulWindowStart + ulWindowSize;i++)
    {
    wDrawString (pxList->pxBitmap,
                 pxList->pxFont,
                 (u08*)(*((u32*)pxList->pxItems->pxItems + i)),
                 &(pxList->xLineRect),
                 ulShift, pxList->uiColorFont);
    ulShift+=ulShiftAdd;
    }
  pxList->lItemIndex = lItemIndex;
  pxList->ulWindowStart = ulWindowStart;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -