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