| /* |
| * Copyright 2017 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can |
| * be found in the LICENSE file. |
| * |
| */ |
| |
| #pragma once |
| |
| // |
| // |
| // |
| |
| #include "skc.h" |
| #include "assert_state.h" |
| |
| // |
| // |
| // |
| |
| typedef enum skc_path_builder_state_e { |
| |
| SKC_PATH_BUILDER_STATE_READY, |
| SKC_PATH_BUILDER_STATE_BUILDING |
| |
| } skc_path_builder_state_e; |
| |
| // |
| // FIXME -- we might be able to bury more of this in the impl |
| // |
| |
| struct skc_coords_rem_count_line |
| { |
| skc_uint rem; |
| skc_float * coords[4]; |
| }; |
| |
| struct skc_coords_rem_count_quad |
| { |
| skc_uint rem; |
| skc_float * coords[6]; |
| }; |
| |
| struct skc_coords_rem_count_cubic |
| { |
| skc_uint rem; |
| skc_float * coords[8]; |
| }; |
| |
| // |
| // |
| // |
| |
| struct skc_path_builder |
| { |
| struct skc_context * context; |
| |
| struct skc_path_builder_impl * impl; |
| |
| void (* begin )(struct skc_path_builder_impl * const impl); |
| void (* end )(struct skc_path_builder_impl * const impl, skc_path_t * const path); |
| void (* new_line )(struct skc_path_builder_impl * const impl); |
| void (* new_quad )(struct skc_path_builder_impl * const impl); |
| void (* new_cubic)(struct skc_path_builder_impl * const impl); |
| void (* release )(struct skc_path_builder_impl * const impl); |
| |
| struct skc_coords_rem_count_line line; |
| struct skc_coords_rem_count_quad quad; |
| struct skc_coords_rem_count_cubic cubic; |
| |
| struct { |
| float x; |
| float y; |
| } curr[2]; |
| |
| skc_uint refcount; |
| |
| SKC_ASSERT_STATE_DECLARE(skc_path_builder_state_e); |
| }; |
| |
| // |
| // |
| // |