00001 /* 00002 * Copyright (C) 2006 The Android Open Source Project 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 #ifndef SkOSWindow_Unix_DEFINED 00018 #define SkOSWindow_Unix_DEFINED 00019 00020 #include "SkWindow.h" 00021 #include <X11/Xlib.h> 00022 00023 struct SkUnixWindow { 00024 Display* fDisplay; 00025 Window fWin; 00026 size_t fOSWin; 00027 }; 00028 00029 class SkOSWindow : public SkWindow { 00030 public: 00031 SkOSWindow(Display* display, Window win); 00032 00033 void* getHWND() const { return (void*)fUnixWindow.fWin; } 00034 void* getDisplay() const { return (void*)fUnixWindow.fDisplay; } 00035 void* getUnixWindow() const { return (void*)&fUnixWindow; } 00036 void setSize(int width, int height); 00037 void updateSize(); 00038 00039 static bool PostEvent(SkEvent* evt, SkEventSinkID, SkMSec delay); 00040 00041 static bool WndProc(SkUnixWindow* w, XEvent &e); 00042 00043 protected: 00044 // overrides from SkWindow 00045 virtual void onHandleInval(const SkIRect&); 00046 // overrides from SkView 00047 virtual void onAddMenu(const SkOSMenu*); 00048 00049 private: 00050 SkUnixWindow fUnixWindow; 00051 00052 void doPaint(); 00053 00054 void* fMBar; 00055 00056 typedef SkWindow INHERITED; 00057 }; 00058 00059 #endif 00060