class FastImage
def parse_size_for_jpeg
def parse_size_for_jpeg loop do @state = case @state when nil get_chars(2) :started when :started get_byte == 0xFF ? :sof : :started when :sof c = get_byte if (0xe0..0xef).include?(c) :skipframe elsif [0xC0..0xC3, 0xC5..0xC7, 0xC9..0xCB, 0xCD..0xCF].detect {|r| r.include? c} :readsize else :skipframe end when :skipframe @skip_chars = read_int(get_chars(2)) - 2 :do_skip when :do_skip get_chars(@skip_chars) :started when :readsize s = get_chars(7) return [read_int(s[5..6]), read_int(s[3..4])] end end end