sge::systems::detail::custom_cursor::custom_cursor( sge::renderer::device::ffp &_renderer, sge::input::cursor::object &_cursor, sge::texture::part const &_texture, sge::systems::cursor_hotspot const _hotspot ) : texture_( _texture ), hotspot_{ _hotspot }, sprite_buffers_{ _renderer, sge::sprite::buffers::option::dynamic }, sprite_state_{ _renderer, sprite_state_parameters() }, sprite_{ this->make_sprite( _cursor.position() ) }, move_connection_{ _cursor.move_callback( sge::input::cursor::move_callback{ [ this ]( sge::input::cursor::move_event const &_event ) { sprite_ = this->make_sprite( _event.position() ); } } ) } { }
sge::graph::object::object( sge::graph::position const &_position, sge::renderer::dim2 const &_dim, sge::renderer::device::ffp &_renderer, sge::graph::baseline _baseline, sge::graph::optional_axis_constraint const &_axis_constraint, sge::graph::color_scheme const &_color_scheme ) : dim_( _dim), texture_( _renderer.create_planar_texture( sge::renderer::texture::planar_parameters( _dim, sge::renderer::texture::color_format( sge::image::color::format::rgba8, sge::renderer::texture::emulate_srgb::no ), sge::renderer::texture::mipmap::off(), sge::renderer::resource_flags_field::null(), sge::renderer::texture::capabilities_field( sge::renderer::texture::capabilities_field::null() ) ) ) ), sprite_object_{ sge::sprite::roles::pos{} = fcppt::math::vector::structure_cast< sprite_object::vector, fcppt::cast::float_to_int_fun >( _position.get() ), sge::sprite::roles::texture0{} = sprite_object::texture_type{ fcppt::make_shared_ptr< sge::texture::part_raw_ref >( *texture_ ) } }, sprite_buffers_( _renderer, sge::sprite::buffers::option::dynamic ), sprite_state_( _renderer, sprite_state_parameters() ), data_buffer_( dim_.w()), baseline_( _baseline.get()), color_scheme_( _color_scheme), axis_constraint_( _axis_constraint), current_min_( std::min( 0., baseline_) ), current_max_( 1. + std::max( current_min_, baseline_) ) { sge::renderer::texture::scoped_planar_lock const lock( *texture_, sge::renderer::lock_mode::writeonly); fcppt::variant::apply_unary( sge::graph::detail::draw_visitor( *this), lock.value().get()); }