Cleanup after fake orientation removal.
[SDL.s60v3.git] / symbian / include / internal / dsa.h
blob186ae30f0909b1b390ca58e3d1efe7719311af1c
1 #ifndef __DSA_H__
2 #define __DSA_H__
4 #include <e32base.h>
5 #include <w32std.h>
6 #include "epoc_sdl.h"
7 #include "sdlepocapi.h"
9 class CDsa;
11 typedef void (*TCopyFunction)(const CDsa& aDsa, TUint32* aTarget, const TUint8* aSource, TInt aBytes);
13 class CDsa : public CBase
15 public:
16 enum
18 ELastDsaRequest = EpocSdlEnv::ELastService,
21 inline TBool IsDsaAvailable() const;
23 static CDsa* CreateL(RWsSession& aSession);
25 ~CDsa();
27 TUint8* LockHwSurface();
28 TInt AllocSurface(const TSize& aSize, TDisplayMode aMode);
29 inline TDisplayMode DisplayMode() const;
31 TInt SetPalette(TInt aFirst, TInt aCount, TUint32* aPalette);
32 TBool AddUpdateRect(const TUint8* aBits, const TRect& aUpdateRect, const TRect& aRect);
33 void UpdateSwSurface();
34 void SetSuspend();
37 TBool Stopped() const;
38 RWsSession& Session();
39 RWindow* Window();
40 CDsa* CreateGlesDsaL();
42 void DoStop();
44 virtual void Free();
46 virtual void ConstructL(RWindow& aWindow, CWsScreenDevice& aDevice);
47 virtual void SetUpdating(TBool aUpdate);
49 virtual TUint8* LockSurface() = 0;
50 virtual void UnlockHwSurface() = 0;
51 virtual void Resume() = 0;
52 virtual void Stop();
53 virtual void DoBlt(CFbsBitmap& aBmp);
55 bool m_updateWholeScreen;
57 protected:
58 CDsa(RWsSession& aSession);
59 void Start();
61 enum
63 ERunning = 0x1,
64 EUpdating = 0x2,
65 EUsePalette = 0x8,
66 ESdlThreadSuspend = 0x100,
67 ESdlThreadExplicitStop = 0x200
70 private:
71 virtual void CreateSurfaceL(const TSize& aSize) = 0;
73 void ClipCopy(TUint8* aTarget, const TUint8* aSource, const TRect& aUpdateRect, const TRect& aSourceRect) const;
74 static void Copy256(const CDsa& aDsa, TUint32* aTarget, const TUint8* aSource, TInt aBytes);
75 static void CopySlow(const CDsa& aDsa, TUint32* aTarget, const TUint8* aSource, TInt aBytes);
76 static void CopyMem(const CDsa& aDsa, TUint32* aTarget, const TUint8* aSource, TInt aBytes);
78 void SetCopyFunction();
80 TInt iStateFlags;
81 RWsSession& iSession;
83 TInt iTargetBpp;
84 TInt iSourceBpp;
85 TDisplayMode iSourceMode;
86 TDisplayMode iTargetMode;
87 TUint32* iLut256;
88 TCopyFunction iCopyFunction;
89 TUint8* iTargetAddr;
90 TCopyFunction iCFTable[3];
91 TInt iNewFlags;
92 RWindow* iWindow;
93 friend class TDsa;
96 inline TDisplayMode CDsa::DisplayMode() const
98 return iTargetMode;
101 inline TBool CDsa::IsDsaAvailable() const
103 return iStateFlags & ERunning;
106 #endif