• 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(CHROMIUM)
43 #include "PlatformIcon.h"
44 #endif
45 
46 namespace WebCore {
47 
48 class GraphicsContext;
49 class IntRect;
50 class String;
51 
52 class Icon : public RefCounted<Icon> {
53 public:
54     static PassRefPtr<Icon> createIconForFiles(const Vector<String>& filenames);
55 
56     ~Icon();
57 
58     void paint(GraphicsContext*, const IntRect&);
59 
60 #if PLATFORM(WIN)
create(HICON hIcon)61     static PassRefPtr<Icon> create(HICON hIcon) { return adoptRef(new Icon(hIcon)); }
62 #endif
63 
64 private:
65 #if PLATFORM(MAC)
66     Icon(NSImage*);
67     RetainPtr<NSImage> m_nsImage;
68 #elif PLATFORM(WIN)
69     Icon(HICON);
70     HICON m_hIcon;
71 #elif PLATFORM(QT)
72     Icon();
73     QIcon m_icon;
74 #elif PLATFORM(GTK)
75     Icon();
76     GdkPixbuf* m_icon;
77 #elif PLATFORM(CHROMIUM)
78     Icon(const PlatformIcon&);
79     PlatformIcon m_icon;
80 #endif
81 };
82 
83 }
84 
85 #endif
86