From 7cf12ddb8c1c2cf7a0eec63439148cc6b2bc104a Mon Sep 17 00:00:00 2001 From: herb Date: Mon, 11 Jan 2016 08:08:56 -0800 Subject: Fix radii calculation code to handle large radii. BUG=472147 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1569403002 Review URL: https://codereview.chromium.org/1569403002 --- tests/ScaleToSidesTest.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/ScaleToSidesTest.cpp (limited to 'tests/ScaleToSidesTest.cpp') diff --git a/tests/ScaleToSidesTest.cpp b/tests/ScaleToSidesTest.cpp new file mode 100644 index 0000000000..60e82be529 --- /dev/null +++ b/tests/ScaleToSidesTest.cpp @@ -0,0 +1,49 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkScaleToSides.h" + +#include +#include "Test.h" + +DEF_TEST(ScaleToSides, reporter) { + float interestingValues[] = { + 0.0f, + 0.5f, + 1.0f, + 2.0f, + 3.0f, + 33.0f, + 33554430.0f, + 33554431.0f, + 33554464.0f, + 333333332.0f, + 333333333.0f, + 333333334.0f, + FLT_MAX, + FLT_EPSILON, + FLT_MIN + }; + + int numInterestingValues = (int)SK_ARRAY_COUNT(interestingValues); + + for (int i = 0; i < numInterestingValues; i++) { + for (int j = 0; j < numInterestingValues; j++) { + for (int k = 0; k < numInterestingValues; k++) { + float radius1 = interestingValues[i]; + float radius2 = interestingValues[j]; + float width = interestingValues[k]; + if (width > 0.0f) { + double scale = (double)width / ((double)radius1 + (double)radius2); + if (scale < 1.0) { + ScaleToSides::AdjustRadii(width, scale, &radius1, &radius2); + } + } + } + } + } +} -- cgit v1.2.3