/**
  * Returns a mapper, based on the $uri and $format
  * 
  * @param string $uri File URI
  * @param string $format File format (extension or mime-type) or null
  * @return WideImage_Mapper
  **/
 static function selectMapper($uri, $format = null)
 {
     $format = self::determineFormat($uri, $format);
     if (array_key_exists($format, self::$mappers)) {
         return self::$mappers[$format];
     }
     $mapperClassName = 'WideImage_Mapper_' . $format;
     if (!class_exists($mapperClassName, false)) {
         $mapperFileName = WideImage::path() . 'Mapper/' . $format . '.php';
         if (file_exists($mapperFileName)) {
             require_once $mapperFileName;
         }
     }
     if (class_exists($mapperClassName)) {
         self::$mappers[$format] = new $mapperClassName();
         return self::$mappers[$format];
     }
     throw new WideImage_UnsupportedFormatException("Format '{$format}' is not supported.");
 }