1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2016 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkScaleToSides.h" 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include <algorithm> 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "Test.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDEF_TEST(ScaleToSides, reporter) { 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot double interestingValues[] = { 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // From sample app - PathFuzzer 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 260.01662826538085938, 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 63.61007690429687500, 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 795.98901367187500000, 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 217.71697616577148438, 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 686.15960693359375000, 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 556.57641601562500000, 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // From skp bitbucket 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 111.60000228881836, 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 55.800003051757813, 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 0.99999996581812677920, 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 0.0, 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 0.5, 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 1.0, 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 2.0, 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 3.0, 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 33.0, 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 33554430.0, 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 33554431.0, 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 33554464.0, 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 333333332.0, 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 333333333.0, 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 333333334.0, 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot FLT_MAX, 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot FLT_EPSILON, 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot FLT_MIN 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }; 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int numInterestingValues = (int)SK_ARRAY_COUNT(interestingValues); 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int s = 0; s <= numInterestingValues; s++) { 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int i = 0; i < numInterestingValues; i++) { 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int j = 0; j < numInterestingValues; j++) { 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int k = 0; k < numInterestingValues; k++) { 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot float radius1 = (float)interestingValues[i]; 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot float radius2 = (float)interestingValues[j]; 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot double width = interestingValues[k]; 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot double scale = width / ((double)radius1 + (double)radius2); 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (width > 0.0) { 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (s != 0) { 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot scale = std::min(scale, interestingValues[s-1]); 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (scale < 1.0 && scale > 0.0) { 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScaleToSides::AdjustRadii(width, scale, &radius1, &radius2); 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 66