~ubuntu-branches/ubuntu/raring/virtualbox-ose/raring

« back to all changes in this revision

Viewing changes to src/VBox/Frontends/VirtualBox/src/darwin/VBoxDockIconPreview-cocoa.mm

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2009-12-18 16:44:29 UTC
  • mfrom: (0.3.3 upstream) (0.4.6 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091218164429-jd34ccexpv5na11a
Tags: 3.1.2-dfsg-1ubuntu1
* Merge from Debian unstable (LP: #498219), remaining changes:
  - Disable update action
    - debian/patches/u01-disable-update-action.dpatch
  - VirtualBox should go in Accessories, not in System tools (LP: #288590)
    - debian/virtualbox-ose-qt.files/virtualbox-ose.desktop
  - Add Apport hook
    - debian/virtualbox-ose.files/source_virtualbox-ose.py
    - debian/virtualbox-ose.install
  - Add Launchpad integration
    - debian/control
    - debian/lpi-bug.xpm
    - debian/patches/u02-lp-integration.dpatch
* Fixes the following bugs:
  - Kernel module fails to build with Linux >= 2.6.32 (LP: #474625)
  - X.Org drivers need to be rebuilt against X-Server 1.7 (LP: #495935)
  - The *-source packages try to build the kernel modules even though the
    kernel headers aren't available (LP: #473334)
* Replace *-source packages with transitional packages for *-dkms.
* Adapt u01-disable-update-action.dpatch and u02-lp-integration.dpatch for
  new upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/** @file
 
2
 *
 
3
 * VBox frontends: Qt GUI ("VirtualBox"):
 
4
 * Cocoa helper for the dock icon preview
 
5
 */
 
6
 
 
7
/*
 
8
 * Copyright (C) 2009 Sun Microsystems, Inc.
 
9
 *
 
10
 * This file is part of VirtualBox Open Source Edition (OSE), as
 
11
 * available from http://www.virtualbox.org. This file is free software;
 
12
 * you can redistribute it and/or modify it under the terms of the GNU
 
13
 * General Public License (GPL) as published by the Free Software
 
14
 * Foundation, in version 2 as it comes in the "COPYING" file of the
 
15
 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
 
16
 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
 
17
 *
 
18
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
 
19
 * Clara, CA 95054 USA or visit http://www.sun.com if you need
 
20
 * additional information or have any questions.
 
21
 */
 
22
 
 
23
#import "VBoxDockIconPreview.h"
 
24
 
 
25
#import <AppKit/NSView.h>
 
26
#import <AppKit/NSDockTile.h>
 
27
#import <AppKit/NSApplication.h>
 
28
#import <AppKit/NSGraphicsContext.h>
 
29
#import <AppKit/NSImage.h>
 
30
 
 
31
static NSImage *gDockIconImage = NULL;
 
32
 
 
33
/********************************************************************************
 
34
 *
 
35
 * C-Helper: This is the external interface to the Cocoa dock tile handling.
 
36
 *
 
37
 ********************************************************************************/
 
38
 
 
39
void darwinCreateVBoxDockIconTileView (void)
 
40
{
 
41
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 
42
 
 
43
    if (gDockIconImage == NULL)
 
44
        gDockIconImage = [[NSImage imageNamed:@"NSApplicationIcon"] copy];
 
45
 
 
46
    [pool release];
 
47
}
 
48
 
 
49
void darwinDestroyVBoxDockIconTileView (void)
 
50
{
 
51
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 
52
 
 
53
    if (gDockIconImage != NULL)
 
54
    {
 
55
        [gDockIconImage release];
 
56
        gDockIconImage = NULL;
 
57
    }
 
58
 
 
59
    [pool release];
 
60
}
 
61
 
 
62
CGContextRef darwinBeginCGContextForApplicationDockTile (void)
 
63
{
 
64
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 
65
 
 
66
    [gDockIconImage lockFocus];
 
67
 
 
68
    NSGraphicsContext *nsContext = [NSGraphicsContext currentContext];
 
69
    CGContextRef pCGContext = (CGContextRef)[nsContext graphicsPort];
 
70
 
 
71
    [pool release];
 
72
    return pCGContext;
 
73
}
 
74
 
 
75
void darwinEndCGContextForApplicationDockTile (CGContextRef aContext)
 
76
{
 
77
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 
78
 
 
79
    [gDockIconImage unlockFocus];
 
80
 
 
81
    [NSApp setApplicationIconImage:gDockIconImage];
 
82
 
 
83
    [pool release];
 
84
}
 
85
 
 
86
void darwinOverlayApplicationDockTileImage (CGImageRef pImage)
 
87
{
 
88
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 
89
 
 
90
    /* Convert the CGImage to an NSImage */
 
91
    NSBitmapImageRep *bitmapImageRep = [[NSBitmapImageRep alloc] initWithCGImage:pImage];
 
92
    if (bitmapImageRep) 
 
93
    {
 
94
        NSImage *badgeImage = [[NSImage alloc] initWithSize:[bitmapImageRep size]];
 
95
        [badgeImage addRepresentation:bitmapImageRep];
 
96
        [bitmapImageRep release];
 
97
        /* Make subsequent drawing operations on the icon */
 
98
        [gDockIconImage lockFocus];
 
99
        /* Draw the overlay bottom left */
 
100
        [badgeImage drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
 
101
        [gDockIconImage unlockFocus];
 
102
        [badgeImage release];
 
103
    }
 
104
    /* Set the new application icon */
 
105
    [NSApp setApplicationIconImage:gDockIconImage];
 
106
    
 
107
    [pool release];
 
108
}
 
109
 
 
110
void darwinRestoreApplicationDockTileImage (void)
 
111
{
 
112
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 
113
 
 
114
    /* Reset all */
 
115
    darwinDestroyVBoxDockIconTileView();
 
116
    darwinCreateVBoxDockIconTileView();
 
117
 
 
118
    [pool release];
 
119
}
 
120