Fix thumbnail screenshot error in 58632a7f3c

Scaling didn't clamp above zero, see T89868.
This commit is contained in:
Campbell Barton 2021-09-06 16:55:46 +10:00
parent 3e44592cb9
commit b4c9f88cbe
1 changed files with 17 additions and 7 deletions

View File

@ -1515,7 +1515,9 @@ static void wm_history_file_update(void)
/** \} */
/* -------------------------------------------------------------------- */
/** \name Save Main Blend-File (internal) by capturing main window.
/** \name Save Main Blend-File (internal) Screen-Shot
*
* Screen-shot the active window.
* \{ */
static ImBuf *blend_file_thumb_from_screenshot(bContext *C, BlendThumbnail **thumb_pt)
@ -1540,11 +1542,17 @@ static ImBuf *blend_file_thumb_from_screenshot(bContext *C, BlendThumbnail **thu
ImBuf *ibuf = IMB_allocFromBuffer(buffer, NULL, win_size[0], win_size[1], 24);
if (ibuf) {
int ex = (ibuf->x > ibuf->y) ? BLEN_THUMB_SIZE :
(int)((ibuf->x / (float)ibuf->y) * BLEN_THUMB_SIZE);
int ey = (ibuf->x > ibuf->y) ? (int)((ibuf->y / (float)ibuf->x) * BLEN_THUMB_SIZE) :
BLEN_THUMB_SIZE;
/* Filesystem thumbnail image can be 256x256. */
int ex, ey;
if (ibuf->x > ibuf->y) {
ex = BLEN_THUMB_SIZE;
ey = max_ii(1, (int)(((float)ibuf->y / (float)ibuf->x) * BLEN_THUMB_SIZE));
}
else {
ex = max_ii(1, (int)(((float)ibuf->x / (float)ibuf->y) * BLEN_THUMB_SIZE));
ey = BLEN_THUMB_SIZE;
}
/* File-system thumbnail image can be 256x256. */
IMB_scaleImBuf(ibuf, ex * 2, ey * 2);
/* Thumbnail inside blend should be 128x128. */
@ -1565,7 +1573,9 @@ static ImBuf *blend_file_thumb_from_screenshot(bContext *C, BlendThumbnail **thu
/** \} */
/* -------------------------------------------------------------------- */
/** \name Save Main Blend-File (internal) by rendering scene
/** \name Save Main Blend-File (internal) Camera View
*
* Render the current scene with the active camera.
* \{ */
/* screen can be NULL */