Class: DefaultAvatarGenerator::Generator
- Inherits:
-
Object
- Object
- DefaultAvatarGenerator::Generator
- Defined in:
- lib/default_avatar_generator/generator.rb
Overview
The Generator class is responsible for creating avatar images with customizable backgrounds, foregrounds, and text layers.
Constant Summary collapse
- AVAILABLE_BACKGROUNDS =
%w[ gradient-2h gradient-3h gradient-backslash gradient-slash gradient-lr gradient-tb solid ].freeze
- AVAILABLE_FOREGROUNDS =
%w[ head1-solid head2 head3 ].freeze
- AVAILABLE_TEXT =
NOTE: ‘base’ doesn’t work because libvips doesn’t support
dominant-baselinein SVG. Can move back once gitlab.gnome.org/GNOME/librsvg/-/merge_requests/1072 makes it way into the latest version. %w[ hack ].freeze
Instance Method Summary collapse
- #background_params ⇒ Object
- #foreground_params ⇒ Object
-
#generate ⇒ Object
rubocop:disable Metrics/AbcSize.
-
#initialize(options = {}) ⇒ Generator
constructor
A new instance of Generator.
- #select_background ⇒ Object
- #select_foreground ⇒ Object
- #select_text ⇒ Object
- #text_params ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Generator
Returns a new instance of Generator.
30 31 32 |
# File 'lib/default_avatar_generator/generator.rb', line 30 def initialize( = {}) @options = end |
Instance Method Details
#background_params ⇒ Object
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/default_avatar_generator/generator.rb', line 58 def background_params { color1: Colors.select_solid_color, color2: Colors.select_solid_color, color3: Colors.select_solid_color, color4: Colors.select_solid_color, color5: Colors.select_solid_color, color6: Colors.select_solid_color } end |
#foreground_params ⇒ Object
73 74 75 76 77 78 79 80 |
# File 'lib/default_avatar_generator/generator.rb', line 73 def foreground_params @foreground_color_name = Colors.available_colors.sample @foreground_shade = Colors.contrast_shades.sample { color: Colors.get(@foreground_color_name, @foreground_shade), transformation: ForegroundLayer.select_transform } end |
#generate ⇒ Object
rubocop:disable Metrics/AbcSize
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/default_avatar_generator/generator.rb', line 34 def generate # rubocop:disable Metrics/AbcSize # Create layers with dynamic parameters layers = [ BackgroundLayer.new( select_background, background_params.merge(@options[:background] || {}) ), ForegroundLayer.new( select_foreground, foreground_params.merge(@options[:foreground] || {}) ), TextLayer.new( select_text, text_params.merge(@options[:text] || {}) ) ] Composer.new(layers).compose end |
#select_background ⇒ Object
54 55 56 |
# File 'lib/default_avatar_generator/generator.rb', line 54 def select_background AVAILABLE_BACKGROUNDS.sample end |
#select_foreground ⇒ Object
69 70 71 |
# File 'lib/default_avatar_generator/generator.rb', line 69 def select_foreground AVAILABLE_FOREGROUNDS.sample end |
#select_text ⇒ Object
82 83 84 |
# File 'lib/default_avatar_generator/generator.rb', line 82 def select_text AVAILABLE_TEXT.sample end |
#text_params ⇒ Object
86 87 88 89 90 91 |
# File 'lib/default_avatar_generator/generator.rb', line 86 def text_params { color: Colors.get(@foreground_color_name, Colors.opposite_shade(@foreground_shade)) # character: ('A'..'Z').to_a.sample } end |