Index: app/x11_util.h |
=================================================================== |
--- app/x11_util.h (revision 71854) |
+++ app/x11_util.h (working copy) |
@@ -1,183 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef APP_X11_UTIL_H_ |
-#define APP_X11_UTIL_H_ |
-#pragma once |
- |
-// This file declares utility functions for X11 (Linux only). |
-// |
-// These functions do not require the Xlib headers to be included (which is why |
-// we use a void* for Visual*). The Xlib headers are highly polluting so we try |
-// hard to limit their spread into the rest of the code. |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
- |
-typedef struct _GdkDrawable GdkWindow; |
-typedef struct _GtkWidget GtkWidget; |
-typedef struct _GtkWindow GtkWindow; |
-typedef unsigned long XID; |
-typedef unsigned long XSharedMemoryId; // ShmSeg in the X headers. |
-typedef struct _XDisplay Display; |
- |
-namespace gfx { |
-class Rect; |
-} |
- |
-namespace x11_util { |
- |
-// These functions use the GDK default display and this /must/ be called from |
-// the UI thread. Thus, they don't support multiple displays. |
- |
-// These functions cache their results --------------------------------- |
- |
-// Check if there's an open connection to an X server. |
-bool XDisplayExists(); |
-// Return an X11 connection for the current, primary display. |
-Display* GetXDisplay(); |
- |
-// X shared memory comes in three flavors: |
-// 1) No SHM support, |
-// 2) SHM putimage, |
-// 3) SHM pixmaps + putimage. |
-enum SharedMemorySupport { |
- SHARED_MEMORY_NONE, |
- SHARED_MEMORY_PUTIMAGE, |
- SHARED_MEMORY_PIXMAP |
-}; |
-// Return the shared memory type of our X connection. |
-SharedMemorySupport QuerySharedMemorySupport(Display* dpy); |
- |
-// Return true iff the display supports Xrender |
-bool QueryRenderSupport(Display* dpy); |
- |
-// Return the default screen number for the display |
-int GetDefaultScreen(Display* display); |
- |
-// These functions do not cache their results -------------------------- |
- |
-// Get the X window id for the default root window |
-XID GetX11RootWindow(); |
-// Returns the user's current desktop. |
-bool GetCurrentDesktop(int* desktop); |
-// Get the X window id for the given GTK widget. |
-XID GetX11WindowFromGtkWidget(GtkWidget* widget); |
-XID GetX11WindowFromGdkWindow(GdkWindow* window); |
-// Get a Visual from the given widget. Since we don't include the Xlib |
-// headers, this is returned as a void*. |
-void* GetVisualFromGtkWidget(GtkWidget* widget); |
-// Return the number of bits-per-pixel for a pixmap of the given depth |
-int BitsPerPixelForPixmapDepth(Display* display, int depth); |
-// Returns true if |window| is visible. |
-bool IsWindowVisible(XID window); |
-// Returns the bounds of |window|. |
-bool GetWindowRect(XID window, gfx::Rect* rect); |
-// Get the value of an int, int array, or string property. On |
-// success, true is returned and the value is stored in |value|. |
-bool GetIntProperty(XID window, const std::string& property_name, int* value); |
-bool GetIntArrayProperty(XID window, const std::string& property_name, |
- std::vector<int>* value); |
-bool GetStringProperty( |
- XID window, const std::string& property_name, std::string* value); |
- |
-// Get |window|'s parent window, or None if |window| is the root window. |
-XID GetParentWindow(XID window); |
- |
-// Walk up |window|'s hierarchy until we find a direct child of |root|. |
-XID GetHighestAncestorWindow(XID window, XID root); |
- |
-static const int kAllDesktops = -1; |
-// Queries the desktop |window| is on, kAllDesktops if sticky. Returns false if |
-// property not found. |
-bool GetWindowDesktop(XID window, int* desktop); |
- |
-// Implementers of this interface receive a notification for every X window of |
-// the main display. |
-class EnumerateWindowsDelegate { |
- public: |
- // |xid| is the X Window ID of the enumerated window. Return true to stop |
- // further iteration. |
- virtual bool ShouldStopIterating(XID xid) = 0; |
- |
- protected: |
- virtual ~EnumerateWindowsDelegate() {} |
-}; |
- |
-// Enumerates all windows in the current display. Will recurse into child |
-// windows up to a depth of |max_depth|. |
-bool EnumerateAllWindows(EnumerateWindowsDelegate* delegate, int max_depth); |
- |
-// Returns a list of top-level windows in top-to-bottom stacking order. |
-bool GetXWindowStack(std::vector<XID>* windows); |
- |
-// Restack a window in relation to one of its siblings. If |above| is true, |
-// |window| will be stacked directly above |sibling|; otherwise it will stacked |
-// directly below it. Both windows must be immediate children of the same |
-// window. |
-void RestackWindow(XID window, XID sibling, bool above); |
- |
-// Return a handle to a X ShmSeg. |shared_memory_key| is a SysV |
-// IPC key. The shared memory region must contain 32-bit pixels. |
-XSharedMemoryId AttachSharedMemory(Display* display, int shared_memory_support); |
-void DetachSharedMemory(Display* display, XSharedMemoryId shmseg); |
- |
-// Return a handle to an XRender picture where |pixmap| is a handle to a |
-// pixmap containing Skia ARGB data. |
-XID CreatePictureFromSkiaPixmap(Display* display, XID pixmap); |
- |
-// Draws ARGB data on the given pixmap using the given GC, converting to the |
-// server side visual depth as needed. Destination is assumed to be the same |
-// dimensions as |data| or larger. |data| is also assumed to be in row order |
-// with each line being exactly |width| * 4 bytes long. |
-void PutARGBImage(Display* display, void* visual, int depth, XID pixmap, |
- void* pixmap_gc, const uint8* data, int width, int height); |
- |
-void FreePicture(Display* display, XID picture); |
-void FreePixmap(Display* display, XID pixmap); |
- |
-// These functions are for performing X opertions outside of the UI thread. |
- |
-// Return the Display for the secondary X connection. We keep a second |
-// connection around for making X requests outside of the UI thread. |
-// This function may only be called from the BACKGROUND_X11 thread. |
-Display* GetSecondaryDisplay(); |
- |
-// Since one cannot include both WebKit header and Xlib headers in the same |
-// file (due to collisions), we wrap all the Xlib functions that we need here. |
-// These functions must be called on the BACKGROUND_X11 thread since they |
-// reference GetSecondaryDisplay(). |
- |
-// Get the position of the given window in screen coordinates as well as its |
-// current size. |
-bool GetWindowGeometry(int* x, int* y, unsigned* width, unsigned* height, |
- XID window); |
- |
-// Find the immediate parent of an X window. |
-// |
-// parent_window: (output) the parent window of |window|, or 0. |
-// parent_is_root: (output) true iff the parent of |window| is the root window. |
-bool GetWindowParent(XID* parent_window, bool* parent_is_root, XID window); |
- |
-// Get the window manager name. |
-bool GetWindowManagerName(std::string* name); |
- |
-// Grabs a snapshot of the designated window and stores a PNG representation |
-// into a byte vector. |
-void GrabWindowSnapshot(GtkWindow* gdk_window, |
- std::vector<unsigned char>* png_representation); |
- |
-// Change desktop for |window| to the desktop of |destination| window. |
-bool ChangeWindowDesktop(XID window, XID destination); |
- |
-// Enable the default X error handlers. These will log the error and abort |
-// the process if called. Use SetX11ErrorHandlers() from x11_util_internal.h |
-// to set your own error handlers. |
-void SetDefaultX11ErrorHandlers(); |
- |
-} // namespace x11_util |
- |
-#endif // APP_X11_UTIL_H_ |