#include "stdafx.h" #include "SkinResource.h" cSkinDialogResource::cSkinDialogResource() : mErrorTxt( "Error!" ) { /// ÆùÆ® ÃʱâÈ­ mFont.lfHeight = 12; mFont.lfWidth = 0; mFont.lfEscapement = 0; mFont.lfOrientation = 0; mFont.lfWeight = FW_NORMAL; mFont.lfItalic = 0; mFont.lfUnderline = 0; mFont.lfStrikeOut = 0; mFont.lfCharSet = DEFAULT_CHARSET; mFont.lfOutPrecision = OUT_DEFAULT_PRECIS; mFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; mFont.lfQuality = DEFAULT_QUALITY; mFont.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; strcpy( mFont.lfFaceName, "±¼¸²" ); } cSkinDialogResource::~cSkinDialogResource() { } const cString& cSkinDialogResource::GetText( unsigned int id ) { cStringMap::cConstIterator i = mStringMap.Find( id ); if( i == mStringMap.End() ) { assert( 0 && "failed to find ui text" ); return mErrorTxt; } else return i->mSecond; } bool cSkinDialogResource::Load( cParser& parser ) { if( parser.ExpectTokenString( "{" ) == false ) { return false; } cString keyword; while( true ) { if( parser.ParseString( &keyword ) == false ) { return false; } if( keyword == "image" ) { /// À̹ÌÁö ·Îµù cString fileName; parser.ParseString( &fileName ); if( LoadImage( &mBitmap, &mWidth, &mHeight, fileName ) == false ) { return false; } } else if( keyword == "fontface" ) { /// ±ÛÀÚü ¼³Á¤ cString fontFace; parser.ParseString( &fontFace ); strcpy( mFont.lfFaceName, fontFace.Cstr() ); } else if( keyword == "fontsize" ) { /// ±ÛÀÚ Å©±â ¼³Á¤ mFont.lfHeight = parser.ParseInt(); } else if( keyword == "dlgtext" ) { if( LoadText( parser) == false ) return false; } else if( keyword == "button" ) { cString name; if( parser.ParseString( &name ) == false) { return false; } /// ¹öư ¸®¼Ò½º »ý¼º cSkinButtonResource* p = new cSkinButtonResource; /// ·Îµù if( p->Load( parser ) ) { /// ÄÞÆ÷³ÍÆ® ¸®¼Ò½º ¸Ê¿¡ Ãß°¡ mComponentResourceMap.Insert( name, (cSkinComponentResource*)p ); } else { return false; } } else if( keyword == "progressbar" ) { cString name; if( parser.ParseString( &name ) == false) { return false; } /// ÁøÇà¹Ù ¸®¼Ò½º »ý¼º cSkinProgressBarResource* p = new cSkinProgressBarResource; /// ·Îµù if( p->Load( parser ) ) { /// ÄÞÆ÷³ÍÆ® ¸®¼Ò½º ¸Ê¿¡ Ãß°¡ mComponentResourceMap.Insert( name, (cSkinComponentResource*)p ); } else { delete p; return false; } } //else if( keyword == "imageslide" ) //{ // cString name; // if( parser.ParseString( &name ) == false) // { // return false; // } // /// À̹ÌÁö ½½¶óÀÌµå ¸®¼Ò½º »ý¼º // cSkinImageSlideResource* p = new cSkinImageSlideResource; // /// ·Îµù // if( p->Load( parser ) ) // { // /// ÄÞÆ÷³ÍÆ® ¸®¼Ò½º ¸Ê¿¡ Ãß°¡ // mComponentResourceMap.Insert( name, (cSkinComponentResource*)p ); // } // else // { // return false; // } //} else if( keyword == "htmlview" ) { cString name; if( parser.ParseString( &name ) == false) { return false; } /// Html ºä ¸®¼Ò½º »ý¼º cSkinHtmlViewResource* p = new cSkinHtmlViewResource; /// ·Îµù if( p->Load( parser ) ) { /// ÄÞÆ÷³ÍÆ® ¸®¼Ò½º ¸Ê¿¡ Ãß°¡ mComponentResourceMap.Insert( name, (cSkinComponentResource*)p ); } else { return false; } } else if( keyword == "combobox" ) { cString name; if( parser.ParseString( &name ) == false) { return false; } /// ÄÞº¸¹Ú½º ¸®¼Ò½º »ý¼º cSkinComboBoxResource* p = new cSkinComboBoxResource; /// ·Îµù if( p->Load( parser ) ) { mComponentResourceMap.Insert( name, (cSkinComponentResource*)p ); } else { return false; } } else if( keyword == "}" ) { /// ºí·Ï Å»Ãâ ^^ break; } else { return false; } } return true; } bool cSkinDialogResource::LoadText( cParser& parser ) { if( parser.ExpectTokenString( "{" ) == false ) return false; cString keyword; while( true ) { parser.ParseString( &keyword ); if( keyword == "txt" ) { unsigned int key = parser.ParseInt(); cString txt; parser.ParseString( &txt ); if( mStringMap.Insert( key, txt.Cstr() ) == false ) assert(0); } else if( keyword == "}" ) { /// ºí·Ï Å»Ãâ ^^ break; } else { return false; } } return true; }