Use constexpr points array to avoid indexing in DrawThisAppearance().
This change was one of the motivations for the prior constexpr
construction change for fx_coordinates.h.
Change-Id: I7b4e79ca6d636c2094dc1286c0a8b4c7ca3e1b24
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/110911
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/pwl/cpwl_sbbutton.cpp b/fpdfsdk/pwl/cpwl_sbbutton.cpp
index 889ce5e..28f037a 100644
--- a/fpdfsdk/pwl/cpwl_sbbutton.cpp
+++ b/fpdfsdk/pwl/cpwl_sbbutton.cpp
@@ -45,23 +45,23 @@
nTransparency, 80, 220);
// draw arrow
if (rectWnd.top - rectWnd.bottom > 6.0f) {
- float fX = rectWnd.left + 1.5f;
- float fY = rectWnd.bottom;
std::vector<CFX_PointF> pts;
- static constexpr float kOffsetsX[] = {2.5f, 2.5f, 4.5f, 6.5f,
- 6.5f, 4.5f, 2.5f};
- static constexpr float kOffsetsY[] = {5.0f, 6.0f, 4.0f, 6.0f,
- 5.0f, 3.0f, 5.0f};
- static constexpr float kOffsetsMinY[] = {4.0f, 3.0f, 5.0f, 3.0f,
- 4.0f, 6.0f, 4.0f};
- static_assert(std::size(kOffsetsX) == std::size(kOffsetsY),
- "Wrong offset count");
- static_assert(std::size(kOffsetsX) == std::size(kOffsetsMinY),
- "Wrong offset count");
- const float* pOffsetsY =
- m_eSBButtonType == Type::kMinButton ? kOffsetsMinY : kOffsetsY;
- for (size_t i = 0; i < std::size(kOffsetsX); ++i)
- pts.push_back(CFX_PointF(fX + kOffsetsX[i], fY + pOffsetsY[i]));
+ CFX_PointF origin(rectWnd.left + 1.5f, rectWnd.bottom);
+ if (m_eSBButtonType == Type::kMinButton) {
+ static constexpr CFX_PointF kOffsetsMin[] = {
+ {2.5f, 4.0f}, {2.5f, 3.0f}, {4.5f, 5.0f}, {6.5f, 3.0f},
+ {6.5f, 4.0f}, {4.5f, 6.0f}, {2.5f, 4.0f}};
+ for (const auto& offset : kOffsetsMin) {
+ pts.push_back(origin + offset);
+ }
+ } else {
+ static constexpr CFX_PointF kOffsets[] = {
+ {2.5f, 5.0f}, {2.5f, 6.0f}, {4.5f, 4.0f}, {6.5f, 6.0f},
+ {6.5f, 5.0f}, {4.5f, 3.0f}, {2.5f, 5.0f}};
+ for (const auto& offset : kOffsets) {
+ pts.push_back(origin + offset);
+ }
+ }
pDevice->DrawFillArea(mtUser2Device, pts,
ArgbEncode(nTransparency, 255, 255, 255));
}