2 * Copyright (c) 2018 Samsung Electronics Co., Ltd. All rights reserved.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 #include "vpathmesure.h"
27 * start and end value must be normalized to [0 - 1]
28 * Path mesure trims the path from [start --> end]
29 * if start > end it treates as a loop and trims as two segment
30 * [0-->end] and [start --> 1]
32 VPath VPathMesure::trim(const VPath &path)
34 if (vCompare(mStart, mEnd)) return VPath();
36 if ((vCompare(mStart, 0.0f) && (vCompare(mEnd, 1.0f))) ||
37 (vCompare(mStart, 1.0f) && (vCompare(mEnd, 0.0f)))) return path;
39 float length = path.length();
42 float array[4] = {0.0f, length * mStart, //1st segment
43 (mEnd - mStart) * length, std::numeric_limits<float>::max(), //2nd segment
45 VDasher dasher(array, 4);
46 return dasher.dashed(path);
48 float array[4] = {length * mEnd, (mStart - mEnd) * length, //1st segment
49 (1 - mStart) * length, std::numeric_limits<float>::max(), //2nd segment
51 VDasher dasher(array, 4);
52 return dasher.dashed(path);