native_widget_types.h revision a02191e04bc25c4935f804f2c080ae28663d096d
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_GFX_NATIVE_WIDGET_TYPES_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_GFX_NATIVE_WIDGET_TYPES_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <jni.h> 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/gfx/gfx_export.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file provides cross platform typedefs for native widget types. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NativeWindow: this is a handle to a native, top-level window 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NativeView: this is a handle to a native UI element. It may be the 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// same type as a NativeWindow on some platforms. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NativeViewId: Often, in our cross process model, we need to pass around a 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// reference to a "window". This reference will, say, be echoed back from a 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// renderer to the browser when it wishes to query its size. On Windows we 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// use an HWND for this. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// As a rule of thumb - if you're in the renderer, you should be dealing 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// with NativeViewIds. This should remind you that you shouldn't be doing 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// direct operations on platform widgets from the renderer process. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If you're in the browser, you're probably dealing with NativeViews, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// unless you're in the IPC layer, which will be translating between 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NativeViewIds from the renderer and NativeViews. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NativeEditView: a handle to a native edit-box. The Mac folks wanted this 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// specific typedef. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NativeImage: The platform-specific image type used for drawing UI elements 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// in the browser. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The name 'View' here meshes with OS X where the UI elements are called 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 'views' and with our Chrome UI code where the elements are also called 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 'views'. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SkRegion; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Window; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 51d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)class Cursor; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Event; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(USE_AURA) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h> // NOLINT 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct HFONT__* HFONT; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct IAccessible; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_IOS) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct CGContext; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __OBJC__ 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class UIEvent; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class UIFont; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class UIImage; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class UIView; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class UIWindow; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class UITextField; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UIEvent; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UIFont; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UIImage; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UIView; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UIWindow; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UITextField; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // __OBJC__ 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct CGContext; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __OBJC__ 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class NSCursor; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class NSEvent; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class NSFont; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class NSImage; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class NSView; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class NSWindow; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class NSTextField; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NSCursor; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NSEvent; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NSFont; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NSImage; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct NSView; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NSWindow; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NSTextField; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // __OBJC__ 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_POSIX) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _PangoFontDescription PangoFontDescription; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _cairo cairo_t; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 101a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_ANDROID) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ANativeWindow; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WindowAndroid; 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ViewAndroid; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SkBitmap; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef ui::Cursor NativeCursor; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef aura::Window* NativeView; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef aura::Window* NativeWindow; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef SkRegion* NativeRegion; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef ui::Event* NativeEvent; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_IOS) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeCursor; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UIView* NativeView; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UIWindow* NativeWindow; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UIEvent* NativeEvent; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NSCursor* NativeCursor; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NSView* NativeView; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NSWindow* NativeWindow; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NSEvent* NativeEvent; 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_ANDROID) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeCursor; 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)typedef ui::ViewAndroid* NativeView; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef ui::WindowAndroid* NativeWindow; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeRegion; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef jobject NativeEvent; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef HFONT NativeFont; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef HWND NativeEditView; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef HDC NativeDrawingContext; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef IAccessible* NativeViewAccessible; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_IOS) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UIFont* NativeFont; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UITextField* NativeEditView; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef CGContext* NativeDrawingContext; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NSFont* NativeFont; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NSTextField* NativeEditView; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef CGContext* NativeDrawingContext; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeViewAccessible; 150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#elif defined(USE_CAIRO) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PangoFontDescription* NativeFont; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeEditView; 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef cairo_t* NativeDrawingContext; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeViewAccessible; 155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#else 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeFont; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeEditView; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeDrawingContext; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void* NativeViewAccessible; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A constant value to indicate that gfx::NativeCursor refers to no cursor. 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kNullCursor = 0; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const gfx::NativeCursor kNullCursor = static_cast<gfx::NativeCursor>(NULL); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_IOS) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UIImage NativeImageType; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NSImage NativeImageType; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef SkBitmap NativeImageType; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NativeImageType* NativeImage; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Note: for test_shell we're packing a pointer into the NativeViewId. So, if 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// you make it a type which is smaller than a pointer, you have to fix 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// test_shell. 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// See comment at the top of the file for usage. 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef intptr_t NativeViewId; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// PluginWindowHandle is an abstraction wrapping "the types of windows 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// used by NPAPI plugins". On Windows it's an HWND, on X it's an X 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// window id. 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef HWND PluginWindowHandle; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PluginWindowHandle kNullPluginWindow = NULL; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(USE_X11) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef unsigned long PluginWindowHandle; 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PluginWindowHandle kNullPluginWindow = 0; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_ANDROID) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef uint64 PluginWindowHandle; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PluginWindowHandle kNullPluginWindow = 0; 19790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#elif defined(USE_OZONE) 19890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef intptr_t PluginWindowHandle; 19990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PluginWindowHandle kNullPluginWindow = 0; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // On Mac we don't have windowed plugins. We use a NULL/0 PluginWindowHandle 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // in shared code to indicate there is no window present. 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef bool PluginWindowHandle; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PluginWindowHandle kNullPluginWindow = 0; 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)enum SurfaceType { 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EMPTY, 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NATIVE_DIRECT, 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NATIVE_TRANSPORT, 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TEXTURE_TRANSPORT, 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SURFACE_TYPE_LAST = TEXTURE_TRANSPORT 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct GLSurfaceHandle { 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLSurfaceHandle() 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : handle(kNullPluginWindow), 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transport_type(EMPTY), 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parent_client_id(0) { 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GLSurfaceHandle(PluginWindowHandle handle_, SurfaceType transport_) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : handle(handle_), 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transport_type(transport_), 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parent_client_id(0) { 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(!is_null() || handle == kNullPluginWindow); 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(transport_type != TEXTURE_TRANSPORT || 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) handle == kNullPluginWindow); 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_null() const { return transport_type == EMPTY; } 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_transport() const { 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return transport_type == NATIVE_TRANSPORT || 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transport_type == TEXTURE_TRANSPORT; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginWindowHandle handle; 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SurfaceType transport_type; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 parent_client_id; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// AcceleratedWidget provides a surface to compositors to paint pixels. 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef HWND AcceleratedWidget; 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const AcceleratedWidget kNullAcceleratedWidget = NULL; 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(USE_X11) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned long AcceleratedWidget; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const AcceleratedWidget kNullAcceleratedWidget = 0; 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_IOS) 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UIView* AcceleratedWidget; 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const AcceleratedWidget kNullAcceleratedWidget = 0; 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX) 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NSView* AcceleratedWidget; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const AcceleratedWidget kNullAcceleratedWidget = 0; 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_ANDROID) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef ANativeWindow* AcceleratedWidget; 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const AcceleratedWidget kNullAcceleratedWidget = 0; 25590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#elif defined(USE_OZONE) 25690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)typedef intptr_t AcceleratedWidget; 25790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const AcceleratedWidget kNullAcceleratedWidget = 0; 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#error unknown platform 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gfx 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_GFX_NATIVE_WIDGET_TYPES_H_ 265