public static Canvas Receive(Lidgren.Network.NetIncomingMessage message, Palette pal) { var width = message.ReadVariableInt32(); var height = message.ReadVariableInt32(); message.ReadPadBits(); var stream = message.ReadStream(); var canvas = new MemoryCanvas(new Size(width, height)); Pablo.Load(stream, canvas, pal); return(canvas); }
protected override void Execute(CommandExecuteArgs args) { var handler = tool.Handler; if (tool.SelectedRegion == null) { return; } var rect = tool.SelectedRegion.Value; // copy the selected region rect.Normalize(); var location = rect.TopLeft; var canvas = new MemoryCanvas(rect.Size); canvas.Set(Point.Empty, rect, handler.CurrentPage.Canvas); // save to clipboard var cb = new Clipboard(); cb.Clear(); // clear out contents of clipboard // save as text var ascii = new Types.Ascii(handler.Info); cb.Text = ascii.SaveToText(canvas, handler.CurrentPage.Font.Encoding); // save as ansi using (var ansistream = new MemoryStream()) { var writer = new BinaryWriter(ansistream); writer.Write(canvas.Width); writer.Write(canvas.Height); writer.Flush(); Types.Pablo.Save(ansistream, canvas, handler.CurrentPage.Palette); ansistream.Flush(); cb.SetDataStream(ansistream, "pablo"); } handler.Undo.Save(handler.CursorPosition, location, rect); handler.CurrentPage.Canvas.Fill(rect, handler.DrawElement); handler.InvalidateCharacterRegion(rect, true, true); tool.DrawMode = DrawMode.Normal; handler.CursorPosition = location; // go to starting position for the block }
protected override void OnExecuted(EventArgs e) { Rectangle rect = tool.SelectedRegion.Value; // copy the selected region Point location = rect.TopLeft; rect.Normalize(); Canvas canvas = new MemoryCanvas(rect.Size); canvas.Set(new Point(0, 0), rect, tool.Handler.CurrentPage.Canvas); tool.DrawMode = DrawMode.Paste; tool.SelectedRegion = null; tool.Handler.CursorPosition = location; // go to starting position for the block // go into paste mode tool.PasteCanvas = canvas; }
Canvas GetCanvasFromClipboard() { var handler = (CharacterHandler)Handler; Canvas canvas = null; var cb = new Clipboard(); var stream = cb.GetDataStream("pablo"); if (stream != null) { // get width/height var reader = new BinaryReader(stream); var width = reader.ReadInt32(); var height = reader.ReadInt32(); canvas = new MemoryCanvas(new Size(width, height)); Types.Pablo.Load(stream, canvas, handler.CurrentPage.Palette); } else { var text = cb.Text; if (!string.IsNullOrEmpty(text)) { // calculate height/width of incoming text var lines = text.Split(new string[] { "\r\n", "\n", "\r" }, StringSplitOptions.None); var width = lines.Max(r => r.Length); var height = lines.Length; // encode to memory stream var textstream = new MemoryStream(handler.CurrentPage.Font.Encoding.GetBytes(text), false); // load it up canvas = new MemoryCanvas(new Size(width, height)); var ascii = new Types.Ascii(handler.Info); ascii.Load(textstream, canvas, null, false); //pasteMode = PasteMode.Transparent; } } return(canvas); }
public void Given_canvas(string id, int width, int height) { canvas[id] = new MemoryCanvas(width, height); }