As 2.x takes longer as planned, I added the SpeechbubbleContainer and StepLabelContainer (Enumerable label) to the 1.2 branch. This code was stored somewhere on my hard-drive, is still experimental.

This commit is contained in:
RKrom 2014-05-23 15:49:14 +02:00
parent 01ce82dbeb
commit ff3f898f54
21 changed files with 648 additions and 166 deletions

View file

@ -209,6 +209,17 @@ namespace Greenshot.Drawing {
[NonSerialized]
private Bitmap buffer = null;
/// <summary>
/// all stepcontainers for the surface, needed with serialization
/// </summary>
private readonly LinkedList<IDrawableContainer> _stepContainers = new LinkedList<IDrawableContainer>();
public LinkedList<IDrawableContainer> StepContainers {
get {
return _stepContainers;
}
}
/// <summary>
/// all elements on the surface, needed with serialization
/// </summary>
@ -633,6 +644,12 @@ namespace Greenshot.Drawing {
case DrawingModes.Text:
undrawnElement = new TextContainer(this);
break;
case DrawingModes.SpeechBubble:
undrawnElement = new SpeechbubbleContainer(this);
break;
case DrawingModes.StepLabel:
undrawnElement = new StepLabelContainer(this);
break;
case DrawingModes.Line:
undrawnElement = new LineContainer(this);
break;
@ -1002,7 +1019,7 @@ namespace Greenshot.Drawing {
}
}
drawingElement = undrawnElement;
drawingElement.Status = EditStatus.DRAWING;
drawingElement.Status = undrawnElement.DefaultEditMode;
undrawnElement = null;
// if a new element has been drawn, set location and register it
if (drawingElement != null) {
@ -1274,7 +1291,7 @@ namespace Greenshot.Drawing {
}
elementToRemove.PropertyChanged -= ElementPropertyChanged;
// Do not dispose, the memento should!! element.Dispose();
elementToRemove.Invalidate();
Invalidate();
if (makeUndoable) {
MakeUndoable(new DeleteElementMemento(this, elementToRemove), false);
}
@ -1690,5 +1707,9 @@ namespace Greenshot.Drawing {
public void element_FieldChanged(object sender, FieldChangedEventArgs e) {
selectedElements.HandleFieldChangedEvent(sender, e);
}
public bool IsOnSurface(IDrawableContainer container) {
return elements.Contains(container);
}
}
}