class BoringAvatar::Beam
Constants
- SIZE
Public Instance Methods
generate()
click to toggle source
# File lib/boring_avatar/avatar/beam.rb, line 7 def generate template(data) end
Private Instance Methods
data()
click to toggle source
# File lib/boring_avatar/avatar/beam.rb, line 13 def data wrapperColor = Util.get_random_color(colors, num_from_name, range) preTranslateX = Util.get_unit(num_from_name, 10, 1) wrapperTranslateX = preTranslateX < 5 ? (preTranslateX + SIZE/9) : preTranslateX preTranslateY = Util.get_unit(num_from_name, 10, 2) wrapperTranslateY = preTranslateY < 5 ? (preTranslateY + SIZE/9) : preTranslateY { wrapperColor: wrapperColor, faceColor: Util.get_contrast(wrapperColor), backgroundColor: Util.get_random_color(colors, num_from_name + 13, range), wrapperTranslateX: wrapperTranslateX, wrapperTranslateY: wrapperTranslateY, wrapperRotate: Util.get_unit(num_from_name, 360), wrapperScale: 1 + (Util.get_unit(num_from_name, SIZE / 12) / 10.to_f), isMouthOpen: Util.get_boolean(num_from_name, 2), isCircle: Util.get_boolean(num_from_name, 1), eyeSpread: Util.get_unit(num_from_name, 5) , mouthSpread: Util.get_unit(num_from_name, 3), faceRotate: Util.get_unit(num_from_name, 10, 3), faceTranslateX: wrapperTranslateX > (SIZE/6) ? wrapperTranslateX/2.to_f : Util.get_unit(num_from_name, 8, 1), faceTranslateY: wrapperTranslateY > (SIZE/6) ? wrapperTranslateY/2.to_f : Util.get_unit(num_from_name, 7, 2) } end
template(data)
click to toggle source
# File lib/boring_avatar/avatar/beam.rb, line 38 def template(data) mouth = if data[:isMouthOpen] "<path d='M15 #{19 + data[:mouthSpread]} c2 1 4 1 6 0' stroke='#{data[:faceColor]}' fill='none' stroke-linecap='round' />" else "<path d='M13, #{19 + data[:mouthSpread]} a1,0.75 0 0,0 10,0' fill='#{data[:faceColor]}' />" end render_svg "<svg viewBox='0 0 #{SIZE} #{SIZE}' fill='none' xmlns='http://www.w3.org/2000/svg' width='#{size}' height='#{size}'> <mask id='mask__beam' maskUnits='userSpaceOnUse' x='0' y='0' width='#{SIZE}' height='#{SIZE}'> <rect width='#{SIZE}' height='#{SIZE}' rx='20' fill='white' /> </mask> <g mask='url(#mask__beam)' fill='transparent'> <rect width='#{SIZE}' height='#{SIZE}' rx='20' fill='#{data[:backgroundColor]}' /> <rect x='0' y='0' width='#{SIZE}' height='#{SIZE}' transform='translate(#{data[:wrapperTranslateX]} #{data[:wrapperTranslateY]}) rotate(#{data[:wrapperRotate]} #{SIZE / 2} #{SIZE / 2}) scale(#{data[:wrapperScale]})' fill='#{data[:wrapperColor]}' rx='#{data[:isCircle] ? SIZE : SIZE/6}' /> <g transform='translate(#{data[:faceTranslateX]} #{data[:faceTranslateY]}) rotate(#{data[:faceRotate]} #{SIZE / 2} #{SIZE / 2})'> #{mouth} <rect x='#{14 - data[:eyeSpread]}' y='14' width='1.5' height='2' rx='1' stroke='none' fill='#{data[:faceColor]}' /> <rect x='#{20 + data[:eyeSpread]}' y='14' width='1.5' height='2' rx='1' stroke='none' fill='#{data[:faceColor]}' /> </g> </g> </svg>" end