Ejemplo n.º 1
0
// Convert dart_xform._value[0...3] ==> RSTransform
RSTransform DartConverter<RSTransform>::FromDart(Dart_Handle dart_xform) {
  RSTransform result;
  result.is_null = true;
  if (Dart_IsNull(dart_xform))
    return result;

  Dart_Handle value =
      Dart_GetField(dart_xform, DOMDartState::Current()->value_handle());
  if (Dart_IsNull(value))
    return result;

  Dart_TypedData_Type type;
  float* data = nullptr;
  intptr_t num_elements = 0;
  Dart_TypedDataAcquireData(
      value, &type, reinterpret_cast<void**>(&data), &num_elements);
  DCHECK(!LogIfError(value));
  ASSERT(type == Dart_TypedData_kFloat32 && num_elements == 4);

  SkScalar* dest[] = {
    &result.sk_xform.fSCos,
    &result.sk_xform.fSSin,
    &result.sk_xform.fTx,
    &result.sk_xform.fTy
  };
  for (intptr_t i = 0; i < 4; ++i)
    *dest[i] = data[i];

  Dart_TypedDataReleaseData(value);

  result.is_null = false;
  return result;
}
Ejemplo n.º 2
0
RSTransform DartConverter<RSTransform>::FromArgumentsWithNullCheck(Dart_NativeArguments args,
                                                     int index,
                                                     Dart_Handle& exception) {
  Dart_Handle dart_xform = Dart_GetNativeArgument(args, index);
  DCHECK(!LogIfError(dart_xform));
  return FromDart(dart_xform);
}
Ejemplo n.º 3
0
Paint DartConverter<Paint>::FromArguments(Dart_NativeArguments args,
                                          int index,
                                          Dart_Handle& exception) {
  Dart_Handle dart_rect = Dart_GetNativeArgument(args, index);
  DCHECK(!LogIfError(dart_rect));
  return FromDart(dart_rect);
}
Ejemplo n.º 4
0
// Construct an SkRRect from a Dart RRect object.
// The Dart RRect has a _value field which is a Float32List containing
//   [left, top, right, bottom, xRad, yRad]
RRect DartConverter<RRect>::FromDart(Dart_Handle dart_rrect) {
  RRect result;
  result.is_null = true;
  if (Dart_IsNull(dart_rrect))
    return result;

  Dart_Handle value =
    Dart_GetField(dart_rrect, UIDartState::Current()->value_handle());
  if (Dart_IsNull(value))
    return result;

  Dart_TypedData_Type type;
  float* data = nullptr;
  intptr_t num_elements = 0;
  Dart_TypedDataAcquireData(
      value, &type, reinterpret_cast<void**>(&data), &num_elements);
  DCHECK(!LogIfError(value));
  ASSERT(type == Dart_TypedData_kFloat32 && num_elements == 6);

  result.sk_rrect.setRectXY(
      SkRect::MakeLTRB(data[0], data[1], data[2], data[3]),
      data[4], data[5]);

  Dart_TypedDataReleaseData(value);

  result.is_null = false;
  return result;
}
Ejemplo n.º 5
0
// Convert handle.x,y ==> SkSize.
Offset DartConverter<Offset>::FromDart(Dart_Handle handle) {
  DCHECK(!LogIfError(handle));
  Dart_Handle dx_value =
      Dart_GetField(handle, DOMDartState::Current()->dx_handle());
  Dart_Handle dy_value =
      Dart_GetField(handle, DOMDartState::Current()->dy_handle());
  double dx = 0.0, dy = 0.0;
  Dart_Handle err = Dart_DoubleValue(dx_value, &dx);
  DCHECK(!LogIfError(err));
  err = Dart_DoubleValue(dy_value, &dy);
  DCHECK(!LogIfError(err));

  Offset result;
  result.sk_size.set(dx, dy);
  result.is_null = false;
  return result;
}
Ejemplo n.º 6
0
// Convert handle.x,y ==> SkPoint.
Point DartConverter<Point>::FromDart(Dart_Handle handle) {
  Point result;
  result.is_null = true;

  DCHECK(!LogIfError(handle));

  Dart_Handle x_value =
      Dart_GetField(handle, DOMDartState::Current()->x_handle());
  Dart_Handle y_value =
      Dart_GetField(handle, DOMDartState::Current()->y_handle());

  double x = 0.0, y = 0.0;
  Dart_Handle err = Dart_DoubleValue(x_value, &x);
  DCHECK(!LogIfError(err));
  err = Dart_DoubleValue(y_value, &y);
  DCHECK(!LogIfError(err));
  result.sk_point.set(x, y);
  result.is_null = false;
  return result;
}
Ejemplo n.º 7
0
Dart_Handle DartConverter<TextBox>::ToDart(const TextBox& val) {
  if (val.is_null)
    return Dart_Null();
  DartClassLibrary& class_library = DartState::Current()->class_library();
  Dart_Handle type = Dart_HandleFromPersistent(
      class_library.GetClass("ui", "TextBox"));
  DCHECK(!LogIfError(type));
  const int argc = 5;
  Dart_Handle argv[argc] = {
    blink::ToDart(val.sk_rect.fLeft),
    blink::ToDart(val.sk_rect.fTop),
    blink::ToDart(val.sk_rect.fRight),
    blink::ToDart(val.sk_rect.fBottom),
    blink::ToDart(static_cast<int>(val.direction)),
  };
  return Dart_New(type, blink::ToDart("_"), argc, argv);
}