/* Various helper functions.
 *
 * Author: Steffen Vogel <post@steffenvogel.de>
 * SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
 * SPDX-License-Identifier: Apache-2.0
 */

#pragma once

// The suffixed of the BOX_ macro a constructed by
// combining the following letters in the written order:
//   - U for a line facing upwards
//   - D for a line facing downwards
//   - L for a line facing leftwards
//   - R for a line facing rightwards
//
// E.g. a cross can be constructed by combining all line fragments:
//    BOX_UDLR
#if 0 // Alternate character set
  #define BOX(chr)	"\e(0" chr "\e(B"
  #define BOX_LR	BOX("\x71") // Boxdrawing: ─
  #define BOX_UD	BOX("\x78") // Boxdrawing: │
  #define BOX_UDR	BOX("\x74") // Boxdrawing: ├
  #define BOX_UDLR	BOX("\x6E") // Boxdrawing: ┼
  #define BOX_UDL	BOX("\x75") // Boxdrawing: ┤
  #define BOX_ULR	BOX("\x76") // Boxdrawing: ┴
  #define BOX_UL	BOX("\x6A") // Boxdrawing: ┘
  #define BOX_DLR	BOX("\x77") // Boxdrawing: ┘
  #define BOX_DL	BOX("\x6B") // Boxdrawing: ┘
#elif 1 // UTF-8
  #define BOX_LR	"─" // Boxdrawing: ─
  #define BOX_UD	"│" // Boxdrawing: │
  #define BOX_UDR	"├" // Boxdrawing: ├
  #define BOX_UDLR	"┼" // Boxdrawing: ┼
  #define BOX_UDL	"┤" // Boxdrawing: ┤
  #define BOX_ULR	"┴" // Boxdrawing: ┴
  #define BOX_UL	"┘" // Boxdrawing: ┘
  #define BOX_DLR	"┬" // Boxdrawing: ┘
  #define BOX_DL	"┐" // Boxdrawing: ┘
  #define BOX_UR	"└" // Boxdrawing: └
#else // ASCII
  #define BOX_LR	"-" // Boxdrawing: ─
  #define BOX_UD	"|" // Boxdrawing: │
  #define BOX_UDR	"+" // Boxdrawing: ├
  #define BOX_UDLR	"+" // Boxdrawing: ┼
  #define BOX_UDL	"+" // Boxdrawing: ┤
  #define BOX_ULR	"+" // Boxdrawing: ┴
  #define BOX_UL	"+" // Boxdrawing: ┘
  #define BOX_DLR	"+" // Boxdrawing: ┘
  #define BOX_DL	"+" // Boxdrawing: ┘
#endif