Ejemplo n.º 1
0
bool SColorParser::ParseValue(const SStringW & strValue, COLORREF & value)
{
	int r = 255, g = 255, b = 255, a = 255;
    int nSeg=0;
    SStringW strValueL = strValue;
    strValueL.MakeLower();
    if(strValueL.Left(1)==L"#")
    {
        nSeg = swscanf(strValueL,L"#%02x%02x%02x%02x",&r,&g,&b,&a);
    }else if(strValueL.Left(4).CompareNoCase(L"rgba")==0)
    {
        nSeg = swscanf(strValueL,L"rgba(%d,%d,%d,%d)",&r,&g,&b,&a);                
    }else if(strValueL.Left(3).CompareNoCase(L"rgb")==0)
    {
        nSeg = swscanf(strValueL,L"rgb(%d,%d,%d)",&r,&g,&b);                
    }
    if(nSeg!=3 && nSeg != 4)
    {
        SASSERT_FMT(FALSE,TEXT("ParseColor Failed with [%s]"),S_CW2T(strValue));
        return false;
    }else
    {
        value = RGBA(r,g,b,a);
        return true;
    }
}
Ejemplo n.º 2
0
    bool SPropertyItemColor::ParseValue(const SStringT & strValue, COLORREF & value)
	{
		int r,g,b,a=255;
		int nSeg=0;
		SStringW strValueL = strValue;
		strValueL.MakeLower();
		if(strValueL.Left(1)==L"#")
		{
			nSeg = swscanf(strValueL,L"#%02x%02x%02x%02x",&r,&g,&b,&a);
		}else if(strValueL.Left(4).CompareNoCase(L"rgba")==0)
		{
			nSeg = swscanf(strValueL,L"rgba(%d,%d,%d,%d)",&r,&g,&b,&a);                
		}else if(strValueL.Left(3).CompareNoCase(L"rgb")==0)
		{
			nSeg = swscanf(strValueL,L"rgb(%d,%d,%d)",&r,&g,&b); 
		}
		if(nSeg!=3 && nSeg != 4)
		{
			//SASSERT_FMT(FALSE,TEXT("解析颜色值失败 [%s]"),S_CW2T(strValue));
			value = CR_INVALID;
			return false;
		}else
		{
			value = RGBA(r,g,b,a);
			return true;
		}
	}
Ejemplo n.º 3
0
 LRESULT SSkinImgFrame2::OnAttrSrc(const SStringW & strValue,BOOL bLoading)
 {
     int iPos = strValue.Find(L'{');
     if(iPos==-1) return E_FAIL;
     m_strImgKey = strValue.Left(iPos);
     SStringW strRgn = strValue.Right(strValue.GetLength()-iPos);
     if(swscanf(strRgn,L"{%d,%d,%d,%d}",&m_rcImg.left,&m_rcImg.top,&m_rcImg.right,&m_rcImg.bottom)!=4)
     {
         CPoint pt;
         CSize sz;
         if(swscanf(strRgn,L"{%d,%d,@%d,@%d}",&pt.x,&pt.y,&sz.cx,&sz.cy)!=4)
             return E_FAIL;
         m_rcImg = CRect(pt,sz);
     }
     
     IMGPOOL::CPair * p = s_imgPool.Lookup(m_strImgKey);
     if(p)
     {
         SSkinImgFrame::SetImage(p->m_value);
         p->m_value->AddRef();
     }else
     {
         IBitmap *pImg=LOADIMAGE2(m_strImgKey);
         if(!pImg) return E_FAIL;
         s_imgPool[m_strImgKey]=pImg;
         SSkinImgFrame::SetImage(pImg);
     }
     return S_OK;
 }
Ejemplo n.º 4
0
	SStringW SLayoutSize::toString() const
	{
		SStringW strValue = SStringW().Format(L"%f",fSize);
		//去掉sprintf("%f")生成的小数点最后无效的0
		LPCWSTR pszData = strValue;
		for(int i=strValue.GetLength()-1;i>=0;i--)
		{
			if(pszData[i]!=L'0')
			{
				if(pszData[i]==L'.') i--;
				strValue = strValue.Left(i+1);
				break;
			}
		}
		return SStringW().Format(L"%s%s",strValue,s_pszUnit[unit]);
	}