Class: Rubygame::Color::Palette

Inherits:
Object
  • Object
show all
Defined in:
lib/rubygame/color/palettes/palette.rb

Overview

– Rubygame – Ruby code and bindings to SDL to facilitate game creation Copyright © 2007 John Croisant

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++

Instance Method Summary collapse

Constructor Details

#initialize(colors = {}) ⇒ Palette

Create a new Palette with the given name => color pairs.



23
24
25
26
27
28
29
30
# File 'lib/rubygame/color/palettes/palette.rb', line 23

def initialize( colors = {} )
	@includes = []
	
	@colors = {}
	colors.each_pair do |name, color|
		@colors[sanitize_name(name)] = color
	end
end

Instance Method Details

#[](name) ⇒ Object

Retrieve a color by name from this palette.

The name can be a Symbol or String. See #sanitize_name.

If the color cannot be found in this palette, search each of the #included palettes (recursively, depth-first, to a maximum depth of 5 levels).

If the color is not found in this palette or any included palettes, raise IndexError.

Raises:

  • (IndexError)


43
44
45
46
47
# File 'lib/rubygame/color/palettes/palette.rb', line 43

def []( name )
	c = lookup( sanitize_name( name ) )
	raise IndexError, "unknown color #{name}" unless c
	return c
end

#[]=(name, color) ⇒ Object

Store a color by name in this palette. See #sanitize_name



50
51
52
53
# File 'lib/rubygame/color/palettes/palette.rb', line 50

def []=( name, color )
	name = sanitize_name( name )
	@colors[name] = color
end

#include(palette) ⇒ Object

Include another palette in this one. If a color cannot be found in this palette, the included palette(s) will be searched. See also #uninclude.

Has no effect if the palette is already included.



60
61
62
# File 'lib/rubygame/color/palettes/palette.rb', line 60

def include( palette )
	@includes += [palette] unless @includes.include? palette
end

#uninclude(palette) ⇒ Object

Remove the other palette from this one, so that it won’t be searched for missing colors anymore. Has no effect if the other palette hasn’t been #included.



67
68
69
# File 'lib/rubygame/color/palettes/palette.rb', line 67

def uninclude( palette )
	@includes -= [palette]
end