mirror of https://github.com/axmolengine/axmol.git
107 lines
2.9 KiB
C
107 lines
2.9 KiB
C
|
/*
|
||
|
* Copyright (C) 2006 The Android Open Source Project
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
#ifndef SkWindow_DEFINED
|
||
|
#define SkWindow_DEFINED
|
||
|
|
||
|
#include "SkView.h"
|
||
|
#include "SkBitmap.h"
|
||
|
#include "SkRegion.h"
|
||
|
#include "SkEvent.h"
|
||
|
#include "SkKey.h"
|
||
|
#include "SkTDArray.h"
|
||
|
|
||
|
#ifdef SK_BUILD_FOR_WINCEx
|
||
|
#define SHOW_FPS
|
||
|
#endif
|
||
|
//#define USE_GX_SCREEN
|
||
|
|
||
|
class SkOSMenu;
|
||
|
|
||
|
class SkWindow : public SkView {
|
||
|
public:
|
||
|
SkWindow();
|
||
|
virtual ~SkWindow();
|
||
|
|
||
|
const SkBitmap& getBitmap() const { return fBitmap; }
|
||
|
|
||
|
void setConfig(SkBitmap::Config);
|
||
|
void resize(int width, int height, SkBitmap::Config config = SkBitmap::kNo_Config);
|
||
|
void eraseARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b);
|
||
|
void eraseRGB(U8CPU r, U8CPU g, U8CPU b);
|
||
|
|
||
|
bool isDirty() const { return !fDirtyRgn.isEmpty(); }
|
||
|
bool update(SkIRect* updateArea);
|
||
|
bool handleClick(int x, int y, Click::State);
|
||
|
bool handleChar(SkUnichar);
|
||
|
bool handleKey(SkKey);
|
||
|
bool handleKeyUp(SkKey);
|
||
|
bool handleMenu(uint32_t os_cmd);
|
||
|
|
||
|
void addMenu(SkOSMenu*);
|
||
|
|
||
|
const char* getTitle() const { return fTitle.c_str(); }
|
||
|
void setTitle(const char title[]);
|
||
|
|
||
|
protected:
|
||
|
virtual bool onEvent(const SkEvent&);
|
||
|
|
||
|
// called if part of our bitmap is invalidated
|
||
|
virtual void onHandleInval(const SkIRect&);
|
||
|
virtual bool onHandleChar(SkUnichar);
|
||
|
virtual bool onHandleKey(SkKey);
|
||
|
virtual bool onHandleKeyUp(SkKey);
|
||
|
virtual void onAddMenu(const SkOSMenu*) {}
|
||
|
virtual void onSetTitle(const char title[]) {}
|
||
|
|
||
|
// overrides from SkView
|
||
|
virtual bool handleInval(const SkRect&);
|
||
|
virtual bool onGetFocusView(SkView** focus) const;
|
||
|
virtual bool onSetFocusView(SkView* focus);
|
||
|
|
||
|
private:
|
||
|
SkBitmap::Config fConfig;
|
||
|
SkBitmap fBitmap;
|
||
|
SkRegion fDirtyRgn;
|
||
|
Click* fClick; // to track clicks
|
||
|
|
||
|
SkTDArray<SkOSMenu*> fMenus;
|
||
|
|
||
|
SkView* fFocusView;
|
||
|
bool fWaitingOnInval;
|
||
|
|
||
|
SkString fTitle;
|
||
|
|
||
|
typedef SkView INHERITED;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifdef SK_USE_WXWIDGETS
|
||
|
#include "SkOSWindow_wxwidgets.h"
|
||
|
#elif defined(SK_BUILD_FOR_MAC)
|
||
|
#include "SkOSWindow_Mac.h"
|
||
|
#elif defined(SK_BUILD_FOR_WIN)
|
||
|
#include "SkOSWindow_Win.h"
|
||
|
#elif defined(SK_BUILD_FOR_UNIXx)
|
||
|
#include "SkOSWindow_Unix.h"
|
||
|
#elif defined(SK_BUILD_FOR_SDL)
|
||
|
#include "SkOSWindow_SDL.h"
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|