@@ -3467,27 +3467,28 @@ static void ImFontAtlasBuildUpdateBasicTexData(ImFontAtlas* atlas, bool add_and_
3467
3467
builder->PackIdMouseCursors = ImFontAtlasPackAddRect (atlas, pack_size.x , pack_size.y );
3468
3468
if (builder->PackIdMouseCursors == ImFontAtlasRectId_Invalid)
3469
3469
return ;
3470
- ImTextureRect* r = ImFontAtlasPackGetRect (atlas, builder->PackIdMouseCursors );
3470
+ ImFontAtlasRect r;
3471
+ atlas->GetCustomRect (builder->PackIdMouseCursors , &r);
3471
3472
3472
3473
// Draw to texture
3473
3474
if (add_and_draw)
3474
3475
{
3475
3476
if (atlas->Flags & ImFontAtlasFlags_NoMouseCursors)
3476
3477
{
3477
3478
// 2x2 white pixels
3478
- ImFontAtlasBuildRenderBitmapFromString (atlas, r-> x , r-> y , 2 , 2 , " XX" " XX" , ' X' );
3479
+ ImFontAtlasBuildRenderBitmapFromString (atlas, r. x , r. y , 2 , 2 , " XX" " XX" , ' X' );
3479
3480
}
3480
3481
else
3481
3482
{
3482
3483
// 2x2 white pixels + mouse cursors
3483
- const int x_for_white = r-> x ;
3484
- const int x_for_black = r-> x + FONT_ATLAS_DEFAULT_TEX_DATA_W + 1 ;
3485
- ImFontAtlasBuildRenderBitmapFromString (atlas, x_for_white, r-> y , FONT_ATLAS_DEFAULT_TEX_DATA_W, FONT_ATLAS_DEFAULT_TEX_DATA_H, FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS, ' .' );
3486
- ImFontAtlasBuildRenderBitmapFromString (atlas, x_for_black, r-> y , FONT_ATLAS_DEFAULT_TEX_DATA_W, FONT_ATLAS_DEFAULT_TEX_DATA_H, FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS, ' X' );
3484
+ const int x_for_white = r. x ;
3485
+ const int x_for_black = r. x + FONT_ATLAS_DEFAULT_TEX_DATA_W + 1 ;
3486
+ ImFontAtlasBuildRenderBitmapFromString (atlas, x_for_white, r. y , FONT_ATLAS_DEFAULT_TEX_DATA_W, FONT_ATLAS_DEFAULT_TEX_DATA_H, FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS, ' .' );
3487
+ ImFontAtlasBuildRenderBitmapFromString (atlas, x_for_black, r. y , FONT_ATLAS_DEFAULT_TEX_DATA_W, FONT_ATLAS_DEFAULT_TEX_DATA_H, FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS, ' X' );
3487
3488
}
3488
3489
}
3489
- ImFontAtlasTextureBlockQueueUpload (atlas, atlas->TexData , r-> x , r-> y , r-> w , r-> h );
3490
- atlas->TexUvWhitePixel = ImVec2 ((r-> x + 0 .5f ) * atlas->TexUvScale .x , (r-> y + 0 .5f ) * atlas->TexUvScale .y );
3490
+ ImFontAtlasTextureBlockQueueUpload (atlas, atlas->TexData , r. x , r. y , r. w , r. h );
3491
+ atlas->TexUvWhitePixel = ImVec2 ((r. x + 0 .5f ) * atlas->TexUvScale .x , (r. y + 0 .5f ) * atlas->TexUvScale .y );
3491
3492
}
3492
3493
3493
3494
static void ImFontAtlasBuildUpdateLinesTexData (ImFontAtlas* atlas, bool add_and_draw)
@@ -3503,7 +3504,8 @@ static void ImFontAtlasBuildUpdateLinesTexData(ImFontAtlas* atlas, bool add_and_
3503
3504
builder->PackIdLinesTexData = ImFontAtlasPackAddRect (atlas, pack_size.x , pack_size.y );
3504
3505
if (builder->PackIdLinesTexData == ImFontAtlasRectId_Invalid)
3505
3506
return ;
3506
- ImTextureRect* r = ImFontAtlasPackGetRect (atlas, builder->PackIdLinesTexData );
3507
+ ImFontAtlasRect r;
3508
+ atlas->GetCustomRect (builder->PackIdLinesTexData , &r);
3507
3509
3508
3510
// Register texture region for thick lines
3509
3511
// The +2 here is to give space for the end caps, whilst height +1 is to accommodate the fact we have a zero-width row
@@ -3514,18 +3516,18 @@ static void ImFontAtlasBuildUpdateLinesTexData(ImFontAtlas* atlas, bool add_and_
3514
3516
// Each line consists of at least two empty pixels at the ends, with a line of solid pixels in the middle
3515
3517
int y = n;
3516
3518
int line_width = n;
3517
- int pad_left = (r-> w - line_width) / 2 ;
3518
- int pad_right = r-> w - (pad_left + line_width);
3519
+ int pad_left = (r. w - line_width) / 2 ;
3520
+ int pad_right = r. w - (pad_left + line_width);
3519
3521
3520
3522
// Write each slice
3521
- IM_ASSERT (pad_left + line_width + pad_right == r-> w && y < r-> h ); // Make sure we're inside the texture bounds before we start writing pixels
3523
+ IM_ASSERT (pad_left + line_width + pad_right == r. w && y < r. h ); // Make sure we're inside the texture bounds before we start writing pixels
3522
3524
if (add_and_draw)
3523
3525
{
3524
3526
switch (tex->Format )
3525
3527
{
3526
3528
case ImTextureFormat_Alpha8:
3527
3529
{
3528
- ImU8* write_ptr = (ImU8*)tex->GetPixelsAt (r-> x , r-> y + y);
3530
+ ImU8* write_ptr = (ImU8*)tex->GetPixelsAt (r. x , r. y + y);
3529
3531
for (int i = 0 ; i < pad_left; i++)
3530
3532
*(write_ptr + i) = 0x00 ;
3531
3533
@@ -3538,7 +3540,7 @@ static void ImFontAtlasBuildUpdateLinesTexData(ImFontAtlas* atlas, bool add_and_
3538
3540
}
3539
3541
case ImTextureFormat_RGBA32:
3540
3542
{
3541
- ImU32* write_ptr = (ImU32*)(void *)tex->GetPixelsAt (r-> x , r-> y + y);
3543
+ ImU32* write_ptr = (ImU32*)(void *)tex->GetPixelsAt (r. x , r. y + y);
3542
3544
for (int i = 0 ; i < pad_left; i++)
3543
3545
*(write_ptr + i) = IM_COL32 (255 , 255 , 255 , 0 );
3544
3546
@@ -3553,12 +3555,12 @@ static void ImFontAtlasBuildUpdateLinesTexData(ImFontAtlas* atlas, bool add_and_
3553
3555
}
3554
3556
3555
3557
// Calculate UVs for this line
3556
- ImVec2 uv0 = ImVec2 ((float )(r-> x + pad_left - 1 ), (float )(r-> y + y)) * atlas->TexUvScale ;
3557
- ImVec2 uv1 = ImVec2 ((float )(r-> x + pad_left + line_width + 1 ), (float )(r-> y + y + 1 )) * atlas->TexUvScale ;
3558
+ ImVec2 uv0 = ImVec2 ((float )(r. x + pad_left - 1 ), (float )(r. y + y)) * atlas->TexUvScale ;
3559
+ ImVec2 uv1 = ImVec2 ((float )(r. x + pad_left + line_width + 1 ), (float )(r. y + y + 1 )) * atlas->TexUvScale ;
3558
3560
float half_v = (uv0.y + uv1.y ) * 0 .5f ; // Calculate a constant V in the middle of the row to avoid sampling artifacts
3559
3561
atlas->TexUvLines [n] = ImVec4 (uv0.x , half_v, uv1.x , half_v);
3560
3562
}
3561
- ImFontAtlasTextureBlockQueueUpload (atlas, tex, r-> x , r-> y , r-> w , r-> h );
3563
+ ImFontAtlasTextureBlockQueueUpload (atlas, tex, r. x , r. y , r. w , r. h );
3562
3564
}
3563
3565
3564
3566
// -----------------------------------------------------------------------------------------------------------------------------
0 commit comments