code: def read_source(file, read, size=nil)
           if block_given?
              done = false
  
              while !done and !file.eof?
                read << file.getbyte
                 done = yield read[-1]
              end
           else
              if size != nil
                 if size > 0
                    total = 0
                    while !file.eof? and total < size
                       read << file.getbyte
                       total += 1
                    end
                 end
              else
                 file.each_byte {|byte| read << byte}
              end
           end
        end
docs: This method loads the data for an image from its source. The method
   accepts two call approaches. If called without a block then the method
   considers the size parameter it is passed. If called with a block the
   method executes until the block returns true.
  
   ==== Parameters
   size::  The maximum number of bytes to be read from the file. Defaults
           to nil to indicate that the remainder of the file should be read
           in.