/********************************************************************
*
* File: fsCTexture.h
*
* Purpose: Cocos2d-x implementation of a texture.
*
*********************************************************************/
#ifndef fsCTexturehdr
#define fsCTexturehdr
#include <raylib.h>
#include "fsIImage.h"
#include "../../fsITexture.h"
class fsCTexture : public fsITexture
{
friend class fsITexture;
public:
Texture* textureGet() const { return mTexture.get(); }
fsS32 imageWidthGet() const override;
fsS32 imageHeightGet() const override;
fsS32 textureWidthGet() const override;
fsS32 textureHeightGet() const override;
fsBool hasAlphaChannelGet() const override;<--- Function in derived class
fsU8 alphaGet(fsS32 pU, fsS32 pV, fsS32 pCol, fsS32 pRow) const override;
virtual ~fsCTexture();<--- Destructor in derived class
protected:
void filterModeSetDo(fsFilterMode pNewMode) override;
void wrapModeSetDo(fsWrapMode pNewMode) override;
std::shared_ptr<fsITexture> doCloneSubSection(fsCBrush const* pBlend, fsPoint const& pOffset) const override;
void doBlend(fsCBrush const* pBlend, fsPoint const& pOffset) override;
fsSColour4B pixelGetDo(fsS32 pU, fsS32 pV, fsS32 pCol, fsS32 pRow) override;
void doPixelSet(fsS32 pU, fsS32 pV, fsS32 pCol, fsS32 pRow, const fsSColour4B& pPixel) override;
void doTextureCopyThroughStencil(std::shared_ptr<fsITexture> pSrc, std::shared_ptr<fsITexture> pStencil, fsS32 pU,
fsS32 pV, fsS32 pX, fsS32 pY, fsS32 pAlphaHitMaskThreshold) override;
void doTextureCopyInto(std::shared_ptr<fsITexture> pSrc, fsS32 pU, fsS32 pV, fsS32 pX, fsS32 pY) override;
fsU8 alphaValueGet(fsS32 pImgX, fsS32 pImgY) override;
void createFromAlpha8Data(std::vector<fsU8>& pAlphaData, fsS32 pImgW, fsS32 pImgH,
fsPoint const& pPOTDimenions) override;
void createFromImage(fsIImage const* pImage) override;
fsCTexture();
private:
fsU32 filterModes(fsFilterMode pNewMode);
fsU32 wrapModes(fsWrapMode pNewMode);
void alphaChannelsCombine(fsCBrush const* pBlend, fsPoint const& pOffset);
void premultipliedAlphaReverse();
fsS32 strideGet() const;
std::shared_ptr<::Texture> mTexture;
};
#endif