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