Add support for RCTText under FlatUIImplementation

Summary: @public Initial version of FlatUIImplementation lacks any primitives support (such as RCTText, RCTImageView or RCTView). This diff add the first part, RCTText (alongside with RCTVirtualText and RCTRawText).

Reviewed By: sriramramani

Differential Revision: D2693348
This commit is contained in:
Denis Koroskin
2015-12-06 16:00:36 -08:00
committed by Ahmed El-Helw
parent 44d2ee1c3f
commit 5c2f536e9a
21 changed files with 1466 additions and 20 deletions

View File

@@ -0,0 +1,47 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.react.flat;
import android.text.SpannableStringBuilder;
import com.facebook.react.uimanager.ReactShadowNode;
/**
* Base class for RCTVirtualText and RCTRawText.
*/
/* package */ abstract class FlatTextShadowNode extends FlatShadowNode {
/**
* Recursively visits FlatTextShadowNode and its children,
* appending text to SpannableStringBuilder.
*/
protected abstract void collectText(SpannableStringBuilder builder);
/**
* Recursively visits FlatTextShadowNode and its children,
* applying spans to SpannableStringBuilder.
*/
protected abstract void applySpans(SpannableStringBuilder builder);
/**
* Propagates changes up to RCTText without dirtying current node.
*/
protected void notifyChanged(boolean shouldRemeasure) {
ReactShadowNode parent = getParent();
if (parent instanceof FlatTextShadowNode) {
((FlatTextShadowNode) parent).notifyChanged(shouldRemeasure);
}
}
@Override
public boolean isVirtual() {
return true;
}
}