class UnderOs::UI::IconEngineAwesome
  NAMES_MAP = {
    'glass' => 0xF000,
    'music' => 0xF001,
    'search' => 0xF002,
    'envelope-alt' => 0xF003,
    'heart' => 0xF004,
    'star' => 0xF005,
    'star-empty' => 0xF006,
    'user' => 0xF007,
    'film' => 0xF008,
    'th-large' => 0xF009,
    'th' => 0xF00A,
    'th-list' => 0xF00B,
    'ok' => 0xF00C,
    'cancel' => 0xF00D,
    'remove' => 0xF00D,
    'zoom-in' => 0xF00E,
    'zoom-out' => 0xF010,
    'off' => 0xF011,
    'signal' => 0xF012,
    'cog' => 0xF013,
    'trash' => 0xF014,
    'home' => 0xF015,
    'file-alt' => 0xF016,
    'time' => 0xF017,
    'road' => 0xF018,
    'download-alt' => 0xF019,
    'download' => 0xF01A,
    'upload' => 0xF01B,
    'inbox' => 0xF01C,
    'play-circle' => 0xF01D,
    'repeat' => 0xF01E,
    'refresh' => 0xF021,
    'list-alt' => 0xF022,
    'lock' => 0xF023,
    'flag' => 0xF024,
    'headphones' => 0xF025,
    'volume-off' => 0xF026,
    'volume-down' => 0xF027,
    'volume-up' => 0xF028,
    'qrcode' => 0xF029,
    'barcode' => 0xF02A,
    'tag' => 0xF02B,
    'tags' => 0xF02C,
    'book' => 0xF02D,
    'bookmark' => 0xF02E,
    'print' => 0xF02F,
    'camera' => 0xF030,
    'font' => 0xF031,
    'bold' => 0xF032,
    'italic' => 0xF033,
    'text-height' => 0xF034,
    'text-width' => 0xF035,
    'align-left' => 0xF036,
    'align-center' => 0xF037,
    'align-right' => 0xF038,
    'align-justify' => 0xF039,
    'list' => 0xF03A,
    'indent-left' => 0xF03B,
    'indent-right' => 0xF03C,
    'facetime-video' => 0xF03D,
    'picture' => 0xF03E,
    'pencil' => 0xF040,
    'map-marker' => 0xF041,
    'adjust' => 0xF042,
    'tint' => 0xF043,
    'edit' => 0xF044,
    'share' => 0xF045,
    'check' => 0xF046,
    'move' => 0xF047,
    'step-backward' => 0xF048,
    'fast-backward' => 0xF049,
    'backward' => 0xF04A,
    'play' => 0xF04B,
    'pause' => 0xF04C,
    'stop' => 0xF04D,
    'forward' => 0xF04E,
    'fast-forward' => 0xF050,
    'step-forward' => 0xF051,
    'eject' => 0xF052,
    'chevron-left' => 0xF053,
    'chevron-right' => 0xF054,
    'plus-sign' => 0xF055,
    'minus-sign' => 0xF056,
    'remove-sign' => 0xF057,
    'ok-sign' => 0xF058,
    'question-sign' => 0xF059,
    'info-sign' => 0xF05A,
    'screenshot' => 0xF05B,
    'remove-circle' => 0xF05C,
    'ok-circle' => 0xF05D,
    'ban-circle' => 0xF05E,
    'arrow-left' => 0xF060,
    'arrow-right' => 0xF061,
    'arrow-up' => 0xF062,
    'arrow-down' => 0xF063,
    'share-alt' => 0xF064,
    'resize-full' => 0xF065,
    'resize-small' => 0xF066,
    'plus' => 0xF067,
    'minus' => 0xF068,
    'asterisk' => 0xF069,
    'exclamation-sign' => 0xF06A,
    'gift' => 0xF06B,
    'leaf' => 0xF06C,
    'fire' => 0xF06D,
    'eye-open' => 0xF06E,
    'eye-close' => 0xF070,
    'warning-sign' => 0xF071,
    'plane' => 0xF072,
    'calendar' => 0xF073,
    'random' => 0xF074,
    'comment' => 0xF075,
    'magnet' => 0xF076,
    'chevron-up' => 0xF077,
    'chevron-down' => 0xF078,
    'retweet' => 0xF079,
    'shopping-cart' => 0xF07A,
    'folder-close' => 0xF07B,
    'folder-open' => 0xF07C,
    'resize-vertical' => 0xF07D,
    'resize-horizontal' => 0xF07E,
    'bar-chart' => 0xF080,
    'twitter-sign' => 0xF081,
    'facebook-sign' => 0xF082,
    'camera-retro' => 0xF083,
    'key' => 0xF084,
    'cogs' => 0xF085,
    'comments' => 0xF086,
    'thumbs-up-alt' => 0xF087,
    'thumbs-down-alt' => 0xF088,
    'star-half' => 0xF089,
    'heart-empty' => 0xF08A,
    'signout' => 0xF08B,
    'linkedin-sign' => 0xF08C,
    'pushpin' => 0xF08D,
    'external-link' => 0xF08E,
    'signin' => 0xF090,
    'trophy' => 0xF091,
    'github-sign' => 0xF092,
    'upload-alt' => 0xF093,
    'lemon' => 0xF094,
    'phone' => 0xF095,
    'check-empty' => 0xF096,
    'bookmark-empty' => 0xF097,
    'phone-sign' => 0xF098,
    'twitter' => 0xF099,
    'facebook' => 0xF09A,
    'github' => 0xF09B,
    'unlock' => 0xF09C,
    'credit-card' => 0xF09D,
    'rss' => 0xF09E,
    'hdd' => 0xF0A0,
    'bullhorn' => 0xF0A1,
    'bell' => 0xF0A2,
    'certificate' => 0xF0A3,
    'hand-right' => 0xF0A4,
    'hand-left' => 0xF0A5,
    'hand-up' => 0xF0A6,
    'hand-down' => 0xF0A7,
    'circle-arrow-left' => 0xF0A8,
    'circle-arrow-right' => 0xF0A9,
    'circle-arrow-up' => 0xF0AA,
    'circle-arrow-down' => 0xF0AB,
    'globe' => 0xF0AC,
    'wrench' => 0xF0AD,
    'tasks' => 0xF0AE,
    'filter' => 0xF0B0,
    'briefcase' => 0xF0B1,
    'fullscreen' => 0xF0B2,
    'group' => 0xF0C0,
    'link' => 0xF0C1,
    'cloud' => 0xF0C2,
    'beaker' => 0xF0C3,
    'cut' => 0xF0C4,
    'copy' => 0xF0C5,
    'paper-clip' => 0xF0C6,
    'save' => 0xF0C7,
    'sign-blank' => 0xF0C8,
    'reorder' => 0xF0C9,
    'list-ul' => 0xF0CA,
    'list-ol' => 0xF0CB,
    'strikethrough' => 0xF0CC,
    'underline' => 0xF0CD,
    'table' => 0xF0CE,
    'magic' => 0xF0D0,
    'truck' => 0xF0D1,
    'pinterest' => 0xF0D2,
    'pinterest-sign' => 0xF0D3,
    'google-plus-sign' => 0xF0D4,
    'google-plus' => 0xF0D5,
    'money' => 0xF0D6,
    'caret-down' => 0xF0D7,
    'caret-up' => 0xF0D8,
    'caret-left' => 0xF0D9,
    'caret-right' => 0xF0DA,
    'columns' => 0xF0DB,
    'sort' => 0xF0DC,
    'sort-down' => 0xF0DD,
    'sort-up' => 0xF0DE,
    'envelope' => 0xF0E0,
    'linkedin' => 0xF0E1,
    'undo' => 0xF0E2,
    'legal' => 0xF0E3,
    'dashboard' => 0xF0E4,
    'comment-alt' => 0xF0E5,
    'comments-alt' => 0xF0E6,
    'bolt' => 0xF0E7,
    'sitemap' => 0xF0E8,
    'umbrella' => 0xF0E9,
    'paste' => 0xF0EA,
    'lightbulb' => 0xF0EB,
    'exchange' => 0xF0EC,
    'cloud-download' => 0xF0ED,
    'cloud-upload' => 0xF0EE,
    'user-md' => 0xF0F0,
    'stethoscope' => 0xF0F1,
    'suitcase' => 0xF0F2,
    'bell-alt' => 0xF0F3,
    'coffee' => 0xF0F4,
    'food' => 0xF0F5,
    'file-text-alt' => 0xF0F6,
    'building' => 0xF0F7,
    'hospital' => 0xF0F8,
    'ambulance' => 0xF0F9,
    'medkit' => 0xF0FA,
    'fighter-jet' => 0xF0FB,
    'beer' => 0xF0FC,
    'h-sign' => 0xF0FD,
    'plus-sign-alt' => 0xF0FE,
    'double-angle-left' => 0xF100,
    'double-angle-right' => 0xF101,
    'double-angle-up' => 0xF102,
    'double-angle-down' => 0xF103,
    'angle-left' => 0xF104,
    'angle-right' => 0xF105,
    'angle-up' => 0xF106,
    'angle-down' => 0xF107,
    'desktop' => 0xF108,
    'laptop' => 0xF109,
    'tablet' => 0xF10A,
    'mobile-phone' => 0xF10B,
    'circle-blank' => 0xF10C,
    'quote-left' => 0xF10D,
    'quote-right' => 0xF10E,
    'spinner' => 0xF110,
    'circle' => 0xF111,
    'reply' => 0xF112,
    'github-alt' => 0xF113,
    'folder-close-alt' => 0xF114,
    'folder-open-alt' => 0xF115,
    'expand-alt' => 0xF116,
    'collapse-alt' => 0xF117,
    'smile' => 0xF118,
    'frown' => 0xF119,
    'meh' => 0xF11A,
    'gamepad' => 0xF11B,
    'keyboard' => 0xF11C,
    'flag-alt' => 0xF11D,
    'flag-checkered' => 0xF11E,
    'terminal' => 0xF120,
    'code' => 0xF121,
    'reply-all' => 0xF122,
    'mail-reply-all' => 0xF122,
    'star-half-empty' => 0xF123,
    'location-arrow' => 0xF124,
    'crop' => 0xF125,
    'code-fork' => 0xF126,
    'unlink' => 0xF127,
    'question' => 0xF128,
    'info' => 0xF129,
    'exclamation' => 0xF12A,
    'superscript' => 0xF12B,
    'subscript' => 0xF12C,
    'eraser' => 0xF12D,
    'puzzle-piece' => 0xF12E,
    'microphone' => 0xF130,
    'microphone-off' => 0xF131,
    'shield' => 0xF132,
    'calendar-empty' => 0xF133,
    'fire-extinguisher' => 0xF134,
    'rocket' => 0xF135,
    'maxcdn' => 0xF136,
    'chevron-sign-left' => 0xF137,
    'chevron-sign-right' => 0xF138,
    'chevron-sign-up' => 0xF139,
    'chevron-sign-down' => 0xF13A,
    'html5' => 0xF13B,
    'css3' => 0xF13C,
    'anchor' => 0xF13D,
    'unlock-alt' => 0xF13E,
    'bullseye' => 0xF140,
    'ellipsis-horizontal' => 0xF141,
    'ellipsis-vertical' => 0xF142,
    'rss-sign' => 0xF143,
    'play-sign' => 0xF144,
    'ticket' => 0xF145,
    'minus-sign-alt' => 0xF146,
    'check-minus' => 0xF147,
    'level-up' => 0xF148,
    'level-down' => 0xF149,
    'check-sign' => 0xF14A,
    'edit-sign' => 0xF14B,
    'external-link-sign' => 0xF14C,
    'share-sign' => 0xF14D,
    'compass' => 0xF14E,
    'collapse' => 0xF150,
    'collapse-top' => 0xF151,
    'expand' => 0xF152,
    'eur' => 0xF153,
    'gbp' => 0xF154,
    'usd' => 0xF155,
    'inr' => 0xF156,
    'jpy' => 0xF157,
    'cny' => 0xF158,
    'krw' => 0xF159,
    'btc' => 0xF15A,
    'file' => 0xF15B,
    'file-text' => 0xF15C,
    'sort-by-alphabet' => 0xF15D,
    'sort-by-alphabet-alt' => 0xF15E,
    'sort-by-attributes' => 0xF160,
    'sort-by-attributes-alt' => 0xF161,
    'sort-by-order' => 0xF162,
    'sort-by-order-alt' => 0xF163,
    'thumbs-up' => 0xF164,
    'thumbs-down' => 0xF165,
    'youtube-sign' => 0xF166,
    'youtube' => 0xF167,
    'xing' => 0xF168,
    'xing-sign' => 0xF169,
    'youtube-play' => 0xF16A,
    'dropbox' => 0xF16B,
    'stackexchange' => 0xF16C,
    'instagram' => 0xF16D,
    'flickr' => 0xF16E,
    'adn' => 0xF170,
    'bitbucket' => 0xF171,
    'bitbucket-sign' => 0xF172,
    'tumblr' => 0xF173,
    'tumblr-sign' => 0xF174,
    'long-arrow-down' => 0xF175,
    'long-arrow-up' => 0xF176,
    'long-arrow-left' => 0xF177,
    'long-arrow-right' => 0xF178,
    'apple' => 0xF179,
    'windows' => 0xF17A,
    'android' => 0xF17B,
    'linux' => 0xF17C,
    'dribble' => 0xF17D,
    'skype' => 0xF17E,
    'foursquare' => 0xF180,
    'trello' => 0xF181,
    'female' => 0xF182,
    'male' => 0xF183,
    'gittip' => 0xF184,
    'sun' => 0xF185,
    'moon' => 0xF186,
    'archive' => 0xF187,
    'bug' => 0xF188,
    'vk' => 0xF189,
    'weibo' => 0xF18A,
    'renren' => 0xF18B
  }

  def self.font(size)
    UIFont.fontWithName("FontAwesome", size:size)
  end

  def self.text(name)
    name = NAMES_MAP[name.to_s.gsub('_', '-')] || NAMES_MAP['bug']
    name.chr(Encoding::UTF_8)
  end

end
