am dad4780b: Merge change I3834b1cb into eclair-mr2

Merge commit 'dad4780bbd6be0891ea8745bd274fc8d6882f071' into eclair-mr2-plus-aosp

* commit 'dad4780bbd6be0891ea8745bd274fc8d6882f071':
  support for multiline paragraph style indentation
This commit is contained in:
Mark Wagner
2009-10-19 14:04:00 -07:00
committed by Android Git Automerger
4 changed files with 49 additions and 3 deletions

View File

@@ -143781,6 +143781,29 @@
</parameter> </parameter>
</method> </method>
</interface> </interface>
<interface name="LeadingMarginSpan.LeadingMarginSpan2"
abstract="true"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<implements name="android.text.style.LeadingMarginSpan">
</implements>
<implements name="android.text.style.WrapTogetherSpan">
</implements>
<method name="getLeadingMarginLineCount"
return="int"
abstract="true"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
</method>
</interface>
<class name="LeadingMarginSpan.Standard" <class name="LeadingMarginSpan.Standard"
extends="java.lang.Object" extends="java.lang.Object"
abstract="false" abstract="false"

View File

@@ -294,7 +294,12 @@ public abstract class Layout {
lbaseline, lbottom, buf, lbaseline, lbottom, buf,
start, end, par, this); start, end, par, this);
left += margin.getLeadingMargin(par); boolean useMargin = par;
if (margin instanceof LeadingMarginSpan.LeadingMarginSpan2) {
int count = ((LeadingMarginSpan.LeadingMarginSpan2)margin).getLeadingMarginLineCount();
useMargin = count > i;
}
left += margin.getLeadingMargin(useMargin);
} }
} }
} }
@@ -1293,7 +1298,13 @@ public abstract class Layout {
LeadingMarginSpan.class); LeadingMarginSpan.class);
for (int i = 0; i < spans.length; i++) { for (int i = 0; i < spans.length; i++) {
left += spans[i].getLeadingMargin(par); boolean margin = par;
LeadingMarginSpan span = spans[i];
if (span instanceof LeadingMarginSpan.LeadingMarginSpan2) {
int count = ((LeadingMarginSpan.LeadingMarginSpan2)span).getLeadingMarginLineCount();
margin = count >= line;
}
left += span.getLeadingMargin(margin);
} }
} }
} }

View File

@@ -161,6 +161,7 @@ extends Layout
else else
end++; end++;
int firstWidthLineCount = 1;
int firstwidth = outerwidth; int firstwidth = outerwidth;
int restwidth = outerwidth; int restwidth = outerwidth;
@@ -171,8 +172,12 @@ extends Layout
sp = spanned.getSpans(start, end, LeadingMarginSpan.class); sp = spanned.getSpans(start, end, LeadingMarginSpan.class);
for (int i = 0; i < sp.length; i++) { for (int i = 0; i < sp.length; i++) {
LeadingMarginSpan lms = sp[i];
firstwidth -= sp[i].getLeadingMargin(true); firstwidth -= sp[i].getLeadingMargin(true);
restwidth -= sp[i].getLeadingMargin(false); restwidth -= sp[i].getLeadingMargin(false);
if (lms instanceof LeadingMarginSpan.LeadingMarginSpan2) {
firstWidthLineCount = ((LeadingMarginSpan.LeadingMarginSpan2)lms).getLeadingMarginLineCount();
}
} }
chooseht = spanned.getSpans(start, end, LineHeightSpan.class); chooseht = spanned.getSpans(start, end, LineHeightSpan.class);
@@ -750,7 +755,9 @@ extends Layout
fitascent = fitdescent = fittop = fitbottom = 0; fitascent = fitdescent = fittop = fitbottom = 0;
okascent = okdescent = oktop = okbottom = 0; okascent = okdescent = oktop = okbottom = 0;
width = restwidth; if (--firstWidthLineCount <= 0) {
width = restwidth;
}
} }
} }
} }

View File

@@ -33,6 +33,11 @@ extends ParagraphStyle
CharSequence text, int start, int end, CharSequence text, int start, int end,
boolean first, Layout layout); boolean first, Layout layout);
public interface LeadingMarginSpan2 extends LeadingMarginSpan, WrapTogetherSpan {
public int getLeadingMarginLineCount();
};
public static class Standard implements LeadingMarginSpan, ParcelableSpan { public static class Standard implements LeadingMarginSpan, ParcelableSpan {
private final int mFirst, mRest; private final int mFirst, mRest;