(Font) Added notification on atlas layer change
Fixed irrelevant error message when a font destroy an atlas Former-commit-id: ddbd04e9172f2d35a8e0cf8a37fe48724aeb5c64
This commit is contained in:
parent
77347c8582
commit
48ecb058f0
|
|
@ -80,6 +80,7 @@ class NAZARA_API NzFont : public NzResource, NzAbstractAtlas::Listener, NzNonCop
|
||||||
enum ModicationCode
|
enum ModicationCode
|
||||||
{
|
{
|
||||||
ModificationCode_AtlasChanged,
|
ModificationCode_AtlasChanged,
|
||||||
|
ModificationCode_AtlasLayerChanged,
|
||||||
ModificationCode_GlyphCacheCleared,
|
ModificationCode_GlyphCacheCleared,
|
||||||
ModificationCode_KerningCacheCleared,
|
ModificationCode_KerningCacheCleared,
|
||||||
ModificationCode_SizeInfoCacheCleared
|
ModificationCode_SizeInfoCacheCleared
|
||||||
|
|
@ -110,6 +111,7 @@ class NAZARA_API NzFont : public NzResource, NzAbstractAtlas::Listener, NzNonCop
|
||||||
|
|
||||||
nzUInt64 ComputeKey(unsigned int characterSize, nzUInt32 style) const;
|
nzUInt64 ComputeKey(unsigned int characterSize, nzUInt32 style) const;
|
||||||
bool OnAtlasCleared(const NzAbstractAtlas* atlas, void* userdata) override;
|
bool OnAtlasCleared(const NzAbstractAtlas* atlas, void* userdata) override;
|
||||||
|
bool OnAtlasLayerChange(const NzAbstractAtlas* atlas, NzAbstractImage* oldLayer, NzAbstractImage* newLayer, void* userdata) override;
|
||||||
void OnAtlasReleased(const NzAbstractAtlas* atlas, void* userdata) override;
|
void OnAtlasReleased(const NzAbstractAtlas* atlas, void* userdata) override;
|
||||||
const Glyph& PrecacheGlyph(GlyphMap& glyphMap, unsigned int characterSize, nzUInt32 style, char32_t character) const;
|
const Glyph& PrecacheGlyph(GlyphMap& glyphMap, unsigned int characterSize, nzUInt32 style, char32_t character) const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ m_minimumSizeStep(1)
|
||||||
NzFont::~NzFont()
|
NzFont::~NzFont()
|
||||||
{
|
{
|
||||||
Destroy();
|
Destroy();
|
||||||
|
SetAtlas(nullptr); // On libère l'atlas par la même occasion
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzFont::ClearGlyphCache()
|
void NzFont::ClearGlyphCache()
|
||||||
|
|
@ -355,6 +356,28 @@ bool NzFont::OnAtlasCleared(const NzAbstractAtlas* atlas, void* userdata)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NzFont::OnAtlasLayerChange(const NzAbstractAtlas* atlas, NzAbstractImage* oldLayer, NzAbstractImage* newLayer, void* userdata)
|
||||||
|
{
|
||||||
|
NazaraUnused(atlas);
|
||||||
|
NazaraUnused(oldLayer);
|
||||||
|
NazaraUnused(newLayer);
|
||||||
|
NazaraUnused(userdata);
|
||||||
|
|
||||||
|
#ifdef NAZARA_DEBUG
|
||||||
|
// Est-ce qu'il s'agit bien de notre atlas ?
|
||||||
|
if (m_atlas.get() != atlas)
|
||||||
|
{
|
||||||
|
NazaraInternalError("Notified by a non-listening-to resource");
|
||||||
|
return false; // On ne veut plus être notifié par cette ressource, évidemment
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Pour faciliter le travail des ressources qui nous écoutent
|
||||||
|
NotifyModified(ModificationCode_AtlasLayerChanged);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void NzFont::OnAtlasReleased(const NzAbstractAtlas* atlas, void* userdata)
|
void NzFont::OnAtlasReleased(const NzAbstractAtlas* atlas, void* userdata)
|
||||||
{
|
{
|
||||||
NazaraUnused(atlas);
|
NazaraUnused(atlas);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue