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, 32, ::std::string> mText;
54 ::ll::TypedStorage<4, 16, ::mce::Color> mColor;
55 ::ll::TypedStorage<1, 1, bool> mShadow;
56 ::ll::TypedStorage<1, 1, bool> mShowColorSymbol;
57 ::ll::TypedStorage<4, 4, int> mCaretLocation;
58 ::ll::TypedStorage<4, 4, float> mFontScale;
59 ::ll::TypedStorage<4, 4, float> mLinePadding;
60 ::ll::TypedStorage<4, 4, ::ui::TextAlignment> mAlignment;
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 flushText(
float deltaTime, ::std::optional<
float> obfuscateSwitchTime) ;
152 virtual
void drawImage(
153 ::mce::ClientTexture const& texture,
154 ::glm::vec2 const& position,
155 ::glm::vec2 const& size,
156 ::glm::vec2 const& uv,
157 ::glm::vec2 const& uvSize,
158 bool const colorCorrected
161 virtual
void drawNineslice(::mce::ClientTexture const& texture, ::NinesliceInfo const& info) ;
164 flushImages(::mce::Color const& color,
float alpha, ::HashedString const& materialNameHash) ;
166 virtual ::mce::TexturePtr getTexture(::ResourceLocation const& resourceLocation,
bool forceReload) const
169 virtual ::mce::TexturePtr getZippedTexture(
170 ::Core::Path const& zippedFolderPath,
171 ::ResourceLocation const& resourceLocation,
175 virtual
bool unloadTexture(::ResourceLocation const& resourceLocation) ;
177 virtual ::UITextureInfoPtr getUITextureInfo(::ResourceLocation const& resourceLocation,
bool forceReload) const
180 virtual
void touchTexture(::ResourceLocation const& resourceLocation) ;
182 virtual
void beginSharedMeshBatch(::ComponentRenderBatch& renderBatch) ;
184 virtual
void endSharedMeshBatch(::ComponentRenderBatch& renderBatch) ;
186 virtual
void reserveSharedMeshBatch(uint64 vertexCount) ;
188 virtual uint64 getSharedMeshBatchVertexCount() const ;
191 drawRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha,
int thickness) ;
193 virtual
void fillRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha) ;
195 virtual
void increaseStencilRef() ;
197 virtual
void decreaseStencilRef() ;
199 virtual
void resetStencilRef() ;
201 virtual
void fillRectangleStencil(::RectangleArea const& rect) ;
203 virtual
void enableScissorTest(::RectangleArea const& rect) ;
205 virtual
void disableScissorTest() ;
207 virtual
void setClippingRectangle(::RectangleArea const& rect) ;
209 virtual
void setFullClippingRectangle() ;
211 virtual
void saveCurrentClippingRectangle() ;
213 virtual
void restoreSavedClippingRectangle() ;
215 virtual ::RectangleArea getFullClippingRectangle() const ;
217 virtual
void cleanup() ;
219 virtual
void removePersistentMeshes() ;
221 virtual ::UIMeasureStrategy& getMeasureStrategy() ;
223 virtual
void snapImageSizeToGrid(::glm::vec2& size) const ;
225 virtual
void snapImagePositionToGrid(::glm::vec2& position) const ;
227 virtual
void notifyImageEstimate(uint64 imageCount) ;
229 virtual
bool updateCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer) ;
231 virtual
void renderCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer,
int pass) ;
238 MinecraftUIRenderContext(::IClientInstance& client, ::ScreenContext& screenContext, ::UIScene const& currentScene);
244 MCAPI static ::std::unique_ptr<::MinecraftUIPersistentMeshItem>
245 _createPersistentMesh(::ComponentRenderBatch const& renderBatch, ::mce::TextureGroup& textureGroup);
247 MCAPI static
bool _endSharedMeshBatch(
248 ::ComponentRenderBatch& renderBatch,
249 ::MinecraftUIPersistentMeshItem& persistentMeshItem,
250 ::ScreenContext& screenContext,
251 ::OffscreenCaptureDescription const& capture
258 MCAPI
void* $ctor(::IClientInstance& client, ::ScreenContext& screenContext, ::UIScene const& currentScene);
270 MCAPI
int $getLineLength(::Font& font, ::std::
string const& text,
float fontSize,
bool showColorSymbol) const;
272 MCFOLD
float $getTextAlpha() const;
274 MCAPI
void $setTextAlpha(
float alpha);
276 MCAPI
void $drawDebugText(
277 ::RectangleArea const& rect,
278 ::std::
string&& text,
279 ::mce::Color const& color,
281 ::ui::TextAlignment alignment,
282 ::TextMeasureData const& textData,
283 ::CaretMeasureData const& caretData
286 MCAPI
void $drawText(
288 ::RectangleArea const& rect,
289 ::std::
string&& text,
290 ::mce::Color const& color,
292 ::ui::TextAlignment alignment,
293 ::TextMeasureData const& textData,
294 ::CaretMeasureData const& caretData
297 MCAPI
void $flushText(
float deltaTime, ::std::optional<
float> obfuscateSwitchTime);
299 MCAPI
void $drawImage(
300 ::mce::ClientTexture const& texture,
301 ::glm::vec2 const& position,
302 ::glm::vec2 const& size,
303 ::glm::vec2 const& uv,
304 ::glm::vec2 const& uvSize,
305 bool const colorCorrected
308 MCAPI
void $drawNineslice(::mce::ClientTexture const& texture, ::NinesliceInfo const& info);
310 MCAPI
void $flushImages(::mce::Color const& color,
float alpha, ::HashedString const& materialNameHash);
312 MCAPI ::mce::TexturePtr $getTexture(::ResourceLocation const& resourceLocation,
bool forceReload) const;
314 MCAPI ::mce::TexturePtr $getZippedTexture(
315 ::Core::Path const& zippedFolderPath,
316 ::ResourceLocation const& resourceLocation,
320 MCAPI
bool $unloadTexture(::ResourceLocation const& resourceLocation);
322 MCAPI ::UITextureInfoPtr $getUITextureInfo(::ResourceLocation const& resourceLocation,
bool forceReload) const;
324 MCAPI
void $touchTexture(::ResourceLocation const& resourceLocation);
326 MCAPI
void $beginSharedMeshBatch(::ComponentRenderBatch& renderBatch);
328 MCAPI
void $endSharedMeshBatch(::ComponentRenderBatch& renderBatch);
330 MCAPI
void $reserveSharedMeshBatch(uint64 vertexCount);
332 MCAPI uint64 $getSharedMeshBatchVertexCount() const;
334 MCAPI
void $drawRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha,
int thickness);
336 MCAPI
void $fillRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha);
338 MCAPI
void $increaseStencilRef();
340 MCAPI
void $decreaseStencilRef();
342 MCAPI
void $resetStencilRef();
344 MCAPI
void $fillRectangleStencil(::RectangleArea const& rect);
346 MCAPI
void $enableScissorTest(::RectangleArea const& rect);
348 MCAPI
void $disableScissorTest();
350 MCAPI
void $setClippingRectangle(::RectangleArea const& rect);
352 MCAPI
void $setFullClippingRectangle();
354 MCAPI
void $saveCurrentClippingRectangle();
356 MCAPI
void $restoreSavedClippingRectangle();
358 MCAPI ::RectangleArea $getFullClippingRectangle() const;
360 MCAPI
void $cleanup();
362 MCAPI
void $removePersistentMeshes();
364 MCFOLD ::UIMeasureStrategy& $getMeasureStrategy();
366 MCAPI
void $snapImageSizeToGrid(::glm::vec2& size) const;
368 MCAPI
void $snapImagePositionToGrid(::glm::vec2& position) const;
370 MCAPI
void $notifyImageEstimate(uint64 imageCount);
372 MCAPI
bool $updateCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer);
374 MCAPI
void $renderCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer,
int pass);
Definition ComponentRenderBatch.h:5
Definition CustomRenderComponent.h:5
Definition HashedString.h:5
Definition IClientInstance.h:5
Definition IUIRepository.h:5
Definition MinecraftUIRenderContext.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