Control Preview() { var size = new Size(128, 128); var drawable = new Drawable { Size = size }; drawable.Paint += (sender, pe) => { if (canvas != null) { canvas.DrawRegion(pe.Graphics, new Rectangle(size)); } }; drawable.LoadComplete += delegate { canvas = new BGICanvas(drawable, size); DrawCanvas(); }; var layout = new DynamicLayout(); layout.AddCentered(drawable, verticalCenter: false); return(new GroupBox { Text = "Preview", Content = layout }); }
Control FontType() { var drawable = new Drawable { Size = new Size(40, 40) }; drawable.MouseUp += delegate { SelectFont(); }; drawable.Paint += delegate(object sender, PaintEventArgs pe) { if (canvas != null) { canvas.DrawRegion(pe.Graphics, new Rectangle(Point.Empty, canvas.WindowSize)); } }; drawable.LoadComplete += delegate // Shown? { if (drawable.Size.IsEmpty) { return; } canvas = new BGICanvas(drawable, drawable.Size); DrawCanvas(); }; return(drawable); }
public override bool InternalShouldApply(BGICanvas bgi) { return(this.Style != BGICanvas.FillStyle.User && ( bgi.GetFillColor() != this.Color || bgi.GetFillStyle() != this.Style )); }
public override bool InternalShouldApply(BGICanvas bgi) { return (isUserStyle && ( bgi.GetFillStyle() != BGICanvas.FillStyle.User || bgi.GetFillColor() != Color || !bgi.GetFillPattern(BGICanvas.FillStyle.User).SequenceEqual(Pattern) )); }
public virtual bool ShouldApply(BGICanvas bgi) { var contains = this.Document.OptionalApplied.Contains(OpCode); if (InternalShouldApply(bgi) || !contains) { return(true); } return(false); }
void SetBGI(RipHandler handler) { var pane = handler?.ViewerControl as ViewerPane; var viewer = pane != null ? pane?.Viewer : null; if (BGI != null) BGI.Control = viewer; else BGI = new BGICanvas(viewer); }
void SetBGI(RipHandler handler) { var pane = handler != null && handler.HasViewerControl ? handler.ViewerControl as ViewerPane : null; var viewer = pane != null ? pane.Viewer : null; if (BGI != null) { BGI.Control = viewer; } else { BGI = new BGICanvas(viewer); } }
public float DrawCharacter(BGICanvas bgi, float x, float y, BGICanvas.Direction dir, int size, byte character, IList <Rectangle> updates) { BGICharacter ch = this[character]; if (ch != null) { var drawUpdates = updates ?? new List <Rectangle>(); ch.Draw(bgi, x, y, dir, size, updates); if (updates == null) { bgi.UpdateRegion(drawUpdates); } return(ch.GetWidth(size)); } return(0); }
public void Draw(BGICanvas bgi, float x, float y, BGICanvas.Direction dir, int size, IList <Rectangle> updates) { var drawUpdates = updates ?? new List <Rectangle> (); var height = font.Height * scaleup [size] / scaledown [size]; if (dir == BGICanvas.Direction.Horizontal) { foreach (var stroke in strokes) { int curx = (int)x + (stroke.x * scaleup [size] / scaledown [size]); int cury = (int)y + height - (stroke.y * scaleup [size] / scaledown [size]); if (stroke.type == StrokeType.MoveTo) { bgi.MoveTo(curx, cury); } else if (stroke.type == StrokeType.LineTo) { bgi.LineTo(curx, cury, drawUpdates); } } } else { foreach (var stroke in strokes) { int curx = (int)x + height - (stroke.y * scaleup [size] / scaledown [size]); int cury = (int)y - (stroke.x * scaleup [size] / scaledown [size]); if (stroke.type == StrokeType.MoveTo) { bgi.MoveTo(curx, cury); } else if (stroke.type == StrokeType.LineTo) { bgi.LineTo(curx, cury, drawUpdates); } } } if (updates == null) { bgi.UpdateRegion(drawUpdates); } }
protected override void ApplyInvertedDrawing(IList <Rectangle> updates) { var point = this.Command.Point; int startAngle = Command.StartAngle; int endAngle = Command.EndAngle; if (startAngle > endAngle) { var t = startAngle; startAngle = endAngle; endAngle = t; } this.BGI.Ellipse(point.X, point.Y, startAngle, endAngle, Command.Radius.Width, Command.Radius.Height, updates); this.BGI.Line(point, point + BGICanvas.GetAngleSize(startAngle, Command.Radius), updates); this.BGI.Line(point, point + BGICanvas.GetAngleSize(endAngle, Command.Radius), updates); ApplyHandles(updates); }
public Size GetMaxCharacterSize(BGICanvas.Direction dir, int size) { float width = 0; foreach (var ch in characters) { if (ch != null) { width = Math.Max(width, ch.GetWidth(size)); } } if (dir == BGICanvas.Direction.Horizontal) { return(new Size(BGICanvas.Round(width), (int)((Height + Math.Abs(OriginToDescender) + 1) * BGICharacter.scaleup[size] / BGICharacter.scaledown[size]))); } else { return(new Size((int)((Height + Math.Abs(OriginToDescender) + 1) * BGICharacter.scaleup[size] / BGICharacter.scaledown[size]), BGICanvas.Round(width))); } }
public Size GetTextSize(string str, BGICanvas.Direction dir, int size) { float width = 0; foreach (byte c in BGICanvas.Encoding.GetBytes(str)) { BGICharacter ch = this[c]; if (ch != null) { width += ch.Width; } } if (dir == BGICanvas.Direction.Horizontal) { return(new Size(BGICanvas.Trunc(width * BGICharacter.scaleup[size] / BGICharacter.scaledown[size]), (int)((Height + Math.Abs(OriginToDescender) + 1) * BGICharacter.scaleup[size] / BGICharacter.scaledown[size]))); } else { return(new Size((int)((Height + Math.Abs(OriginToDescender) + 1) * BGICharacter.scaleup[size] / BGICharacter.scaledown[size]), BGICanvas.Trunc(width * BGICharacter.scaleup[size] / BGICharacter.scaledown[size]))); } }
Control Preview() { var control = new Drawable { Size = new Size(400, 100) }; control.Paint += delegate(object sender, PaintEventArgs pe) { if (canvas != null) { canvas.DrawRegion(pe.Graphics, new Rectangle(canvas.WindowSize)); } }; control.LoadComplete += delegate { canvas = new BGICanvas(control, control.Size); DrawPreview(); }; return(control); }
Control Preview() { var size = new Size(128, 128); var drawable = new Drawable { Size = size }; drawable.Paint += (sender, pe) => { if (canvas != null) { canvas.DrawRegion(pe.Graphics, new Rectangle(size)); } }; drawable.LoadComplete += delegate { canvas = new BGICanvas(drawable, size); DrawCanvas(); }; return(new GroupBox { Text = "Preview", Content = drawable }); }
Control Preview() { var size = new Size(256, 128); var drawable = new Drawable { Size = size }; drawable.Paint += delegate(object sender, PaintEventArgs pe) { this.canvas.DrawRegion(pe.Graphics, new Rectangle(size)); }; drawable.LoadComplete += delegate { canvas = new BGI.BGICanvas(drawable, size); DrawCanvas(); }; var layout = new DynamicLayout(); layout.AddCentered(drawable); return(new GroupBox { Text = "Preview", Content = layout }); }
int GetAngle(Point start, Point end) { var offset = new Point(end - start); var angle = BGICanvas.Round(Math.Atan((double)offset.Y * radius.Width / radius.Height / offset.X) * (180.0 / Math.PI)); if (offset.Y < 0 && offset.X < 0) { angle = 180 - angle; } else if (offset.Y > 0 && offset.X < 0) { angle = 180 - angle; } else if (offset.Y > 0 && offset.X > 0) { angle = 360 - angle; } else { angle = -angle; } return(angle); }
public override bool InternalShouldApply(BGICanvas bgi) { return(bgi.GetColor() != Value); }
public override void Set(BGICanvas bgi) { this.Font = bgi.GetFontType(); this.Direction = bgi.GetTextDirection(); this.CharacterSize = bgi.GetFontSize(); }
public override bool InternalShouldApply(BGICanvas bgi) { return(bgi.GetFontType() != this.Font || bgi.GetTextDirection() != this.Direction || bgi.GetFontSize() != this.CharacterSize); }
public override void Set(BGICanvas bgi) { this.Style = bgi.GetLineStyle(); this.Pattern = bgi.GetLinePattern(BGICanvas.LineStyle.User); this.Thickness = bgi.GetLineThickness(); }
public override bool InternalShouldApply(BGICanvas bgi) { return(Style != bgi.GetLineStyle() || (Style == BGICanvas.LineStyle.User && Pattern != bgi.GetLinePattern(BGICanvas.LineStyle.User)) || Thickness != bgi.GetLineThickness()); }
public override void Set(BGICanvas bgi) { Mode = bgi.GetWriteMode(); }
public override void Set(BGICanvas bgi) { this.Style = bgi.GetFillStyle(); this.Color = bgi.GetFillColor(); }
public abstract bool InternalShouldApply(BGICanvas bgi);
public abstract void Set(BGICanvas bgi);
public override bool ShouldApply(BGICanvas bgi) { return(isUserStyle && base.ShouldApply(bgi)); }
public float DrawCharacter(BGICanvas bgi, float x, float y, BGICanvas.Direction dir, int size, byte character, IList <Rectangle> updates) { byte foreCol = bgi.GetColor(); FontCharacter fc = this[character]; if (dir == BGICanvas.Direction.Horizontal) { int starty = (int)y; for (int cy = 0; cy < Height; cy++) { int startx = (int)x; for (int cx = 0; cx < Width; cx++) { if (fc[cx, cy]) { if (size == 1) { bgi.PutPixelInternal(startx, starty, foreCol); } else { for (int ccy = 0; ccy < size; ccy++) { for (int ccx = 0; ccx < size; ccx++) { bgi.PutPixelInternal(startx + ccx, starty + ccy, foreCol); } } } } startx += size; } starty += size; } var updateRect = new Rectangle((int)x, (int)y, Width * size, Height * size); if (updates != null) { updates.Add(updateRect); } else { bgi.UpdateRegion(updateRect); } } else { int startx = (int)x; for (int cy = 0; cy < Height; cy++) { int starty = (int)y; for (int cx = 0; cx < Width; cx++) { if (fc[cx, cy]) { if (size == 1) { bgi.PutPixelInternal(startx, starty, foreCol); } else { for (int ccy = 0; ccy < size; ccy++) { for (int ccx = 0; ccx < size; ccx++) { bgi.PutPixelInternal(startx + ccx, starty - ccy, foreCol); } } } } starty -= size; } startx += size; } var updateRect = new Rectangle((int)x, (int)y, Height * size, Width * size); if (updates != null) { updates.Add(updateRect); } else { bgi.UpdateRegion(updateRect); } } return(Width * size); }
public override bool InternalShouldApply(BGICanvas bgi) { return(bgi.GetWriteMode() != Mode); }