As some public properties of `IGameConfig` are being set on the first
`Framework` tick, there was a short window that those properties were
null, which goes against the interface declaration.
This commit fixes that, by making those properties block for the full
initialization of the class.
A possible side effect is that a plugin that is set to block the game
from loading until it loads will now hang the game if it tries to access
the game configuration from its constructor, instead of throwing a
`NullReferenceException`. As it would mean that the plugin was buggy at
the first place and it would have sometimes failed to load anyway, it
might as well be a non-breaking change.
* Add SetFontScaleMode(ImFontPtr, FontScaleMode)
`IgnoreGlobalScale` was advertised as "excludes the given font from
global scaling", but the intent I had in mind was "excludes the given
font from being scaled in any manner". As the latter functionality is
needed, obsoleted `IgnoreGlobalScale` and added `SetFontScaleMode`.
* Make it correct
* Name consistency
* feat: Default Minimum/Maximum WindowSizeConstraints
If `MinimumSize` or `MaximumSize` are not set when defining a `WindowSizeConstraints`, they will be effectively unbounded.
* chore: Make internal windows unbounded on max size
* Ignore max value if it's smaller than minimum in any dimension
On systems without support for B4G4R4A4 pixel format (when DirectX
feature level 11_1 is missing), the conversion will take place; a
copy-and-paste error made the read pointer advance twice as fast as it
should have been.
* Change MemoryHelper to allocate less
* Use StringBuilder pool for ReadSeStringAsString
* fix
* Use CreateReadOnlySpanFromNullTerminated where possible
While not calling this will work on native x64 machines as it's likely
a no-op under x64, it is possible that the function does something
under emulated environments. As there is no downside to calling this
function, this commit makes the behavior more correct.
ImGui docking functions are called outside our drawing context (from
ImGui::NewFrame), which includes most of dock-related drawing calls.
However, ImGui::RenderWindowDecoration is called from ImGui::Begin,
which may be under the effect of other pushed font. As IG::RWD
references to the ImDrawList irrelevant to the global shared state, it
was trying to draw a rectangle referring to a pixel that is not
guaranteed to be a white pixel. This commit fixes that by forcing the
use of the default font for IG::RWD when the window is docked.
* Implement FontChooserDialog
* Minor fixes
* Fixes 2
* Add Reset default font button
* Add failsafe
* reduce uninteresting exception message
* Add remarks to use AttachExtraGlyphsForDalamudLanguage
* Support advanced font configuration options
* fixes
* Shift ui elements
* more fixes
* Add To(Localized)String for IFontSpec
* Untie GlobalFontScale from default font size
* Layout fixes
* Make UiBuilder.DefaultFontSize point to user configured value
* Update example for NewDelegateFontHandle
* Font interfaces: write notes on not intended for plugins to implement
* Update default gamma to 1.7 to match closer to prev behavior (1.4**2)
* Fix console window layout