Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,10 @@ private void CanvasTextBoxColorPicker_ColorChanged(ColorPicker sender, ColorChan
ReDrawCanvas();
}

_fontColorIcon.Foreground = new SolidColorBrush(_canvasTextBoxColorPicker.Color);
if (_fontColorIcon != null)
{
_fontColorIcon.Foreground = new SolidColorBrush(_canvasTextBoxColorPicker.Color);
}
}

private void CanvasTextBox_TextChanged(object sender, string text)
Expand Down
75 changes: 56 additions & 19 deletions Microsoft.Toolkit.Uwp.UI.Controls/InfiniteCanvas/InfiniteCanvas.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,49 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
/// <summary>
/// InfiniteCanvas is a canvas that supports Ink, Text, Format Text, Zoom in/out, Redo, Undo, Export canvas data, Import canvas data.
/// </summary>
[TemplatePart(Name = CanvasTextBoxToolsName, Type = typeof(StackPanel))]
[TemplatePart(Name = CanvasTextBoxColorPickerName, Type = typeof(ColorPicker))]
[TemplatePart(Name = CanvasTextBoxFontSizeTextBoxName, Type = typeof(TextBox))]
[TemplatePart(Name = CanvasTextBoxItalicButtonName, Type = typeof(ToggleButton))]
[TemplatePart(Name = CanvasTextBoxBoldButtonName, Type = typeof(ToggleButton))]
[TemplatePart(Name = DrawingSurfaceRendererName, Type = typeof(InfiniteCanvasVirtualDrawingSurface))]
[TemplatePart(Name = MainContainerName, Type = typeof(Canvas))]
[TemplatePart(Name = InfiniteCanvasScrollViewerName, Type = typeof(ScrollViewer))]
[TemplatePart(Name = EraseAllButtonName, Type = typeof(Button))]
[TemplatePart(Name = CanvasTextBoxName, Type = typeof(InfiniteCanvasTextBox))]
[TemplatePart(Name = EnableTextButtonName, Type = typeof(InkToolbarCustomToolButton))]
[TemplatePart(Name = EnableTouchInkingButtonName, Type = typeof(InkToolbarCustomToggleButton))]
[TemplatePart(Name = InkCanvasToolBarName, Type = typeof(InkToolbar))]
[TemplatePart(Name = CanvasToolbarContainerName, Type = typeof(StackPanel))]
[TemplatePart(Name = DrawingInkCanvasName, Type = typeof(InkCanvas))]
[TemplatePart(Name = UndoButtonName, Type = typeof(Button))]
[TemplatePart(Name = RedoButtonName, Type = typeof(Button))]
[TemplatePart(Name = FontColorIconName, Type = typeof(FontIcon))]
public partial class InfiniteCanvas : Control
{
private const double DefaultMaxZoomFactor = 4.0;
private const double DefaultMinZoomFactor = .25;
private const double LargeCanvasWidthHeight = 1 << 21;

private const string CanvasTextBoxToolsName = "CanvasTextBoxTools";
private const string CanvasTextBoxColorPickerName = "CanvasTextBoxColorPicker";
private const string CanvasTextBoxFontSizeTextBoxName = "CanvasTextBoxFontSizeTextBox";
private const string CanvasTextBoxItalicButtonName = "CanvasTextBoxItalicButton";
private const string CanvasTextBoxBoldButtonName = "CanvasTextBoxBoldButton";
private const string DrawingSurfaceRendererName = "DrawingSurfaceRenderer";
private const string MainContainerName = "MainContainer";
private const string InfiniteCanvasScrollViewerName = "InfiniteCanvasScrollViewer";
private const string EraseAllButtonName = "EraseAllButton";
private const string CanvasTextBoxName = "CanvasTextBox";
private const string EnableTextButtonName = "EnableTextButton";
private const string EnableTouchInkingButtonName = "EnableTouchInkingButton";
private const string InkCanvasToolBarName = "InkCanvasToolBar";
private const string CanvasToolbarContainerName = "CanvasToolbarContainer";
private const string DrawingInkCanvasName = "DrawingInkCanvas";
private const string UndoButtonName = "UndoButton";
private const string RedoButtonName = "RedoButton";
private const string FontColorIconName = "FontColorIcon";

private InkCanvas _inkCanvas;
private InfiniteCanvasVirtualDrawingSurface _drawingSurfaceRenderer;
private InkSynchronizer _inkSync;
Expand Down Expand Up @@ -163,25 +200,25 @@ public InfiniteCanvas()
/// <inheritdoc />
protected override void OnApplyTemplate()
{
_canvasTextBoxTools = (StackPanel)GetTemplateChild("CanvasTextBoxTools");
_canvasTextBoxColorPicker = (ColorPicker)GetTemplateChild("CanvasTextBoxColorPicker");
_canvasTextBoxFontSizeTextBox = (TextBox)GetTemplateChild("CanvasTextBoxFontSizeTextBox");
_canvasTextBoxItalicButton = (ToggleButton)GetTemplateChild("CanvasTextBoxItalicButton");
_canvasTextBoxBoldButton = (ToggleButton)GetTemplateChild("CanvasTextBoxBoldButton");
_drawingSurfaceRenderer = (InfiniteCanvasVirtualDrawingSurface)GetTemplateChild("DrawingSurfaceRenderer");
_mainContainer = (Canvas)GetTemplateChild("MainContainer");
_infiniteCanvasScrollViewer = (ScrollViewer)GetTemplateChild("InfiniteCanvasScrollViewer");
_eraseAllButton = (Button)GetTemplateChild("EraseAllButton");
_canvasTextBox = (InfiniteCanvasTextBox)GetTemplateChild("CanvasTextBox");
_enableTextButton = (InkToolbarCustomToolButton)GetTemplateChild("EnableTextButton");
_enableTouchInkingButton = (InkToolbarCustomToggleButton)GetTemplateChild("EnableTouchInkingButton");
_inkCanvasToolBar = (InkToolbar)GetTemplateChild("InkCanvasToolBar");
_canvasToolbarContainer = (StackPanel)GetTemplateChild("CanvasToolbarContainer");

_inkCanvas = (InkCanvas)GetTemplateChild("DrawingInkCanvas");
_undoButton = (Button)GetTemplateChild("UndoButton");
_redoButton = (Button)GetTemplateChild("RedoButton");
_fontColorIcon = (FontIcon)GetTemplateChild("FontColorIcon");
_canvasTextBoxTools = (StackPanel)GetTemplateChild(CanvasTextBoxToolsName);
_canvasTextBoxColorPicker = (ColorPicker)GetTemplateChild(CanvasTextBoxColorPickerName);
_canvasTextBoxFontSizeTextBox = (TextBox)GetTemplateChild(CanvasTextBoxFontSizeTextBoxName);
_canvasTextBoxItalicButton = (ToggleButton)GetTemplateChild(CanvasTextBoxItalicButtonName);
_canvasTextBoxBoldButton = (ToggleButton)GetTemplateChild(CanvasTextBoxBoldButtonName);
_drawingSurfaceRenderer = (InfiniteCanvasVirtualDrawingSurface)GetTemplateChild(DrawingSurfaceRendererName);
_mainContainer = (Canvas)GetTemplateChild(MainContainerName);
_infiniteCanvasScrollViewer = (ScrollViewer)GetTemplateChild(InfiniteCanvasScrollViewerName);
_eraseAllButton = (Button)GetTemplateChild(EraseAllButtonName);
_canvasTextBox = (InfiniteCanvasTextBox)GetTemplateChild(CanvasTextBoxName);
_enableTextButton = (InkToolbarCustomToolButton)GetTemplateChild(EnableTextButtonName);
_enableTouchInkingButton = (InkToolbarCustomToggleButton)GetTemplateChild(EnableTouchInkingButtonName);
_inkCanvasToolBar = (InkToolbar)GetTemplateChild(InkCanvasToolBarName);
_canvasToolbarContainer = (StackPanel)GetTemplateChild(CanvasToolbarContainerName);

_inkCanvas = (InkCanvas)GetTemplateChild(DrawingInkCanvasName);
_undoButton = (Button)GetTemplateChild(UndoButtonName);
_redoButton = (Button)GetTemplateChild(RedoButtonName);
_fontColorIcon = (FontIcon)GetTemplateChild(FontColorIconName);

UnRegisterEvents();
RegisterEvents();
Expand Down