From fa8be35ac4f04cc6d49e9e30b64fefccb49a9a11 Mon Sep 17 00:00:00 2001 From: cxl Date: Wed, 9 May 2018 08:27:37 +0000 Subject: [PATCH] IconDes: fixed divide by zero issue git-svn-id: svn://ultimatepp.org/upp/trunk@11936 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/IconDes/Bar.cpp | 4 ++-- uppsrc/IconDes/IconDes.cpp | 6 ++++-- uppsrc/IconDes/Paint.cpp | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/uppsrc/IconDes/Bar.cpp b/uppsrc/IconDes/Bar.cpp index b358d9f41..484394859 100644 --- a/uppsrc/IconDes/Bar.cpp +++ b/uppsrc/IconDes/Bar.cpp @@ -44,12 +44,12 @@ void IconDes::SetMagnify(int mag) void IconDes::ZoomIn() { - SetMagnify(magnify+2); + SetMagnify(max(magnify, 1) + 2); } void IconDes::ZoomOut() { - SetMagnify(magnify-2); + SetMagnify(max(magnify, 1) - 2); } void IconDes::DoPaste() diff --git a/uppsrc/IconDes/IconDes.cpp b/uppsrc/IconDes/IconDes.cpp index 85313075c..8a6c14145 100644 --- a/uppsrc/IconDes/IconDes.cpp +++ b/uppsrc/IconDes/IconDes.cpp @@ -52,14 +52,16 @@ void IconDes::SyncShow() void IconDes::SetSb() { + magnify = max(magnify, 1); if(IsCurrent()) { sb.SetTotal(GetImageSize()); - sb.SetPage(GetSize() / max(magnify, 1)); + sb.SetPage(GetSize() / magnify); } } void IconDes::Scroll() { + magnify = max(magnify, 1); scroller.Scroll(*this, GetSize(), sb, Size(magnify, magnify)); } @@ -101,7 +103,7 @@ void IconDes::SetCurrentImage(ImageBuffer& ib) Point IconDes::GetPos(Point p) { - return p / magnify + sb; + return p / max(magnify, 1) + sb; } void IconDes::FinishPaste() diff --git a/uppsrc/IconDes/Paint.cpp b/uppsrc/IconDes/Paint.cpp index 6c17dbdae..3d9ff3c46 100644 --- a/uppsrc/IconDes/Paint.cpp +++ b/uppsrc/IconDes/Paint.cpp @@ -53,6 +53,7 @@ void IconDes::Paint(Draw& w) scroller.Set(spos); Size isz = image.GetSize(); bool pastepaint = HasCapture() && IsPasting(); + magnify = max(magnify, 1); if(magnify == 1) { w.DrawRect(sz, SColorPaper()); ImageBuffer pb(isz);