📄 mes_ui.cpp
字号:
glBlendFunc( GL_SRC_ALPHA, GL_ONE );
MESLauncher_DrawImage1 ( m_TitleImage,
(int)(m_TitleArea[0] + dx), (int)(m_TitleArea[1] + dy), m_TitleArea[2],m_TitleArea[3],
0,0,Bright*0.2f, Bright*0.2f, Bright*0.2f, textalpha );
if( ! m_MouseDown )
{
int textpos = (int)(m_TitleArea[0] + dx);
float alphatable[] = {0.2f, 0.4f, 0.6f, 0.8f, 1.0f, 1.0f, 0.8f, 0.6f, 0.4f, 0.2f };
for( int cell=0; cell<10; cell++ )
{
int sx = (int)(m_BackArea[0] + dx + m_TitleScroll) + (m_ButtonArea[3] * cell/10);
int ex = (int)(m_BackArea[0] + dx + m_TitleScroll) + (m_ButtonArea[3] * (cell+1)/10);
int tx = sx-textpos;
if( sx < textpos ){ tx+=(textpos-sx); sx = textpos; }
if( ex > textpos+m_TitleArea[2] ){ ex = textpos+m_TitleArea[2]; }
if( sx < ex )
{
MESLauncher_DrawImage1 (m_TitleImage,
sx, (int)(m_TitleArea[1] + dy), ex-sx,m_TitleArea[3],
tx,0, Bright, Bright, Bright, alphatable[cell] );
}
}
if( m_CurButtonPos <= 0 ){ m_TitleScroll+=3; }
if( m_BackArea[2] < m_TitleScroll ){ m_TitleScroll = 0; }
}
glDisable( GL_BLEND );
int buttonpos = (int)(m_ButtonArea[0] + m_CurButtonPos + dx);
MESLauncher_DrawImage1 ( m_ButtonImage,
buttonpos, (int)(m_ButtonArea[2] + dy), m_ButtonArea[3],m_ButtonArea[4],
0,0,Bright, Bright, Bright, 1 );
if( ! m_MouseDown )
{
m_CurButtonPos -= m_CurButtonSpeed;
m_CurButtonSpeed+= ( m_CurButtonPos * SPRING_CONSTANT - m_CurButtonSpeed * DAMPING_CONSTANT );
}
if( m_CurButtonPos < 1 ){ m_CurButtonPos = 0; }
}
};
struct Button_Push
{
int m_TouchArea [4]; // x,y,w,h
int m_BackArea [4]; // x,y,w,h
int m_ButtonArea[4]; // x,y,w,h
MESLauncher_Image m_BackAlphaImage ;
MESLauncher_Image m_BackOverlayImage;
MESLauncher_Image m_ButtonImage ;
int m_MousePos[2];
bool m_MouseDown;
bool m_Hold;
void LoadSkin( HMESPARSERNODE hNode )
{
int numberofproperties = MesParser_GetNumberOfProperties( hNode );
int i;
for( i=0; i<numberofproperties; i++ )
{
HMESPARSERPROPERTY hproperty = MesParser_GetProperty( hNode, i );
if ( CheckPropertyName( hproperty, "TouchArea" ) ){ LoadIntArray( hproperty,0,4,m_TouchArea ); }
else if( CheckPropertyName( hproperty, "BackArea" ) ){ LoadIntArray( hproperty,0,4,m_BackArea ); }
else if( CheckPropertyName( hproperty, "ButtonArea") ){ LoadIntArray( hproperty,0,4,m_ButtonArea); }
else if( CheckPropertyName( hproperty, "BackAlphaImage" ) ){ m_BackAlphaImage = LoadImageFromFile( hproperty,0 );}
else if( CheckPropertyName( hproperty, "BackOverlayImage" ) ){ m_BackOverlayImage = LoadImageFromFile( hproperty,0 );}
else if( CheckPropertyName( hproperty, "ButtonImage" ) ){ m_ButtonImage = LoadImageFromFile( hproperty,0 );}
else { RETAILMSG( 1, (L"*E:LoadSkin : Unknown proterty(%d,%d)\n", i, __LINE__ ) ); }
}
}
void UnloadSkin( void )
{
if( m_BackAlphaImage ){ MESLauncher_UnloadImage(m_BackAlphaImage); }
if( m_BackOverlayImage){ MESLauncher_UnloadImage(m_BackOverlayImage); }
if( m_ButtonImage ){ MESLauncher_UnloadImage(m_ButtonImage); }
m_TouchArea[0] = m_TouchArea[1] = m_TouchArea[2] = m_TouchArea[3] = -1;
m_BackArea [0] = m_BackArea [1] = m_BackArea [2] = m_BackArea [3] = -1;
m_ButtonArea[0]= m_ButtonArea[1]= m_ButtonArea[2]= m_ButtonArea[3]= -1;
m_BackAlphaImage = NULL;
m_BackOverlayImage= NULL;
m_ButtonImage = NULL;
}
Button_Push( void )
{
m_TouchArea[0] = m_TouchArea[1] = m_TouchArea[2] = m_TouchArea[3] = -1;
m_BackArea [0] = m_BackArea [1] = m_BackArea [2] = m_BackArea [3] = -1;
m_ButtonArea[0]= m_ButtonArea[1]= m_ButtonArea[2]= m_ButtonArea[3]= -1;
m_BackAlphaImage = NULL;
m_BackOverlayImage= NULL;
m_ButtonImage = NULL;
m_MousePos[0] = m_MousePos[1] = 0;
m_MouseDown = false;
m_Hold = false;
}
void Reset( void )
{
m_MouseDown = false;
m_Hold = false;
}
void Hold( void )
{
m_Hold = true;
}
void OnLButtonDown( int x, int y )
{
if( ! IsTouched(x,y) ){ return; }
m_MousePos[0] = x;
m_MousePos[1] = y;
m_MouseDown = true;
m_Hold = false;
}
void OnMouseMove(int,int)//( int x, int y )
{
}
bool OnLButtonUp( int x, int y )
{
if( ! m_MouseDown ){ return false; }
m_MouseDown = false;
return IsTouched(x,y);
}
bool IsTouched( int x, int y )
{
return ( m_TouchArea[0] <= x && x <= m_TouchArea[0] + m_TouchArea[2] && m_TouchArea[1] <= y && y <= m_TouchArea[1] + m_TouchArea[3] );
}
virtual void Draw ( float dx, float dy, float Bright=1.0f )
{
glEnable( GL_BLEND );
//glBlendFunc( GL_ZERO, GL_SRC_COLOR );
glBlendFunc( GL_ZERO, GL_ONE_MINUS_SRC_COLOR );
MESLauncher_DrawImage1 ( m_BackAlphaImage,
(int)(m_BackArea[0] + dx), (int)(m_BackArea[1] + dy), m_BackArea[2],m_BackArea[3],
0,0,Bright, Bright, Bright, 1 );
glBlendFunc( GL_ONE, GL_ONE );
MESLauncher_DrawImage1 ( m_BackOverlayImage,
(int)(m_BackArea[0] + dx), (int)(m_BackArea[1] + dy), m_BackArea[2],m_BackArea[3],
0,0,Bright, Bright, Bright, 1 );
glDisable( GL_BLEND );
if( ( m_MouseDown && IsTouched(m_MousePos[0],m_MousePos[1]) ) || m_Hold )
{
MESLauncher_DrawImage1 ( m_ButtonImage,
(int)(m_ButtonArea[0] + dx), (int)(m_ButtonArea[1] + dy), m_ButtonArea[2],m_ButtonArea[3],
0,m_ButtonArea[3],Bright, Bright, Bright, 1 );
}
else
{
MESLauncher_DrawImage1 ( m_ButtonImage,
(int)(m_ButtonArea[0] + dx), (int)(m_ButtonArea[1] + dy), m_ButtonArea[2],m_ButtonArea[3],
0,0,Bright, Bright, Bright, 1 );
}
}
};
//std::vector<Menu> g_MenuList;
SVector<Menu> g_MenuList;
int g_CurrentMenu=0;
Button_Slide g_UnlockSlideButton;
Button_Slide g_PowerOffSlideButton;
Button_Push g_PowerOffCancelButton;
MESLauncher_Image g_PowerOffBackground = NULL;
int g_ScreenWidth =0;
int g_ScreenHeight=0;
int g_LightPos [2]={0};
bool g_MouseButton[2]={0};
int g_MousePos [2]={0};
int g_MouseMove [2]={0};
MESLauncher_Image WALLPAPER = NULL;
MESLauncher_Image BACKGROUND = NULL;
MESLauncher_Image CURSOR = NULL;
MESLauncher_Image g_BatteryLevel=0;
MESLauncher_Image g_BatteryLevelAlpha=0;
MESLauncher_Image g_TimeDigit=0;
MESLauncher_Image g_TimeDigitAlpha=0;
MESLauncher_Image g_TimeAMPM=0;
MESLauncher_Image g_TimeAMPMAlpha=0;
MESLauncher_Image g_OverlayVolumeLevel=0;
int BATTERYLEVEL_X ;
int BATTERYLEVEL_Y ;
int BATTERYLEVEL_W ;
int BATTERYLEVEL_H ;
float BATTERYLEVEL_ALPHA ;
int TIMEDIGIT_X0 ;
int TIMEDIGIT_X1 ;
int TIMEDIGIT_X2 ;
int TIMEDIGIT_X3 ;
int TIMEDIGIT_Y ;
int TIMEDIGIT_W ;
int TIMEDIGIT_H ;
float TIMEDIGIT_ALPHA ;
int TIMEAMPM_X ;
int TIMEAMPM_Y ;
int TIMEAMPM_W ;
int TIMEAMPM_H ;
float TIMEAMPM_ALPHA ;
int OVERLAY_VOLUMELEVEL_X ;
int OVERLAY_VOLUMELEVEL_Y ;
int OVERLAY_VOLUMELEVEL_W ;
int OVERLAY_VOLUMELEVEL_H ;
MESLauncher_Image APPWAIT_TEXT = NULL;
int APPWAIT_TEXTAREA[4] = {0};
int g_AppWaitScroll=0;
MESLauncher_Image USBSTORAGE_ALPHA = NULL;
MESLauncher_Image USBSTORAGE_OVERLAY = NULL;
MESLauncher_Image USBSTORAGE_TEXT = NULL;
int USBSTORAGE_BACKAREA[4] = {0};
int USBSTORAGE_TEXTAREA[4] = {0};
int g_USBStorageScroll=0;
MESLauncher_Image LOWBATTERY_BACK = NULL;
MESLauncher_Image LOWBATTERY_TEXT = NULL;
int LOWBATTERY_AREA[4] = {0};
int LOWBATTERY_TEXTAREA[4] = {0};
bool g_LowBatteryShow =false;
float g_LowBatteryShowPos =0;
float g_LowBatteryShowSpeed=0;
MESLauncher_Image TITLE = NULL;
MESLauncher_Image TITLE_ALPHA = NULL;
int TITLE_POS[2] = {0};
#define INVALIDBUFFEROBJECT 0xFFFFFFFF
GLuint g_DiceVertexBuffer = INVALIDBUFFEROBJECT;
int g_CurrentVolume = 0;
bool g_ShowOverlay_Volume=false;
int g_CurrentBatteryState=0;
void SetLightPosition( int x, int y )
{
g_LightPos[0] = x;
g_LightPos[1] = y;
}
void ChangeSceneFromMenuToMenu ( int NextMenuIndex );
void __Initialize__( void )
{
g_ScreenWidth = GetSystemMetrics(SM_CXSCREEN);
g_ScreenHeight= GetSystemMetrics(SM_CYSCREEN);
SetLightPosition( g_ScreenWidth/2,g_ScreenHeight/2 );
//g_CurrentMenu = 0;
g_MouseButton[0] = false;
g_MouseButton[1] = false;
POINT cursorpos;
GetCursorPos( &cursorpos );
g_MousePos[0] = cursorpos.x;
g_MousePos[1] = cursorpos.y;
g_MouseMove[0] = 0;
g_MouseMove[1] = 0;
}
}; // local namespace
//------------------------------------------------------------------------------
//
//
//
//------------------------------------------------------------------------------
void MESUI_InitializeGLState( void )
{
float global_ambient [] = {0.0f,0.0f,0.0f,1.0f};
//float light_ambient [] = {AMBIENT,1.0f};
float light_diffuse [] = {1.0f,1.0f,1.0f,1.0f};
float light_specular[] = {0.0f,0.0f,0.0f,0.0f};
float material_ambient [] = {1.0f,1.0f,1.0f,1.0f};
float material_diffuse [] = {1.0f,1.0f,1.0f,1.0f};
float material_specular[] = {1.0f,1.0f,1.0f,1.0f};
float material_emission[] = {0.0f,0.0f,0.0f,0.0f};
glLightModelfv( GL_LIGHT_MODEL_AMBIENT, global_ambient );
//glLightfv(GL_LIGHT0, GL_AMBIENT , light_ambient );
glLightfv(GL_LIGHT0, GL_DIFFUSE , light_diffuse );
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT , material_ambient );
glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE , material_diffuse );
glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, material_specular );
glMaterialfv( GL_FRONT_AND_BACK, GL_EMISSION, material_emission );
//glEnable( GL_COLOR_MATERIAL );
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_CULL_FACE);
glCullFace( GL_BACK );
glFrontFace( GL_CCW );
if( (int)g_MenuList.size() > g_CurrentMenu && g_CurrentMenu >= 0 )
{
glLightfv(GL_LIGHT0, GL_AMBIENT , g_MenuList[g_CurrentMenu].m_Ambient );
}
glTexColorKeyOES( GL_TRUE, (unsigned short)0xF81F );
MESLauncher_SetDrawImageClipRect( 0,0,g_ScreenWidth,g_ScreenHeight );
System_SetOverlayColor( 0xF81F );//0xF81F
__Initialize__( );
}
namespace // local namespace
{
struct ScriptManager
{
HMESPARSER m_Script;
ScriptManager( const char* pFileName )
{
m_Script = MesParser_CreateFromFile( pFileName, ScriptManager::DebugOutput );
}
~ScriptManager( void )
{
MesParser_Destory( m_Script );
}
static void DebugOutput( const char* pString )
{
static TCHAR wstring[1024];
mbstowcs( wstring, pString, strlen(pString)+1 );
RETAILMSG( 1, (wstring) );
}
};
}; // local namespace
BOOL MESUI_LoadSkin ( const char* pSkinFolderName, const char* pSkinFileName )
{
char skinpath[256];
if( ! GetAbsolutePath( pSkinFolderName, skinpath, sizeof(skinpath) ) ){ return FALSE; }
SetCurrentPath( skinpath );
ScriptManager script( GetAbsolutePath(pSkinFileName) );
if( ! script.m_Script ){ return FALSE; }
HMESPARSERNODE rootnode = MesParser_GetRootNode( script.m_Script );
// create cube
glGenHWBuffersOES(1, &g_DiceVertexBuffer);
glBindHWBufferOES(GL_ARRAY_BUFFER, g_DiceVertexBuffer);
glHWBufferDataOES(GL_ARRAY_BUFFER, NUM_OF_VERTEX, g_DiceData, GL_HWBUFFER_FVCTN_OES);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -