You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/04/26 08:50:54 UTC
incubator-weex git commit: + [android] Use TextDecorationSpan to
implement "text-decoraion" instead of split spans.
Repository: incubator-weex
Updated Branches:
refs/heads/0.13-dev cf755d4b5 -> 9b8709d4a
+ [android] Use TextDecorationSpan to implement "text-decoraion" instead of split spans.
This is just an optimization, the behavior of the .js code would not be affected.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/9b8709d4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/9b8709d4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/9b8709d4
Branch: refs/heads/0.13-dev
Commit: 9b8709d4aa3514462be1a98a5d53b97ae901bdc2
Parents: cf755d4
Author: YorkShen <sh...@gmail.com>
Authored: Mon Apr 24 16:07:48 2017 +0800
Committer: YorkShen <sh...@gmail.com>
Committed: Wed Apr 26 16:31:00 2017 +0800
----------------------------------------------------------------------
.../com/taobao/weex/dom/TextDecorationSpan.java | 55 ++++++++++++++++++++
.../main/java/com/taobao/weex/dom/WXStyle.java | 32 ++++++++----
.../com/taobao/weex/dom/WXTextDomObject.java | 11 +---
.../weex/ui/component/WXTextDecoration.java | 1 +
4 files changed, 79 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9b8709d4/android/sdk/src/main/java/com/taobao/weex/dom/TextDecorationSpan.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/TextDecorationSpan.java b/android/sdk/src/main/java/com/taobao/weex/dom/TextDecorationSpan.java
new file mode 100644
index 0000000..c7d2579
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/dom/TextDecorationSpan.java
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.taobao.weex.dom;
+
+
+import android.support.annotation.NonNull;
+import android.text.TextPaint;
+import android.text.style.CharacterStyle;
+import android.text.style.UpdateAppearance;
+
+import com.taobao.weex.ui.component.WXTextDecoration;
+
+public class TextDecorationSpan extends CharacterStyle
+ implements UpdateAppearance {
+
+ private final WXTextDecoration mTextDecoration;
+
+ public TextDecorationSpan(@NonNull WXTextDecoration wxTextDecoration) {
+ this.mTextDecoration = wxTextDecoration;
+ }
+
+ @Override
+ public void updateDrawState(TextPaint tp) {
+ switch (mTextDecoration) {
+ case LINETHROUGH:
+ tp.setUnderlineText(false);
+ tp.setStrikeThruText(true);
+ break;
+ case UNDERLINE:
+ tp.setUnderlineText(true);
+ tp.setStrikeThruText(false);
+ break;
+ case NONE:
+ tp.setUnderlineText(false);
+ tp.setStrikeThruText(false);
+ break;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9b8709d4/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java b/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java
index 6d45fd2..0573d77 100644
--- a/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java
+++ b/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java
@@ -71,18 +71,28 @@ public class WXStyle implements Map<String, Object>,Cloneable {
* text-decoration
**/
public static WXTextDecoration getTextDecoration(Map<String, Object> style) {
- Object obj = style.get(Constants.Name.TEXT_DECORATION);
- if (obj == null) {
- return WXTextDecoration.NONE;
- }
- String textDecoration = obj.toString();
- if (textDecoration.equals("underline")) {
- return WXTextDecoration.UNDERLINE;
- }
- if (textDecoration.equals("line-through")) {
- return WXTextDecoration.LINETHROUGH;
+ Object obj;
+ WXTextDecoration ret;
+ if (style == null || (obj = style.get(Constants.Name.TEXT_DECORATION)) == null) {
+ ret = WXTextDecoration.NONE;
+ } else {
+ String textDecoration = obj.toString();
+ switch (textDecoration) {
+ case "underline":
+ ret = WXTextDecoration.UNDERLINE;
+ break;
+ case "line-through":
+ ret = WXTextDecoration.LINETHROUGH;
+ break;
+ case "none":
+ ret = WXTextDecoration.NONE;
+ break;
+ default:
+ ret = WXTextDecoration.INVALID;
+ break;
+ }
}
- return WXTextDecoration.NONE;
+ return ret;
}
public static String getTextColor(Map<String, Object> style) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9b8709d4/android/sdk/src/main/java/com/taobao/weex/dom/WXTextDomObject.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/WXTextDomObject.java b/android/sdk/src/main/java/com/taobao/weex/dom/WXTextDomObject.java
index 03b84a9..8a69f50 100644
--- a/android/sdk/src/main/java/com/taobao/weex/dom/WXTextDomObject.java
+++ b/android/sdk/src/main/java/com/taobao/weex/dom/WXTextDomObject.java
@@ -33,8 +33,6 @@ import android.text.TextUtils;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.AlignmentSpan;
import android.text.style.ForegroundColorSpan;
-import android.text.style.StrikethroughSpan;
-import android.text.style.UnderlineSpan;
import com.taobao.weex.WXEnvironment;
import com.taobao.weex.common.Constants;
@@ -407,13 +405,8 @@ public class WXTextDomObject extends WXDomObject {
List<SetSpanOperation> ops = new LinkedList<>();
int start = 0;
if (end >= start) {
- if (mTextDecoration == WXTextDecoration.UNDERLINE) {
- ops.add(new SetSpanOperation(start, end,
- new UnderlineSpan(), spanFlag));
- }
- if (mTextDecoration == WXTextDecoration.LINETHROUGH) {
- ops.add(new SetSpanOperation(start, end,
- new StrikethroughSpan(), spanFlag));
+ if (mTextDecoration == WXTextDecoration.UNDERLINE || mTextDecoration == WXTextDecoration.LINETHROUGH) {
+ ops.add(new SetSpanOperation(start, end, new TextDecorationSpan(mTextDecoration), spanFlag));
}
if (mIsColorSet) {
ops.add(new SetSpanOperation(start, end,
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9b8709d4/android/sdk/src/main/java/com/taobao/weex/ui/component/WXTextDecoration.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXTextDecoration.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXTextDecoration.java
index d7a2471..44638ff 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXTextDecoration.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXTextDecoration.java
@@ -19,6 +19,7 @@
package com.taobao.weex.ui.component;
public enum WXTextDecoration {
+ INVALID,
NONE,
UNDERLINE,
LINETHROUGH,