示例#1
0
CBCGPBaseInfo::XBase* CBCGPBaseInfo::CreateBaseFromTag (const CString& tag, XCreateBaseFromNameProc lpCreateProc)
{
	if (lpCreateProc == NULL)
	{
		ASSERT(FALSE);
		return NULL;
	}

	CBCGPBaseInfo::XBase* base = NULL;

	CString strElementName;
	{
		CBCGPTagManager tm (tag);
		tm.ReadString (CBCGPBaseInfo::s_szTag_ElementName, strElementName);
	}

	if (!strElementName.IsEmpty ())
	{
		base = (lpCreateProc)(strElementName);
		if (base != NULL)
		{
			base->FromTag (tag);
		}
	}

	return base;
}
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;
}
示例#3
0
BOOL CBCGPBaseInfo::XID::FromTag (const CString& strTag)
{
	CBCGPTagManager tm (strTag);

	BOOL bResult = tm.ReadString (s_szTag_Name, m_Name);

	if (tm.ReadUInt (s_szTag_Value, m_Value))
	{
		bResult = TRUE;
	}

	return bResult;
}
BOOL CBCGPTagManager::ParseColor (const CString& strItem, CBCGPColor& value)
{
	CBCGPTagManager tm (strItem);

	CStringArray sa;

	CString strA, strR, strG, strB;

	tm.ExcludeTag (s_A, strA);
	strA.TrimLeft ();
	strA.TrimRight ();
	tm.ExcludeTag (s_R, strR);
	strR.TrimLeft ();
	strR.TrimRight ();
	tm.ExcludeTag (s_G, strG);
	strG.TrimLeft ();
	strG.TrimRight ();
	tm.ExcludeTag (s_B, strB);
	strB.TrimLeft ();
	strB.TrimRight ();

	if (strR.IsEmpty () || strG.IsEmpty () || strB.IsEmpty ())
	{
		if (!ParseString (strItem, _T(","), sa, TRUE, FALSE))
		{
			strR = tm.GetBuffer ();
			strR.TrimLeft ();
			strR.TrimRight ();

			sa.Add (strR);
		}
	}
	else
	{
		sa.Add (strR);
		sa.Add (strG);
		sa.Add (strB);

		if (!strA.IsEmpty ())
		{
			sa.Add (strA);
		}
	}

	if (sa.GetSize () > 0)
	{
		const int count = (int) sa.GetSize ();
		if (count >= 3)
		{
			value.r = bcg_clamp((double)_ttol(sa[0]) / 255.0, 0.0, 1.0);
			value.g = bcg_clamp((double)_ttol(sa[1]) / 255.0, 0.0, 1.0);
			value.b = bcg_clamp((double)_ttol(sa[2]) / 255.0, 0.0, 1.0);
			value.a = count == 4 ? bcg_clamp((double)_ttol(sa[3]) / 255.0, 0.0, 1.0) : 1.0;

			return TRUE;
		}
	}

	return FALSE;
}
BOOL CBCGPTagManager::ParsePoint (const CString& strItem, CPoint& value)
{
	CBCGPTagManager tm (strItem);

	CStringArray sa;

	CString strX, strY;

	tm.ExcludeTag (s_X, strX);
	strX.TrimLeft ();
	strX.TrimRight ();
	tm.ExcludeTag (s_Y, strY);
	strY.TrimLeft ();
	strY.TrimRight ();

	if (strX.IsEmpty () || strY.IsEmpty ())
	{
		if (!ParseString (tm.GetBuffer (), _T(","), sa, TRUE, FALSE))
		{
			return FALSE;
		}
	}
	else
	{
		sa.Add (strX);
		sa.Add (strY);
	}

	if (sa.GetSize () == 2)
	{
		value.x = _ttol(sa[0]);
		value.y = _ttol(sa[1]);
		return TRUE;
	}

	return FALSE;
}
BOOL CBCGPTagManager::ParseSize (const CString& strItem, CSize& value)
{
	CBCGPTagManager tm (strItem);
	CStringArray sa;

	CString strW, strH;

	tm.ExcludeTag (s_Width, strW);
	strW.TrimLeft ();
	strW.TrimRight ();
	tm.ExcludeTag (s_Height, strH);
	strH.TrimLeft ();
	strH.TrimRight ();

	if (strW.IsEmpty () || strH.IsEmpty ())
	{
		if (!ParseString (tm.GetBuffer (), _T(","), sa, TRUE, FALSE))
		{
			return FALSE;
		}
	}
	else
	{
		sa.Add (strW);
		sa.Add (strH);
	}

	if (sa.GetSize () == 2)
	{
		value.cx = _ttol(sa[0]);
		value.cy = _ttol(sa[1]);
		return TRUE;
	}

	return FALSE;
}
BOOL CBCGPTagManager::ParseBrush (const CString& strItem, CBCGPBrush& value)
{
	CBCGPTagManager tm (strItem);

	int type = CBCGPBrush::BCGP_NO_GRADIENT;
	tm.ReadInt(s_BrushType, type);
	type = bcg_clamp(type, CBCGPBrush::BCGP_NO_GRADIENT, CBCGPBrush::BCGP_GRADIENT_RADIAL_BOTTOM_RIGHT);
	int opacity = 255;
	tm.ReadInt (s_Opacity, opacity);

	if (type == CBCGPBrush::BCGP_NO_GRADIENT)
	{
		CBCGPColor clr;
		tm.ReadColor (s_BrushColor, clr);

		value.SetColor (clr, bcg_clamp((double)opacity / 255.0, 0.0, 1.0));
	}
	else
	{
		CString strColors;

		if (tm.ExcludeTag (s_BrushColors, strColors))
		{
			CBCGPTagManager tmColors(strColors);

			CBCGPColor clr1;
			tmColors.ReadColor (s_BrushColor, clr1);
			CBCGPColor clr2;
			tmColors.ReadColor (s_BrushColor, clr2);

			value.SetColors (clr1, clr2, (CBCGPBrush::BCGP_GRADIENT_TYPE)type, bcg_clamp((double)opacity / 255.0, 0.0, 1.0));
		}
	}

	return TRUE;
}
BOOL CBCGPTagManager::ParseGridColorData (const CString& strItem, BCGP_GRID_COLOR_DATA::ColorData& value)
{
	CBCGPTagManager tm (strItem);

	value.InitColors ();

	tm.ReadColor (s_ColorFill        , value.m_clrBackground);
	tm.ReadColor (s_ColorText        , value.m_clrText);
	tm.ReadColor (s_ColorFillGradient, value.m_clrGradient);
	tm.ReadInt   (s_GradientAngle    , value.m_nGradientAngle);
	tm.ReadColor (s_ColorBorder      , value.m_clrBorder);

	return TRUE;
}
BOOL CBCGPTagManager::ParseControlRendererParams (const CString& strItem, CBCGPControlRendererParams& value)
{
	CBCGPTagManager tm (strItem);

	CBCGPControlRendererParams params;
	params.SetResourceID (value.GetResourceID ());

#ifndef _BCGSUITE_
	params.SetBaseColor (m_clrBase, m_clrTarget);
#endif

	if (!tm.ReadRect (s_Rect, params.m_rectImage))
	{
		CSize size;

		if (tm.ReadSize (s_Size, size))
		{
			params.m_rectImage = CRect (CPoint (0, 0), size);
		}
	}

	if (params.m_rectImage.IsRectEmpty ())
	{
		return FALSE;
	}

	tm.ReadRect  (s_Corners, params.m_rectCorners);
	tm.ReadRect  (s_Sides, params.m_rectSides);
	tm.ReadRect  (s_Interior, params.m_rectInter);
	tm.ReadColor (s_Transparent, params.m_clrTransparent);
	tm.ReadBool  (s_PreMltCheck, params.m_bPreMultiplyCheck);

	value = params;

	return TRUE;
}
示例#10
0
void CSetPageBase::InitPropList()
{
	CBCGPTagManager tm;
	CString strRes(_T("IDR_SETCONFIG_XML_") + m_strConfigName.MakeUpper());
	if (!tm.LoadFromResource(strRes, _T("XML")))
	{
		return;
	}

	CString strStyle;
	if (!tm.ExcludeTag(_T("SETCONFIG"), strStyle))
	{
		return;
	}
	tm.SetBuffer(strStyle);

	int nVersion;
	tm.ReadInt(_T("VERSION"), nVersion);
	if (nVersion != 1)
	{
		return;
	}

	CString strPropertys;
	if (tm.ExcludeTag(_T("PROPERTYS"), strPropertys))
	{
		CBCGPTagManager tmPropertys(strPropertys);

		CMyBCGPProp* pPropGroup = NULL;
		CString strProperty;
		while (tmPropertys.ExcludeTag(_T("PROPERTY"), strProperty))
		{
			CBCGPTagManager tmProperty(strProperty);
			CString strName = _T("NO NAME");
			tmProperty.ReadString(_T("NAME"), strName);

			BOOL bGroup = FALSE;
			if (tmProperty.ReadBool(_T("GROUP"), bGroup) && bGroup)
			{
				if (pPropGroup)
				{
					m_wndPropList.AddProperty(pPropGroup, FALSE, FALSE);
					pPropGroup = NULL;
				}

				pPropGroup = new CMyBCGPProp(strName);
			} 
			else if (pPropGroup)
			{
				CString strType = _T("Combo");
				tmProperty.ReadString(_T("TYPE"), strType);

				if (strType.CompareNoCase(_T("Combo")) == 0)
				{
					CString strValue;
					tmProperty.ReadString(_T("VALUE"), strValue);

					CMyBCGPProp* pProp = new CMyBCGPProp(strName, (_variant_t)strValue);
					
					CString strItem;
					while (tmProperty.ExcludeTag(_T("ITEM"), strItem))
					{
						CBCGPTagManager tmItem(strItem);
						tmItem.ReadString(_T("VALUE"), strValue);

						CString strShort, strPreview;
						tmItem.ReadString(_T("SHORT"), strShort);
						tmItem.ReadString(_T("PREVIEW"), strPreview);
						Entity_Backward(strPreview, s_EntityText);
						EntityToSymbol(strPreview);

						pProp->AddComboOption(strValue, strShort, strPreview);
					}

					pPropGroup->AddSubItem(pProp);
				} 
				else if (strType.CompareNoCase(_T("Number")) == 0)
				{
					int nValue;
					tmProperty.ReadInt(_T("VALUE"), nValue);

					CMyBCGPProp* pProp = new CMyBCGPProp(strName, (_variant_t)nValue);

					CSize range;
					tmProperty.ReadSize(_T("RANGE"), range);

					BOOL bBuddy = FALSE;
					tmProperty.ReadBool(_T("BUDDY"), bBuddy);
					CMyBCGPProp* pPropBuddy = NULL;
					if (bBuddy)
					{
						pPropBuddy = DYNAMIC_DOWNCAST(CMyBCGPProp, pPropGroup->GetSubItem(pPropGroup->GetSubItemsCount() - 1));
					}

					CString strShort, strPreview;
					tmProperty.ReadString(_T("SHORT"), strShort);
					tmProperty.ReadString(_T("PREVIEW"), strPreview);
					Entity_Backward(strPreview, s_EntityText);
					EntityToSymbol(strPreview);

					pProp->SetNumberSpin(range.cx, range.cy, strShort, strPreview, pPropBuddy);
					pPropGroup->AddSubItem(pProp);
				}
				else if (strType.CompareNoCase(_T("Text")) == 0)
				{
					CString strValue;
					tmProperty.ReadString(_T("VALUE"), strValue);

					CMyBCGPProp* pProp = new CMyBCGPProp(strName, (_variant_t)strValue);

					CString strShort, strPreview;
					tmProperty.ReadString(_T("SHORT"), strShort);
					tmProperty.ReadString(_T("PREVIEW"), strPreview);
					Entity_Backward(strPreview, s_EntityText);
					EntityToSymbol(strPreview);

					pProp->SetEditText(strShort, strPreview);
					pPropGroup->AddSubItem(pProp);
				}
			}
		}

		if (pPropGroup)
		{
			m_wndPropList.AddProperty(pPropGroup, FALSE, FALSE);
			pPropGroup = NULL;
		}
	}
}
BOOL CBCGPTagManager::ParseFont (const CString& strItem, LOGFONT& value)
{
	CBCGPTagManager tm (strItem);

	CString strFontItem;

	if (tm.ExcludeTag (s_FaceName, strFontItem))
	{
		ASSERT(!strFontItem.IsEmpty ());

		if (!strFontItem.IsEmpty ())
		{
			memcpy (value.lfFaceName, (LPCTSTR)strFontItem, min(strFontItem.GetLength (), LF_FACESIZE) * sizeof(TCHAR));
		}
	}
	
	int val = 0;
	if (tm.ReadInt (s_Height, val))
	{
		value.lfHeight = val;
	}

	if (value.lfHeight > 0)
	{
		if (tm.ReadInt (s_Width, val))
		{
			value.lfWidth = val;
		}
	}

	if (tm.ExcludeTag (s_Weight, strFontItem))
	{
		struct WEIGHT_FONT_TYPE
		{
			LPCTSTR name;
			LONG    weight;
		};

		const WEIGHT_FONT_TYPE WEIGHT_FONT_TYPES[] = 
		{
			{_T("DONTCARE")  , FW_DONTCARE  },
			{_T("THIN")      , FW_THIN      },
			{_T("EXTRALIGHT"), FW_EXTRALIGHT},
			{_T("LIGHT")     , FW_LIGHT     },
			{_T("NORMAL")    , FW_NORMAL    },
			{_T("MEDIUM")    , FW_MEDIUM    },
			{_T("SEMIBOLD")  , FW_SEMIBOLD  },
			{_T("BOLD")      , FW_BOLD      },
			{_T("EXTRABOLD") , FW_EXTRABOLD },
			{_T("HEAVY")     , FW_HEAVY     },
			{_T("ULTRALIGHT"), FW_ULTRALIGHT},
			{_T("REGULAR")   , FW_REGULAR   },
			{_T("DEMIBOLD")  , FW_DEMIBOLD  },
			{_T("ULTRABOLD") , FW_ULTRABOLD },
			{_T("BLACK")     , FW_BLACK     }
		};

		for(long i = 0; i < sizeof(WEIGHT_FONT_TYPES) / sizeof(WEIGHT_FONT_TYPE); i++)
		{
			if(strFontItem.CompareNoCase (WEIGHT_FONT_TYPES[i].name) == 0)
			{
				value.lfWeight = WEIGHT_FONT_TYPES[i].weight;
				break;
			}
		}
	}

	if(tm.ExcludeTag (s_Quality, strFontItem))
	{
		struct QUALITY_FONT_TYPE
		{
			LPCTSTR name;
			BYTE    quality;
		};

		const QUALITY_FONT_TYPE QUALITY_FONT_TYPES[] = 
		{
			{_T("DEFAULT")          , DEFAULT_QUALITY          },
			{_T("DRAFT")            , DRAFT_QUALITY            },
			{_T("PROOF")            , PROOF_QUALITY            },
			{_T("NONANTIALIASED")   , NONANTIALIASED_QUALITY   },
			{_T("ANTIALIASED")      , ANTIALIASED_QUALITY      },
			{_T("CLEARTYPE")        , 5},//CLEARTYPE_QUALITY        
			{_T("CLEARTYPE_NATURAL"), 6} //CLEARTYPE_NATURAL_QUALITY
		};

		for(long i = 0; i < sizeof(QUALITY_FONT_TYPES) / sizeof(QUALITY_FONT_TYPE); i++)
		{
			if(strFontItem.CompareNoCase (QUALITY_FONT_TYPES[i].name) == 0)
			{
				if (QUALITY_FONT_TYPES[i].quality <= ANTIALIASED_QUALITY)
				{
					value.lfQuality = QUALITY_FONT_TYPES[i].quality;
				}
				else
				{
					OSVERSIONINFO osvi;
					osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
					::GetVersionEx (&osvi);

					if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT &&
					   osvi.dwMajorVersion >= 5)
					{
						value.lfQuality = QUALITY_FONT_TYPES[i].quality;
					}
				}
				break;
			}
		}
	}

	return TRUE;
}
BOOL CBCGPTagManager::ParseRect (const CString& strItem, CRect& value)
{
	CBCGPTagManager tm (strItem);

	CString str1;
	CString str2;

	tm.ExcludeTag (s_Offset, str1);
	str1.TrimLeft ();
	str1.TrimRight ();
	tm.ExcludeTag (s_Size, str2);
	str2.TrimLeft ();
	str2.TrimRight ();

	CPoint pt (0, 0);
	CSize  sz (0, 0);

	if (ParsePoint (str1, pt) && ParseSize (str2, sz))
	{
		value = CRect (pt, sz);
		return TRUE;
	}

	tm.SetBuffer (strItem);
	tm.ExcludeTag (s_LT, str1);
	str1.TrimLeft ();
	str1.TrimRight ();
	tm.ExcludeTag (s_RB, str2);
	str2.TrimLeft ();
	str2.TrimRight ();

	CPoint pt2 (0, 0);
	if (ParsePoint (str1, pt) && ParsePoint (str2, pt2))
	{
		value = CRect (pt, pt2);
		return TRUE;
	}

	CStringArray sa;

	CString strL, strT, strR, strB;

	tm.SetBuffer (strItem);

	tm.ExcludeTag (s_Left, strL);
	strL.TrimLeft ();
	strL.TrimRight ();
	tm.ExcludeTag (s_Top, strT);
	strT.TrimLeft ();
	strT.TrimRight ();
	tm.ExcludeTag (s_Right, strR);
	strR.TrimLeft ();
	strR.TrimRight ();
	tm.ExcludeTag (s_Bottom, strB);
	strB.TrimLeft ();
	strB.TrimRight ();

	if (strL.IsEmpty () || strT.IsEmpty () || strR.IsEmpty () || strB.IsEmpty ())
	{
		if (!ParseString (tm.GetBuffer (), _T(","), sa, TRUE, FALSE))
		{
			return FALSE;
		}
	}
	else
	{
		sa.Add (strL);
		sa.Add (strT);
		sa.Add (strR);
		sa.Add (strB);
	}

	if (sa.GetSize () == 4)
	{
		value.left   = _ttol(sa[0]);
		value.top    = _ttol(sa[1]);
		value.right  = _ttol(sa[2]);
		value.bottom = _ttol(sa[3]);
		return TRUE;
	}

	return FALSE;
}
BOOL CBCGPTagManager::ParseColor (const CString& strItem, COLORREF& value)
{
	CBCGPTagManager tm (strItem);

	CStringArray sa;

	CString strA, strR, strG, strB;

	tm.ExcludeTag (s_A, strA);
	strA.TrimLeft ();
	strA.TrimRight ();
	tm.ExcludeTag (s_R, strR);
	strR.TrimLeft ();
	strR.TrimRight ();
	tm.ExcludeTag (s_G, strG);
	strG.TrimLeft ();
	strG.TrimRight ();
	tm.ExcludeTag (s_B, strB);
	strB.TrimLeft ();
	strB.TrimRight ();

	if (strR.IsEmpty () || strG.IsEmpty () || strB.IsEmpty ())
	{
		if (!ParseString (strItem, _T(","), sa, TRUE, FALSE))
		{
			strR = tm.GetBuffer ();
			strR.TrimLeft ();
			strR.TrimRight ();

			sa.Add (strR);
		}
	}
	else
	{
		sa.Add (strR);
		sa.Add (strG);
		sa.Add (strB);

		if (!strA.IsEmpty ())
		{
			sa.Add (strA);
		}
	}

	if (sa.GetSize () > 0)
	{
		const int count = (int) sa.GetSize ();
		if (count == 3)
		{
			value = AddaptColor (RGB((BYTE)_ttol(sa[0]), (BYTE)_ttol(sa[1]), (BYTE)_ttol(sa[2])),
				m_clrBase, m_clrTarget);
			return TRUE;
		}
		else if (count == 4)
		{
			value = RGB((BYTE)_ttol(sa[0]), (BYTE)_ttol(sa[1]), (BYTE)_ttol(sa[2])) | (((DWORD)(BYTE)(_ttol(sa[3]))) << 24);
			return TRUE;
		}
		else if (count == 1)
		{
			value = (COLORREF)_ttol(sa[0]);
			return TRUE;
		}
	}

	return FALSE;
}
BOOL CBCGPTagManager::ParseGridColors (const CString& strItem, BCGP_GRID_COLOR_DATA& value)
{
	CBCGPGridColors colors;

	CBCGPTagManager tm (strItem);

	tm.ReadGridColorData (s_Grid_EvenColors       , colors.m_EvenColors);
	tm.ReadGridColorData (s_Grid_OddColors        , colors.m_OddColors);
	tm.ReadGridColorData (s_Grid_GroupColors      , colors.m_GroupColors);
	tm.ReadGridColorData (s_Grid_GroupSelColors   , colors.m_GroupSelColors);
	tm.ReadGridColorData (s_Grid_SelColors        , colors.m_SelColors);
	tm.ReadGridColorData (s_Grid_HeaderColors     , colors.m_HeaderColors);
	tm.ReadGridColorData (s_Grid_HeaderSelColors  , colors.m_HeaderSelColors);
	tm.ReadGridColorData (s_Grid_LeftOffsetColors , colors.m_LeftOffsetColors);
	tm.ReadColor (s_ColorBackground      , colors.m_clrBackground);
	tm.ReadColor (s_ColorText            , colors.m_clrText);
	tm.ReadColor (s_Grid_ColorHeader     , colors.m_clrHeader);
	tm.ReadColor (s_Grid_ColorHorzLine   , colors.m_clrHorzLine);
	tm.ReadColor (s_Grid_ColorVertLine   , colors.m_clrVertLine);
	tm.ReadColor (s_Grid_ColorPreviewText, colors.m_clrPreviewText);

	value = colors;

	return TRUE;
}
BOOL CBCGPTagManager::ParseTextFormat (const CString& strItem, CBCGPTextFormat& value)
{
	CBCGPTagManager tm (strItem);

	CString family;
	tm.ReadString (s_TextFormatFamily, family);
	if (family.IsEmpty ())
	{
		return FALSE;
	}

	double size = 0.0;
	tm.ReadDouble (s_TextFormatSize, size);
	if (size == 0.0)
	{
		return FALSE;
	}

	int nValue = 0;
	tm.ReadInt (s_TextFormatWeight, nValue);
	long weight = (long)bcg_clamp(nValue, FW_THIN, FW_HEAVY);

	nValue = (int)CBCGPTextFormat::BCGP_FONT_STYLE_NORMAL;
	tm.ReadInt (s_TextFormatStyle, nValue);
	CBCGPTextFormat::BCGP_FONT_STYLE style = (CBCGPTextFormat::BCGP_FONT_STYLE)
		bcg_clamp(nValue, (int)CBCGPTextFormat::BCGP_FONT_STYLE_NORMAL, (int)CBCGPTextFormat::BCGP_FONT_STYLE_ITALIC);

	CString locale;
	tm.ReadString (s_TextFormatLocale, locale);

	CBCGPTextFormat format(family, (float)size, weight, style, locale);

	nValue = (int)CBCGPTextFormat::BCGP_TEXT_ALIGNMENT_LEADING;
	tm.ReadInt (s_TextFormatAlignHorz, nValue);
	format.SetTextAlignment ((CBCGPTextFormat::BCGP_TEXT_ALIGNMENT)
		bcg_clamp(nValue, (int)CBCGPTextFormat::BCGP_TEXT_ALIGNMENT_LEADING, (int)CBCGPTextFormat::BCGP_TEXT_ALIGNMENT_CENTER));

	nValue = (int)CBCGPTextFormat::BCGP_TEXT_ALIGNMENT_LEADING;
	tm.ReadInt (s_TextFormatAlignVert, nValue);
	format.SetTextVerticalAlignment ((CBCGPTextFormat::BCGP_TEXT_ALIGNMENT)
		bcg_clamp(nValue, (int)CBCGPTextFormat::BCGP_TEXT_ALIGNMENT_LEADING, (int)CBCGPTextFormat::BCGP_TEXT_ALIGNMENT_CENTER));

	BOOL bValue = FALSE;
	tm.ReadBool (s_TextFormatWordWrap, bValue);
	format.SetWordWrap (bValue);

	bValue = FALSE;
	tm.ReadBool (s_TextFormatClipping, bValue);
	format.SetClipText (bValue);

	double dValue = 0.0;
	tm.ReadDouble (s_TextFormatAngle, dValue);
	format.SetDrawingAngle (dValue);

	value = format;

	return TRUE;
}
BOOL CBCGPTagManager::ParseToolTipParams (const CString& strItem, CBCGPToolTipParams& value)
{
	CBCGPTagManager tm (strItem);

	CBCGPToolTipParams params;

#ifndef _BCGSUITE_
	tm.ReadBool  (s_TTP_BallonTooltip   , params.m_bBallonTooltip);
#else
	tm.ReadBool  (s_TTP_BallonTooltip   , params.m_bBalloonTooltip);
#endif

	tm.ReadBool  (s_TTP_DrawIcon        , params.m_bDrawIcon);
	tm.ReadBool  (s_TTP_DrawDescription , params.m_bDrawDescription);
	tm.ReadInt   (s_TTP_MaxDescrWidth   , params.m_nMaxDescrWidth);
	tm.ReadBool  (s_TTP_RoundedCorners  , params.m_bRoundedCorners);
	tm.ReadBool  (s_TTP_BoldLabel       , params.m_bBoldLabel);
	tm.ReadColor (s_ColorFill           , params.m_clrFill);
	tm.ReadColor (s_ColorFillGradient   , params.m_clrFillGradient);
	tm.ReadInt   (s_GradientAngle       , params.m_nGradientAngle);
	tm.ReadColor (s_ColorText           , params.m_clrText);
	tm.ReadColor (s_ColorBorder         , params.m_clrBorder);
	tm.ReadBool  (s_TTP_DrawSeparator   , params.m_bDrawSeparator);

	value = params;

	return TRUE;
}