#ifndef sw_FrameBufferAndroid_hpp
#define sw_FrameBufferAndroid_hpp

#include "Main/FrameBuffer.hpp"
#include "Common/Debug.hpp"

#include <hardware/gralloc.h>
#include <system/window.h>

namespace sw
{
    class FrameBufferAndroid : public FrameBuffer
    {
    public:
        FrameBufferAndroid(ANativeWindow* window, int width, int height);

        ~FrameBufferAndroid();

        virtual void flip(void *source, Format format) {blit(source, 0, 0, format);};
        virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format);

        virtual void *lock();
        virtual void unlock();

        bool setSwapRectangle(int l, int t, int w, int h);

    private:
        ANativeWindow* nativeWindow;
        ANativeWindowBuffer* buffer;
        gralloc_module_t const* gralloc;
    };
}

#endif   // sw_FrameBufferAndroid
