Aptivi - Stable Manuals
ProjectsWebsiteBlog
Terminaux 5.x - Manual
Terminaux 5.x - Manual
  • Welcome!
  • Breaking changes
    • API v1.0
    • API v2.0
    • API v3.0
    • API v4.0
    • API v5.0
  • Usage
    • Preface
    • Console Tools
      • Console Checker
        • Console Size Requirements
      • Image Rendering
        • Icons
      • Console Writers
        • Informational Boxes
      • Console Wrapper
      • Console Colors
      • Color Templates
      • Console Screen
      • Console Resize Listener
      • Presentation System
      • VT Sequences
      • Console Extensions
      • Interactive TUI
      • Geometric Shapes
      • Nerd Fonts
      • Terminal Info
      • Wide Characters
    • Input Reader
      • Custom Bindings
      • Reader State
      • Reader Settings
      • Syntax Highlighting
      • Pointer Events
      • Other Input
        • Keybindings
        • Choice-based inputs
        • Editors and Viewers
        • Figlet Font Selector
        • Color Wheel
    • Color Sequences
      • Color Model Conversions
      • Color Model Parsing
      • Interop with System.Drawing.Color
  • Report an issue
  • Source code
  • API Reference
Powered by GitBook
On this page
Edit on GitHub
  1. Usage
  2. Console Tools

Geometric Shapes

Drawing geometric shapes to the console!

Terminaux also provides a wide assortment of classes that allow you to render different geometric shapes to the console easily. You can select one of the following shapes to render to your console:

  • Rectangle

  • Square

  • Triangle

  • Trapezoid

  • Parallelogram

  • Circle

  • Ellipsis

They implement the IGeometricShape interface to allow you to iteratively render different geometric shapes from arrays of shapes that you can loop through to speed up the process and to allow you to implement your custom geometric shape.

To render a geometric shape, such as a rectangle, to the console, you must create a new instance of a shape class, providing the width and the height of the shape, as well as the position that tells Terminaux where to render the shape, whether to render the outline or the full shape (optional), and the selected color (optional).

It's up to your shape class to have a constructor that doesn't necessarily require all the shape arguments as outlined above.

After creating a new instance, just call Render() on the shape instance.

RenderRectangle.cs
var rect = new Rectangle(15, 5, 4, 2, true, ConsoleColors.Red);
var rect2 = new Rectangle(15, 5, 21, 2, false, ConsoleColors.Aqua);
TextWriterRaw.WriteRaw(rect.Render());
TextWriterRaw.WriteRaw(rect2.Render());

For general graphics tools, it provides the following functions found in the GraphicsTools class in the Terminaux.Graphics namespace:

RenderLine(): Renders a colored line using the .

RenderLineSmooth(): Renders a colored anti-aliasedline using .

Rendering geometric shapes and lines require that you either buffer it to your , or call the TextWriterRaw.WriteRaw() function, passing it the resultant string.

Bresenham's line algorithm
Xiaolin Wu's line algorithm
screen part