00001 /********************************************************************** 00002 00003 Copyright (c) 2005, TomTom B.V. 00004 00005 All rights reserved 00006 00007 00008 ***********************************************************************/ 00009 00010 00011 #ifndef __MVIRTUALSCREEN_H__ 00012 #define __MVIRTUALSCREEN_H__ 00013 00014 #include <assert.h> 00015 #include <string.h> 00016 00017 #include "MFrameBuffer.h" 00018 00019 class MVirtualScreen; 00020 00033 class MVirtualScreen: public MFrameBuffer 00034 { 00035 public: // Events 00041 class MVirtualScreenEvents 00042 { 00043 public: 00045 struct TVirtualScreenRefreshData 00046 { 00048 TVirtualScreenRefreshData( MVirtualScreen& aSource, 00049 MFrameBuffer& aFrameBuffer, 00050 bool aFrameBufferUpdated ): 00051 iSource( aSource ), 00052 iFrameBuffer( aFrameBuffer ), 00053 iFrameBufferUpdated( aFrameBufferUpdated ) 00054 {} 00055 00056 MVirtualScreen& iSource; 00057 MFrameBuffer& iFrameBuffer; 00058 bool iFrameBufferUpdated; 00059 }; 00060 00061 public: 00062 virtual ~MVirtualScreenEvents() {}; 00063 00065 virtual void FiredScreenRefreshEvent( TVirtualScreenRefreshData& aData ) = 0; 00066 }; 00067 00068 public: 00071 MVirtualScreen(): 00072 MFrameBuffer(), 00073 iEvents( NULL ) 00074 {} 00075 00082 virtual void FlushVirtualBuffer( bool aOnlyIfActive = true ) = 0; 00083 00090 virtual void FlushFrameBuffer( bool aOnlyIfActive = true ) = 0; 00091 00094 virtual char* GetFrameBuffer() = 0; 00095 00096 public: 00097 MVirtualScreenEvents* iEvents; 00099 public: 00103 static MVirtualScreen& GetVirtualScreen(); 00104 }; 00105 00106 #endif // __IVIRTUALSCREEN_H__