15bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com 2f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com/* 35bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Copyright 2006 The Android Open Source Project 4f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com * 55bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Use of this source code is governed by a BSD-style license that can be 65bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * found in the LICENSE file. 7f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com */ 8f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 95bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com 10f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#ifndef SkOSWindow_Win_DEFINED 11f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#define SkOSWindow_Win_DEFINED 12f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 13f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkWindow.h" 14f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 15d31cd57a80369db0d73c3ca874c3637d71bafb6brobertphillips@google.com#if SK_ANGLE 16d31cd57a80369db0d73c3ca874c3637d71bafb6brobertphillips@google.com#include "EGL/egl.h" 17d31cd57a80369db0d73c3ca874c3637d71bafb6brobertphillips@google.com#endif 18d31cd57a80369db0d73c3ca874c3637d71bafb6brobertphillips@google.com 19f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comclass SkOSWindow : public SkWindow { 20f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.compublic: 21f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkOSWindow(void* hwnd); 22982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com virtual ~SkOSWindow(); 23f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 24f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void* getHWND() const { return fHWND; } 25f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void setSize(int width, int height); 26f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void updateSize(); 27f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 28f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com static bool PostEvent(SkEvent* evt, SkEventSinkID, SkMSec delay); 29982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com 30afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com enum SkBackEndTypes { 31afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com kNone_BackEndType, 3220b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#if SK_SUPPORT_GPU 33afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com kNativeGL_BackEndType, 34d31cd57a80369db0d73c3ca874c3637d71bafb6brobertphillips@google.com#if SK_ANGLE 35afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com kANGLE_BackEndType, 3620b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#endif // SK_ANGLE 3720b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#endif // SK_SUPPORT_GPU 38afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com }; 39d31cd57a80369db0d73c3ca874c3637d71bafb6brobertphillips@google.com 40bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com struct AttachmentInfo { 41bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com int fSampleCount; 42bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com int fStencilBits; 43bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com }; 44bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com 45bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com bool attach(SkBackEndTypes attachType, int msaaSampleCount, AttachmentInfo*); 46afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com void detach(); 47afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com void present(); 48982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com 494bc15967ffb183bb6d89c41abd6e8a4f5e9490ccreed@android.com bool wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); 504bc15967ffb183bb6d89c41abd6e8a4f5e9490ccreed@android.com static bool QuitOnDeactivate(HWND hWnd); 51f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 52f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com enum { 53f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SK_WM_SkEvent = WM_APP + 1000, 54f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SK_WM_SkTimerID = 0xFFFF // just need a non-zero value 55f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com }; 56f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 57f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comprotected: 58f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual bool quitOnDeactivate() { return true; } 59f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 60f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com // overrides from SkWindow 61f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual void onHandleInval(const SkIRect&); 62f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com // overrides from SkView 63f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual void onAddMenu(const SkOSMenu*); 64f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 65982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com virtual void onSetTitle(const char title[]); 66982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com 67f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comprivate: 68982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com void* fHWND; 691fde19f3b72345b473a1a9bd64729237a388813frmistry@google.com 70982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com void doPaint(void* ctx); 71982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com 7220b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#if SK_SUPPORT_GPU 73982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com void* fHGLRC; 74d31cd57a80369db0d73c3ca874c3637d71bafb6brobertphillips@google.com#if SK_ANGLE 75b341fc2437946fc50e6f6877d7d4ab69ca0b934crobertphillips@google.com EGLDisplay fDisplay; 76b341fc2437946fc50e6f6877d7d4ab69ca0b934crobertphillips@google.com EGLContext fContext; 77b341fc2437946fc50e6f6877d7d4ab69ca0b934crobertphillips@google.com EGLSurface fSurface; 78bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com EGLConfig fConfig; 7920b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#endif // SK_ANGLE 8020b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#endif // SK_SUPPORT_GPU 81982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com 82982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com HMENU fMBar; 83f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 84afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com SkBackEndTypes fAttached; 85afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com 8620b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#if SK_SUPPORT_GPU 87bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com bool attachGL(int msaaSampleCount, AttachmentInfo* info); 88afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com void detachGL(); 89afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com void presentGL(); 90afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com 91afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com#if SK_ANGLE 92bc4833a94d8967b6c0d2017490456997b788bf49bsalomon@google.com bool attachANGLE(int msaaSampleCount, AttachmentInfo* info); 9396fb343ef5110cf686c85dbc56cfdff82cc45e74bsalomon@google.com void detachANGLE(); 94afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com void presentANGLE(); 9520b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#endif // SK_ANGLE 9620b869755d3849fcde285022f7508baba81f15b6bsalomon@google.com#endif // SK_SUPPORT_GPU 97afa59377e87095c5d5128a544ce8d21d908de615robertphillips@google.com 981fde19f3b72345b473a1a9bd64729237a388813frmistry@google.com typedef SkWindow INHERITED; 99f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com}; 100f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 101f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#endif 102