1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2020 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "experimental/skrive/include/SkRive.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "experimental/skrive/src/reader/StreamReader.h" 11cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_cinamespace skrive { 14cb93a386Sopenharmony_cinamespace internal { 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_citemplate <typename T> 17cb93a386Sopenharmony_cisize_t parse_node(StreamReader*, T*); 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_citemplate <> 20cb93a386Sopenharmony_cisize_t parse_node<Ellipse>(StreamReader* sr, Ellipse* node) { 21cb93a386Sopenharmony_ci const auto parent_id = parse_node<Node>(sr, node); 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ci node->setWidth(sr->readFloat("width")); 24cb93a386Sopenharmony_ci node->setHeight(sr->readFloat("height")); 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ci return parent_id; 27cb93a386Sopenharmony_ci} 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ci} // namespace internal 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_civoid Ellipse::onRevalidate() { 32cb93a386Sopenharmony_ci SkASSERT(this->hasInval()); 33cb93a386Sopenharmony_ci} 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_civoid Ellipse::onDraw(SkCanvas* canvas, const SkPaint& paint, SkPathFillType) const { 36cb93a386Sopenharmony_ci SkASSERT(!this->hasInval()); 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ci if (SkScalarNearlyEqual(fWidth, fHeight)) { 39cb93a386Sopenharmony_ci canvas->drawCircle(0, 0, fWidth * 0.5f, paint); 40cb93a386Sopenharmony_ci } else { 41cb93a386Sopenharmony_ci canvas->drawOval(SkRect::MakeXYWH(-fWidth * 0.5f, -fHeight * 0.5f, fWidth, fHeight), paint); 42cb93a386Sopenharmony_ci } 43cb93a386Sopenharmony_ci} 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci} // namespace skrive 46