Class: GD2::Image::IndexedColor
- Inherits:
-
GD2::Image
- Object
- GD2::Image
- GD2::Image::IndexedColor
- Defined in:
- lib/gd2/image.rb
Overview
Description
IndexedColor images select pixel colors indirectly through a palette of up to 256 colors. Use Image#palette to access the associated Palette object.
Instance Attribute Summary
Attributes inherited from GD2::Image
Class Method Summary collapse
-
.create_image_sym ⇒ Object
:nodoc:.
-
.palette_class ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#alpha_blending=(bool) ⇒ Object
:nodoc:.
-
#alpha_blending? ⇒ Boolean
:nodoc:.
-
#color2pixel(color) ⇒ Object
:nodoc:.
-
#merge_from(other, dst_x, dst_y, src_x, src_y, w, h, pct, gray = false) ⇒ Object
Like Image#merge_from except an optional final argument can be specified to preserve the hue of the source by converting the destination pixels to grey scale before the merge.
-
#optimize_palette ⇒ Object
:nodoc:.
-
#pixel2color(pixel) ⇒ Object
:nodoc:.
-
#to_indexed_color(colors = MAX_COLORS, dither = true) ⇒ Object
:nodoc:.
-
#to_true_color ⇒ Object
:nodoc:.
Methods inherited from GD2::Image
#==, #[], #[]=, #aspect, #clipping, #clips?, #compare, #copy_from, #copy_from_rotated, create_image_ptr, #crop, #crop!, #draw, #dup, #each, #export, #gd, #gd2, #get_pixel, #gif, #height, import, #init_with_image, #init_with_size, #inspect, #interlaced=, #interlaced?, #jpeg, load, new, #png, #polar_transform, #polar_transform!, #resize, #resize!, #rotate, #rotate!, #save_alpha=, #save_alpha?, #set_pixel, #sharpen, #size, #transparent, #transparent=, #true_color?, #uncrop, #uncrop!, #wbmp, #width, #with_clipping
Class Method Details
.create_image_sym ⇒ Object
:nodoc:
688 689 690 |
# File 'lib/gd2/image.rb', line 688 def self.create_image_sym #:nodoc: :gdImageCreate end |
.palette_class ⇒ Object
:nodoc:
692 693 694 |
# File 'lib/gd2/image.rb', line 692 def self.palette_class #:nodoc: Palette::IndexedColor end |
Instance Method Details
#alpha_blending=(bool) ⇒ Object
:nodoc:
708 709 710 |
# File 'lib/gd2/image.rb', line 708 def alpha_blending=(bool) #:nodoc: raise 'Alpha blending mode not available for indexed color images' if bool end |
#alpha_blending? ⇒ Boolean
:nodoc:
704 705 706 |
# File 'lib/gd2/image.rb', line 704 def alpha_blending? #:nodoc: false end |
#color2pixel(color) ⇒ Object
:nodoc:
700 701 702 |
# File 'lib/gd2/image.rb', line 700 def color2pixel(color) #:nodoc: color.from_palette?(palette) ? color.index : palette.exact!(color).index end |
#merge_from(other, dst_x, dst_y, src_x, src_y, w, h, pct, gray = false) ⇒ Object
Like Image#merge_from except an optional final argument can be specified to preserve the hue of the source by converting the destination pixels to grey scale before the merge.
745 746 747 748 749 750 |
# File 'lib/gd2/image.rb', line 745 def merge_from(other, dst_x, dst_y, src_x, src_y, w, h, pct, gray = false) return super(other, dst_x, dst_y, src_x, src_y, w, h, pct) unless gray ::GD2::GD2FFI.send(:gdImageCopyMergeGray, image_ptr, other.image_ptr, dst_x.to_i, dst_y.to_i, src_x.to_i, src_y.to_i, w.to_i, h.to_i, pct.to_percent.round.to_i) self end |
#optimize_palette ⇒ Object
:nodoc:
712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 |
# File 'lib/gd2/image.rb', line 712 def optimize_palette #:nodoc: # first map duplicate colors to a single palette index map, cache = palette.inject([{}, Array.new(MAX_COLORS)]) do |ary, color| ary.at(0)[color.rgba] = color.index ary.at(1)[color.index] = color.rgba ary end each_with_index do |row, y| row.each_with_index do |pixel, x| set_pixel(x, y, map[cache.at(pixel)]) end end # now clean up the palette palette.deallocate_unused end |
#pixel2color(pixel) ⇒ Object
:nodoc:
696 697 698 |
# File 'lib/gd2/image.rb', line 696 def pixel2color(pixel) #:nodoc: palette[pixel] end |
#to_indexed_color(colors = MAX_COLORS, dither = true) ⇒ Object
:nodoc:
738 739 740 |
# File 'lib/gd2/image.rb', line 738 def to_indexed_color(colors = MAX_COLORS, dither = true) #:nodoc: palette.used <= colors ? self : super end |