c585807bd53f76cc0e98dacb31dd52c96fb2eec9
[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/PassRefPtr.h>
25 #include <wtf/RefCounted.h>
26 #include <wtf/Forward.h>
27 #include <wtf/Vector.h>
28
29 #if PLATFORM(MAC)
30 #include <wtf/RetainPtr.h>
31 OBJC_CLASS NSImage;
32 #elif PLATFORM(WIN)
33 typedef struct HICON__* HICON;
34 #elif PLATFORM(QT)
35 #include <QIcon>
36 #elif PLATFORM(GTK)
37 typedef struct _GdkPixbuf GdkPixbuf;
38 #elif PLATFORM(CHROMIUM)
39 #include "Image.h"
40 #include "PlatformIcon.h"
41 #endif
42
43 namespace WebCore {
44
45 class GraphicsContext;
46 class IntRect;
47     
48 class Icon : public RefCounted<Icon> {
49 public:
50     static PassRefPtr<Icon> createIconForFiles(const Vector<String>& filenames);
51
52     ~Icon();
53
54     void paint(GraphicsContext*, const IntRect&);
55
56 #if PLATFORM(WIN)
57     static PassRefPtr<Icon> create(HICON hIcon) { return adoptRef(new Icon(hIcon)); }
58 #elif PLATFORM(CHROMIUM)
59     static PassRefPtr<Icon> create(PassRefPtr<PlatformIcon> icon) { return adoptRef(new Icon(icon)); }
60 #endif
61
62 private:
63 #if PLATFORM(MAC)
64     Icon(NSImage*);
65     RetainPtr<NSImage> m_nsImage;
66 #elif PLATFORM(WIN)
67     Icon(HICON);
68     HICON m_hIcon;
69 #elif PLATFORM(QT)
70     Icon();
71     QIcon m_icon;
72 #elif PLATFORM(GTK)
73     Icon();
74     GdkPixbuf* m_icon;
75 #elif PLATFORM(EFL)
76     Icon();
77     Evas_Object* m_icon;
78 #elif PLATFORM(CHROMIUM)
79     Icon(PassRefPtr<PlatformIcon>);
80     RefPtr<PlatformIcon> m_icon;
81 #endif
82 };
83
84 }
85
86 #endif