f2f133de937f4307fb81a490f21f763aa1bb4a43
[WebKit-https.git] / WebCore / platform / mac / IconMac.mm
1 /*
2  * Copyright (C) 2006 Apple Computer, Inc.
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., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  *
19  */
20
21 #import "config.h"
22 #import "Icon.h"
23
24 #import "GraphicsContext.h"
25 #import "LocalCurrentGraphicsContext.h"
26 #import "PlatformString.h"
27 #import <AppKit/NSImage.h>
28
29 namespace WebCore {
30
31 Icon::Icon()
32     : m_nsImage(0)
33 {
34 }
35
36 Icon::~Icon()
37 {
38     [m_nsImage release];
39 }
40
41 PassRefPtr<Icon> Icon::newIconForFile(const String& filename)
42 {
43     NSImage* fileIcon = [[[NSWorkspace sharedWorkspace] iconForFile:filename] retain];
44     if (!fileIcon)
45         return PassRefPtr<Icon>(0);
46     
47     PassRefPtr<Icon> icon(new Icon());
48
49     icon->m_nsImage = fileIcon;
50     
51     // Need this because WebCore uses AppKit's flipped coordinate system.
52     [icon->m_nsImage setFlipped:YES];
53     
54     return icon;
55 }
56
57 void Icon::paint(GraphicsContext* context, const IntRect& r)
58 {
59     if (context->paintingDisabled())
60         return;
61     
62     LocalCurrentGraphicsContext localCurrentGC(context);
63     
64     [m_nsImage drawInRect:r
65         fromRect:NSMakeRect(0, 0, [m_nsImage size].width, [m_nsImage size].height)
66         operation:NSCompositeSourceOver fraction:1.0];
67 }
68
69 }