MCPcopy Create free account
hub / github.com/defold/defold / SetFontMap

Function SetFontMap

engine/render/src/render/font/fontmap.cpp:174–246  ·  view source on GitHub ↗

* Update the font map with the specified parameters. The parameters are consumed and should not be read after this call. * @param font_map Font map handle * @param params Parameters to update * @return result true if the font map was created correctly */

Source from the content-addressed store, hash-verified

172 * @return result true if the font map was created correctly
173 */
174 static bool SetFontMap(HFontMap font_map, dmRender::HRenderContext render_context, dmGraphics::HContext graphics_context, FontMapParams& params)
175 {
176 font_map->m_FontCollection = params.m_FontCollection;
177 font_map->m_NameHash = params.m_NameHash;
178 font_map->m_Size = params.m_Size;
179 font_map->m_ShadowX = params.m_ShadowX;
180 font_map->m_ShadowY = params.m_ShadowY;
181 font_map->m_MaxAscent = params.m_MaxAscent;
182 font_map->m_MaxDescent = params.m_MaxDescent;
183 font_map->m_SdfSpread = params.m_SdfSpread;
184 font_map->m_SdfOutline = params.m_SdfOutline;
185 font_map->m_SdfShadow = params.m_SdfShadow;
186 font_map->m_Alpha = params.m_Alpha;
187 font_map->m_OutlineAlpha = params.m_OutlineAlpha;
188 font_map->m_ShadowAlpha = params.m_ShadowAlpha;
189 font_map->m_LayerMask = params.m_LayerMask;
190 font_map->m_IsMonospaced = params.m_IsMonospaced;
191 font_map->m_IsDynamic = params.m_IsDynamic;
192 font_map->m_Padding = params.m_Padding;
193
194 font_map->m_OnGlyphCacheMiss = params.m_OnGlyphCacheMiss;
195 font_map->m_OnGlyphCacheMissContext = params.m_OnGlyphCacheMissContext;
196
197 // Is the cache allowed to grow?
198 font_map->m_DynamicCacheSize = params.m_CacheWidth < params.m_CacheMaxWidth || params.m_CacheHeight < params.m_CacheMaxHeight;
199 font_map->m_CacheWidth = params.m_CacheWidth;
200 font_map->m_CacheHeight = params.m_CacheHeight;
201 font_map->m_CacheMaxWidth = params.m_CacheMaxWidth;
202 font_map->m_CacheMaxHeight = params.m_CacheMaxHeight;
203
204 uint16_t cell_width = dmMath::Max(8U, params.m_CacheCellWidth);
205 uint16_t cell_height = dmMath::Max(8U, params.m_CacheCellHeight);
206
207 font_map->m_CacheCellPadding = params.m_CacheCellPadding;
208 font_map->m_CacheChannels = params.m_GlyphChannels;
209
210 SetupCache(font_map, font_map->m_CacheWidth, font_map->m_CacheHeight,
211 cell_width, cell_height, params.m_CacheCellMaxAscent);
212
213 switch (font_map->m_CacheChannels)
214 {
215 case 1:
216 font_map->m_CacheFormat = dmGraphics::TEXTURE_FORMAT_LUMINANCE;
217 break;
218 case 3:
219 font_map->m_CacheFormat = dmGraphics::TEXTURE_FORMAT_RGB;
220 break;
221 case 4:
222 font_map->m_CacheFormat = dmGraphics::TEXTURE_FORMAT_RGBA;
223 break;
224 default:
225 dmLogError("Invalid channel count for glyph data: %u", params.m_GlyphChannels);
226 return false;
227 };
228
229 if (params.m_ImageFormat == dmRenderDDF::TYPE_BITMAP)
230 {
231 dmGraphics::GetDefaultTextureFilters(graphics_context, font_map->m_MinFilter, font_map->m_MagFilter);

Callers 1

NewFontMapFunction · 0.85

Calls 5

SetupCacheFunction · 0.85
GetDefaultTextureFiltersFunction · 0.85
RecreateTextureFunction · 0.85
ConvertMinTextureFilterFunction · 0.70
MaxFunction · 0.50

Tested by

no test coverage detected