Fabric: Making `fabric/textlayoutmanager` compilable on Android

Summary:
@public
This compiles, but it works only on iOS for now.

Reviewed By: mdvacca

Differential Revision: D8655540

fbshipit-source-id: 7e9a73fadb317dd62298af6f347344ac4229a8a5
This commit is contained in:
Valentin Shergin 2018-07-01 21:22:22 -07:00 committed by Facebook Github Bot
parent 5786db3a26
commit ee535fafe3
15 changed files with 131 additions and 6 deletions

View File

@ -13,14 +13,14 @@ rn_xplat_cxx_library(
name = "textlayoutmanager",
srcs = glob(
[
"**/*.cpp",
"**/*.mm",
"*.cpp",
],
exclude = glob(["tests/**/*.cpp"]),
),
headers = glob(
["**/*.h"],
exclude = glob(["tests/**/*.h"]),
headers = subdir_glob(
[
("", "*.h"),
],
prefix = "",
),
header_namespace = "",
exported_headers = subdir_glob(
@ -35,6 +35,24 @@ rn_xplat_cxx_library(
"-std=c++14",
"-Wall",
],
fbandroid_exported_headers = subdir_glob(
[
("", "*.h"),
("platform/android", "*.h"),
],
prefix = "fabric/textlayoutmanager",
),
fbandroid_headers = subdir_glob(
[
("platform/android", "**/*.h"),
],
prefix = "",
),
fbandroid_srcs = glob(
[
"platform/android/**/*.cpp",
],
),
fbobjc_compiler_flags = APPLE_COMPILER_FLAGS,
fbobjc_preprocessor_flags = get_debug_preprocessor_flags() + get_apple_inspector_flags(),
fbobjc_tests = [
@ -46,6 +64,26 @@ rn_xplat_cxx_library(
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
"$SDKROOT/System/Library/Frameworks/UIKit.framework",
],
ios_deps = [
],
ios_exported_headers = subdir_glob(
[
("platform/ios", "*.h"),
],
prefix = "fabric/textlayoutmanager",
),
ios_headers = subdir_glob(
[
("platform/ios", "**/*.h"),
],
prefix = "",
),
ios_srcs = glob(
[
"platform/ios/**/*.cpp",
"platform/ios/**/*.mm",
],
),
macosx_tests_override = [],
platforms = (ANDROID, APPLE),
preprocessor_flags = [

View File

@ -0,0 +1,33 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "TextLayoutManager.h"
namespace facebook {
namespace react {
TextLayoutManager::TextLayoutManager() {
}
TextLayoutManager::~TextLayoutManager() {
}
void *TextLayoutManager::getNativeTextLayoutManager() const {
return self_;
}
Size TextLayoutManager::measure(
AttributedString attributedString,
ParagraphAttributes paragraphAttributes,
LayoutConstraints layoutConstraints
) const {
// Not implemented.
return {};
}
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,54 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <memory>
#include <fabric/attributedstring/AttributedString.h>
#include <fabric/attributedstring/ParagraphAttributes.h>
#include <fabric/core/LayoutConstraints.h>
namespace facebook {
namespace react {
class TextLayoutManager;
using SharedTextLayoutManager = std::shared_ptr<const TextLayoutManager>;
/*
* Cross platform facade for Android-specific TextLayoutManager.
*/
class TextLayoutManager {
public:
TextLayoutManager();
~TextLayoutManager();
/*
* Measures `attributedString` using native text rendering infrastructure.
*/
Size measure(
AttributedString attributedString,
ParagraphAttributes paragraphAttributes,
LayoutConstraints layoutConstraints
) const;
/*
* Returns an opaque pointer to platform-specific TextLayoutManager.
* Is used on a native views layer to delegate text rendering to the manager.
*/
void *getNativeTextLayoutManager() const;
private:
void *self_;
};
} // namespace react
} // namespace facebook