00001 /* 00002 Copyright (c) 2012, The Cinder Project, All rights reserved. 00003 00004 This code is intended for use with the Cinder C++ library: http://libcinder.org 00005 00006 Redistribution and use in source and binary forms, with or without modification, are permitted provided that 00007 the following conditions are met: 00008 00009 * Redistributions of source code must retain the above copyright notice, this list of conditions and 00010 the following disclaimer. 00011 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and 00012 the following disclaimer in the documentation and/or other materials provided with the distribution. 00013 00014 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED 00015 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 00016 PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 00017 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 00018 TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00019 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00020 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00021 POSSIBILITY OF SUCH DAMAGE. 00022 */ 00023 00024 #pragma once 00025 00026 #include <windows.h> 00027 #undef min 00028 #undef max 00029 00030 #include "cinder/app/Renderer.h" 00031 00032 namespace cinder { namespace app { 00033 00034 class App; 00035 class AppImplMswBasic; 00036 00037 class AppImplMswRenderer { 00038 public: 00039 AppImplMswRenderer( App *aApp ) : mApp( aApp ) {} 00040 00041 virtual bool initialize( HWND wnd, HDC dc, RendererRef sharedRenderer ) = 0; 00042 virtual void prepareToggleFullScreen() {} 00043 virtual void finishToggleFullScreen() {} 00044 virtual void kill() = 0; 00045 virtual void defaultResize() const = 0; 00046 virtual void swapBuffers() const = 0; 00047 virtual void makeCurrentContext() = 0; 00048 00049 protected: 00050 HWND mWnd; 00051 App *mApp; 00052 }; 00053 00054 } } // namespace cinder::app