mirror of
https://github.com/ocornut/imgui.git
synced 2026-01-11 00:04:24 +00:00
This commit is contained in:
parent
c3a3a39e92
commit
e6913f58b9
2 changed files with 19 additions and 0 deletions
|
|
@ -268,6 +268,7 @@ Other changes:
|
||||||
- Debug Tools: Added io.ConfigDebugHighlightIdConflictsShowItemPicker (defaults to true)
|
- Debug Tools: Added io.ConfigDebugHighlightIdConflictsShowItemPicker (defaults to true)
|
||||||
to allow disabled Item Picker suggestion in user facing builds. (#7961, #7669)
|
to allow disabled Item Picker suggestion in user facing builds. (#7961, #7669)
|
||||||
- Debug Tools: Tweaked layout of ID Stack Tool and always display full path. (#4631)
|
- Debug Tools: Tweaked layout of ID Stack Tool and always display full path. (#4631)
|
||||||
|
- imgui_freetype: update lunasvg API to support v3.0+. (#8656, #6842, #6591)
|
||||||
- Misc: Various zealous warning fixes for newer version of Clang.
|
- Misc: Various zealous warning fixes for newer version of Clang.
|
||||||
- Misc: Added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursors
|
- Misc: Added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursors
|
||||||
(busy/wait/hourglass shape, with or without an arrow cursor).
|
(busy/wait/hourglass shape, with or without an arrow cursor).
|
||||||
|
|
|
||||||
|
|
@ -880,8 +880,12 @@ static FT_Error ImGuiLunasvgPortRender(FT_GlyphSlot slot, FT_Pointer* _state)
|
||||||
|
|
||||||
// rows is height, pitch (or stride) equals to width * sizeof(int32)
|
// rows is height, pitch (or stride) equals to width * sizeof(int32)
|
||||||
lunasvg::Bitmap bitmap((uint8_t*)slot->bitmap.buffer, slot->bitmap.width, slot->bitmap.rows, slot->bitmap.pitch);
|
lunasvg::Bitmap bitmap((uint8_t*)slot->bitmap.buffer, slot->bitmap.width, slot->bitmap.rows, slot->bitmap.pitch);
|
||||||
|
#if LUNASVG_VERSION_MAJOR >= 3
|
||||||
|
state->svg->render(bitmap, state->matrix); // state->matrix is already scaled and translated
|
||||||
|
#else
|
||||||
state->svg->setMatrix(state->svg->matrix().identity()); // Reset the svg matrix to the default value
|
state->svg->setMatrix(state->svg->matrix().identity()); // Reset the svg matrix to the default value
|
||||||
state->svg->render(bitmap, state->matrix); // state->matrix is already scaled and translated
|
state->svg->render(bitmap, state->matrix); // state->matrix is already scaled and translated
|
||||||
|
#endif
|
||||||
state->err = FT_Err_Ok;
|
state->err = FT_Err_Ok;
|
||||||
return state->err;
|
return state->err;
|
||||||
}
|
}
|
||||||
|
|
@ -904,7 +908,11 @@ static FT_Error ImGuiLunasvgPortPresetSlot(FT_GlyphSlot slot, FT_Bool cache, FT_
|
||||||
return state->err;
|
return state->err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LUNASVG_VERSION_MAJOR >= 3
|
||||||
|
lunasvg::Box box = state->svg->boundingBox();
|
||||||
|
#else
|
||||||
lunasvg::Box box = state->svg->box();
|
lunasvg::Box box = state->svg->box();
|
||||||
|
#endif
|
||||||
double scale = std::min(metrics.x_ppem / box.w, metrics.y_ppem / box.h);
|
double scale = std::min(metrics.x_ppem / box.w, metrics.y_ppem / box.h);
|
||||||
double xx = (double)document->transform.xx / (1 << 16);
|
double xx = (double)document->transform.xx / (1 << 16);
|
||||||
double xy = -(double)document->transform.xy / (1 << 16);
|
double xy = -(double)document->transform.xy / (1 << 16);
|
||||||
|
|
@ -913,6 +921,15 @@ static FT_Error ImGuiLunasvgPortPresetSlot(FT_GlyphSlot slot, FT_Bool cache, FT_
|
||||||
double x0 = (double)document->delta.x / 64 * box.w / metrics.x_ppem;
|
double x0 = (double)document->delta.x / 64 * box.w / metrics.x_ppem;
|
||||||
double y0 = -(double)document->delta.y / 64 * box.h / metrics.y_ppem;
|
double y0 = -(double)document->delta.y / 64 * box.h / metrics.y_ppem;
|
||||||
|
|
||||||
|
#if LUNASVG_VERSION_MAJOR >= 3
|
||||||
|
// Scale, transform and pre-translate the matrix for the rendering step
|
||||||
|
state->matrix = lunasvg::Matrix::translated(-box.x, -box.y);
|
||||||
|
state->matrix.multiply(lunasvg::Matrix(xx, xy, yx, yy, x0, y0));
|
||||||
|
state->matrix.scale(scale, scale);
|
||||||
|
|
||||||
|
// Apply updated transformation to the bounding box
|
||||||
|
box.transform(state->matrix);
|
||||||
|
#else
|
||||||
// Scale and transform, we don't translate the svg yet
|
// Scale and transform, we don't translate the svg yet
|
||||||
state->matrix.identity();
|
state->matrix.identity();
|
||||||
state->matrix.scale(scale, scale);
|
state->matrix.scale(scale, scale);
|
||||||
|
|
@ -924,6 +941,7 @@ static FT_Error ImGuiLunasvgPortPresetSlot(FT_GlyphSlot slot, FT_Bool cache, FT_
|
||||||
|
|
||||||
// Get the box again after the transformation
|
// Get the box again after the transformation
|
||||||
box = state->svg->box();
|
box = state->svg->box();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Calculate the bitmap size
|
// Calculate the bitmap size
|
||||||
slot->bitmap_left = FT_Int(box.x);
|
slot->bitmap_left = FT_Int(box.x);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue