#ifndef SegmentDisplayChars_h
#define SegmentDisplayChars_h

#include "avr/pgmspace.h"


#define SegmentA 1  // Top
#define SegmentB 2  // Top right
#define SegmentC 4  // Bottom right
#define SegmentD 8  // Bottom
#define SegmentE 16 // Bottom left
#define SegmentF 32 // Top left
#define SegmentG 64 // Middle


#define ASCIIZero 48
#define ASCIINine 57
#define ASCIIUppercaseA 65
#define ASCIIUppercaseZ 90
#define ASCIILowercaseA 97
#define ASCIILowercaseZ 122


const byte SDNumberSegments[10] PROGMEM =
{
  /**
   *  _
   * | |
   * |_|
   *
  **/
  SegmentA | SegmentB | SegmentC | SegmentD | SegmentE | SegmentF,

  /**
   *
   *   |
   *   |
   *
  **/
  SegmentB | SegmentC,

  /**
   *  _
   *  _|
   * |_
   *
  **/
  SegmentA | SegmentB | SegmentD | SegmentE | SegmentG,

  /**
   *  _
   *  _|
   *  _|
   *
  **/
  SegmentA | SegmentB | SegmentC | SegmentD | SegmentG,

  /**
   *
   * |_|
   *   |
   *
  **/
  SegmentB | SegmentC | SegmentF | SegmentG,

  /**
   *  _
   * |_
   *  _|
   *
  **/
  SegmentA | SegmentC | SegmentD | SegmentF | SegmentG,

  /**
   *  _
   * |_
   * |_|
   *
  **/
  SegmentA | SegmentC | SegmentD | SegmentE | SegmentF | SegmentG,

  /**
   *  _
   *   |
   *   |
   *
  **/
  SegmentA | SegmentB | SegmentC,

  /**
   *  _
   * |_|
   * |_|
   *
  **/
  SegmentA | SegmentB | SegmentC | SegmentD | SegmentE | SegmentF | SegmentG,

  /**
   *  _
   * |_|
   *  _|
   *
  **/
  SegmentA | SegmentB | SegmentC | SegmentD | SegmentF | SegmentG
};



const byte SDCharacterSegments[26] PROGMEM =
{
  /**
   *  _
   * |_|
   * | |
   *
  **/
  SegmentA | SegmentB | SegmentC | SegmentE | SegmentF | SegmentG,

  /**
   *
   * |_
   * |_|
   *
  **/
  SegmentC | SegmentD | SegmentE | SegmentF | SegmentG,

  /**
   *  _
   * |
   * |_
   *
  **/
  SegmentA | SegmentD | SegmentE | SegmentF,

  /**
   *
   *  _|
   * |_|
   *
  **/
  SegmentB | SegmentC | SegmentD | SegmentE | SegmentG,

  /**
   *  _
   * |_
   * |_
   *
  **/
  SegmentA | SegmentD | SegmentE | SegmentF | SegmentG,

  /**
   *  _
   * |_
   * |
   *
  **/
  SegmentA | SegmentE | SegmentF | SegmentG,

  /**
   *  _
   * |_|
   *  _|
   *
  **/
  SegmentA | SegmentB | SegmentC | SegmentD | SegmentF | SegmentG,

  /**
   *
   * |_|
   * | |
   *
  **/
  SegmentB | SegmentC | SegmentE | SegmentF | SegmentG,

  /**
   *
   * |
   * |
   *
  **/
  SegmentE | SegmentF,

  /**
   *
   *   |
   * |_|
   *
  **/
  SegmentB | SegmentC | SegmentD | SegmentE,

  /**
   *
   * |_
   * |
   *
  **/
  SegmentE | SegmentF | SegmentG,

  /**
   *
   * |
   * |_
   *
  **/
  SegmentD | SegmentE | SegmentF,

  /**
   *  _
   *
   * | |
   *
  **/
  SegmentA | SegmentC | SegmentE,

  /**
   *
   *  _
   * | |
   *
  **/
  SegmentC | SegmentE | SegmentG,

  /**
   *  _
   * | |
   * |_|
   *
  **/
  SegmentA | SegmentB | SegmentC | SegmentD | SegmentE | SegmentF,

  /**
   *  _
   * |_|
   * |
   *
  **/
  SegmentA | SegmentB | SegmentE | SegmentF | SegmentG,

  /**
   *  _
   * |_|
   *   |
   *
  **/
  SegmentA | SegmentB | SegmentC | SegmentF | SegmentG,

  /**
   *
   *  _
   * |
   *
  **/
  SegmentE | SegmentG,

  /**
   *  _
   * |_
   *  _|
   *
  **/
  SegmentA | SegmentC | SegmentD | SegmentF | SegmentG,

  /**
   *
   * |_
   * |_
   *
  **/
  SegmentD | SegmentE | SegmentF | SegmentG,

  /**
   *
   * | |
   * |_|
   *
  **/
  SegmentB | SegmentC | SegmentD | SegmentE | SegmentF,

  /**
   *
   *
   * |_|
   *
  **/
  SegmentC | SegmentD | SegmentE,

  /**
   *
   * | |
   *  _
   *
  **/
  SegmentB | SegmentD | SegmentF,

  /**
   *
   *  _|
   *   |
   *
  **/
  SegmentB | SegmentC | SegmentG,

  /**
   *
   * |_|
   *  _|
   *
  **/
  SegmentB | SegmentC | SegmentD | SegmentF | SegmentG,

  /**
   *  _
   *  _|
   * |_
   *
  **/
  SegmentA | SegmentB | SegmentD | SegmentE | SegmentG
};

#endif
