From 36c21f77121722c1c9f0985f5ed174df154ab654 Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Mon, 15 Apr 2002 16:56:28 +0000 Subject: [PATCH] (Rob Lahaye): fix clipping when using the basic image loader. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3998 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/graphics/ChangeLog | 3 +++ src/graphics/GraphicsImageXPM.C | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/graphics/ChangeLog b/src/graphics/ChangeLog index 69a18cb8e4..af276a35d8 100644 --- a/src/graphics/ChangeLog +++ b/src/graphics/ChangeLog @@ -1,3 +1,6 @@ +2002-04-16 Rob Lahaye + * GraphicsImageXPM.C: fix clipping for boundingbox y-coordinates + 2002-04-08 Angus Leeming * GraphicsCacheItem.C (findTargetFormat): fix bug waiting to bite: diff --git a/src/graphics/GraphicsImageXPM.C b/src/graphics/GraphicsImageXPM.C index 37aaec0741..7289e37154 100644 --- a/src/graphics/GraphicsImageXPM.C +++ b/src/graphics/GraphicsImageXPM.C @@ -244,11 +244,17 @@ void GImageXPM::clip(GParams const & params) return; dimension * new_data = image_.initialisedData(new_width, new_height); + dimension * it = new_data; + + // The image is stored in memory from upper-left to lower-right, + // so we loop from yt to yb. dimension const * old_data = image_.data(); + dimension const * start_row = old_data + + image_.width() * (image_.height() - params.bb.yt); - dimension * it = new_data; - dimension const * start_row = old_data; - for (size_t row = params.bb.yb; row < params.bb.yt; ++row) { + // the Bounding Box dimensions are never less than zero, so we can use + // "unsigned int row" here + for (dimension row = params.bb.yb; row < params.bb.yt; ++row) { dimension const * begin = start_row + params.bb.xl; dimension const * end = start_row + params.bb.xr; it = std::copy(begin, end, it); -- 2.39.2