     # Creates an object which encapsulates an image. The object has
     # the following properties:
     # * filename - the image file name
+    # * labelmapFilename - the label map (overlay) file name
+    # * colortableFilename - the color lookup table file name
     # * state - contains the loading flag
     # * data - the binary image content
+    # * labelmapData - the label map image content
+    # * colortableData - the color table content
     # * load() - the function to read the image file
     #
     # @param parent the image parent container

        colortableFile = File.read(colortableFilename, responseType: 'arraybuffer').then (colortableData) =>
          # Set the data property to the color table file content.
          @colortableData = colortableData
        allImagesLoaded = $q.all(scanFile, labelmapFile, colortableFile)
        allImagesLoaded.then =>
          # Unset the loading flag.
          @state.loading = false
          @state.loaded = true
          @allImagesLoaded = true
      
      # Renders the image in the given parent element.

      colortableFilename: colortableFilename
      timePoint: timePoint

      # The image state loading flag is true if the files are being
      # loaded, false otherwise.
      state:
        loading: false
        loaded: false

      # The image, label map, and color table file content.
      data: null
      labelmapData: null
      colortableData: null

      # Transfers the file content to the data properties.
      # The image state loading flag is set to true while the
      # files are being read.
      #
      # @returns a promise which resolves when the file reads
      #   are completed
      load: ->
        # Set the loading flag.
        @state.loading = true

        # Read each file into an ArrayBuffer. The Coffeescript fat
        # arrow (=>) binds the this variable to the image object
        # rather than the $http request.
        scanFile = File.read(filename, responseType: 'arraybuffer').then (data) =>
