Fission FSN
Loading...
Searching...
No Matches
fsCNativeTextSprite.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsCNativeTextSprite.h
4*
5* Purpose: bgfx retained text sprite - needs to be added
6* to a scene
7*
8*********************************************************************/
9
10#ifndef fsCNativeTextSpriteehdr
11#define fsCNativeTextSpriteehdr
12
13#include <fsCore/fsBaseTypes.h>
14#include <fsCore/fsRect.h>
15#include <fsCore/fsStr.h>
16#include <fsCore/fsSColour.h>
17
19#include "fsINative.h"
20#include "fsCBgfx2d.h"
21
22class fsCFont;
23class fsIFont;
24class fsSColour;
25class fsStr;
26
27
28class fsCNativeTextSprite : public fsINative
29{
31
32public:
33
34 void outlineSet(const fsSColour4B& pOutline, fsF32 pSize) const;
35 void shadowSet(const fsSColour4B& pShadow, fsVec2d pOffset, fsF32 pBlurRadius) const;
36 void glowSet(const fsSColour4B& pGlow) const;
37
38 void alignmentSet(fsS32 pAlignH, fsS32 pAlignV);
39 void initialise(const fsStr& pText, fsIFont* pFont);
40
43
44 void formattingRectSizeSet(const fsRect& pFormattingRect);
45 fsStr textGet() const;
46 void textSet(const fsStr& pText);
47
49
50protected:
51
52 void renderDo() override;
53 void colourSetDo(const fsSColour4B& pColour) override;
54
56
57private:
58
59 typedef fsITextSpriteComponent::eHORIZONTAL_ALIGNMENT fsTHorizontalAlign;
60 typedef fsITextSpriteComponent::eVERTICAL_ALIGNMENT fsTVerticalAlign;
61
62 struct fsSRect
63 {
64 fsF32 mX = 0;
65 fsF32 mY = 0;
66 fsF32 mWidth = 0;
67 fsF32 mHeight = 0;
68 };
69
70 fsS32 lineCountGet(const char* pText) const;
71
72 fsF32 lineStart(fsF32 pLineWidth) const;
73 void drawTextBoxed(const char* pText, fsBool pWordWrap, const fsSColour4B& pTint);
74 void glyphAdd(fsS32 pCodepoint, fsF32 pPenX, fsF32 pBaselineY, fsU32 pColourAbgr);
75 fsF32 glyphWidthGet(fsS32 pCodepoint) const;
76 void positionRecompute();
77
78 fsTHorizontalAlign mHorizontalAlignment = fsTHorizontalAlign::eHALIGN_CENTRE;
79 fsTVerticalAlign mVerticalAlignment = fsTVerticalAlign::eVALIGN_MIDDLE;
80
81 fsRect mBoundingBox;
82 fsStr mText;
83 fsCFont* mFont;
84
85 fsSRect mRect;
86 fsSColour4B mTint;
87};
88
89#endif
Definition fsCFont.h:24
Definition fsCNativeTextSprite.h:35
void textSet(const fsStr &pText)
void shadowSet(const fsSColour4B &pShadow, fsVec2d pOffset, fsF32 pBlurRadius) const
void formattingRectSizeSet(const fsRect &pFormattingRect)
void colourSetDo(const fsSColour4B &pColour) override
friend class fsCNativeTextSpriteRenderData
Definition fsCNativeTextSprite.h:36
fsS32 stringHeightInPixelsGet() const
Definition fsCNativeTextSprite.cpp:342
fsS32 stringWidthInPixelsGet() const
void glowSet(const fsSColour4B &pGlow) const
void renderDo() override
void outlineSet(const fsSColour4B &pOutline, fsF32 pSize) const
fsStr textGet() const
virtual ~fsCNativeTextSprite()
void alignmentSet(fsS32 pAlignH, fsS32 pAlignV)
void initialise(const fsStr &pText, fsIFont *pFont)
Definition fsIFont.h:34
Definition fsINative.h:31
eVERTICAL_ALIGNMENT
Definition fsITextSpriteComponent.h:33
eHORIZONTAL_ALIGNMENT
Definition fsITextSpriteComponent.h:26
Definition fsRect.h:16
Definition fsSColour.h:20
Definition fsStr.h:23
unsigned int fsU32
Definition fsBaseTypes.h:21
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28
Definition fsSColour.h:54
Definition fsVec2d.h:16