10910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/*
20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
30910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *
40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
50910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * you may not use this file except in compliance with the License.
60910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * You may obtain a copy of the License at
70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *
80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * See the License for the specific language governing permissions and
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * limitations under the License.
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkOSWindow_Unix_DEFINED
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkOSWindow_Unix_DEFINED
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkWindow.h"
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include <X11/Xlib.h>
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstruct SkUnixWindow {
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project  Display* fDisplay;
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project  Window fWin;
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project  size_t fOSWin;
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkOSWindow : public SkWindow {
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkOSWindow(Display* display, Window win);
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void*   getHWND() const { return (void*)fUnixWindow.fWin; }
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project  void* getDisplay() const { return (void*)fUnixWindow.fDisplay; }
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project  void* getUnixWindow() const { return (void*)&fUnixWindow; }
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project  void  setSize(int width, int height);
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    updateSize();
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static bool PostEvent(SkEvent* evt, SkEventSinkID, SkMSec delay);
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static bool WndProc(SkUnixWindow* w,  XEvent &e);
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected:
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    // overrides from SkWindow
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void onHandleInval(const SkIRect&);
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    // overrides from SkView
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void onAddMenu(const SkOSMenu*);
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkUnixWindow  fUnixWindow;
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    doPaint();
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void*   fMBar;
550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    typedef SkWindow INHERITED;
570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
61