LeviLamina
Loading...
Searching...
No Matches
MinecraftUIRenderContext.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
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/utility/NonOwnerPointer.h"
11
12// auto generated forward declare list
13// clang-format off
14class Font;
15class HashedString;
16class IClientInstance;
17class RectangleArea;
18class ResourceLocation;
19class ScreenContext;
21class UIScene;
23struct BatchKey;
24struct CaretMeasureData;
27struct IUIRepository;
28struct NinesliceInfo;
29struct TextMeasureData;
30namespace Core { class Path; }
31namespace mce { class Color; }
32namespace mce { class TextureGroup; }
33namespace mce { class TexturePtr; }
34namespace mce { struct ClientTexture; }
35// clang-format on
36
38public:
39 // MinecraftUIRenderContext inner types declare
40 // clang-format off
41 struct TextItem;
42 struct ImageItem;
43 struct PersistentMeshItem;
44 // clang-format on
45
46 // MinecraftUIRenderContext inner types define
47 struct TextItem {
48 public:
49 // member variables
50 // NOLINTBEGIN
61 // NOLINTEND
62
63 public:
64 // prevent constructor by default
65 TextItem& operator=(TextItem const&);
66 TextItem(TextItem const&);
67 TextItem();
68 };
69
70 struct ImageItem {
71 public:
72 // member variables
73 // NOLINTBEGIN
80 // NOLINTEND
81
82 public:
83 // prevent constructor by default
84 ImageItem& operator=(ImageItem const&);
85 ImageItem(ImageItem const&);
86 ImageItem();
87 };
88
90 public:
91 // member variables
92 // NOLINTBEGIN
99 // NOLINTEND
100
101 public:
102 // prevent constructor by default
103 PersistentMeshItem& operator=(PersistentMeshItem const&);
106
107 public:
108 // member functions
109 // NOLINTBEGIN
111 ::BatchKey const& batchKey,
112 ::std::vector<::mce::TexturePtr> textures,
113 ::HashedString const& materialNameHash,
114 uint numInstances
115 );
116 // NOLINTEND
117
118 public:
119 // constructor thunks
120 // NOLINTBEGIN
121 MCNAPI void* $ctor(
122 ::BatchKey const& batchKey,
123 ::std::vector<::mce::TexturePtr> textures,
124 ::HashedString const& materialNameHash,
125 uint numInstances
126 );
127 // NOLINTEND
128 };
129
130public:
131 // member variables
132 // NOLINTBEGIN
133 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClient;
134 ::ll::TypedStorage<8, 8, ::ScreenContext&> mScreenContext;
135 ::ll::TypedStorage<8, 32, ::MinecraftUIMeasureStrategy> mMeasureStrategy;
136 ::ll::TypedStorage<4, 4, float> mTextAlpha;
137 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IUIRepository>> mUIRepository;
138 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::TextureGroup>> mTextureGroup;
139 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::mce::TextureGroup>> mStoreCacheTextures;
140 ::ll::TypedStorage<8, 24, ::std::vector<::MinecraftUIRenderContext::TextItem>> mTextToDraw;
141 ::ll::TypedStorage<8, 24, ::std::vector<::MinecraftUIRenderContext::ImageItem>> mImagesToDraw;
142 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::MinecraftUIRenderContext::PersistentMeshItem>>>
143 mPersistentMeshes;
144 ::ll::TypedStorage<1, 1, uchar> mStencilRef;
145 ::ll::TypedStorage<4, 4, int> mCurrentPersistentMeshItemIdx;
146 ::ll::TypedStorage<8, 80, ::FontHandle> mDebugTextFontHandle;
147 ::ll::TypedStorage<8, 8, ::UIScene const&> mCurrentScene;
148 ::ll::TypedStorage<4, 20, ::std::optional<::glm::vec4>> mSavedOriginalClippingRectangle;
149 // NOLINTEND
150
151public:
152 // prevent constructor by default
156
157public:
158 // virtual functions
159 // NOLINTBEGIN
160 virtual ~MinecraftUIRenderContext() /*override*/;
161
162 virtual int getLineLength(::Font& font, ::std::string const& text, float fontSize, bool showColorSymbol) const
163 /*override*/;
164
165 virtual float getTextAlpha() const /*override*/;
166
167 virtual void setTextAlpha(float alpha) /*override*/;
168
169 virtual void drawDebugText(
170 ::RectangleArea const& rect,
171 ::std::string&& text,
172 ::mce::Color const& color,
173 float alpha,
174 ::ui::TextAlignment alignment,
175 ::TextMeasureData const& textData,
176 ::CaretMeasureData const& caretData
177 ) /*override*/;
178
179 virtual void drawText(
180 ::Font& font,
181 ::RectangleArea const& rect,
182 ::std::string&& text,
183 ::mce::Color const& color,
184 float alpha,
185 ::ui::TextAlignment alignment,
186 ::TextMeasureData const& textData,
187 ::CaretMeasureData const& caretData
188 ) /*override*/;
189
190 virtual void flushText(float deltaTime, ::std::optional<float> obfuscateSwitchTime) /*override*/;
191
192 virtual void drawImage(
193 ::mce::ClientTexture const& texture,
194 ::glm::vec2 const& position,
195 ::glm::vec2 const& size,
196 ::glm::vec2 const& uv,
197 ::glm::vec2 const& uvSize,
198 bool const colorCorrected
199 ) /*override*/;
200
201 virtual void drawNineslice(::mce::ClientTexture const& texture, ::NinesliceInfo const& info) /*override*/;
202
203 virtual void
204 flushImages(::mce::Color const& color, float alpha, ::HashedString const& materialNameHash) /*override*/;
205
206 virtual ::mce::TexturePtr getTexture(::ResourceLocation const& resourceLocation, bool forceReload) const
207 /*override*/;
208
209 virtual ::mce::TexturePtr getZippedTexture(
210 ::Core::Path const& zippedFolderPath,
211 ::ResourceLocation const& resourceLocation,
212 bool forceReload
213 ) const /*override*/;
214
215 virtual bool unloadTexture(::ResourceLocation const& resourceLocation) /*override*/;
216
217 virtual ::UITextureInfoPtr getUITextureInfo(::ResourceLocation const& resourceLocation, bool forceReload) const
218 /*override*/;
219
220 virtual void touchTexture(::ResourceLocation const& resourceLocation) /*override*/;
221
222 virtual void beginSharedMeshBatch(::ComponentRenderBatch& renderBatch) /*override*/;
223
224 virtual void endSharedMeshBatch(::ComponentRenderBatch& renderBatch) /*override*/;
225
226 virtual void reserveSharedMeshBatch(uint64 vertexCount) /*override*/;
227
228 virtual uint64 getSharedMeshBatchVertexCount() const /*override*/;
229
230 virtual void
231 drawRectangle(::RectangleArea const& rect, ::mce::Color const& color, float alpha, int thickness) /*override*/;
232
233 virtual void fillRectangle(::RectangleArea const& rect, ::mce::Color const& color, float alpha) /*override*/;
234
235 virtual void increaseStencilRef() /*override*/;
236
237 virtual void decreaseStencilRef() /*override*/;
238
239 virtual void resetStencilRef() /*override*/;
240
241 virtual void fillRectangleStencil(::RectangleArea const& rect) /*override*/;
242
243 virtual void enableScissorTest(::RectangleArea const& rect) /*override*/;
244
245 virtual void disableScissorTest() /*override*/;
246
247 virtual void setClippingRectangle(::RectangleArea const& rect) /*override*/;
248
249 virtual void setFullClippingRectangle() /*override*/;
250
251 virtual void saveCurrentClippingRectangle() /*override*/;
252
253 virtual void restoreSavedClippingRectangle() /*override*/;
254
255 virtual ::RectangleArea getFullClippingRectangle() const /*override*/;
256
257 virtual void cleanup() /*override*/;
258
259 virtual void removePersistentMeshes() /*override*/;
260
261 virtual ::UIMeasureStrategy& getMeasureStrategy() /*override*/;
262
263 virtual void snapImageSizeToGrid(::glm::vec2& size) const /*override*/;
264
265 virtual void snapImagePositionToGrid(::glm::vec2& position) const /*override*/;
266
267 virtual void notifyImageEstimate(uint64 imageCount) /*override*/;
268
269 virtual bool updateCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer) /*override*/;
270
271 virtual void renderCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer, int pass) /*override*/;
272 // NOLINTEND
273
274public:
275 // member functions
276 // NOLINTBEGIN
277 MCAPI
278 MinecraftUIRenderContext(::IClientInstance& client, ::ScreenContext& screenContext, ::UIScene const& currentScene);
279
280 MCAPI float _getTextAlignmentPosition(::MinecraftUIRenderContext::TextItem const& textItem) const;
281
282 MCAPI void
283 _renderTextAligned(::MinecraftUIRenderContext::TextItem const& textItem, float tx, float ty, bool forceUseCache);
284
285 MCAPI void
286 _splitTextItemText(::MinecraftUIRenderContext::TextItem const& textItem, ::std::vector<::std::string>& lines) const;
287 // NOLINTEND
288
289public:
290 // constructor thunks
291 // NOLINTBEGIN
292 MCAPI void* $ctor(::IClientInstance& client, ::ScreenContext& screenContext, ::UIScene const& currentScene);
293 // NOLINTEND
294
295public:
296 // destructor thunk
297 // NOLINTBEGIN
298 MCAPI void $dtor();
299 // NOLINTEND
300
301public:
302 // virtual function thunks
303 // NOLINTBEGIN
304 MCAPI int $getLineLength(::Font& font, ::std::string const& text, float fontSize, bool showColorSymbol) const;
305
306 MCFOLD float $getTextAlpha() const;
307
308 MCAPI void $setTextAlpha(float alpha);
309
310 MCAPI void $drawDebugText(
311 ::RectangleArea const& rect,
312 ::std::string&& text,
313 ::mce::Color const& color,
314 float alpha,
315 ::ui::TextAlignment alignment,
316 ::TextMeasureData const& textData,
317 ::CaretMeasureData const& caretData
318 );
319
320 MCAPI void $drawText(
321 ::Font& font,
322 ::RectangleArea const& rect,
323 ::std::string&& text,
324 ::mce::Color const& color,
325 float alpha,
326 ::ui::TextAlignment alignment,
327 ::TextMeasureData const& textData,
328 ::CaretMeasureData const& caretData
329 );
330
331 MCAPI void $flushText(float deltaTime, ::std::optional<float> obfuscateSwitchTime);
332
333 MCAPI void $drawImage(
334 ::mce::ClientTexture const& texture,
335 ::glm::vec2 const& position,
336 ::glm::vec2 const& size,
337 ::glm::vec2 const& uv,
338 ::glm::vec2 const& uvSize,
339 bool const colorCorrected
340 );
341
342 MCAPI void $drawNineslice(::mce::ClientTexture const& texture, ::NinesliceInfo const& info);
343
344 MCAPI void $flushImages(::mce::Color const& color, float alpha, ::HashedString const& materialNameHash);
345
346 MCAPI ::mce::TexturePtr $getTexture(::ResourceLocation const& resourceLocation, bool forceReload) const;
347
348 MCAPI ::mce::TexturePtr $getZippedTexture(
349 ::Core::Path const& zippedFolderPath,
350 ::ResourceLocation const& resourceLocation,
351 bool forceReload
352 ) const;
353
354 MCAPI bool $unloadTexture(::ResourceLocation const& resourceLocation);
355
356 MCAPI ::UITextureInfoPtr $getUITextureInfo(::ResourceLocation const& resourceLocation, bool forceReload) const;
357
358 MCAPI void $touchTexture(::ResourceLocation const& resourceLocation);
359
360 MCAPI void $beginSharedMeshBatch(::ComponentRenderBatch& renderBatch);
361
362 MCAPI void $endSharedMeshBatch(::ComponentRenderBatch& renderBatch);
363
364 MCAPI void $reserveSharedMeshBatch(uint64 vertexCount);
365
366 MCAPI uint64 $getSharedMeshBatchVertexCount() const;
367
368 MCAPI void $drawRectangle(::RectangleArea const& rect, ::mce::Color const& color, float alpha, int thickness);
369
370 MCAPI void $fillRectangle(::RectangleArea const& rect, ::mce::Color const& color, float alpha);
371
372 MCAPI void $increaseStencilRef();
373
374 MCAPI void $decreaseStencilRef();
375
376 MCAPI void $resetStencilRef();
377
378 MCAPI void $fillRectangleStencil(::RectangleArea const& rect);
379
380 MCAPI void $enableScissorTest(::RectangleArea const& rect);
381
382 MCAPI void $disableScissorTest();
383
384 MCAPI void $setClippingRectangle(::RectangleArea const& rect);
385
386 MCAPI void $setFullClippingRectangle();
387
388 MCAPI void $saveCurrentClippingRectangle();
389
390 MCAPI void $restoreSavedClippingRectangle();
391
392 MCAPI ::RectangleArea $getFullClippingRectangle() const;
393
394 MCAPI void $cleanup();
395
396 MCAPI void $removePersistentMeshes();
397
398 MCFOLD ::UIMeasureStrategy& $getMeasureStrategy();
399
400 MCAPI void $snapImageSizeToGrid(::glm::vec2& size) const;
401
402 MCAPI void $snapImagePositionToGrid(::glm::vec2& position) const;
403
404 MCAPI void $notifyImageEstimate(uint64 imageCount);
405
406 MCAPI bool $updateCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer);
407
408 MCAPI void $renderCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer, int pass);
409 // NOLINTEND
410
411public:
412 // vftables
413 // NOLINTBEGIN
414 MCNAPI static void** $vftable();
415 // NOLINTEND
416};
Definition Font.h:5
Definition MinecraftUIRenderContext.h:5
static MCAPI void ** $vftable()
Definition ScreenContext.h:5
Definition UIMeasureStrategy.h:5
Definition UIRenderContext.h:5
Definition UIScene.h:5
Definition UITextureInfoPtr.h:5
STL namespace.
Definition BatchKey.h:5
Definition CaretMeasureData.h:5
Definition ComponentRenderBatch.h:5
Definition CustomRenderComponent.h:5
Definition IUIRepository.h:5
Definition MinecraftUIRenderContext.h:70
Definition MinecraftUIRenderContext.h:89
MCAPI PersistentMeshItem(::BatchKey const &batchKey, ::std::vector<::mce::TexturePtr > textures, ::HashedString const &materialNameHash, uint numInstances)
MCAPI void * $ctor(::BatchKey const &batchKey, ::std::vector<::mce::TexturePtr > textures, ::HashedString const &materialNameHash, uint numInstances)
Definition MinecraftUIRenderContext.h:47
Definition NinesliceInfo.h:5
Definition TextMeasureData.h:5
Definition Alias.h:14