Add support for paddingVertical, paddingHorizontal, borderVertical, borderHorizontal

* implement padding & border as arrays of values
* apply padding & border with the correct priority (e.g. left, horizontal, all)
* update transpiler & tests
This commit is contained in:
Felix Oghină
2014-11-20 17:59:40 +00:00
parent 6ee0c5817c
commit 8903bb15c6
5 changed files with 96 additions and 132 deletions

View File

@@ -53,6 +53,26 @@ public class CSSNode {
Float.NaN
};
private final float[] mPadding = new float[] {
Float.NaN,
Float.NaN,
Float.NaN,
Float.NaN,
Float.NaN,
Float.NaN,
Float.NaN
};
private final float[] mBorder = new float[] {
Float.NaN,
Float.NaN,
Float.NaN,
Float.NaN,
Float.NaN,
Float.NaN,
Float.NaN
};
// Only one copy kept around to keep from allocating a bunch of MeasureOutput objects
// NOT THREAD SAFE! NOT RE-ENTRANT SAFE!
private static final MeasureOutput MEASURE_OUTPUT = new MeasureOutput();
@@ -265,6 +285,14 @@ public class CSSNode {
setSpacing(mMargin, spacingType, margin, style.margin);
}
public void setPadding(int spacingType, float padding) {
setSpacing(mPadding, spacingType, padding, style.padding);
}
public void setBorder(int spacingType, float border) {
setSpacing(mBorder, spacingType, border, style.border);
}
protected void setSpacing(float[] spacingDef, int spacingType, float spacing, float[] cssStyle) {
if (!valuesEqual(spacingDef[spacingType], spacing)) {
spacingDef[spacingType] = spacing;
@@ -292,34 +320,6 @@ public class CSSNode {
}
}
public void setPaddingTop(float paddingTop) {
if (!valuesEqual(style.paddingTop, paddingTop)) {
style.paddingTop = paddingTop;
dirty();
}
}
public void setPaddingBottom(float paddingBottom) {
if (!valuesEqual(style.paddingBottom, paddingBottom)) {
style.paddingBottom = paddingBottom;
dirty();
}
}
public void setPaddingLeft(float paddingLeft) {
if (!valuesEqual(style.paddingLeft, paddingLeft)) {
style.paddingLeft = paddingLeft;
dirty();
}
}
public void setPaddingRight(float paddingRight) {
if (!valuesEqual(style.paddingRight, paddingRight)) {
style.paddingRight = paddingRight;
dirty();
}
}
public void setPositionTop(float positionTop) {
if (!valuesEqual(style.positionTop, positionTop)) {
style.positionTop = positionTop;
@@ -348,34 +348,6 @@ public class CSSNode {
}
}
public void setBorderTop(float borderTop) {
if (!valuesEqual(style.borderTop, borderTop)) {
style.borderTop = borderTop;
dirty();
}
}
public void setBorderBottom(float borderBottom) {
if (!valuesEqual(style.borderBottom, borderBottom)) {
style.borderBottom = borderBottom;
dirty();
}
}
public void setBorderLeft(float borderLeft) {
if (!valuesEqual(style.borderLeft, borderLeft)) {
style.borderLeft = borderLeft;
dirty();
}
}
public void setBorderRight(float borderRight) {
if (!valuesEqual(style.borderRight, borderRight)) {
style.borderRight = borderRight;
dirty();
}
}
public void setStyleWidth(float width) {
if (!valuesEqual(style.width, width)) {
style.width = width;