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

📄 scrsav.c

📁 MTK portableDVD 采用mtk1389方案的代码
💻 C
📖 第 1 页 / 共 2 页
字号:

    case SS_COL_GREEN1:
		case SS_COL_GREEN2:
    case SS_COL_GREEN3:
		case SS_COL_BLACK1:
		{
			_bSsColIdx = SS_COL_GREEN1;
      break;
    }

		case SS_COL_ORANGE1:
		case SS_COL_ORANGE2:
		case SS_COL_ORANGE3:
		case SS_COL_BLACK2:
		{
      _bSsColIdx = SS_COL_ORANGE1;		
      break;
		}

		case SS_COL_BLUE1:
		case SS_COL_BLUE2:
		case SS_COL_BLUE3:
		case SS_COL_BLACK3:
		default:
		{
		  _bSsColIdx = SS_COL_BLUE1;
		  break;
		}
	}
}



/*********************************************************************
  Function    : static void bSsShowFootBear(BYTE bFootCol) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static void bSsShowFootBear(BYTE bFootCol) large
{
	_wStartX = _wPosX; 
	_wStartY = _wPosY;

	switch(_wSsBmpIdx)
	{
	  case BMP_SS_BEAR_UP:
		{
      _wEndX = _wPosX + BMP_UP_BEAR_W; 
      _wEndY = _wPosY + BMP_UP_BEAR_H;
			break;
		}
					
		case BMP_SS_BEAR_UPR:
		{
      _wEndX = _wPosX + BMP_UPR_BEAR_W; 
      _wEndY = _wPosY + BMP_UPR_BEAR_H;
			break;
		}
					
		case BMP_SS_BEAR_UPL:
    {
      _wEndX = _wPosX + BMP_UPL_BEAR_W; 
      _wEndY = _wPosY + BMP_UPL_BEAR_H;
      break;
		}
		
		default:
		{
      return;
		}
	}

  vChgColRep(WB_SS, bFootCol, _bSsColIdx);
}


/*********************************************************************
  Function    : static void bSsShowFootBird(BYTE bFootCol) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static void bSsShowFootBird(BYTE bFootCol) large
{
	_wStartX = _wPosX; 
	_wStartY = _wPosY;

	switch(_wSsBmpIdx)
	{
		case BMP_SS_BIRD_UP:
		{
	    _wEndX = _wPosX + BMP_UP_BIRD_W; 
      _wEndY = _wPosY + BMP_UP_BIRD_H;
			break;
		}
						
		case BMP_SS_BIRD_UPR:
		{
      _wEndX = _wPosX + BMP_UPR_BIRD_W; 
      _wEndY = _wPosY + BMP_UPR_BIRD_H;
			break;
		}
						
		case BMP_SS_BIRD_UPL:
		{
      _wEndX = _wPosX + BMP_UPL_BIRD_W; 
      _wEndY = _wPosY + BMP_UPL_BIRD_H;
			break;
		}
			
		default:
		{
			break;
		}
	}

	vChgColRep(WB_SS, bFootCol, _bSsColIdx);
}


/*********************************************************************
  Function    : static void bSsShowFootPig(BYTE bFootCol) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static void bSsShowFootPig(BYTE bFootCol) large
{
	_wStartX = _wPosX; 
	_wStartY = _wPosY;

	switch(_wSsBmpIdx)
	{
		case BMP_SS_PIG_UP:
		{
		  _wEndX = _wPosX + BMP_UP_PIG_W; 
      _wEndY = _wPosY + BMP_UP_PIG_H;
			break;
		}
							
		case BMP_SS_PIG_UPR:
		{
		  _wEndX = _wPosX + BMP_UPR_PIG_W; 
      _wEndY = _wPosY + BMP_UPR_PIG_H;
			break;
		}
							
		case BMP_SS_PIG_UPL:
		{
		  _wEndX = _wPosX + BMP_UPL_PIG_W; 
      _wEndY = _wPosY + BMP_UPL_PIG_H;
			break;
		}
				
		default:
		{
			break;
		}
	}

	vChgColRep(WB_SS, bFootCol, _bSsColIdx);
}


/*********************************************************************
  Function    : static void bSsShowFootHuman(BYTE bFootCol) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static void bSsShowFootHuman(BYTE bFootCol) large
{
	_wStartX = _wPosX; 
	_wStartY = _wPosY;

	switch(_wSsBmpIdx)
	{
		case BMP_SS_HUMAN_UP:
		{
		  _wEndX = _wPosX + BMP_UP_HUMAN_W; 
      _wEndY = _wPosY + BMP_UP_HUMAN_H;
			break;
		}
							
		case BMP_SS_HUMAN_UPR:
		{
		  _wEndX = _wPosX + BMP_UPR_HUMAN_W; 
      _wEndY = _wPosY + BMP_UPR_HUMAN_H;
			break;
		}
							
		case BMP_SS_HUMAN_UPL:
		{
		  _wEndX = _wPosX + BMP_UPL_HUMAN_W; 
      _wEndY = _wPosY + BMP_UPL_HUMAN_H;
			break;
		}
				
		default:
		{
			break;
		}
	}

	vChgColRep(WB_SS, bFootCol, _bSsColIdx);
}



/*********************************************************************
  Function    : static void bSsShowBBK(BYTE bFootCol) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static void bSsShowBBK(BYTE bFootCol) large
{
	_wStartX = _wPosX; 
	_wStartY = _wPosY;
  _wEndX = _wPosX + BMP_UP_BBK_W; 
  _wEndY = _wPosY + BMP_UP_BBK_H;

  vChgColRep(WB_SS, bFootCol, SS_COL_BLUE1);
}


/*********************************************************************
  Function    : static BYTE bSsBmpFadeOut(void) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static BYTE bSsBmpFadeOut(void) large
{
 BYTE bRet = SS_RET_PROCESSING;
 
	_bSsMixRat -= SS_FADE_OUT_SPEED;
	if(_bSsMixRat > 0)
	{
		
	}
	else
	{
		vClearWB(WB_SS);
		_bSsMixRat = SS_MIXRATE_MAX;
		_eSsState = SS_STATE_INIT;
		bRet = SS_RET_FINISHED;
	}

  vSetWBMixRatio(WB_SS, _bSsMixRat);
	return(bRet);
}

/*********************************************************************
  Function    : static BYTE bSsGetBmpTarget(void) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static void bSsGetBmpTarget(void) large
{
  BYTE bTarget;

  if((_bBmpMarker & 0x0F) == 0x0F)
  {
    _eBmpTarget = SS_BMP_BBK;
		_bBmpMarker = 1 << SS_BMP_BBK;
		return;
  }

  do
  {
    bTarget = rand() % (SS_BMP_NS - 1);  
  }while((bTarget > (SS_BMP_MAX - 1)) || (_bBmpMarker & (1 << bTarget)));

	_bBmpMarker |=  1 << bTarget;
  _eBmpTarget = bTarget;
}

void vScrSaveInit(void) large
{
 if (fgFlCheckStatus(FL_STATUS_IN_MENU) || fgIsPcdPlay()
#ifdef GUI_DC_SELECT
     || _fgInitMsgKeep
#endif
    )
 {
 	 vDeleteWB(FSMENU_OSD_WBIDX_BASIC);
	 vDeleteWB(FSMENU_OSD_WBIDX_SEC);
	 vDeleteWB(WB_SELMENU);
 }

 if(fgIsInBrowser())
 {
 // vDeleteWB(WB_BRW_ITEM);
 //  vDeleteWB(WB_BRW_HEAD);
  vBrowserClose();
 }

 //vOsdShowWb(OSD_WB_DISABLE);
 //vDisableWB(WB_OVERLAY_MSG1);
 vDisableWB(WB_NORMAL_INITMSG);

 #ifdef SCRSAV_DEBUG
 DRS232LogB(bHiByte(wHiWord(_dCreatedWB)), bLoByte(wHiWord(_dCreatedWB)), bHiByte(wLoWord(_dCreatedWB)), bLoByte(wLoWord(_dCreatedWB)));
 #endif
	
 vCreateWB(WB_SS, TRUE);
 vSetWBTcColor(WB_SS);

 _bSSDelay = 0;
 _bBmpMarker = 0;
 _bSsMixRat = SS_MIXRATE_MAX;
 _eDiretion = SS_DIR_NONE;
 _eSsState = SS_STATE_INIT;
 _wSsBmpIdx = BMP_NULL;
 bSsGetBmpTarget();

 vSaveOsdState();

 vHideHL(HL_1);
 vHideHL(HL_2);
 vChgColDis();

 vSetTransEn(WB_SS, 0); 

 vSetTcPal(WB_SS, SS_COL_WHITE1,  BLEND_2, SS_COLOR_WHITE);
 vSetTcPal(WB_SS, SS_COL_GREEN1,  BLEND_2, SS_COLOR_GREEN);
 vSetTcPal(WB_SS, SS_COL_ORANGE1, BLEND_2, SS_COLOR_ORANGE);
 vSetTcPal(WB_SS, SS_COL_BLUE1,   BLEND_2, SS_COLOR_BLUE);

 vSendUopCmd(UOP_SCR_SAVE, SV_SCR_SAVER_ON, 0, 0);

 vEnableWB(WB_SS);
}



/*********************************************************************
  Function    : static BYTE bSsBmpStateBear(void) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static BYTE bSsBmpStateBear(void) large
{
  BYTE bRet = SS_RET_PROCESSING;

	switch(_eSsState)
	{
    case SS_STATE_INIT:
		{
			bSsGetStartPos(SS_POS_BOTTOM, BMP_BEAR_MAX_W);
			vSsGetBmpColor();
			
			if(bSsGetNextPosBear() == SS_RET_SUCCESS)
			{
			  vSsPasteBmp();
				bSsShowFootBear(SS_COL_BLACK1);
			  _eSsState = SS_STATE_WALKING;
			}
      break;
		}

		case SS_STATE_WALKING:
		{
      bSsShowFootBear(SS_COL_BLACK2);
			_eSsState = SS_STATE_PASTE;
      break;
		}

		case SS_STATE_PASTE:
		{
			if(bSsGetNextPosBear() != SS_RET_SUCCESS)
			{
			  _eSsState = SS_STATE_FINISHED;
			}
			else
			{
	  	  vSsPasteBmp();
				bSsShowFootBear(SS_COL_BLACK1);
		    _eSsState = SS_STATE_WALKING;
			}
			
			break;
		}

		case SS_STATE_FINISHED:
		{
			bRet = bSsBmpFadeOut();
			break;
		}

		default:
			bRet = SS_RET_FALSE;
			break;
	}

	return(bRet);
}


/*********************************************************************
  Function    : static BYTE bSsBmpStateBird(void) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static BYTE bSsBmpStateBird(void) large
{
  BYTE bRet = SS_RET_PROCESSING;

	switch(_eSsState)
	{
    case SS_STATE_INIT:
		{
			bSsGetStartPos(SS_POS_BOTTOM, BMP_BIRD_MAX_W);
			vSsGetBmpColor();
			
			if(bSsGetNextPosBird() == SS_RET_SUCCESS)
			{
			  vSsPasteBmp();
				bSsShowFootBird(SS_COL_BLACK1);
			  _eSsState = SS_STATE_WALKING;
			}

      break;
    }

		case SS_STATE_WALKING:
		{
      bSsShowFootBird(SS_COL_BLACK2);
			_eSsState = SS_STATE_PASTE;
      break;
		}

		case SS_STATE_PASTE:
		{
			if(bSsGetNextPosBird() != SS_RET_SUCCESS)
			{
			  _eSsState = SS_STATE_FINISHED;
			}
			else
			{
	  	  vSsPasteBmp();
				bSsShowFootBird(SS_COL_BLACK1);
		    _eSsState = SS_STATE_WALKING;
			}
			
			break;
		}

		case SS_STATE_FINISHED:
		{
			bRet = bSsBmpFadeOut();
			break;
		}

		default:
			return(SS_RET_FALSE);
	}

	return(bRet);
}

/*********************************************************************
  Function    : static BYTE bSsBmpStatePig(void) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static BYTE bSsBmpStatePig(void) large
{
  BYTE bRet = SS_RET_PROCESSING;

	switch(_eSsState)
	{
    case SS_STATE_INIT:
		{
			bSsGetStartPos(SS_POS_BOTTOM, BMP_PIG_MAX_W);
			vSsGetBmpColor();
			
			if(bSsGetNextPosPig() == SS_RET_SUCCESS)
			{
			  vSsPasteBmp();
				bSsShowFootPig(SS_COL_BLACK1);
			  _eSsState = SS_STATE_WALKING;
			}

      break;
    }

		case SS_STATE_WALKING:
		{
      bSsShowFootPig(SS_COL_BLACK2);
			_eSsState = SS_STATE_PASTE;
      break;
		}

		case SS_STATE_PASTE:
		{
			if(bSsGetNextPosPig() != SS_RET_SUCCESS)
			{
			  _eSsState = SS_STATE_FINISHED;
			}
			else
			{
	  	  vSsPasteBmp();
				bSsShowFootPig(SS_COL_BLACK1);
		    _eSsState = SS_STATE_WALKING;
			}
			
			break;
		}

		case SS_STATE_FINISHED:
		{
			bRet = bSsBmpFadeOut();
      break;
		}

		default:
			return(SS_RET_FALSE);
	}

	return(bRet);
}


/*********************************************************************
  Function    : static BYTE bSsBmpStateHuman(void) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static BYTE bSsBmpStateHuman(void) large
{
  BYTE bRet = SS_RET_PROCESSING;

	switch(_eSsState)
	{
    case SS_STATE_INIT:
		{
			bSsGetStartPos(SS_POS_BOTTOM, BMP_HUMAN_MAX_W);
			vSsGetBmpColor();
			
			if(bSsGetNextPosHuman() == SS_RET_SUCCESS)
			{
			  vSsPasteBmp();
				bSsShowFootHuman(SS_COL_BLACK1);
			  _eSsState = SS_STATE_WALKING;
			}

      break;
    }

		case SS_STATE_WALKING:
		{
      bSsShowFootHuman(SS_COL_BLACK2);
			_eSsState = SS_STATE_PASTE;
      break;

		}

		case SS_STATE_PASTE:
		{
			if(bSsGetNextPosHuman() != SS_RET_SUCCESS)
			{
			  _eSsState = SS_STATE_FINISHED;
			}
			else
			{
	  	  vSsPasteBmp();
				bSsShowFootHuman(SS_COL_BLACK1);
		    _eSsState = SS_STATE_WALKING;
			}
			
			break;
		}

		case SS_STATE_FINISHED:
		{
			bRet = bSsBmpFadeOut();
      break;
		}

		default:
			return(SS_RET_FALSE);
	}

	return(bRet); 
}


/*********************************************************************
  Function    : static BYTE bSsBmpStateBBK(void) large
  Description : 
  Parameter :
  Return    :
**********************************************************************/
static BYTE bSsBmpStateBBK(void) large
{
  BYTE bRet = SS_RET_PROCESSING;

	switch(_eSsState)
	{
    case SS_STATE_INIT:
		{
			bSsGetStartPos(SS_POS_BOTTOM, BMP_BBK_MAX_W);
			vSsGetBmpColor();
			
			if(bSsGetNextPosBBK() == SS_RET_SUCCESS)
			{
			  vSsPasteBmp();
				bSsShowBBK(SS_COL_BLACK1);
			  _eSsState = SS_STATE_WALKING;
			}

      break;
    }

		case SS_STATE_WALKING:
		{
			_eSsState = SS_STATE_PASTE;
      break;
		}

		case SS_STATE_PASTE:
		{
			if(bSsGetNextPosBBK() != SS_RET_SUCCESS)
			{
			  _eSsState = SS_STATE_FINISHED;
			}
			else
			{
	  	  vSsPasteBmp();
				bSsShowBBK(SS_COL_BLACK1);
		    _eSsState = SS_STATE_WALKING;
			}
			
			break;
		}

		case SS_STATE_FINISHED:
		{
			bRet = bSsBmpFadeOut();
      break;
		}

		default:
			return(SS_RET_FALSE);
	}

	return(bRet); 
}



static code bSsBmpState _funSsBmpState[SS_BMP_NS] =
{
  bSsBmpStateBear,
  bSsBmpStateBird,
  bSsBmpStatePig,
  bSsBmpStateHuman,
  bSsBmpStateBBK,
};


void vScrSaveState(void) large
{
 BYTE bRet;
 
 _bSSDelay ++;
 if(_bSSDelay == SS_PROCESS_PERIOD)
 {
   bRet = _funSsBmpState[_eBmpTarget]();
   if(SS_RET_FINISHED == bRet)
   {
     bSsGetBmpTarget();
   }
   
	 _bSSDelay = 0;
 }
}


void vScrSaveExit(void) large
{
 BYTE bTmp1 = bSharedInfo(SI_INIT_STATE);
 
 vOsdCmdFlush();
	
 while (bSharedInfo(SI_OSD_CMD_BUF_FULL) == TRUE)
 {
    /* wait till flush command finish */
 }

 vDeleteWB(WB_SS);
 vRestoreOsdState();

 if (SV_NO_DISC == bTmp1 || SV_TRAY_OPENING == bTmp1 || SV_UNKNOWN_DISC == bTmp1)
 {
   vEnableWB(WB_NORMAL_INITMSG);
 }
 #ifdef GUI_DC_SELECT
 else if ((DEVICE_DVD != _bDevType) && _fgInitMsgKeep)
 {
   vEnableWB(WB_NORMAL_INITMSG);
 }
 #endif
 else
 {
   vDeleteWB(WB_NORMAL_INITMSG);
 }
 
 if (fgFlCheckStatus(FL_STATUS_IN_MENU))
 {
	  vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
	  vEnableWB(FSMENU_OSD_WBIDX_BASIC);

		if(fgFlInItemInfo()) 
		{
		  vFlItemInfoInit();	
		  vUpdMp3Info();		
		}
		else
		{
	  	vFlRecover();		
		}
 }
  
 vSendUopCmd(UOP_SCR_SAVE, SV_SCR_SAVER_OFF, 0, 0);
}



⌨️ 快捷键说明

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