private void LoadContent(ImageParagraph p) { ImageBox box = new ImageBox(); box.x_footer.Text = p.ImageFooter; box.x_header.Text = p.ImageHeader; box.x_picture.Source = null;// TODO Viewport = box; }
public IContent Load(XmlNode node) { ImageParagraph p = new ImageParagraph(); if (p.Load(node)) { return(p); } return(null); }
public IContent CreateRiddle() { ImageParagraph p = new ImageParagraph(); ImageBox box = Viewport as ImageBox; p.SourceName = box.x_picture.Source.ToString(); p.ImageHeader = box.x_header.Text; p.ImageFooter = box.x_footer.Text; return(p); }
public bool ToViewport(IContent content) { ImageParagraph p = content as ImageParagraph; if (p == null) { return(false); } return(true); }
protected void Rebuild() { m_Updating = true; DeleteAllChildren(); Size size = Size.Zero; if (m_Document != null && m_Document.Paragraphs.Count > 0) { #if USE_KNUTH_PLASS_LINE_BREAKING LineBreaker lineBreaker = new RichText.KnuthPlass.LineBreaker(Skin.Renderer, Skin.DefaultFont); #else LineBreaker lineBreaker = new RichText.Simple.LineBreaker(Skin.Renderer, Skin.DefaultFont); #endif int y = 0; int x; int width; int height; foreach (Paragraph paragraph in m_Document.Paragraphs) { if (paragraph is ImageParagraph) { ImageParagraph imageParagraph = paragraph as ImageParagraph; ImagePanel image = new ImagePanel(this); image.ImageName = imageParagraph.ImageName; if (imageParagraph.ImageSize != null) { image.Size = (Size)imageParagraph.ImageSize; } if (imageParagraph.TextureRect != null) { image.TextureRect = (Rectangle)imageParagraph.TextureRect; } if (imageParagraph.ImageColor != null) { image.ImageColor = (Color)imageParagraph.ImageColor; } image.DoMeasure(Size.Infinity); image.DoArrange(paragraph.Margin.Left, y + paragraph.Margin.Top, image.MeasuredSize.Width, image.MeasuredSize.Height); size.Width = Math.Max(size.Width, image.MeasuredSize.Width + paragraph.Margin.Left + paragraph.Margin.Right); y += image.MeasuredSize.Height + paragraph.Margin.Top + paragraph.Margin.Bottom; } else { List <TextBlock> textBlocks = lineBreaker.LineBreak(paragraph, m_BuildWidth); if (textBlocks != null) { x = paragraph.Margin.Left; y += paragraph.Margin.Top; width = 0; height = 0; foreach (TextBlock textBlock in textBlocks) { if (textBlock.Part is LinkPart) { LinkPart linkPart = textBlock.Part as LinkPart; LinkLabel link = new LinkLabel(this); link.Text = textBlock.Text; link.Link = linkPart.Link; link.Font = linkPart.Font; link.LinkClicked += OnLinkClicked; if (linkPart.Color != null) { link.TextColor = (Color)linkPart.Color; } if (linkPart.HoverColor != null) { link.HoverColor = (Color)linkPart.HoverColor; } if (linkPart.HoverFont != null) { link.HoverFont = linkPart.HoverFont; } link.DoMeasure(Size.Infinity); link.DoArrange(new Rectangle(x + textBlock.Position.X, y + textBlock.Position.Y, textBlock.Size.Width, textBlock.Size.Height)); width = Math.Max(width, link.ActualRight); height = Math.Max(height, link.ActualBottom); } else if (textBlock.Part is TextPart) { TextPart textPart = textBlock.Part as TextPart; Text text = new Text(this); text.String = textBlock.Text; text.Font = textPart.Font; if (textPart.Color != null) { text.TextColor = (Color)textPart.Color; } text.DoMeasure(Size.Infinity); text.DoArrange(new Rectangle(x + textBlock.Position.X, y + textBlock.Position.Y, textBlock.Size.Width, textBlock.Size.Height)); width = Math.Max(width, text.ActualRight + 1); height = Math.Max(height, text.ActualBottom + 1); } } size.Width = Math.Max(size.Width, width + paragraph.Margin.Right); y = height + paragraph.Margin.Bottom; } } } size.Height = y; } m_TextSize = size; m_NeedsRebuild = false; m_Updating = false; }