95 lines
2.7 KiB
Java
95 lines
2.7 KiB
Java
/*
|
|
* Copyright (C) 2015 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package com.android.ide.common.vectordrawable;
|
|
|
|
/**
|
|
* Build a string for Svg file's path data.
|
|
*/
|
|
class PathBuilder {
|
|
private StringBuilder mPathData = new StringBuilder();
|
|
|
|
private String booleanToString(boolean flag) {
|
|
return flag ? "1" : "0";
|
|
}
|
|
|
|
public PathBuilder absoluteMoveTo(float x, float y) {
|
|
mPathData.append("M"+ x + "," + y);
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder relativeMoveTo(float x, float y) {
|
|
mPathData.append("m"+ x + "," + y);
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder absoluteLineTo(float x, float y) {
|
|
mPathData.append("L"+ x + "," + y);
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder relativeLineTo(float x, float y) {
|
|
mPathData.append("l"+ x + "," + y);
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder absoluteVerticalTo(float v) {
|
|
mPathData.append("V"+ v);
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder relativeVerticalTo(float v) {
|
|
mPathData.append("v"+ v);
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder absoluteHorizontalTo(float h) {
|
|
mPathData.append("H"+ h);
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder relativeHorizontalTo(float h) {
|
|
mPathData.append("h"+ h);
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder absoluteArcTo(float rx, float ry, boolean rotation,
|
|
boolean largeArc, boolean sweep, float x, float y) {
|
|
mPathData.append("A"+ rx + "," + ry + "," + booleanToString(rotation) + "," +
|
|
booleanToString(largeArc) + "," + booleanToString(sweep) + "," + x + "," + y );
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder relativeArcTo(float rx, float ry, boolean rotation,
|
|
boolean largeArc, boolean sweep, float x, float y) {
|
|
mPathData.append("a"+ rx + "," + ry + "," + booleanToString(rotation) + "," +
|
|
booleanToString(largeArc) + "," + booleanToString(sweep) + "," + x + "," + y );
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder absoluteClose() {
|
|
mPathData.append("Z");
|
|
return this;
|
|
}
|
|
|
|
public PathBuilder relativeClose() {
|
|
mPathData.append("z");
|
|
return this;
|
|
}
|
|
|
|
public String toString() {
|
|
return mPathData.toString();
|
|
}
|
|
} |