What about something like this:
class Sprite
attr_accessor :x, :y, :width, :height, :color
def initialize(options = {})
# set values based on options, assign defaults?
end
def to_primitive
# check to make sure all values make sense, then
[@x, @y, @width, @height, @color]
end
end
and have simple classes with `.to_primitive` calls when you want to render them