module Prawn::Graphics::Color
Constants
- COLOR_SPACES
Public Instance Methods
fill_color(*color)
click to toggle source
Sets or returns the fill color.
When called with no argument, it returns the current fill color.
If a single argument is provided, it should be a 6 digit HTML color code.
pdf.fill_color "f0ffc1"
If 4 arguments are provided, the color is assumed to be a CMYK value Values range from 0 - 100.
pdf.fill_color 0, 99, 95, 0
# File lib/prawn/graphics/color.rb, line 26 def fill_color(*color) return current_fill_color if color.empty? self.current_fill_color = process_color(*color) set_fill_color end
Also aliased as: fill_color=
hex2rgb(hex)
click to toggle source
Converts hex string into RGB value array:
>> Prawn::Graphics::Color.hex2rgb("ff7808") => [255, 120, 8]
# File lib/prawn/graphics/color.rb, line 74 def hex2rgb(hex) r = hex[0..1] g = hex[2..3] b = hex[4..5] [r, g, b].map { |e| e.to_i(16) } end
rgb2hex(rgb)
click to toggle source
Converts RGB value array to hex string suitable for use with #fill_color and #stroke_color
>> Prawn::Graphics::Color.rgb2hex([255,120,8]) => "ff7808"
# File lib/prawn/graphics/color.rb, line 65 def rgb2hex(rgb) rgb.map { |e| format '%02x', e }.join end
stroke_color(*color)
click to toggle source
Sets or returns the line stroking color.
When called with no argument, it returns the current stroking color.
If a single argument is provided, it should be a 6 digit HTML color code.
pdf.stroke_color "f0ffc1"
If 4 arguments are provided, the color is assumed to be a CMYK value Values range from 0 - 100.
pdf.stroke_color 0, 99, 95, 0
# File lib/prawn/graphics/color.rb, line 48 def stroke_color(*color) return current_stroke_color if color.empty? color = process_color(*color) self.current_stroke_color = color set_stroke_color(color) end
Also aliased as: stroke_color=
Private Instance Methods
color_space(color)
click to toggle source
# File lib/prawn/graphics/color.rb, line 129 def color_space(color) case color_type(color) when :RGB :DeviceRGB when :CMYK :DeviceCMYK end end
color_to_s(color)
click to toggle source
# File lib/prawn/graphics/color.rb, line 125 def color_to_s(color) PDF::Core.real_params normalize_color(color) end
color_type(color)
click to toggle source
# File lib/prawn/graphics/color.rb, line 94 def color_type(color) case color when String if color =~ /\A[0-F]{6}\z/i :RGB else raise ArgumentError, "Unknown type of color: #{color.inspect}" end when Array case color.length when 3 :RGB when 4 :CMYK else raise ArgumentError, "Unknown type of color: #{color.inspect}" end end end
current_color_space(type)
click to toggle source
# File lib/prawn/graphics/color.rb, line 197 def current_color_space(type) graphic_state.color_space[type] end
current_fill_color()
click to toggle source
# File lib/prawn/graphics/color.rb, line 206 def current_fill_color graphic_state.fill_color end
current_fill_color=(color)
click to toggle source
# File lib/prawn/graphics/color.rb, line 210 def current_fill_color=(color) graphic_state.fill_color = color end
current_stroke_color()
click to toggle source
# File lib/prawn/graphics/color.rb, line 214 def current_stroke_color graphic_state.stroke_color end
current_stroke_color=(color)
click to toggle source
# File lib/prawn/graphics/color.rb, line 218 def current_stroke_color=(color) graphic_state.stroke_color = color end
normalize_color(color)
click to toggle source
# File lib/prawn/graphics/color.rb, line 114 def normalize_color(color) case color_type(color) when :RGB r, g, b = hex2rgb(color) [r / 255.0, g / 255.0, b / 255.0] when :CMYK c, m, y, k = *color [c / 100.0, m / 100.0, y / 100.0, k / 100.0] end end
process_color(*color)
click to toggle source
# File lib/prawn/graphics/color.rb, line 83 def process_color(*color) case color.size when 1 color[0] when 4 color else raise ArgumentError, 'wrong number of arguments supplied' end end
set_color(type, color, options = {})
click to toggle source
# File lib/prawn/graphics/color.rb, line 164 def set_color(type, color, options = {}) operator = case type when :fill 'scn' when :stroke 'SCN' else raise ArgumentError, "unknown type '#{type}'" end if options[:pattern] set_color_space type, :Pattern renderer.add_content "/#{color} #{operator}" else set_color_space type, color_space(color) color = color_to_s(color) write_color(color, operator) end end
set_color_space(type, color_space)
click to toggle source
# File lib/prawn/graphics/color.rb, line 140 def set_color_space(type, color_space) # don't set the same color space again if current_color_space(type) == color_space && !state.page.in_stamp_stream? return end set_current_color_space(color_space, type) unless COLOR_SPACES.include?(color_space) raise ArgumentError, "unknown color space: '#{color_space}'" end operator = case type when :fill 'cs' when :stroke 'CS' else raise ArgumentError, "unknown type '#{type}'" end renderer.add_content "/#{color_space} #{operator}" end
set_current_color_space(color_space, type)
click to toggle source
# File lib/prawn/graphics/color.rb, line 201 def set_current_color_space(color_space, type) save_graphics_state if graphic_state.nil? graphic_state.color_space[type] = color_space end
set_fill_color(color = nil)
click to toggle source
# File lib/prawn/graphics/color.rb, line 184 def set_fill_color(color = nil) set_color :fill, color || current_fill_color end
set_stroke_color(color = nil)
click to toggle source
# File lib/prawn/graphics/color.rb, line 188 def set_stroke_color(color = nil) set_color :stroke, color || current_stroke_color end
update_colors()
click to toggle source
# File lib/prawn/graphics/color.rb, line 192 def update_colors set_fill_color set_stroke_color end
write_color(color, operator)
click to toggle source
# File lib/prawn/graphics/color.rb, line 222 def write_color(color, operator) renderer.add_content "#{color} #{operator}" end