private void CreateWords(Element[] Elements)
{
var bbuff = new GDISurface(1, 1, this, false);
_HasImageError = false;
foreach (Element Element in Elements)
{
if (Element.TagName == "img")
{
Element.words = new Word[1];
Element.words[0] = new Word();
Image img = null;
try
{
string SRC = GetAttrib("img", Element.Tag).ToLowerInvariant();
if (IsIndex(SRC))
{
int index = int.Parse(SRC);
img = ImageList.Images[index];
}
else if (SRC.StartsWith("http://")) //from url
{}
else if (SRC.StartsWith("file://")) // from file
{
img = Image.FromFile(SRC.Substring(7));
}
else //from file
{
img = Image.FromFile(SRC);
}
}
catch
{
img = new Bitmap(20, 20);
_HasImageError = true;
}
Element.words[0].Image = img;
Element.words[0].Element = Element;
if (img != null)
{
Element.words[0].Height = img.Height;
Element.words[0].Width = img.Width;
Element.words[0].ScreenArea.Width = img.Width;
Element.words[0].ScreenArea.Height = img.Height;
}
}
else
{
string[] words = Element.Text.Split(' ');
Element.words = new Word[words.Length];
int i = 0;
foreach (string word in words)
{
Element.words[i] = new Word();
string tmp ;
Element.words[i].Element = Element;
if (i == words.Length - 1)
{
Element.words[i].Text = word;
tmp = word;
}
else
{
Element.words[i].Text = word + " ";
tmp = word + " "; //last space cant be measured , lets measure an "," instead
}
//SizeF size=g.MeasureString (tmp,Element.Font);
bbuff.Font = GetFont(Element.Font);
Size s = bbuff.MeasureTabbedString(tmp, 0);
Element.words[i].Height = s.Height;
Element.words[i].Width = s.Width - 0;
Element.words[i].ScreenArea.Width = Element.words[i].Width;
Element.words[i].ScreenArea.Height = Element.words[i].Height;
// Element.words[i].Link =Element.Link ;
i++;
}
}
}
bbuff.Dispose();
}