aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMarkus Nißl <unknown>2022-09-02 10:55:40 +1000
committerMarkus Nißl <unknown>2022-09-02 10:55:40 +1000
commit4faa21ad78c41b863ad0ca9b205cf48a025c229e (patch)
tree81bfc9c106ce9926300dd4f1f0c53bd0e156c9a1 /src
parented6f18d6bf0e71014de9193a88e4b9cf5a957d2f (diff)
downloadscintilla-mirror-4faa21ad78c41b863ad0ca9b205cf48a025c229e.tar.gz
Add PixelAlignCeil and call PixelAlign* to avoid repeated code.
Diffstat (limited to 'src')
-rw-r--r--src/Geometry.cxx20
-rw-r--r--src/Geometry.h1
2 files changed, 13 insertions, 8 deletions
diff --git a/src/Geometry.cxx b/src/Geometry.cxx
index 97e99d431..c6247f755 100644
--- a/src/Geometry.cxx
+++ b/src/Geometry.cxx
@@ -75,10 +75,14 @@ XYPOSITION PixelAlignFloor(XYPOSITION xy, int pixelDivisions) noexcept {
return std::floor(xy * pixelDivisions) / pixelDivisions;
}
+XYPOSITION PixelAlignCeil(XYPOSITION xy, int pixelDivisions) noexcept {
+ return std::ceil(xy * pixelDivisions) / pixelDivisions;
+}
+
Point PixelAlign(const Point &pt, int pixelDivisions) noexcept {
return Point(
- std::round(pt.x * pixelDivisions) / pixelDivisions,
- std::round(pt.y * pixelDivisions) / pixelDivisions);
+ PixelAlign(pt.x, pixelDivisions),
+ PixelAlign(pt.y, pixelDivisions));
}
PRectangle PixelAlign(const PRectangle &rc, int pixelDivisions) noexcept {
@@ -88,19 +92,19 @@ PRectangle PixelAlign(const PRectangle &rc, int pixelDivisions) noexcept {
// On retina displays, the positions should be moved to the nearest device
// pixel which is the nearest half logical pixel.
return PRectangle(
- std::round(rc.left * pixelDivisions) / pixelDivisions,
+ PixelAlign(rc.left, pixelDivisions),
PixelAlignFloor(rc.top, pixelDivisions),
- std::round(rc.right * pixelDivisions) / pixelDivisions,
+ PixelAlign(rc.right, pixelDivisions),
PixelAlignFloor(rc.bottom, pixelDivisions));
}
PRectangle PixelAlignOutside(const PRectangle &rc, int pixelDivisions) noexcept {
// Move left and right side to extremes (floor(left) ceil(right)) to avoid blurry visuals.
return PRectangle(
- std::floor(rc.left * pixelDivisions) / pixelDivisions,
- std::floor(rc.top * pixelDivisions) / pixelDivisions,
- std::ceil(rc.right * pixelDivisions) / pixelDivisions,
- std::floor(rc.bottom * pixelDivisions) / pixelDivisions);
+ PixelAlignFloor(rc.left, pixelDivisions),
+ PixelAlignFloor(rc.top, pixelDivisions),
+ PixelAlignCeil(rc.right, pixelDivisions),
+ PixelAlignFloor(rc.bottom, pixelDivisions));
}
ColourRGBA ColourRGBA::MixedWith(ColourRGBA other) const noexcept {
diff --git a/src/Geometry.h b/src/Geometry.h
index 5a9b3e291..4fd90afad 100644
--- a/src/Geometry.h
+++ b/src/Geometry.h
@@ -149,6 +149,7 @@ Interval HorizontalBounds(PRectangle rc) noexcept;
XYPOSITION PixelAlign(XYPOSITION xy, int pixelDivisions) noexcept;
XYPOSITION PixelAlignFloor(XYPOSITION xy, int pixelDivisions) noexcept;
+XYPOSITION PixelAlignCeil(XYPOSITION xy, int pixelDivisions) noexcept;
Point PixelAlign(const Point &pt, int pixelDivisions) noexcept;