Class: MtgCardMaker::SvgGradientService
- Inherits:
-
Object
- Object
- MtgCardMaker::SvgGradientService
- Defined in:
- lib/mtg_card_maker/svg_gradient_service.rb
Overview
Simplified gradient definitions for SVG cards Removes complex abstraction in favor of direct gradient creation
Class Method Summary collapse
- .add_metallic_pattern_circles(svg, color_scheme) ⇒ Object
- .add_metallic_pattern_lines(svg, color_scheme) ⇒ Object
-
.card_gradient_id(color_scheme) ⇒ Object
Get gradient ID for card gradient.
-
.define_all_gradients(svg, color_scheme = DEFAULT_COLOR_SCHEME) ⇒ Object
Defines all gradients needed for a color scheme.
- .define_card_gradient(svg, color_scheme, scheme_name) ⇒ Object
- .define_description_gradient(svg, color_scheme, scheme_name) ⇒ Object
- .define_frame_gradient(svg, color_scheme, scheme_name) ⇒ Object
- .define_metallic_gradients(svg, color_scheme) ⇒ Object
- .define_metallic_highlight_gradient(svg, color_scheme, scheme_name) ⇒ Object
- .define_metallic_pattern(svg, color_scheme, scheme_name) ⇒ Object
- .define_metallic_shadow_gradient(svg, color_scheme, scheme_name) ⇒ Object
- .define_name_gradient(svg, color_scheme, scheme_name) ⇒ Object
- .define_standard_gradients(svg, color_scheme) ⇒ Object
-
.description_gradient_id(color_scheme) ⇒ Object
Get gradient ID for description gradient.
-
.frame_gradient_id(color_scheme) ⇒ Object
Get gradient ID for frame gradient.
-
.metallic_highlight_gradient_id(color_scheme) ⇒ Object
Get gradient ID for metallic highlight gradient.
-
.metallic_pattern_id(color_scheme) ⇒ Object
Get pattern ID for metallic texture.
-
.metallic_properties?(color_scheme) ⇒ Boolean
Check if color scheme has metallic properties.
-
.metallic_shadow_gradient_id(color_scheme) ⇒ Object
Get gradient ID for metallic shadow gradient.
-
.name_gradient_id(color_scheme) ⇒ Object
Get gradient ID for name gradient.
Class Method Details
.add_metallic_pattern_circles(svg, color_scheme) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 146 def (svg, color_scheme) svg.circle cx: '5', cy: '5', r: '0.5', fill: color_scheme., opacity: '0.6' svg.circle cx: '15', cy: '15', r: '0.5', fill: color_scheme., opacity: '0.6' svg.circle cx: '10', cy: '10', r: '0.3', fill: color_scheme., opacity: '0.4' end |
.add_metallic_pattern_lines(svg, color_scheme) ⇒ Object
135 136 137 138 139 140 141 142 143 144 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 135 def (svg, color_scheme) svg.line x1: '0', y1: '0', x2: '20', y2: '20', stroke: color_scheme., 'stroke-width': '0.5', opacity: '0.3' svg.line x1: '20', y1: '0', x2: '0', y2: '20', stroke: color_scheme., 'stroke-width': '0.5', opacity: '0.2' end |
.card_gradient_id(color_scheme) ⇒ Object
Get gradient ID for card gradient
17 18 19 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 17 def card_gradient_id(color_scheme) "#{color_scheme.scheme_name}_card_gradient" end |
.define_all_gradients(svg, color_scheme = DEFAULT_COLOR_SCHEME) ⇒ Object
Defines all gradients needed for a color scheme
9 10 11 12 13 14 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 9 def define_all_gradients(svg, color_scheme = DEFAULT_COLOR_SCHEME) svg.defs do define_standard_gradients(svg, color_scheme) (svg, color_scheme) if (color_scheme) end end |
.define_card_gradient(svg, color_scheme, scheme_name) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 65 def define_card_gradient(svg, color_scheme, scheme_name) svg.linearGradient id: "#{scheme_name}_card_gradient", x1: '0%', y1: '0%', x2: '100%', y2: '100%' do svg.stop offset: '0%', 'stop-color': color_scheme.card_gradient_start svg.stop offset: '50%', 'stop-color': color_scheme.card_gradient_middle svg.stop offset: '100%', 'stop-color': color_scheme.card_gradient_end end end |
.define_description_gradient(svg, color_scheme, scheme_name) ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 89 def define_description_gradient(svg, color_scheme, scheme_name) svg.linearGradient id: "#{scheme_name}_description_gradient", x1: '0%', y1: '0%', x2: '100%', y2: '100%' do svg.stop offset: '0%', 'stop-color': color_scheme.description_gradient_start svg.stop offset: '50%', 'stop-color': color_scheme.description_gradient_middle svg.stop offset: '100%', 'stop-color': color_scheme.description_gradient_end end end |
.define_frame_gradient(svg, color_scheme, scheme_name) ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 73 def define_frame_gradient(svg, color_scheme, scheme_name) svg.linearGradient id: "#{scheme_name}_frame_gradient", x1: '0%', y1: '0%', x2: '100%', y2: '100%' do svg.stop offset: '0%', 'stop-color': color_scheme.frame_gradient_start svg.stop offset: '50%', 'stop-color': color_scheme.frame_gradient_middle svg.stop offset: '100%', 'stop-color': color_scheme.frame_gradient_end end end |
.define_metallic_gradients(svg, color_scheme) ⇒ Object
97 98 99 100 101 102 103 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 97 def (svg, color_scheme) scheme_name = color_scheme.scheme_name (svg, color_scheme, scheme_name) (svg, color_scheme, scheme_name) (svg, color_scheme, scheme_name) end |
.define_metallic_highlight_gradient(svg, color_scheme, scheme_name) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 105 def (svg, color_scheme, scheme_name) svg.linearGradient id: "#{scheme_name}_metallic_highlight_gradient", x1: '0%', y1: '0%', x2: '100%', y2: '100%' do svg.stop offset: '0%', 'stop-color': color_scheme., 'stop-opacity': '0.6' svg.stop offset: '20%', 'stop-color': color_scheme., 'stop-opacity': '0.9' svg.stop offset: '38%', 'stop-color': color_scheme., 'stop-opacity': '1.0' svg.stop offset: '42%', 'stop-color': color_scheme., 'stop-opacity': '0.7' svg.stop offset: '62%', 'stop-color': color_scheme., 'stop-opacity': '0.5' svg.stop offset: '73%', 'stop-color': color_scheme., 'stop-opacity': '0.8' svg.stop offset: '80%', 'stop-color': color_scheme., 'stop-opacity': '0.6' svg.stop offset: '100%', 'stop-color': color_scheme., 'stop-opacity': '0.4' end end |
.define_metallic_pattern(svg, color_scheme, scheme_name) ⇒ Object
127 128 129 130 131 132 133 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 127 def (svg, color_scheme, scheme_name) svg.pattern id: "#{scheme_name}_metallic_pattern", x: '0', y: '0', width: '20', height: '20', patternUnits: 'userSpaceOnUse' do (svg, color_scheme) (svg, color_scheme) end end |
.define_metallic_shadow_gradient(svg, color_scheme, scheme_name) ⇒ Object
119 120 121 122 123 124 125 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 119 def (svg, color_scheme, scheme_name) svg.radialGradient id: "#{scheme_name}_metallic_shadow_gradient", cx: '50%', cy: '50%', r: '70%' do svg.stop offset: '0%', 'stop-color': color_scheme., 'stop-opacity': '0.3' svg.stop offset: '50%', 'stop-color': color_scheme., 'stop-opacity': '0.5' svg.stop offset: '100%', 'stop-color': color_scheme., 'stop-opacity': '0.7' end end |
.define_name_gradient(svg, color_scheme, scheme_name) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 81 def define_name_gradient(svg, color_scheme, scheme_name) svg.linearGradient id: "#{scheme_name}_name_gradient", x1: '0%', y1: '0%', x2: '100%', y2: '100%' do svg.stop offset: '0%', 'stop-color': color_scheme.name_gradient_start svg.stop offset: '50%', 'stop-color': color_scheme.name_gradient_middle svg.stop offset: '100%', 'stop-color': color_scheme.name_gradient_end end end |
.define_standard_gradients(svg, color_scheme) ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 56 def define_standard_gradients(svg, color_scheme) scheme_name = color_scheme.scheme_name define_card_gradient(svg, color_scheme, scheme_name) define_frame_gradient(svg, color_scheme, scheme_name) define_name_gradient(svg, color_scheme, scheme_name) define_description_gradient(svg, color_scheme, scheme_name) end |
.description_gradient_id(color_scheme) ⇒ Object
Get gradient ID for description gradient
32 33 34 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 32 def description_gradient_id(color_scheme) "#{color_scheme.scheme_name}_description_gradient" end |
.frame_gradient_id(color_scheme) ⇒ Object
Get gradient ID for frame gradient
22 23 24 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 22 def frame_gradient_id(color_scheme) "#{color_scheme.scheme_name}_frame_gradient" end |
.metallic_highlight_gradient_id(color_scheme) ⇒ Object
Get gradient ID for metallic highlight gradient
37 38 39 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 37 def (color_scheme) "#{color_scheme.scheme_name}_metallic_highlight_gradient" end |
.metallic_pattern_id(color_scheme) ⇒ Object
Get pattern ID for metallic texture
47 48 49 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 47 def (color_scheme) "#{color_scheme.scheme_name}_metallic_pattern" end |
.metallic_properties?(color_scheme) ⇒ Boolean
Check if color scheme has metallic properties
52 53 54 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 52 def (color_scheme) [:gold, :colorless].include?(color_scheme.scheme_name) end |
.metallic_shadow_gradient_id(color_scheme) ⇒ Object
Get gradient ID for metallic shadow gradient
42 43 44 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 42 def (color_scheme) "#{color_scheme.scheme_name}_metallic_shadow_gradient" end |
.name_gradient_id(color_scheme) ⇒ Object
Get gradient ID for name gradient
27 28 29 |
# File 'lib/mtg_card_maker/svg_gradient_service.rb', line 27 def name_gradient_id(color_scheme) "#{color_scheme.scheme_name}_name_gradient" end |