// // // // // $Revision$ // using System; using System.Diagnostics; using System.Drawing; namespace ICSharpCode.TextEditor.Util { abstract class TipSection { SizeF tipAllocatedSize; Graphics tipGraphics; SizeF tipMaxSize; SizeF tipRequiredSize; protected TipSection(Graphics graphics) { tipGraphics = graphics; } public abstract void Draw(PointF location); public SizeF GetRequiredSize() { return tipRequiredSize; } public void SetAllocatedSize(SizeF allocatedSize) { Debug.Assert(allocatedSize.Width >= tipRequiredSize.Width && allocatedSize.Height >= tipRequiredSize.Height); tipAllocatedSize = allocatedSize; OnAllocatedSizeChanged(); } public void SetMaximumSize(SizeF maximumSize) { tipMaxSize = maximumSize; OnMaximumSizeChanged(); } protected virtual void OnAllocatedSizeChanged() { } protected virtual void OnMaximumSizeChanged() { } protected void SetRequiredSize(SizeF requiredSize) { requiredSize.Width = Math.Max(0, requiredSize.Width); requiredSize.Height = Math.Max(0, requiredSize.Height); requiredSize.Width = Math.Min(tipMaxSize.Width, requiredSize.Width); requiredSize.Height = Math.Min(tipMaxSize.Height, requiredSize.Height); tipRequiredSize = requiredSize; } protected Graphics Graphics { get { return tipGraphics; } } protected SizeF AllocatedSize { get { return tipAllocatedSize; } } protected SizeF MaximumSize { get { return tipMaxSize; } } } }