WindowRegion.cpp
Go to the documentation of this file.
1 /*
2 //
3 // BEGIN SONGBIRD GPL
4 //
5 // This file is part of the Songbird web player.
6 //
7 // Copyright(c) 2005-2008 POTI, Inc.
8 // http://songbirdnest.com
9 //
10 // This file may be licensed under the terms of of the
11 // GNU General Public License Version 2 (the "GPL").
12 //
13 // Software distributed under the License is distributed
14 // on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
15 // express or implied. See the GPL for the specific language
16 // governing rights and limitations.
17 //
18 // You should have received a copy of the GPL along with this
19 // program. If not, go to http://www.gnu.org/licenses/gpl.html
20 // or write to the Free Software Foundation, Inc.,
21 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 //
23 // END SONGBIRD GPL
24 //
25  */
26 
32 #include "WindowRegion.h"
33 #include "nsIScriptableRegion.h"
34 #include "nsIRegion.h"
35 
36 // CLASSES ====================================================================
37 //=============================================================================
38 // CWindowRegionClass
39 //=============================================================================
40 
41 //-----------------------------------------------------------------------------
42 /* Implementation file */
44 
45 //-----------------------------------------------------------------------------
47 {
48 } // ctor
49 
50 //-----------------------------------------------------------------------------
52 {
53 } // dtor
54 
55 NS_IMETHODIMP CWindowRegion::SetWindowRegion(nsISupports *window, nsISupports *region)
56 {
57  if (!window) return NS_ERROR_FAILURE;
58 
60 
61  if (region == NULL) {
62 #ifdef XP_WIN
63  ::SetWindowRgn(wnd, NULL, TRUE);
64 #endif
65  return NS_OK;
66  }
67 
68  nsIScriptableRegion *srgn = NULL;
69  region->QueryInterface(NS_GET_IID(nsIScriptableRegion), (void **)&srgn);
70  if (!srgn) return NS_ERROR_FAILURE;
71 
72  nsIRegion *rgn = NULL;
73  srgn->GetRegion(&rgn);
74 
75  if (rgn)
76  {
77 #ifdef XP_WIN
78  void *hrgn;
79  rgn->GetNativeRegion(hrgn);
80  ::SetWindowRgn(wnd, (HRGN)hrgn, TRUE);
81 #endif
82  }
83 
84  NS_RELEASE(srgn);
85 
86  return NS_OK;
87 }
88 
return NS_OK
Songbird Window Region Object Definition.
NS_IMPL_ISUPPORTS1(sbDeviceCapabilitiesUtils, sbIDeviceCapabilitiesUtils) sbDeviceCapabilitiesUtils
Window region service interface This is an interface to the window region service, used to assign a region to a window at the OS level. This allows cutting out portions of a window without relying on mozilla's internal transparency management, which may interfere with the window content.
let window
static void * get(nsISupports *window)
#define NATIVEWINDOW
virtual ~CWindowRegion()