Home | History | Annotate | Download | only in cg
      1 /*
      2  * Copyright (C) 2008 Apple Inc. All Rights Reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #include "config.h"
     27 #include "ImageSourceCG.h"
     28 
     29 #include "StdLibExtras.h"
     30 #include "StringHash.h"
     31 #include <wtf/HashMap.h>
     32 
     33 namespace WebCore {
     34 
     35 String MIMETypeForImageSourceType(const String& type)
     36 {
     37     String mimeType;
     38     // FIXME: This approach of taking a UTI like public.type and giving back
     39     // a MIME type like image/type will work for common image UTIs like jpeg,
     40     // png, tiff, gif but won't work for UTIs like: public.jpeg-2000,
     41     // public.xbitmap-image, com.apple.quicktime-image, and others.
     42     if (int dotLocation = type.reverseFind('.'))
     43         mimeType = "image/" + type.substring(dotLocation + 1);
     44     return mimeType;
     45 }
     46 
     47 String preferredExtensionForImageSourceType(const String& type)
     48 {
     49     if (type.isEmpty())
     50         return String();
     51 
     52     typedef HashMap<String, String> StringMap;
     53     DEFINE_STATIC_LOCAL(StringMap, UTIMap, ());
     54     if (UTIMap.isEmpty()) {
     55         UTIMap.add("public.html", "html");
     56         UTIMap.add("public.jpeg", "jpeg");
     57         UTIMap.add("public.jpeg-2000", "jp2");
     58         UTIMap.add("public.plain-text", "txt");
     59         UTIMap.add("public.png", "png");
     60         UTIMap.add("public.tiff", "tiff");
     61         UTIMap.add("public.xbitmap-image", "xbm");
     62         UTIMap.add("public.xml", "xml");
     63         UTIMap.add("com.adobe.illustrator.ai-image", "ai");
     64         UTIMap.add("com.adobe.pdf", "pdf");
     65         UTIMap.add("com.adobe.photoshop-image", "psd");
     66         UTIMap.add("com.adobe.postscript", "ps");
     67         UTIMap.add("com.apple.icns", "icns");
     68         UTIMap.add("com.apple.macpaint-image", "pntg");
     69         UTIMap.add("com.apple.pict", "pict");
     70         UTIMap.add("com.apple.quicktime-image", "qtif");
     71         UTIMap.add("com.apple.webarchive", "webarchive");
     72         UTIMap.add("com.compuserve.gif", "gif");
     73         UTIMap.add("com.ilm.openexr-image", "exr");
     74         UTIMap.add("com.kodak.flashpix-image", "fpx");
     75         UTIMap.add("com.microsoft.bmp", "bmp");
     76         UTIMap.add("com.microsoft.ico", "ico");
     77         UTIMap.add("com.netscape.javascript-source", "js");
     78         UTIMap.add("com.sgi.sgi-image", "sgi");
     79         UTIMap.add("com.truevision.tga-image", "tga");
     80     }
     81     return UTIMap.get(type);
     82 }
     83 
     84 } // namespace WebCore
     85