A metronome using the FRDM K64F board

Committer:
ram54288
Date:
Sun May 14 18:40:18 2017 +0000
Revision:
0:a7a43371b306
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ram54288 0:a7a43371b306 1 # ==========================================
ram54288 0:a7a43371b306 2 # Unity Project - A Test Framework for C
ram54288 0:a7a43371b306 3 # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
ram54288 0:a7a43371b306 4 # [Released under MIT License. Please refer to license.txt for details]
ram54288 0:a7a43371b306 5 # ==========================================
ram54288 0:a7a43371b306 6
ram54288 0:a7a43371b306 7 if RUBY_PLATFORM =~/(win|w)32$/
ram54288 0:a7a43371b306 8 begin
ram54288 0:a7a43371b306 9 require 'Win32API'
ram54288 0:a7a43371b306 10 rescue LoadError
ram54288 0:a7a43371b306 11 puts "ERROR! \"Win32API\" library not found"
ram54288 0:a7a43371b306 12 puts "\"Win32API\" is required for colour on a windows machine"
ram54288 0:a7a43371b306 13 puts " try => \"gem install Win32API\" on the command line"
ram54288 0:a7a43371b306 14 puts
ram54288 0:a7a43371b306 15 end
ram54288 0:a7a43371b306 16 # puts
ram54288 0:a7a43371b306 17 # puts 'Windows Environment Detected...'
ram54288 0:a7a43371b306 18 # puts 'Win32API Library Found.'
ram54288 0:a7a43371b306 19 # puts
ram54288 0:a7a43371b306 20 end
ram54288 0:a7a43371b306 21
ram54288 0:a7a43371b306 22 class ColourCommandLine
ram54288 0:a7a43371b306 23 def initialize
ram54288 0:a7a43371b306 24 if RUBY_PLATFORM =~/(win|w)32$/
ram54288 0:a7a43371b306 25 get_std_handle = Win32API.new("kernel32", "GetStdHandle", ['L'], 'L')
ram54288 0:a7a43371b306 26 @set_console_txt_attrb =
ram54288 0:a7a43371b306 27 Win32API.new("kernel32","SetConsoleTextAttribute",['L','N'], 'I')
ram54288 0:a7a43371b306 28 @hout = get_std_handle.call(-11)
ram54288 0:a7a43371b306 29 end
ram54288 0:a7a43371b306 30 end
ram54288 0:a7a43371b306 31
ram54288 0:a7a43371b306 32 def change_to(new_colour)
ram54288 0:a7a43371b306 33 if RUBY_PLATFORM =~/(win|w)32$/
ram54288 0:a7a43371b306 34 @set_console_txt_attrb.call(@hout,self.win32_colour(new_colour))
ram54288 0:a7a43371b306 35 else
ram54288 0:a7a43371b306 36 "\033[30;#{posix_colour(new_colour)};22m"
ram54288 0:a7a43371b306 37 end
ram54288 0:a7a43371b306 38 end
ram54288 0:a7a43371b306 39
ram54288 0:a7a43371b306 40 def win32_colour(colour)
ram54288 0:a7a43371b306 41 case colour
ram54288 0:a7a43371b306 42 when :black then 0
ram54288 0:a7a43371b306 43 when :dark_blue then 1
ram54288 0:a7a43371b306 44 when :dark_green then 2
ram54288 0:a7a43371b306 45 when :dark_cyan then 3
ram54288 0:a7a43371b306 46 when :dark_red then 4
ram54288 0:a7a43371b306 47 when :dark_purple then 5
ram54288 0:a7a43371b306 48 when :dark_yellow, :narrative then 6
ram54288 0:a7a43371b306 49 when :default_white, :default, :dark_white then 7
ram54288 0:a7a43371b306 50 when :silver then 8
ram54288 0:a7a43371b306 51 when :blue then 9
ram54288 0:a7a43371b306 52 when :green, :success then 10
ram54288 0:a7a43371b306 53 when :cyan, :output then 11
ram54288 0:a7a43371b306 54 when :red, :failure then 12
ram54288 0:a7a43371b306 55 when :purple then 13
ram54288 0:a7a43371b306 56 when :yellow then 14
ram54288 0:a7a43371b306 57 when :white then 15
ram54288 0:a7a43371b306 58 else
ram54288 0:a7a43371b306 59 0
ram54288 0:a7a43371b306 60 end
ram54288 0:a7a43371b306 61 end
ram54288 0:a7a43371b306 62
ram54288 0:a7a43371b306 63 def posix_colour(colour)
ram54288 0:a7a43371b306 64 # ANSI Escape Codes - Foreground colors
ram54288 0:a7a43371b306 65 # | Code | Color |
ram54288 0:a7a43371b306 66 # | 39 | Default foreground color |
ram54288 0:a7a43371b306 67 # | 30 | Black |
ram54288 0:a7a43371b306 68 # | 31 | Red |
ram54288 0:a7a43371b306 69 # | 32 | Green |
ram54288 0:a7a43371b306 70 # | 33 | Yellow |
ram54288 0:a7a43371b306 71 # | 34 | Blue |
ram54288 0:a7a43371b306 72 # | 35 | Magenta |
ram54288 0:a7a43371b306 73 # | 36 | Cyan |
ram54288 0:a7a43371b306 74 # | 37 | Light gray |
ram54288 0:a7a43371b306 75 # | 90 | Dark gray |
ram54288 0:a7a43371b306 76 # | 91 | Light red |
ram54288 0:a7a43371b306 77 # | 92 | Light green |
ram54288 0:a7a43371b306 78 # | 93 | Light yellow |
ram54288 0:a7a43371b306 79 # | 94 | Light blue |
ram54288 0:a7a43371b306 80 # | 95 | Light magenta |
ram54288 0:a7a43371b306 81 # | 96 | Light cyan |
ram54288 0:a7a43371b306 82 # | 97 | White |
ram54288 0:a7a43371b306 83
ram54288 0:a7a43371b306 84 case colour
ram54288 0:a7a43371b306 85 when :black then 30
ram54288 0:a7a43371b306 86 when :red, :failure then 31
ram54288 0:a7a43371b306 87 when :green, :success then 32
ram54288 0:a7a43371b306 88 when :yellow then 33
ram54288 0:a7a43371b306 89 when :blue, :narrative then 34
ram54288 0:a7a43371b306 90 when :purple, :magenta then 35
ram54288 0:a7a43371b306 91 when :cyan, :output then 36
ram54288 0:a7a43371b306 92 when :white, :default_white then 37
ram54288 0:a7a43371b306 93 when :default then 39
ram54288 0:a7a43371b306 94 else
ram54288 0:a7a43371b306 95 39
ram54288 0:a7a43371b306 96 end
ram54288 0:a7a43371b306 97 end
ram54288 0:a7a43371b306 98
ram54288 0:a7a43371b306 99 def out_c(mode, colour, str)
ram54288 0:a7a43371b306 100 case RUBY_PLATFORM
ram54288 0:a7a43371b306 101 when /(win|w)32$/
ram54288 0:a7a43371b306 102 change_to(colour)
ram54288 0:a7a43371b306 103 $stdout.puts str if mode == :puts
ram54288 0:a7a43371b306 104 $stdout.print str if mode == :print
ram54288 0:a7a43371b306 105 change_to(:default_white)
ram54288 0:a7a43371b306 106 else
ram54288 0:a7a43371b306 107 $stdout.puts("#{change_to(colour)}#{str}\033[0m") if mode == :puts
ram54288 0:a7a43371b306 108 $stdout.print("#{change_to(colour)}#{str}\033[0m") if mode == :print
ram54288 0:a7a43371b306 109 end
ram54288 0:a7a43371b306 110 end
ram54288 0:a7a43371b306 111 end # ColourCommandLine
ram54288 0:a7a43371b306 112
ram54288 0:a7a43371b306 113 def colour_puts(role,str) ColourCommandLine.new.out_c(:puts, role, str) end
ram54288 0:a7a43371b306 114 def colour_print(role,str) ColourCommandLine.new.out_c(:print, role, str) end
ram54288 0:a7a43371b306 115