text.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import constants
  2. from packet import Packet
  3. # Colors
  4. RED = "\x1C1"
  5. GREEN = "\x1C2"
  6. AMBER = "\x1C3"
  7. DIM_RED = "\x1C4"
  8. DIM_GREEN = "\x1C5"
  9. BROWN = "\x1C6"
  10. ORANGE = "\x1C7"
  11. YELLOW = "\x1C8"
  12. RAINBOW_1 = "\x1C9"
  13. RAINBOW_2 = "\x1CA"
  14. COLOR_MIX = "\x1CB"
  15. AUTOCOLOR = "\x1CC"
  16. # TODO(ms): need support for RGB colors
  17. # Character sets
  18. FIVE_HIGH_STD = "\x1A1"
  19. FIVE_STROKE = "\x1A2"
  20. SEVEN_HIGH_STD = "\x1A3"
  21. SEVEN_STROKE = "\x1A4"
  22. SEVEN_HIGH_FANCY = "\x1A5"
  23. TEN_HIGH_STD = "\x1A6"
  24. SEVEN_SHADOW = "\x1A7"
  25. FULL_HEIGHT_FANCY = "\x1A8"
  26. FULL_HEIGHT_STD = "\x1A9"
  27. SEVEN_SHADOW_FANCY = "\x1A:"
  28. FIVE_WIDE = "\x1A;"
  29. SEVEN_WIDE = "\x1A<"
  30. SEVEN_FANCY_WIDE = "\x1A="
  31. WIDE_STROKE_FIVE = "\x1A>"
  32. # Alpha 2.0 and 3.0 only
  33. FIVE_HIGH_CUST = "\x1AW"
  34. SEVEN_HIGH_CUST = "\x1AX"
  35. TEN_HIGH_CUST = "\x1AY"
  36. FIFTEEN_HIGH_CUST = "\x1AZ"
  37. # Extended characters
  38. UP_ARROW = "\x08\x64"
  39. DOWN_ARROW = "\x08\x65"
  40. LEFT_ARROW = "\x08\x66"
  41. RIGHT_ARROW = "\x08\x67"
  42. PACMAN = "\x08\x68"
  43. SAIL_BOAT = "\x08\x69"
  44. BALL = "\x08\x6A"
  45. TELEPHONE = "\x08\x6B"
  46. HEART = "\x08\x6C"
  47. CAR = "\x08\x6D"
  48. HANDICAP = "\x08\x6E"
  49. RHINO = "\x08\x6F"
  50. MUG = "\x08\x70"
  51. SATELLITE_DISH = "\x08\x71"
  52. COPYRIGHT_SYMBOL = "\x08\x72"
  53. MALE_SYMBOL = "\x08\x73"
  54. FEMALE_SYMBOL = "\x08\x74"
  55. BOTTLE = "\x08\x75"
  56. DISKETTE = "\x08\x76"
  57. PRINTER = "\x08\x77"
  58. MUSICAL_NOTE = "\x08\x78"
  59. INFINITY_SYMBOL = "\x08\x79"
  60. # Display speeds
  61. SPEED_1 = "\x15"
  62. SPEED_2 = "\x16"
  63. SPEED_3 = "\x17"
  64. SPEED_4 = "\x18"
  65. SPEED_5 = "\x19"
  66. class Text(object):
  67. def __init__(self, msg=None, label=None, position=None, mode=None):
  68. if label is None:
  69. label = "A"
  70. self.label = label
  71. self.msg = msg
  72. # TODO(ms): need support for position and mode
  73. def __str__(self):
  74. # [WRITE_TEXT][File Label][ESC][Display Position][Mode Code]
  75. # [Special Specifier][ASCII Message]
  76. packet = Packet("%s%s%s%s%s%s" % (constants.WRITE_TEXT, self.label,
  77. constants.ESC,
  78. constants.positions["middle_line"],
  79. constants.modes["rotate"],
  80. self.msg))
  81. return str(packet)
  82. def __repr__(self):
  83. return repr(self.__str__())