Fission FSN
Loading...
Searching...
No Matches
fsCNativeRenderTexture.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsCRenderTexture.h
4*
5* Purpose: Cocos2d-x implementation of a render texture.
6*
7*********************************************************************/
8
9#ifndef fsCNativeRenderTexturehdr
10#define fsCNativeRenderTexturehdr
11
12#include <raylib.h>
14#include "fsINative.h"
15class fsIImage;
16
17
19{
20 friend class fsITexture;
21
22public:
23
24 void initialiseScreenDo(fsPoint pDimensions);
26
29
30protected:
31
32 void targetSetDo() override;
33 void targetClearDo() override;
34
35 void brushSetDo(fsCResourceName const& pBrushFilename) override;
36 void saveDo(fsCResourceName const& pFilename) override;
37
38 void recolourDo(fsSColour4B const& pOld, fsSColour4B const& pNew) override;
39 void paintWithSpriteBrushDo(fsPoint const& pPos) override;
40 void paintDo(std::vector<fsPoint> const& pPos, fsSColour4B const& pColour) override;
41
42 void renderDo() override;
43
44private:
45
46 struct fsSMutableTexture
47 {
48 ~fsSMutableTexture();
49 fsSMutableTexture(fsS32 pW, fsS32 pH, const fsSColour4B& pCol = {0,0,0,0}, fsS32 pBpp = 32);
50 void paint(fsS32 x, fsS32 y)
51 {
52 mPixels[y * stride() + x * bytesPerPixel() + 0] = mPaintColour.mR;
53 mPixels[y * stride() + x * bytesPerPixel() + 1] = mPaintColour.mG;
54 mPixels[y * stride() + x * bytesPerPixel() + 2] = mPaintColour.mB;
55 mPixels[y * stride() + x * bytesPerPixel() + 3] = mPaintColour.mA;
56 }
57
58 fsSColour4B get(fsS32 x, fsS32 y) const
59 {
60 return fsSColour4B(
61 mPixels[y * stride() + x * bytesPerPixel() + 0],
62 mPixels[y * stride() + x * bytesPerPixel() + 1],
63 mPixels[y * stride() + x * bytesPerPixel() + 2],
64 mPixels[y * stride() + x * bytesPerPixel() + 3]);
65 }
66
67 fsU32 bytesPerPixel() const { return mBpp / 8; }
68 fsS32 stride() const { return mWidth * bytesPerPixel(); }
69 fsS32 len() const { return stride() * mHeight; }
70 fsS32 mWidth;
71 fsS32 mHeight;
72 fsU32 mBpp;
73 fsU8* mPixels;
74 fsSColour4B mPaintColour;
75 };
76
77 void updateDynamicTexturePixels() const;
78 void getDynamicTexturePixels();
79
80 static void pixelCallback(const unsigned char* pPixels, std::size_t pWidth, std::size_t pHeigth);
81
82 static fsSMutableTexture* mCurrMutableTexture;
83
84 RenderTexture2D mDynamicTexture;
85 Shader mShader;
86
87};
88
89#endif
Definition fsCNativeRenderTexture.h:31
void initialiseScreenDo(fsPoint pDimensions)
void paintWithSpriteBrushDo(fsPoint const &pPos) override
void saveDo(fsCResourceName const &pFilename) override
void renderDo() override
void paintDo(std::vector< fsPoint > const &pPos, fsSColour4B const &pColour) override
friend class fsITexture
Definition fsCNativeRenderTexture.h:32
void targetSetDo() override
void initialiseSolutionDo(fsIImage *pSolution)
void targetClearDo() override
void recolourDo(fsSColour4B const &pOld, fsSColour4B const &pNew) override
virtual ~fsCNativeRenderTexture()
void brushSetDo(fsCResourceName const &pBrushFilename) override
Definition fsCResourceName.h:32
Definition fsIImage.h:21
Definition fsIRenderableTexture.h:38
unsigned int fsU32
Definition fsBaseTypes.h:21
unsigned char fsU8
Definition fsBaseTypes.h:15
int fsS32
Definition fsBaseTypes.h:20
decltype(sizeof(void *)) size_t
Definition doctest.h:524
Definition fsPoint.h:17
Definition fsSColour.h:54
fsU8 mG
Definition fsSColour.h:82
fsU8 mR
Definition fsSColour.h:81
fsU8 mB
Definition fsSColour.h:83
fsU8 mA
Definition fsSColour.h:84