Imported GNU Classpath 0.19 + gcj-import-20051115.
* sources.am: Regenerated. * Makefile.in: Likewise. * scripts/makemake.tcl: Use glob -nocomplain. From-SVN: r107049
This commit is contained in:
parent
02e549bfaa
commit
8f523f3a10
1241 changed files with 97711 additions and 25284 deletions
|
@ -155,8 +155,9 @@ public class BoxView
|
|||
* automatically when any of the child view changes its preferences
|
||||
* via {@link #preferenceChanged(View, boolean, boolean)}.
|
||||
*
|
||||
* The layout will be updated the next time when {@link #setSize()} is
|
||||
* called, typically from within the {@link #paint()} method.
|
||||
* The layout will be updated the next time when
|
||||
* {@link #setSize(float, float)} is called, typically from within the
|
||||
* {@link #paint(Graphics, Shape)} method.
|
||||
*
|
||||
* Valid values for the axis are {@link View#X_AXIS} and
|
||||
* {@link View#Y_AXIS}.
|
||||
|
@ -216,12 +217,11 @@ public class BoxView
|
|||
* @param alloc the allocated region for the child to paint into
|
||||
* @param index the index of the child to be painted
|
||||
*
|
||||
* @see {@link #childAllocation}
|
||||
* @see #childAllocation(int, Rectangle)
|
||||
*/
|
||||
protected void paintChild(Graphics g, Rectangle alloc, int index)
|
||||
{
|
||||
View child = getView(index);
|
||||
childAllocation(index, alloc);
|
||||
child.paint(g, alloc);
|
||||
}
|
||||
|
||||
|
@ -301,18 +301,15 @@ public class BoxView
|
|||
setSize(bounds.width, bounds.height);
|
||||
|
||||
Rectangle inside = getInsideAllocation(a);
|
||||
|
||||
Rectangle copy = new Rectangle(inside);
|
||||
int count = getViewCount();
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
// TODO: Figure out if the parameter to paintChild is meant to
|
||||
// be the child allocation or the allocation of this BoxView.
|
||||
// I assume the second option here.
|
||||
// We pass this method a copy of the inside rectangle here because
|
||||
// it modifies the actual values.
|
||||
copy.setBounds(inside);
|
||||
paintChild(g, copy, i);
|
||||
childAllocation(i, copy);
|
||||
if (!copy.isEmpty()
|
||||
&& g.hitClip(copy.x, copy.y, copy.width, copy.height))
|
||||
paintChild(g, copy, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -361,6 +358,24 @@ public class BoxView
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the layout of the children of this <code>BoxView</code> along
|
||||
* the specified axis.
|
||||
*
|
||||
* @param span the target span
|
||||
* @param axis the axis that is examined
|
||||
* @param offsets an empty array, filled with the offsets of the children
|
||||
* @param spans an empty array, filled with the spans of the children
|
||||
*/
|
||||
protected void baselineLayout(int span, int axis, int[] offsets,
|
||||
int[] spans)
|
||||
{
|
||||
if (axis == myAxis)
|
||||
layoutMajorAxis(span, axis, offsets, spans);
|
||||
else
|
||||
layoutMinorAxis(span, axis, offsets, spans);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the size requirements of this <code>BoxView</code> along
|
||||
* its major axis, that is the axis specified in the constructor.
|
||||
|
@ -375,27 +390,8 @@ public class BoxView
|
|||
protected SizeRequirements calculateMajorAxisRequirements(int axis,
|
||||
SizeRequirements sr)
|
||||
{
|
||||
if (sr == null)
|
||||
sr = new SizeRequirements();
|
||||
else
|
||||
{
|
||||
sr.maximum = 0;
|
||||
sr.minimum = 0;
|
||||
sr.preferred = 0;
|
||||
sr.alignment = 0.5F;
|
||||
}
|
||||
|
||||
int count = getViewCount();
|
||||
|
||||
// Sum up the sizes of the children along the specified axis.
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
View child = getView(i);
|
||||
sr.minimum += child.getMinimumSpan(axis);
|
||||
sr.preferred += child.getPreferredSpan(axis);
|
||||
sr.maximum += child.getMaximumSpan(axis);
|
||||
}
|
||||
return sr;
|
||||
SizeRequirements[] childReqs = getChildRequirements(axis);
|
||||
return SizeRequirements.getTiledSizeRequirements(childReqs);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -413,48 +409,8 @@ public class BoxView
|
|||
protected SizeRequirements calculateMinorAxisRequirements(int axis,
|
||||
SizeRequirements sr)
|
||||
{
|
||||
if (sr == null)
|
||||
sr = new SizeRequirements();
|
||||
else
|
||||
{
|
||||
sr.maximum = 0;
|
||||
sr.minimum = 0;
|
||||
sr.preferred = 0;
|
||||
sr.alignment = 0.5F;
|
||||
}
|
||||
|
||||
int count = getViewCount();
|
||||
|
||||
int aboveBaseline = 0;
|
||||
int belowBaseline = 0;
|
||||
int aboveBaselineMin = 0;
|
||||
int belowBaselineMin = 0;
|
||||
int aboveBaselineMax = 0;
|
||||
int belowBaselineMax = 0;
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
View child = getView(i);
|
||||
float align = child.getAlignment(axis);
|
||||
int pref = (int) child.getPreferredSpan(axis);
|
||||
int min = (int) child.getMinimumSpan(axis);
|
||||
int max = (int) child.getMaximumSpan(axis);
|
||||
aboveBaseline += (int) (align * pref);
|
||||
belowBaseline += (int) ((1.F - align) * pref);
|
||||
aboveBaselineMin += (int) (align * min);
|
||||
belowBaselineMin += (int) ((1.F - align) * min);
|
||||
aboveBaselineMax += (int) (align * max);
|
||||
belowBaselineMax += (int) ((1.F - align) * max);
|
||||
}
|
||||
sr.minimum = aboveBaselineMin + belowBaselineMin;
|
||||
sr.maximum = aboveBaselineMax + belowBaselineMax;
|
||||
sr.preferred = aboveBaseline + belowBaseline;
|
||||
if (aboveBaseline == 0)
|
||||
sr.alignment = 1.0F;
|
||||
else
|
||||
sr.alignment = (float) (sr.preferred / aboveBaseline);
|
||||
|
||||
return sr;
|
||||
SizeRequirements[] childReqs = getChildRequirements(axis);
|
||||
return SizeRequirements.getAlignedSizeRequirements(childReqs);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -569,19 +525,8 @@ public class BoxView
|
|||
*/
|
||||
protected void layout(int width, int height)
|
||||
{
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
|
||||
if (myAxis == X_AXIS)
|
||||
{
|
||||
layoutMajorAxis(width, X_AXIS, offsetsX, spansX);
|
||||
layoutMinorAxis(height, Y_AXIS, offsetsY, spansY);
|
||||
}
|
||||
else
|
||||
{
|
||||
layoutMajorAxis(height, Y_AXIS, offsetsY, spansY);
|
||||
layoutMinorAxis(width, X_AXIS, offsetsX, spansX);
|
||||
}
|
||||
baselineLayout(width, X_AXIS, offsetsX, spansX);
|
||||
baselineLayout(height, Y_AXIS, offsetsY, spansY);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -591,28 +536,16 @@ public class BoxView
|
|||
* to layout the children
|
||||
* @param axis the axis along which the layout is performed
|
||||
* @param offsets the array that holds the offsets of the children on exit
|
||||
* @param offsets the array that holds the spans of the children on exit
|
||||
* @param spans the array that holds the spans of the children on exit
|
||||
*/
|
||||
protected void layoutMajorAxis(int targetSpan, int axis, int[] offsets,
|
||||
int[] spans)
|
||||
{
|
||||
// Allocate SizeRequirements for each child view.
|
||||
int count = getViewCount();
|
||||
SizeRequirements[] childReqs = new SizeRequirements[count];
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
View view = getView(i);
|
||||
childReqs[i] = new SizeRequirements((int) view.getMinimumSpan(axis),
|
||||
(int) view.getPreferredSpan(axis),
|
||||
(int) view.getMaximumSpan(axis),
|
||||
view.getAlignment(axis));
|
||||
}
|
||||
|
||||
SizeRequirements[] childReqs = getChildRequirements(axis);
|
||||
// Calculate the spans and offsets using the SizeRequirements uility
|
||||
// methods.
|
||||
SizeRequirements.calculateTiledPositions(targetSpan, null, childReqs,
|
||||
offsets, spans);
|
||||
|
||||
validateLayout(axis);
|
||||
}
|
||||
|
||||
|
@ -623,26 +556,21 @@ public class BoxView
|
|||
* to layout the children
|
||||
* @param axis the axis along which the layout is performed
|
||||
* @param offsets the array that holds the offsets of the children on exit
|
||||
* @param offsets the array that holds the spans of the children on exit
|
||||
* @param spans the array that holds the spans of the children on exit
|
||||
*/
|
||||
protected void layoutMinorAxis(int targetSpan, int axis, int[] offsets,
|
||||
int[] spans)
|
||||
{
|
||||
// Allocate SizeRequirements for each child view.
|
||||
int count = getViewCount();
|
||||
SizeRequirements[] childReqs = new SizeRequirements[count];
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
View view = getView(i);
|
||||
childReqs[i] = new SizeRequirements((int) view.getMinimumSpan(axis),
|
||||
(int) view.getPreferredSpan(axis),
|
||||
(int) view.getMaximumSpan(axis),
|
||||
view.getAlignment(axis));
|
||||
}
|
||||
|
||||
SizeRequirements[] childReqs = getChildRequirements(axis);
|
||||
// Calculate the spans and offsets using the SizeRequirements uility
|
||||
// methods.
|
||||
SizeRequirements.calculateAlignedPositions(targetSpan, null, childReqs,
|
||||
// TODO: This might be an opportunity for performance optimization. Here
|
||||
// we could use a cached instance of SizeRequirements instead of passing
|
||||
// null to baselineRequirements. However, this would involve rewriting
|
||||
// the baselineRequirements() method to not use the SizeRequirements
|
||||
// utility method, since they cannot reuse a cached instance.
|
||||
SizeRequirements total = baselineRequirements(axis, null);
|
||||
SizeRequirements.calculateAlignedPositions(targetSpan, total, childReqs,
|
||||
offsets, spans);
|
||||
validateLayout(axis);
|
||||
}
|
||||
|
@ -692,6 +620,9 @@ public class BoxView
|
|||
layoutChanged(X_AXIS);
|
||||
if (this.height != (int) height)
|
||||
layoutChanged(Y_AXIS);
|
||||
|
||||
this.width = (int) width;
|
||||
this.height = (int) height;
|
||||
|
||||
Rectangle outside = new Rectangle(0, 0, this.width, this.height);
|
||||
Rectangle inside = getInsideAllocation(outside);
|
||||
|
@ -711,4 +642,99 @@ public class BoxView
|
|||
if (axis == Y_AXIS)
|
||||
yLayoutValid = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the size requirements of this view's children for the major
|
||||
* axis.
|
||||
*
|
||||
* @return the size requirements of this view's children for the major
|
||||
* axis
|
||||
*/
|
||||
SizeRequirements[] getChildRequirements(int axis)
|
||||
{
|
||||
// Allocate SizeRequirements for each child view.
|
||||
int count = getViewCount();
|
||||
SizeRequirements[] childReqs = new SizeRequirements[count];
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
View view = getView(i);
|
||||
childReqs[i] = new SizeRequirements((int) view.getMinimumSpan(axis),
|
||||
(int) view.getPreferredSpan(axis),
|
||||
(int) view.getMaximumSpan(axis),
|
||||
view.getAlignment(axis));
|
||||
}
|
||||
return childReqs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the span for the child view with the given index for the specified
|
||||
* axis.
|
||||
*
|
||||
* @param axis the axis to examine, either <code>X_AXIS</code> or
|
||||
* <code>Y_AXIS</code>
|
||||
* @param childIndex the index of the child for for which to return the span
|
||||
*
|
||||
* @return the span for the child view with the given index for the specified
|
||||
* axis
|
||||
*/
|
||||
protected int getSpan(int axis, int childIndex)
|
||||
{
|
||||
if (axis == X_AXIS)
|
||||
return spansX[childIndex];
|
||||
else
|
||||
return spansY[childIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the offset for the child view with the given index for the
|
||||
* specified axis.
|
||||
*
|
||||
* @param axis the axis to examine, either <code>X_AXIS</code> or
|
||||
* <code>Y_AXIS</code>
|
||||
* @param childIndex the index of the child for for which to return the span
|
||||
*
|
||||
* @return the offset for the child view with the given index for the
|
||||
* specified axis
|
||||
*/
|
||||
protected int getOffset(int axis, int childIndex)
|
||||
{
|
||||
if (axis == X_AXIS)
|
||||
return offsetsX[childIndex];
|
||||
else
|
||||
return offsetsY[childIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the alignment for this box view for the specified axis. The
|
||||
* axis that is tiled (the major axis) will be requested to be aligned
|
||||
* centered (0.5F). The minor axis alignment depends on the child view's
|
||||
* total alignment.
|
||||
*
|
||||
* @param axis the axis which is examined
|
||||
*
|
||||
* @return the alignment for this box view for the specified axis
|
||||
*/
|
||||
public float getAlignment(int axis)
|
||||
{
|
||||
if (axis == myAxis)
|
||||
return 0.5F;
|
||||
else
|
||||
return baselineRequirements(axis, null).alignment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by a child View when its preferred span has changed.
|
||||
*
|
||||
* @param width indicates that the preferred width of the child changed.
|
||||
* @param height indicates that the preferred height of the child changed.
|
||||
* @param child the child View.
|
||||
*/
|
||||
public void preferenceChanged (View child, boolean width, boolean height)
|
||||
{
|
||||
if (width)
|
||||
xLayoutValid = false;
|
||||
if (height)
|
||||
yLayoutValid = false;
|
||||
super.preferenceChanged(child, width, height);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue