3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/FontHandle.h"
7#include "mc/client/gui/TextAlignment.h"
8#include "mc/client/gui/controls/UIRenderContext.h"
9#include "mc/client/renderer/screen/MinecraftUIMeasureStrategy.h"
10#include "mc/deps/core/math/Color.h"
11#include "mc/deps/core/utility/NonOwnerPointer.h"
12#include "mc/deps/input/RectangleArea.h"
32namespace Core {
class Path; }
51 ::ll::TypedStorage<8, 8, ::Font&> mFont;
52 ::ll::TypedStorage<4, 16, ::RectangleArea> mArea;
53 ::ll::TypedStorage<8, 40, ::std::variant<::std::string, ::std::string_view>> mText;
54 ::ll::TypedStorage<4, 16, ::mce::Color> mColor;
55 ::ll::TypedStorage<4, 4, int> mCaretLocation;
56 ::ll::TypedStorage<4, 4, float> mFontScale;
57 ::ll::TypedStorage<4, 4, float> mLinePadding;
58 ::ll::TypedStorage<4, 4, ::ui::TextAlignment> mAlignment;
59 ::ll::TypedStorage<1, 1, bool> mShadow;
60 ::ll::TypedStorage<1, 1, bool> mShowColorSymbol;
65 TextItem& operator=(TextItem
const&);
66 TextItem(TextItem
const&);
74 ::ll::TypedStorage<8, 8, ::mce::ClientTexture const&> mTexture;
75 ::ll::TypedStorage<4, 8, ::glm::vec2> mPosition;
76 ::ll::TypedStorage<4, 8, ::glm::vec2> mSize;
77 ::ll::TypedStorage<4, 8, ::glm::vec2> mUV;
78 ::ll::TypedStorage<4, 8, ::glm::vec2> mUVSize;
79 ::ll::TypedStorage<1, 1, bool> mColorCorrected;
84 ImageItem& operator=(ImageItem
const&);
85 ImageItem(ImageItem
const&);
89 using PersistentMeshItem = ::MinecraftUIPersistentMeshItem;
94 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClient;
95 ::ll::TypedStorage<8, 8, ::ScreenContext&> mScreenContext;
96 ::ll::TypedStorage<8, 32, ::MinecraftUIMeasureStrategy> mMeasureStrategy;
97 ::ll::TypedStorage<4, 4, float> mTextAlpha;
98 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IUIRepository>> mUIRepository;
99 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::TextureGroup>> mTextureGroup;
100 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::mce::TextureGroup>> mStoreCacheTextures;
101 ::ll::TypedStorage<8, 24, ::std::vector<::MinecraftUIRenderContext::TextItem>> mTextToDraw;
102 ::ll::TypedStorage<8, 24, ::std::vector<::MinecraftUIRenderContext::ImageItem>> mImagesToDraw;
103 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::MinecraftUIPersistentMeshItem>>> mPersistentMeshes;
104 ::ll::TypedStorage<1, 1, uchar> mStencilRef;
105 ::ll::TypedStorage<4, 4, int> mCurrentPersistentMeshItemIdx;
106 ::ll::TypedStorage<8, 80, ::FontHandle> mDebugTextFontHandle;
107 ::ll::TypedStorage<8, 8, ::UIScene const&> mCurrentScene;
108 ::ll::TypedStorage<4, 20, ::std::optional<::glm::vec4>> mSavedOriginalClippingRectangle;
113 MinecraftUIRenderContext& operator=(MinecraftUIRenderContext
const&);
114 MinecraftUIRenderContext(MinecraftUIRenderContext
const&);
115 MinecraftUIRenderContext();
120 virtual ~MinecraftUIRenderContext() ;
122 virtual int getLineLength(::Font& font, ::std::string
const& text,
float fontSize,
bool showColorSymbol)
const
125 virtual float getTextAlpha() const ;
127 virtual
void setTextAlpha(
float alpha) ;
129 virtual
void drawDebugText(
130 ::RectangleArea const& rect,
131 ::std::
string&& text,
132 ::mce::Color const& color,
134 ::ui::TextAlignment alignment,
135 ::TextMeasureData const& textData,
136 ::CaretMeasureData const& caretData
139 virtual
void drawText(
141 ::RectangleArea const& rect,
142 ::std::
string&& text,
143 ::mce::Color const& color,
145 ::ui::TextAlignment alignment,
146 ::TextMeasureData const& textData,
147 ::CaretMeasureData const& caretData
150 virtual
void drawText(
152 ::RectangleArea const& rect,
153 ::std::string_view text,
154 ::mce::Color const& color,
156 ::ui::TextAlignment alignment,
157 ::TextMeasureData const& textData,
158 ::CaretMeasureData const& caretData
161 virtual
void flushText(
float deltaTime, ::std::optional<
float> obfuscateSwitchTime) ;
163 virtual
void drawImage(
164 ::mce::ClientTexture const& texture,
165 ::glm::vec2 const& position,
166 ::glm::vec2 const& size,
167 ::glm::vec2 const& uv,
168 ::glm::vec2 const& uvSize,
169 bool const colorCorrected
172 virtual
void drawNineslice(::mce::ClientTexture const& texture, ::NinesliceInfo const& info) ;
175 flushImages(::mce::Color const& color,
float alpha, ::HashedString const& materialNameHash) ;
177 virtual ::mce::TexturePtr getTexture(::ResourceLocation const& resourceLocation,
bool forceReload) const
180 virtual ::mce::TexturePtr getZippedTexture(
181 ::Core::Path const& zippedFolderPath,
182 ::ResourceLocation const& resourceLocation,
186 virtual
bool unloadTexture(::ResourceLocation const& resourceLocation) ;
188 virtual ::UITextureInfoPtr getUITextureInfo(::ResourceLocation const& resourceLocation,
bool forceReload) const
191 virtual
void touchTexture(::ResourceLocation const& resourceLocation) ;
193 virtual
void beginSharedMeshBatch(::ComponentRenderBatch& renderBatch) ;
195 virtual
void endSharedMeshBatch(::ComponentRenderBatch& renderBatch) ;
197 virtual
void reserveSharedMeshBatch(uint64 vertexCount) ;
199 virtual uint64 getSharedMeshBatchVertexCount() const ;
202 drawRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha,
int thickness) ;
204 virtual
void fillRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha) ;
206 virtual
void increaseStencilRef() ;
208 virtual
void decreaseStencilRef() ;
210 virtual
void resetStencilRef() ;
212 virtual
void fillRectangleStencil(::RectangleArea const& rect) ;
214 virtual
void enableScissorTest(::RectangleArea const& rect) ;
216 virtual
void disableScissorTest() ;
218 virtual
void setClippingRectangle(::RectangleArea const& rect) ;
220 virtual
void setFullClippingRectangle() ;
222 virtual
void saveCurrentClippingRectangle() ;
224 virtual
void restoreSavedClippingRectangle() ;
226 virtual ::RectangleArea getFullClippingRectangle() const ;
228 virtual
void cleanup() ;
230 virtual
void removePersistentMeshes() ;
232 virtual ::UIMeasureStrategy& getMeasureStrategy() ;
234 virtual
void snapImageSizeToGrid(::glm::vec2& size) const ;
236 virtual
void snapImagePositionToGrid(::glm::vec2& position) const ;
238 virtual
void notifyImageEstimate(uint64 imageCount) ;
240 virtual
bool updateCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer) ;
242 virtual
void renderCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer,
int pass) ;
249 MinecraftUIRenderContext(::IClientInstance& client, ::ScreenContext& screenContext, ::UIScene const& currentScene);
255 MCNAPI static ::std::unique_ptr<::MinecraftUIPersistentMeshItem>
289 ::
std::
string&& text,
290 ::mce::Color const& color,
292 ::ui::TextAlignment alignment,
300 ::
std::
string&& text,
301 ::mce::Color const& color,
303 ::ui::TextAlignment alignment,
311 ::
std::string_view text,
312 ::mce::Color const& color,
314 ::ui::TextAlignment alignment,
319 MCAPI
void $flushText(
float deltaTime, ::
std::optional<
float> obfuscateSwitchTime);
322 ::mce::ClientTexture const& texture,
323 ::glm::vec2 const& position,
324 ::glm::vec2 const& size,
325 ::glm::vec2 const& uv,
326 ::glm::vec2 const& uvSize,
327 bool const colorCorrected
337 ::Core::
Path const& zippedFolderPath,
Definition ComponentRenderBatch.h:5
Definition CustomRenderComponent.h:5
Definition HashedString.h:5
Definition IClientInstance.h:5
Definition IUIRepository.h:5
Definition MinecraftUIRenderContext.h:5
MCAPI void $drawNineslice(::mce::ClientTexture const &texture, ::NinesliceInfo const &info)
MCAPI void $flushImages(::mce::Color const &color, float alpha, ::HashedString const &materialNameHash)
MCAPI::mce::TexturePtr $getTexture(::ResourceLocation const &resourceLocation, bool forceReload) const
MCAPI void $drawRectangle(::RectangleArea const &rect, ::mce::Color const &color, float alpha, int thickness)
MCAPI void $notifyImageEstimate(uint64 imageCount)
MCAPI void $drawDebugText(::RectangleArea const &rect, ::std::string &&text, ::mce::Color const &color, float alpha, ::ui::TextAlignment alignment, ::TextMeasureData const &textData, ::CaretMeasureData const &caretData)
static MCAPI bool _endSharedMeshBatch(::ComponentRenderBatch &renderBatch, ::MinecraftUIPersistentMeshItem &persistentMeshItem, ::ScreenContext &screenContext, ::OffscreenCaptureDescription const &capture)
MCAPI void $decreaseStencilRef()
MCAPI void $resetStencilRef()
MCAPI::mce::TexturePtr $getZippedTexture(::Core::Path const &zippedFolderPath, ::ResourceLocation const &resourceLocation, bool forceReload) const
MCAPI void $increaseStencilRef()
MCAPI void $setFullClippingRectangle()
MCAPI void $reserveSharedMeshBatch(uint64 vertexCount)
MCAPI::RectangleArea $getFullClippingRectangle() const
MCAPI void $fillRectangle(::RectangleArea const &rect, ::mce::Color const &color, float alpha)
MCAPI bool $unloadTexture(::ResourceLocation const &resourceLocation)
MCAPI::UITextureInfoPtr $getUITextureInfo(::ResourceLocation const &resourceLocation, bool forceReload) const
MCAPI::UIMeasureStrategy & $getMeasureStrategy()
MCAPI void $snapImageSizeToGrid(::glm::vec2 &size) const
MCAPI void $setTextAlpha(float alpha)
MCAPI uint64 $getSharedMeshBatchVertexCount() const
MCAPI int $getLineLength(::Font &font, ::std::string const &text, float fontSize, bool showColorSymbol) const
MCAPI void $fillRectangleStencil(::RectangleArea const &rect)
MCAPI void $renderCustom(::gsl::not_null<::CustomRenderComponent * > customRenderer, int pass)
MCAPI bool $updateCustom(::gsl::not_null<::CustomRenderComponent * > customRenderer)
MCAPI void $snapImagePositionToGrid(::glm::vec2 &position) const
MCAPI void $removePersistentMeshes()
MCAPI void $disableScissorTest()
MCAPI void $enableScissorTest(::RectangleArea const &rect)
MCAPI void $touchTexture(::ResourceLocation const &resourceLocation)
MCAPI void $drawText(::Font &font, ::RectangleArea const &rect, ::std::string &&text, ::mce::Color const &color, float alpha, ::ui::TextAlignment alignment, ::TextMeasureData const &textData, ::CaretMeasureData const &caretData)
static MCAPI ::std::unique_ptr<::MinecraftUIPersistentMeshItem > _createPersistentMesh(::ComponentRenderBatch const &renderBatch, ::mce::TextureGroup &textureGroup)
MCAPI void $restoreSavedClippingRectangle()
MCAPI float $getTextAlpha() const
MCAPI void $saveCurrentClippingRectangle()
MCAPI void $setClippingRectangle(::RectangleArea const &rect)
MCAPI void $drawImage(::mce::ClientTexture const &texture, ::glm::vec2 const &position, ::glm::vec2 const &size, ::glm::vec2 const &uv, ::glm::vec2 const &uvSize, bool const colorCorrected)
Definition RectangleArea.h:5
Definition ResourceLocation.h:15
Definition ScreenContext.h:5
Definition UIMeasureStrategy.h:5
Definition UIRenderContext.h:5
Definition UITextureInfoPtr.h:5
Definition TextureGroup.h:7
Definition TexturePtr.h:7
Definition CaretMeasureData.h:5
Definition MinecraftUIPersistentMeshItem.h:5
Definition MinecraftUIRenderContext.h:16
Definition MinecraftUIRenderContext.h:14
Definition NinesliceInfo.h:5
Definition OffscreenCaptureDescription.h:5
Definition TextMeasureData.h:5
Definition ClientTexture.h:7