SubwayTooter-Android-App/_Emoji/src/main/java/com/android/ide/common/vectordrawable/PathBuilder.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();
}
}