| /* |
| * 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" |
| #include "extent_ring.h" // note that these structs are *not* opaque |
| |
| // |
| // |
| // |
| |
| typedef enum skc_raster_builder_state_e { |
| |
| SKC_RASTER_BUILDER_STATE_READY, |
| SKC_RASTER_BUILDER_STATE_BUILDING |
| |
| } skc_raster_builder_state_e; |
| |
| // |
| // Construct and dispose of a raster builder and its opaque |
| // implementation. |
| // |
| |
| struct skc_raster_builder |
| { |
| struct skc_context * context; |
| |
| struct skc_raster_builder_impl * impl; |
| |
| skc_err (* add )(struct skc_raster_builder_impl * const impl, skc_path_t const * paths, skc_uint count); |
| void (* end )(struct skc_raster_builder_impl * const impl, skc_raster_t * const raster); |
| void (* start )(struct skc_raster_builder_impl * const impl); |
| void (* force )(struct skc_raster_builder_impl * const impl); |
| void (* release)(struct skc_raster_builder_impl * const impl); |
| |
| struct { |
| skc_path_t * extent; |
| struct skc_extent_ring ring; |
| } path_ids; |
| |
| struct { |
| union skc_transform * extent; |
| struct skc_extent_ring ring; |
| } transforms; |
| |
| struct { |
| union skc_path_clip * extent; |
| struct skc_extent_ring ring; |
| } clips; |
| |
| struct { |
| union skc_cmd_fill * extent; |
| struct skc_extent_ring ring; |
| } fill_cmds; |
| |
| struct { |
| skc_raster_t * extent; |
| struct skc_extent_ring ring; |
| } raster_ids; |
| |
| skc_uint refcount; // FIXME -- split this into host and impl refcounts |
| |
| SKC_ASSERT_STATE_DECLARE(skc_raster_builder_state_e); |
| }; |
| |
| // |
| // |
| // |