From ff7b3668ea56f7dea71f39785528c3af6a1f90bd Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Sun, 1 Nov 2015 11:18:39 -0800 Subject: [PATCH] Add Paint#strokeCap Fixes #1887 --- sky/engine/core/painting/Paint.cpp | 3 +++ sky/engine/core/painting/Paint.dart | 13 +++++++++++++ sky/engine/core/painting/Paint.h | 6 ++++++ 3 files changed, 22 insertions(+) diff --git a/sky/engine/core/painting/Paint.cpp b/sky/engine/core/painting/Paint.cpp index 1ae76559e00..39fee02eb80 100644 --- a/sky/engine/core/painting/Paint.cpp +++ b/sky/engine/core/painting/Paint.cpp @@ -34,6 +34,7 @@ enum PaintFields { kShader, kStyle, kTransferMode, + kStrokeCap, // kNumberOfPaintFields must be last. kNumberOfPaintFields, @@ -81,6 +82,8 @@ Paint DartConverter::FromDart(Dart_Handle dart_paint) { paint.setStyle(DartConverter::FromDart(values[kStyle])); if (!Dart_IsNull(values[kTransferMode])) paint.setXfermodeMode(DartConverter::FromDart(values[kTransferMode])); + if (!Dart_IsNull(values[kStrokeCap])) + paint.setStrokeCap(DartConverter::FromDart(values[kStrokeCap])); result.is_null = false; return result; diff --git a/sky/engine/core/painting/Paint.dart b/sky/engine/core/painting/Paint.dart index 35dd368ba90..ba91a1f7384 100644 --- a/sky/engine/core/painting/Paint.dart +++ b/sky/engine/core/painting/Paint.dart @@ -4,6 +4,17 @@ part of dart_ui; +enum StrokeCap { + /// Begin/end contours with no extension. + butt, + + /// Begin/end contours with a semi-circle extension. + round, + + /// Begin/end contours with a half square extension. + square, +} + class Paint { double strokeWidth; bool isAntiAlias = true; @@ -15,6 +26,7 @@ class Paint { Shader shader; PaintingStyle style; TransferMode transferMode; + StrokeCap strokeCap; // Must match PaintFields enum in Paint.cpp. List get _value { @@ -29,6 +41,7 @@ class Paint { shader, style, transferMode, + strokeCap, ]; } diff --git a/sky/engine/core/painting/Paint.h b/sky/engine/core/painting/Paint.h index 4081436b203..d5b83c786e6 100644 --- a/sky/engine/core/painting/Paint.h +++ b/sky/engine/core/painting/Paint.h @@ -38,6 +38,12 @@ struct DartConverter { Dart_Handle& exception); }; +class StrokeCap {}; + +template <> +struct DartConverter + : public DartConverterEnum {}; + } // namespace blink #endif // SKY_ENGINE_CORE_PAINTING_PAINT_H_