• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2006 The Android Open Source Project
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 
10 #ifndef SkOSWindow_Unix_DEFINED
11 #define SkOSWindow_Unix_DEFINED
12 
13 #include "SkWindow.h"
14 #include <X11/Xlib.h>
15 #include <GL/glx.h>
16 
17 class SkBitmap;
18 class SkEvent;
19 
20 struct SkUnixWindow {
21   Display* fDisplay;
22   Window fWin;
23   size_t fOSWin;
24   GC fGc;
25   GLXContext fGLContext;
26   bool fGLCreated;
27 };
28 
29 class SkOSWindow : public SkWindow {
30 public:
31     SkOSWindow(void*);
32     ~SkOSWindow();
33 
getHWND()34     void* getHWND() const { return (void*)fUnixWindow.fWin; }
getDisplay()35     void* getDisplay() const { return (void*)fUnixWindow.fDisplay; }
getUnixWindow()36     void* getUnixWindow() const { return (void*)&fUnixWindow; }
37     void loop();
38     void post_linuxevent();
39     bool attachGL();
40     void detachGL();
41     void presentGL();
42 
43     //static bool PostEvent(SkEvent* evt, SkEventSinkID, SkMSec delay);
44 
45     //static bool WndProc(SkUnixWindow* w,  XEvent &e);
46 
47 protected:
48     // overrides from SkWindow
49     virtual bool onEvent(const SkEvent&);
50     virtual void onHandleInval(const SkIRect&);
51     virtual bool onHandleChar(SkUnichar);
52     virtual bool onHandleKey(SkKey);
53     virtual bool onHandleKeyUp(SkKey);
54     virtual void onSetTitle(const char title[]);
55 
56 private:
57     SkUnixWindow  fUnixWindow;
58     bool fGLAttached;
59 
60     // Needed for GL
61     XVisualInfo* fVi;
62 
63     void    doPaint();
64     void    mapWindowAndWait();
65 
66     typedef SkWindow INHERITED;
67 };
68 
69 #endif
70 
71