From 207522a93afac79b0acbccdbb647e9c05998dee8 Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Wed, 28 Jul 2021 16:40:32 -0500 Subject: [PATCH] GAH there are turds at the bottom and I can't fix them --- src/renderer/dx/DxRenderer.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/renderer/dx/DxRenderer.cpp b/src/renderer/dx/DxRenderer.cpp index 6596a2705..323c8ecaf 100644 --- a/src/renderer/dx/DxRenderer.cpp +++ b/src/renderer/dx/DxRenderer.cpp @@ -1381,7 +1381,8 @@ try std::swap(_d2dBitmap, _d2dOtherBitmap); // Figure out how much of the screen to scroll, and where to scroll it to. - til::point scrollInPixels = _invalidScroll * _fontRenderData->GlyphCell(); + til::size glyphSize{ _fontRenderData->GlyphCell() }; + til::point scrollInPixels = _invalidScroll * glyphSize; til::point sourceOrigin{ 0, 0 }; // D2D_POINT_2U is an unsigned point, it won't accept negative // numbers. If we want to scroll the frame contents up (s.t. delta.y @@ -1394,10 +1395,19 @@ try } D2D_POINT_2U tgtPos{ scrollInPixels.x(), scrollInPixels.y() }; - D2D1_RECT_U srcRect{ sourceOrigin.x(), - sourceOrigin.y(), - _displaySizePixels.width(), - _displaySizePixels.height() }; + + // auto heightOffset = std::max(sourceOrigin.y(), scrollInPixels.y()); + auto heightOffset = sourceOrigin.y(); + til::size realBufferSize{ _lastBufferSize * glyphSize }; + til::size srcDimensions{ realBufferSize.width() - sourceOrigin.x(), + realBufferSize.height() - heightOffset }; + til::rectangle source{ sourceOrigin, srcDimensions }; + D2D1_RECT_U srcRect{ + source.left(), + source.top(), + source.right(), + source.bottom(), + }; // Get our _d2dDeviceContext as a ID2D1RenderTarget Microsoft::WRL::ComPtr otherRenderTarget;