21bool Vertices::init(Dart_Handle vertices_handle,
23 Dart_Handle positions_handle,
24 Dart_Handle texture_coordinates_handle,
25 Dart_Handle colors_handle,
26 Dart_Handle indices_handle) {
27 UIDartState::ThrowIfUIOperationsProhibited();
29 tonic::Float32List positions(positions_handle);
30 tonic::Float32List texture_coordinates(texture_coordinates_handle);
31 tonic::Int32List colors(colors_handle);
32 tonic::Uint16List indices(indices_handle);
34 if (!positions.data()) {
39 if (texture_coordinates.data()) {
40 flags = flags | DlVertices::Builder::kHasTextureCoordinates;
43 flags = flags | DlVertices::Builder::kHasColors;
46 indices.num_elements());
55 if (texture_coordinates.data()) {
57 FML_DCHECK(positions.num_elements() == texture_coordinates.num_elements());
63 FML_DCHECK(positions.num_elements() / 2 == colors.num_elements());
64 builder.
store_colors(
reinterpret_cast<const SkColor*
>(colors.data()));
67 if (indices.data() && indices.num_elements() > 0) {
72 texture_coordinates.Release();
76 auto vertices = fml::MakeRefCounted<Vertices>();
77 vertices->vertices_ = builder.
build();
78 vertices->AssociateWithDartWrapper(vertices_handle);