[java] implement proper spacing objects, with support for default spacing

This commit is contained in:
Felix Oghină
2015-05-14 13:59:13 +01:00
parent ba879af8ae
commit bb8fdf57eb
6 changed files with 359 additions and 273 deletions

View File

@@ -49,10 +49,6 @@ public class CSSNode {
public void measure(CSSNode node, float width, MeasureOutput measureOutput);
}
private final float[] mMargin = Spacing.newFullSpacingArray();
private final float[] mPadding = Spacing.newFullSpacingArray();
private final float[] mBorder = Spacing.newFullSpacingArray();
// VisibleForTesting
/*package*/ final CSSStyle style = new CSSStyle();
/*package*/ final CSSLayout layout = new CSSLayout();
@@ -263,24 +259,19 @@ public class CSSNode {
}
public void setMargin(int spacingType, float margin) {
setSpacing(mMargin, style.margin, spacingType, margin);
if (style.margin.set(spacingType, margin)) {
dirty();
}
}
public void setPadding(int spacingType, float padding) {
setSpacing(mPadding, style.padding, spacingType, padding);
if (style.padding.set(spacingType, padding)) {
dirty();
}
}
public void setBorder(int spacingType, float border) {
setSpacing(mBorder, style.border, spacingType, border);
}
protected void setSpacing(
float[] spacingDef,
float[] cssStyle,
int spacingType,
float spacing) {
if (!valuesEqual(spacingDef[spacingType], spacing)) {
Spacing.updateSpacing(spacingDef, cssStyle, spacingType, spacing, 0);
if (style.border.set(spacingType, border)) {
dirty();
}
}
@@ -342,4 +333,20 @@ public class CSSNode {
public float getLayoutHeight() {
return layout.height;
}
/**
* Get this node's padding, as defined by style + default padding.
*/
public Spacing getStylePadding() {
return style.padding;
}
/**
* Set a default padding (left/top/right/bottom) for this node.
*/
public void setDefaultPadding(int spacingType, float padding) {
if (style.padding.setDefault(spacingType, padding)) {
dirty();
}
}
}