@ -1360,7 +1360,8 @@ ImFontAtlas::ImFontAtlas()
TexPixelsAlpha8 = NULL ;
TexPixelsRGBA32 = NULL ;
TexWidth = TexHeight = 0 ;
TexUvWhitePixel = ImVec2 ( 0 , 0 ) ;
TexUvScale = ImVec2 ( 0.0f , 0.0f ) ;
TexUvWhitePixel = ImVec2 ( 0.0f , 0.0f ) ;
for ( int n = 0 ; n < IM_ARRAYSIZE ( CustomRectIds ) ; n + + )
CustomRectIds [ n ] = - 1 ;
}
@ -1604,8 +1605,8 @@ void ImFontAtlas::CalcCustomRectUV(const CustomRect* rect, ImVec2* out_uv_min, I
{
IM_ASSERT ( TexWidth > 0 & & TexHeight > 0 ) ; // Font atlas needs to be built before we can calculate UV coordinates
IM_ASSERT ( rect - > IsPacked ( ) ) ; // Make sure the rectangle has been packed
* out_uv_min = ImVec2 ( ( float ) rect - > X / TexWidth , ( float ) rect - > Y / TexHeight ) ;
* out_uv_max = ImVec2 ( ( float ) ( rect - > X + rect - > Width ) / TexWidth , ( float ) ( rect - > Y + rect - > Height ) / TexHeight ) ;
* out_uv_min = ImVec2 ( ( float ) rect - > X * TexUvScale . x , ( float ) rect - > Y * TexUvScale . y ) ;
* out_uv_max = ImVec2 ( ( float ) ( rect - > X + rect - > Width ) * TexUvScale . x , ( float ) ( rect - > Y + rect - > Height ) * TexUvScale . y ) ;
}
bool ImFontAtlas : : GetMouseCursorTexData ( ImGuiMouseCursor cursor_type , ImVec2 * out_offset , ImVec2 * out_size , ImVec2 out_uv_border [ 2 ] , ImVec2 out_uv_fill [ 2 ] )
@ -1615,16 +1616,15 @@ bool ImFontAtlas::GetMouseCursorTexData(ImGuiMouseCursor cursor_type, ImVec2* ou
ImFontAtlas : : CustomRect & r = CustomRects [ CustomRectIds [ 0 ] ] ;
IM_ASSERT ( r . ID = = FONT_ATLAS_DEFAULT_TEX_DATA_ID ) ;
ImVec2 uv_scale ( 1.0f / TexWidth , 1.0f / TexHeight ) ;
ImVec2 pos = FONT_ATLAS_DEFAULT_TEX_CURSOR_DATA [ cursor_type ] [ 0 ] + ImVec2 ( ( float ) r . X , ( float ) r . Y ) ;
ImVec2 size = FONT_ATLAS_DEFAULT_TEX_CURSOR_DATA [ cursor_type ] [ 1 ] ;
* out_size = size ;
* out_offset = FONT_ATLAS_DEFAULT_TEX_CURSOR_DATA [ cursor_type ] [ 2 ] ;
out_uv_border [ 0 ] = ( pos ) * uv_s cale;
out_uv_border [ 1 ] = ( pos + size ) * uv_s cale;
out_uv_border [ 0 ] = ( pos ) * TexUvS cale;
out_uv_border [ 1 ] = ( pos + size ) * TexUvS cale;
pos . x + = FONT_ATLAS_DEFAULT_TEX_DATA_W_HALF + 1 ;
out_uv_fill [ 0 ] = ( pos ) * uv_s cale;
out_uv_fill [ 1 ] = ( pos + size ) * uv_s cale;
out_uv_fill [ 0 ] = ( pos ) * TexUvS cale;
out_uv_fill [ 1 ] = ( pos + size ) * TexUvS cale;
return true ;
}
@ -1658,7 +1658,8 @@ bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas)
atlas - > TexID = NULL ;
atlas - > TexWidth = atlas - > TexHeight = 0 ;
atlas - > TexUvWhitePixel = ImVec2 ( 0 , 0 ) ;
atlas - > TexUvScale = ImVec2 ( 0.0f , 0.0f ) ;
atlas - > TexUvWhitePixel = ImVec2 ( 0.0f , 0.0f ) ;
atlas - > ClearTexData ( ) ;
// Count glyphs/ranges
@ -1767,6 +1768,7 @@ bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas)
// Create texture
atlas - > TexHeight = ImUpperPowerOfTwo ( atlas - > TexHeight ) ;
atlas - > TexUvScale = ImVec2 ( 1.0f / atlas - > TexWidth , 1.0f / atlas - > TexHeight ) ;
atlas - > TexPixelsAlpha8 = ( unsigned char * ) ImGui : : MemAlloc ( atlas - > TexWidth * atlas - > TexHeight ) ;
memset ( atlas - > TexPixelsAlpha8 , 0 , atlas - > TexWidth * atlas - > TexHeight ) ;
spc . pixels = atlas - > TexPixelsAlpha8 ;
@ -1908,8 +1910,7 @@ static void ImFontAtlasBuildRenderDefaultTexData(ImFontAtlas* atlas)
atlas - > TexPixelsAlpha8 [ offset0 ] = FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS [ n ] = = ' . ' ? 0xFF : 0x00 ;
atlas - > TexPixelsAlpha8 [ offset1 ] = FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS [ n ] = = ' X ' ? 0xFF : 0x00 ;
}
const ImVec2 tex_uv_scale ( 1.0f / atlas - > TexWidth , 1.0f / atlas - > TexHeight ) ;
atlas - > TexUvWhitePixel = ImVec2 ( ( r . X + 0.5f ) * tex_uv_scale . x , ( r . Y + 0.5f ) * tex_uv_scale . y ) ;
atlas - > TexUvWhitePixel = ImVec2 ( ( r . X + 0.5f ) * atlas - > TexUvScale . x , ( r . Y + 0.5f ) * atlas - > TexUvScale . y ) ;
}
void ImFontAtlasBuildFinish ( ImFontAtlas * atlas )