| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.ui.sketchy; |
| |
| // Specifies the type of a resource created via CreateResourceCmd, along with |
| // any other required data. |
| union ResourceArgs { |
| Stroke stroke; |
| StrokeGroup stroke_group; |
| Pen pen; |
| |
| WobblyStyle wobbly_style; |
| ExplicitWidthStyle explicit_width_style; |
| }; |
| |
| // A stroke has a path which is tessellated and rendered as a Mesh when its |
| // containing stroke-group is inserted into the Scenic scene-graph by attaching |
| // it to an imported Scenic node. A stroke can belong to at most a single |
| // stroke-group; to add a stroke to another group it must first be detached from |
| // the current one. |
| // |
| // A stroke is said to be 'empty' when its path has not been changed (via |
| // SetPath or Begin/Extend/FinishStroke) since it was created, or the last time |
| // that Clear was called. |
| // |
| // Commands: |
| // - ClearStroke |
| // - SetStrokePath |
| // - SetStrokeStyle |
| // - AddStroke (as arg) |
| // - BeginStroke (as arg) |
| // - ExtendStroke (as arg) |
| // - FinishStroke (as arg) |
| struct Stroke { |
| uint8 unused; |
| }; |
| |
| // A stroke-group is a container of strokes, which can be inserted into a Scenic |
| // scene-graph by importing adding it as a child of an imported |fuchsia.ui.gfx.Node|. |
| // |
| // Commands: |
| // - ClearGroup |
| // - AddStroke |
| // - RemoveStroke |
| // - fuchsia.ui.gfx.Detach |
| // - fuchsia.ui.gfx.AddChild (as arg) |
| struct StrokeGroup { |
| uint8 unused; |
| }; |
| |
| |
| // A pen handles user input to create a path for a stroke. |
| // TODO(MZ-246): expose access to stroke-fitter parameters. |
| // |
| // Commands: |
| // - BeginStroke |
| // - ExtendStroke |
| // - FinishStroke |
| // - SetPenStyle |
| struct Pen { |
| uint8 unused; |
| }; |
| |
| |
| // The classic Escher Sketcy Demo wobbly style that you know and love. |
| // |
| // Commands: |
| // - SetPenStyle (as arg). |
| // - SetStrokeStyle (as arg). |
| struct WobblyStyle { |
| float32 speed1; |
| float32 amplitude1; |
| float32 frequency1; |
| float32 speed2; |
| float32 amplitude2; |
| float32 frequency2; |
| float32 speed3; |
| float32 amplitude3; |
| float32 frequency3; |
| }; |
| |
| // Allows clients to provide a list of float32s that are sampled along the stroke, |
| // proportionally to the arc-length of the stroke. An example use-case is a |
| // to visualize the frequency spectrum of an audio signal. |
| // |
| // Commands: |
| // - SetPenStyle (as arg) |
| // - SetStrokeStyle (as arg). |
| struct ExplicitWidthStyle { |
| vector<float32> vals; |
| }; |