sfml3.rb

Class: SFML::Target

Inherits:
Object
  • Object
show all
Defined in:
ext/graphics/target.c,
ext/graphics/target.c

Overview

A legacy generic handle onto whatever can be drawn to -- a Window or a RenderTexture -- used by Drawable#draw so drawable objects don't need to know which concrete kind of target they're being drawn onto.

New code should pass a SFML::RenderWindow or SFML::RenderTexture (both include SFML::RenderTarget) straight to a drawable's #draw.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#new(window) ⇒ Target

Wraps window (a Window) as a generic render target.

Raises:

  • (TypeError) —

    if window is not a Window



61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'ext/graphics/target.c', line 61

static VALUE RenderTarget_initialize(VALUE self, VALUE rb_window) {
    Target* target;

    if (!rb_obj_is_kind_of(rb_window, Get_Klass_Window())) {
        raise_invalid_argument_class(Get_Klass_Window());
    }

    target = Get_Target_Struct(self);
    target->type = SFML_TARGET_WINDOW;
    target->handle = Get_Window_Struct(rb_window);
    target->rb_source = rb_window;

    return self;
}

Instance Attribute Details

#view ⇒ View

Returns the target's current view.

Returns:

Returns:

  • (View) —

    a copy of the target's current view



161
162
163
164
165
166
167
168
169
170
171
172
# File 'ext/graphics/target.c', line 161

static VALUE RenderTarget_get_view(VALUE self) {
    Target* target = Get_Target_Struct(self);
    sfView* view;

    if (target->type == SFML_TARGET_WINDOW) {
        view = sfView_copy(sfRenderWindow_getView((sfRenderWindow*)target->handle));
    } else {
        view = sfView_copy(sfRenderTexture_getView((sfRenderTexture*)target->handle));
    }

    return Get_Casting_View(view);
}

Instance Method Details

#draw(drawable, state) ⇒ nil

Draws drawable (any object responding to #draw, i.e. including Drawable) onto this target using state (a RenderState).

Returns:

  • (nil)

Raises:

  • (TypeError) —

    if state is not a RenderState



85
86
87
88
89
90
91
# File 'ext/graphics/target.c', line 85

static VALUE RenderTarget_draw(VALUE self, VALUE rb_drawable, VALUE rb_state) {
    if (!rb_obj_is_kind_of(rb_state, Get_Klass_RenderState())) {
        raise_invalid_argument_class(Get_Klass_RenderState());
    }

    return rb_funcall(rb_drawable, rb_intern("draw"), 2, self, rb_state);
}