[WebGL2] Teach WebGLRenderingContextBase about new texture internal formats
[WebKit-https.git] / Source / WebCore / platform / graphics / Icon.h
1 /*
2  * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB.  If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  *
19  */
20
21 #ifndef Icon_h
22 #define Icon_h
23
24 #include <wtf/Forward.h>
25 #include <wtf/RefCounted.h>
26 #include <wtf/RefPtr.h>
27 #include <wtf/RetainPtr.h>
28 #include <wtf/Vector.h>
29
30 #if PLATFORM(IOS)
31 #include "NativeImage.h"
32 #include <CoreGraphics/CoreGraphics.h>
33 #elif PLATFORM(MAC)
34 OBJC_CLASS NSImage;
35 #elif PLATFORM(WIN)
36 typedef struct HICON__* HICON;
37 #elif PLATFORM(GTK)
38 typedef struct _GdkPixbuf GdkPixbuf;
39 #endif
40
41 namespace WebCore {
42
43 class GraphicsContext;
44 class FloatRect;
45     
46 class Icon : public RefCounted<Icon> {
47 public:
48     WEBCORE_EXPORT static RefPtr<Icon> createIconForFiles(const Vector<String>& filenames);
49
50     WEBCORE_EXPORT ~Icon();
51
52     void paint(GraphicsContext&, const FloatRect&);
53
54 #if PLATFORM(WIN)
55     static RefPtr<Icon> create(HICON hIcon) { return adoptRef(new Icon(hIcon)); }
56 #endif
57
58 #if PLATFORM(IOS)
59     // FIXME: Make this work for non-iOS ports and remove the PLATFORM(IOS)-guard.
60     WEBCORE_EXPORT static RefPtr<Icon> createIconForImage(const NativeImagePtr&);
61 #endif
62
63 #if PLATFORM(MAC)
64     static RefPtr<Icon> createIconForUTI(const String&);
65     static RefPtr<Icon> createIconForFileExtension(const String&);
66 #endif
67
68 private:
69 #if PLATFORM(IOS)
70     Icon(const RetainPtr<CGImageRef>&);
71     RetainPtr<CGImageRef> m_cgImage;
72 #elif PLATFORM(MAC)
73     Icon(NSImage*);
74     RetainPtr<NSImage> m_nsImage;
75 #elif PLATFORM(WIN)
76     Icon(HICON);
77     HICON m_hIcon;
78 #elif PLATFORM(GTK)
79     Icon();
80     GdkPixbuf* m_icon;
81 #elif PLATFORM(EFL)
82     Icon();
83 #endif
84 };
85
86 }
87
88 #endif