BOOL CBCGPRibbonInfoLoader::LoadImage (const CBCGPRibbonInfo::XID& id, CBCGPToolBarImages& image, BOOL bSingle)
{
    if (id.IsEmpty ())
    {
        return TRUE;
    }

    if (id.m_Value > 0)
    {
        image.Load (id.m_Value, GetInstance ());
    }

    if (!image.IsValid () && !id.m_Name.IsEmpty ())
    {
        image.LoadStr (id.m_Name, GetInstance ());
    }

    if (image.IsValid ())
    {
        if (bSingle)
        {
            image.SetSingleImage ();
        }

        return TRUE;
    }

    return FALSE;
}
BOOL CBCGPTagManager::ParseToolBarImages (const CString& strItem, CBCGPToolBarImages& value, LPCTSTR lpszID)
{
	CBCGPTagManager tm (strItem);

	CSize size (value.GetImageSize ());

	value.Clear ();
	value.SetTransparentColor ((COLORREF)(-1));

	tm.ReadSize (s_Size, size);

	BOOL bPreMultiplyCheck = TRUE;
	tm.ReadBool (s_PreMltCheck, bPreMultiplyCheck);

	value.SetPreMultiplyAutoCheck (bPreMultiplyCheck);

	if (size != CSize (0, 0))
	{
		value.SetImageSize (size);
	}

	value.LoadStr (lpszID);

	if (size == CSize (0, 0))
	{
		value.SetSingleImage ();
	}

	COLORREF clrTransparent = CLR_DEFAULT;
	if (tm.ReadColor (s_Transparent, clrTransparent))
	{
		value.SetTransparentColor (clrTransparent);
	}

#ifndef _BCGSUITE_
	if (m_clrBase != (COLORREF)-1 &&
		m_clrTarget != (COLORREF)-1)
	{
		value.AddaptColors (m_clrBase, m_clrTarget);
	}
#endif

    if (CBCGPToolBarImages::IsRTL () && value.GetImageWell () != NULL &&
		clrTransparent == CLR_DEFAULT)
    {
		BITMAP bmp;
		if (::GetObject (value.GetImageWell (), sizeof (BITMAP), &bmp) != 0)
		{
			if (bmp.bmBitsPixel == 32)
			{
				value.Mirror ();
			}
		}
	}

	return TRUE;
}