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

📄 mes_ui.cpp

📁 windows ce 下的3D桌面
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		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 + -