emojidex-converter 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/.rspec +2 -0
- data/.rubocop.yml +11 -0
- data/Gemfile +19 -0
- data/Guardfile +12 -0
- data/LICENSE.md +3 -0
- data/README.md +5 -0
- data/Rakefile +8 -0
- data/emojidex-converter.gemspec +22 -0
- data/lib/emojidex/converter.rb +40 -0
- data/lib/emojidex/preprocessor.rb +25 -0
- data/lib/emojidex_converter.rb +4 -0
- data/spec/converter_spec.rb +54 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/support/collection/aubergine.svg +160 -0
- data/spec/support/collection/car.svg +78 -0
- data/spec/support/collection/emoji.json +30 -0
- data/spec/support/collection/heartbeat/0.svg +121 -0
- data/spec/support/collection/heartbeat/1.svg +126 -0
- data/spec/support/collection/heartbeat/2.svg +128 -0
- data/spec/support/collection/heartbeat/3.svg +128 -0
- data/spec/support/collection/heartbeat/4.svg +121 -0
- data/spec/support/collection/heartbeat/5.svg +128 -0
- data/spec/support/collection/heartbeat/6.svg +126 -0
- data/spec/support/collection/heartbeat/7.svg +126 -0
- data/spec/support/collection/heartbeat/animation.json +17 -0
- data/spec/support/collection/heartbeat/heartbeat.svg +29 -0
- data/spec/support/collection/kiss.svg +2375 -0
- data/spec/support/collection/kiss/0.svg +177 -0
- data/spec/support/collection/kiss/1.svg +177 -0
- data/spec/support/collection/kiss/10.svg +293 -0
- data/spec/support/collection/kiss/11.svg +235 -0
- data/spec/support/collection/kiss/12.svg +235 -0
- data/spec/support/collection/kiss/13.svg +235 -0
- data/spec/support/collection/kiss/14.svg +177 -0
- data/spec/support/collection/kiss/15.svg +177 -0
- data/spec/support/collection/kiss/2.svg +177 -0
- data/spec/support/collection/kiss/3.svg +235 -0
- data/spec/support/collection/kiss/4.svg +235 -0
- data/spec/support/collection/kiss/5.svg +235 -0
- data/spec/support/collection/kiss/6.svg +293 -0
- data/spec/support/collection/kiss/7.svg +235 -0
- data/spec/support/collection/kiss/8.svg +235 -0
- data/spec/support/collection/kiss/9.svg +235 -0
- data/spec/support/collection/kiss/animation.json +25 -0
- data/spec/support/collection/kiss/animation.json~ +25 -0
- metadata +208 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: eca96b398c96a4bea4792951d367c36f9f1c8852
|
4
|
+
data.tar.gz: dae9f088cb49370d089f11a2e69d601d0ea5997f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8e7b1f51c202e1cb931e68a13b92705175c29c9ec6280bc32e8a7ec7912e90c5af38808af192e600e328762c8f03fe45b788d7df07172b0a83a71786a6facf80
|
7
|
+
data.tar.gz: 9e760bdf75c0a2074cdcaa0ab51acfe3f1935c810e8db719e2b00ac422699ad68d3ae52a1c4274f56444c1f1f98611be614df7cefb7b93dd3ad8d8e5ebb48665
|
data/.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
|
19
|
+
*.swp
|
20
|
+
*.swo
|
21
|
+
spec/out/
|
22
|
+
tmp/
|
23
|
+
.DS_Store
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
source 'http://rubygems.org'
|
2
|
+
|
3
|
+
gemspec
|
4
|
+
|
5
|
+
group :development do
|
6
|
+
gem 'rb-inotify', require: false
|
7
|
+
gem 'rb-fsevent', require: false
|
8
|
+
gem 'guard'
|
9
|
+
gem 'guard-rspec'
|
10
|
+
gem 'rubocop'
|
11
|
+
gem 'guard-rubocop'
|
12
|
+
#gem 'emojidex', github: 'emojidex/emojidex'
|
13
|
+
end
|
14
|
+
|
15
|
+
group :test do
|
16
|
+
gem 'coveralls', require: false
|
17
|
+
gem 'rspec'
|
18
|
+
gem 'webmock'
|
19
|
+
end
|
data/Guardfile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
guard :rubocop do
|
2
|
+
watch(%r{.+\.rb$})
|
3
|
+
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
|
4
|
+
end
|
5
|
+
|
6
|
+
guard :rspec do
|
7
|
+
watch(%r{^spec/.+_spec\.rb$})
|
8
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
9
|
+
watch('spec/spec_helper.rb') { "spec" }
|
10
|
+
|
11
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
12
|
+
end
|
data/LICENSE.md
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'emojidex-converter'
|
3
|
+
s.version = '0.0.1'
|
4
|
+
s.license = 'Equivilent to emojidex-toolkit'
|
5
|
+
s.summary = 'Image conversion modules for emojidex'
|
6
|
+
s.description = 'Adds the convert method to Emojidex::Collection and Emojidex::Emoji, which\
|
7
|
+
allows you to convert an emoji collection or a single emoji to the specified\
|
8
|
+
image format.'
|
9
|
+
s.authors = ['Rei Kagetsuki', 'Rika Yoshida']
|
10
|
+
s.email = ['zero@genshin.org', 'nazuki@genshin.org']
|
11
|
+
s.files = `git ls-files`.split("\n")
|
12
|
+
s.homepage = 'http://dev.emojidex.com'
|
13
|
+
|
14
|
+
s.add_dependency 'rsvg2'
|
15
|
+
s.add_dependency 'rmagick'
|
16
|
+
s.add_dependency 'ruby-filemagic'
|
17
|
+
s.add_dependency 'rapngasm'
|
18
|
+
s.add_dependency 'nokogiri'
|
19
|
+
s.add_dependency 'cairo'
|
20
|
+
s.add_dependency 'emojidex'
|
21
|
+
s.add_dependency 'phantom_svg'
|
22
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'phantom_svg'
|
2
|
+
require_relative 'preprocessor'
|
3
|
+
|
4
|
+
module Emojidex
|
5
|
+
# Converter utility for emojidex
|
6
|
+
class Converter
|
7
|
+
def self.default_sizes
|
8
|
+
{ ldpi: 9, mdpi: 18, hdpi: 27, xhdpi: 36, px8: 8,
|
9
|
+
px16: 16, px32: 32, px64: 64, px128: 128, px256: 256 }
|
10
|
+
end
|
11
|
+
|
12
|
+
attr_accessor :sizes, :formats, :location
|
13
|
+
def initialize(override = {})
|
14
|
+
@sizes = override[:sizes] || Converter.default_sizes
|
15
|
+
@path = File.expand_path(override[:destination] || ENV['EMOJI_CACHE'] || './')
|
16
|
+
end
|
17
|
+
|
18
|
+
def rasterize(emoji, source_dir)
|
19
|
+
emoji.each do |moji|
|
20
|
+
phantom_svg = Phantom::SVG::Base.new("#{source_dir}/#{moji.code}.svg")
|
21
|
+
@sizes.each do |key, val|
|
22
|
+
# Create out directory.
|
23
|
+
out_dir = "#{@path}/#{key}"
|
24
|
+
FileUtils.mkdir_p(out_dir)
|
25
|
+
|
26
|
+
# Set size.
|
27
|
+
phantom_svg.width = phantom_svg.height = val.to_i
|
28
|
+
|
29
|
+
# Output png.
|
30
|
+
phantom_svg.save_apng("#{out_dir}/#{moji.code}.png")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def preprocess(source_dir)
|
36
|
+
preprocessor = Emojidex::Preprocessor.new
|
37
|
+
preprocessor.compile_svg_animations(source_dir)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'phantom_svg'
|
2
|
+
|
3
|
+
module Emojidex
|
4
|
+
# compile svg files in a svg animation file
|
5
|
+
class Preprocessor
|
6
|
+
def compile_svg_animations(path)
|
7
|
+
Dir.entries(path).each do |file|
|
8
|
+
current_path = "#{path}/#{file}"
|
9
|
+
next unless File.ftype(current_path) == 'directory'
|
10
|
+
compile(current_path) unless file.start_with?('.')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def compile(source_dir)
|
17
|
+
json_path = "#{source_dir}/animation.json"
|
18
|
+
|
19
|
+
return unless File.exist?(json_path)
|
20
|
+
|
21
|
+
phantom_svg = Phantom::SVG::Base.new(json_path)
|
22
|
+
phantom_svg.save_svg("#{File.dirname(source_dir)}/#{File.basename(source_dir)}.svg")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Emojidex::Converter do
|
4
|
+
let(:converter) do
|
5
|
+
@destination = File.expand_path('../support/tmp/out', __FILE__)
|
6
|
+
FileUtils.remove_entry_secure(@destination, true)
|
7
|
+
Emojidex::Converter.new(destination: @destination)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '.new' do
|
11
|
+
it 'successfully creates a new Converter object' do
|
12
|
+
expect(converter).to be_an_instance_of(Emojidex::Converter)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.sizes' do
|
17
|
+
it 'is a hash of size codes and sizes in px' do
|
18
|
+
expect(converter.sizes).to be_an_instance_of(Hash)
|
19
|
+
expect(converter.sizes.size).to eq(Emojidex::Converter.default_sizes.size)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'overrides sizes when passed in initialization' do
|
23
|
+
conv = Emojidex::Converter.new(sizes: { px200: 200, px1024: 1024, way_too_big: 20_000_000 })
|
24
|
+
expect(conv.sizes).to eq(px200: 200, px1024: 1024, way_too_big: 20_000_000)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.preprocess' do
|
29
|
+
it 'preprocesses folders with SVG frame and animation.json files into frame-animated SVGs' do
|
30
|
+
setup_working_collection
|
31
|
+
converter.preprocess("#{@support_dir}/tmp/collection")
|
32
|
+
expect(File.exist?("#{@support_dir}/tmp/collection/heartbeat.svg")).to be true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.rasterize' do
|
37
|
+
it 'converts base SVG from the source directory to PNG in the destination directory' do
|
38
|
+
setup_working_collection
|
39
|
+
converter.preprocess("#{@support_dir}/tmp/collection")
|
40
|
+
converter.rasterize([Emojidex::Emoji.new(code: 'kiss')], "#{@support_dir}/tmp/collection")
|
41
|
+
|
42
|
+
expect(File.exist?("#{@destination}/ldpi/kiss.png")).to be_truthy
|
43
|
+
expect(File.exist?("#{@destination}/mdpi/kiss.png")).to be_truthy
|
44
|
+
expect(File.exist?("#{@destination}/hdpi/kiss.png")).to be_truthy
|
45
|
+
expect(File.exist?("#{@destination}/xhdpi/kiss.png")).to be_truthy
|
46
|
+
expect(File.exist?("#{@destination}/px8/kiss.png")).to be_truthy
|
47
|
+
expect(File.exist?("#{@destination}/px16/kiss.png")).to be_truthy
|
48
|
+
expect(File.exist?("#{@destination}/px32/kiss.png")).to be_truthy
|
49
|
+
expect(File.exist?("#{@destination}/px64/kiss.png")).to be_truthy
|
50
|
+
expect(File.exist?("#{@destination}/px128/kiss.png")).to be_truthy
|
51
|
+
expect(File.exist?("#{@destination}/px256/kiss.png")).to be_truthy
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'emojidex_converter'
|
2
|
+
|
3
|
+
def setup_working_collection
|
4
|
+
@support_dir = File.expand_path('../support', __FILE__)
|
5
|
+
|
6
|
+
FileUtils.rmdir("#{@support_dir}/tmp")
|
7
|
+
FileUtils.mkdir_p("#{@support_dir}/tmp")
|
8
|
+
FileUtils.cp_r("#{@support_dir}/collection", "#{@support_dir}/tmp")
|
9
|
+
|
10
|
+
"#{@support_dir}/tmp/collection"
|
11
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="64px"
|
5
|
+
height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
|
6
|
+
<g id="レイヤー_1">
|
7
|
+
</g>
|
8
|
+
<g id="ここから下は新しいやつ">
|
9
|
+
<g id="レイヤー_572">
|
10
|
+
<g>
|
11
|
+
<g>
|
12
|
+
<defs>
|
13
|
+
<filter id="Adobe_OpacityMaskFilter" filterUnits="userSpaceOnUse" x="1.793" y="52.102" width="42.559" height="5.354">
|
14
|
+
<feFlood style="flood-color:white;flood-opacity:1" result="back"/>
|
15
|
+
<feBlend in="SourceGraphic" in2="back" mode="normal"/>
|
16
|
+
</filter>
|
17
|
+
</defs>
|
18
|
+
<mask maskUnits="userSpaceOnUse" x="1.793" y="52.102" width="42.559" height="5.354" id="SVGID_1_">
|
19
|
+
<g filter="url(#Adobe_OpacityMaskFilter)">
|
20
|
+
|
21
|
+
<image overflow="visible" width="48" height="10" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
|
22
|
+
EAMCAwYAAAGIAAABqgAAAez/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
|
23
|
+
Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
|
24
|
+
JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIAAoAMAMBIgACEQEDEQH/
|
25
|
+
xAB1AAEBAQEAAAAAAAAAAAAAAAAGAAcEAQEAAAAAAAAAAAAAAAAAAAAAEAABBAMBAAAAAAAAAAAA
|
26
|
+
AAAEAAMFBhABAiARAAEBBgcAAAAAAAAAAAAAAAEAETHRAgMEIJGxEiKjNBIBAAAAAAAAAAAAAAAA
|
27
|
+
AAAAEP/aAAwDAQACEQMRAAAAEph8aHZ5DAzyx//aAAgBAgABBQDP/9oACAEDAAEFAM//2gAIAQEA
|
28
|
+
AQUADZDd6joWrFLVTqS3UqkpGFqoqMZDa69f/9oACAECAgY/AH//2gAIAQMCBj8Af//aAAgBAQEG
|
29
|
+
PwBlzWNLTMrabhswfzMV6OwxXo7DFbZbhkxdzMUy3rGrpmMf/9k=" transform="matrix(1 0 0 1 -1 50)">
|
30
|
+
</image>
|
31
|
+
</g>
|
32
|
+
</mask>
|
33
|
+
<g mask="url(#SVGID_1_)">
|
34
|
+
<ellipse fill="#3E3A39" cx="23.072" cy="54.777" rx="21.279" ry="2.678"/>
|
35
|
+
</g>
|
36
|
+
</g>
|
37
|
+
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="57.3721" y1="18.436" x2="10.2473" y2="48.8109">
|
38
|
+
<stop offset="0.0606" style="stop-color:#9F009A"/>
|
39
|
+
<stop offset="0.0771" style="stop-color:#84008B"/>
|
40
|
+
<stop offset="0.1151" style="stop-color:#4B006B"/>
|
41
|
+
<stop offset="0.1333" style="stop-color:#35005F"/>
|
42
|
+
<stop offset="0.3048" style="stop-color:#29004B"/>
|
43
|
+
<stop offset="0.5627" style="stop-color:#1B0033"/>
|
44
|
+
<stop offset="0.8011" style="stop-color:#130024"/>
|
45
|
+
<stop offset="1" style="stop-color:#10001F"/>
|
46
|
+
</linearGradient>
|
47
|
+
<path fill="url(#SVGID_2_)" stroke="#230042" stroke-width="0.8905" stroke-miterlimit="10" d="M42.142,17.255
|
48
|
+
c0,0-6.189,4.203-11.04,6.799c-3.36,1.798-14.453,4.718-18.936,6.767c-8.499,3.888-11.431,12.61-6.801,19.122
|
49
|
+
c4.612,6.486,14.987,8.736,27.112,1.471C45.239,43.768,51.533,35.43,56.16,25.188l1.176-8.795l-4.393-4.518L42.142,17.255z"/>
|
50
|
+
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="14.5557" y1="60.7061" x2="16.9309" y2="47.3296">
|
51
|
+
<stop offset="0" style="stop-color:#FFFFFF"/>
|
52
|
+
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
53
|
+
</linearGradient>
|
54
|
+
<path fill="url(#SVGID_3_)" d="M5.815,46.678c-2.897,2.271,7.951,9.332,14.683,8.084c6.732-1.25,10.706-6.518,4.435-7.373
|
55
|
+
C18.662,46.535,8.721,44.4,5.815,46.678z"/>
|
56
|
+
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="60.7119" y1="20.7832" x2="34.9491" y2="43.0099">
|
57
|
+
<stop offset="0" style="stop-color:#BFC0FF"/>
|
58
|
+
<stop offset="1" style="stop-color:#BFC0FF;stop-opacity:0"/>
|
59
|
+
</linearGradient>
|
60
|
+
<path opacity="0.71" fill="url(#SVGID_4_)" d="M16.751,54.559c5.602,1.844,21.151-8.309,28.234-15.172
|
61
|
+
c7.206-6.984,9.563-11.919,10.676-16.263c1.001-3.904-7.71,11.478-16.63,18.204C32.423,46.311,13.408,53.461,16.751,54.559z"/>
|
62
|
+
<g opacity="0.43">
|
63
|
+
<defs>
|
64
|
+
<filter id="Adobe_OpacityMaskFilter_1_" filterUnits="userSpaceOnUse" x="28.595" y="11.789" width="25.861" height="21.419">
|
65
|
+
<feFlood style="flood-color:white;flood-opacity:1" result="back"/>
|
66
|
+
<feBlend in="SourceGraphic" in2="back" mode="normal"/>
|
67
|
+
</filter>
|
68
|
+
</defs>
|
69
|
+
<mask maskUnits="userSpaceOnUse" x="28.595" y="11.789" width="25.861" height="21.419" id="SVGID_5_">
|
70
|
+
<g filter="url(#Adobe_OpacityMaskFilter_1_)">
|
71
|
+
|
72
|
+
<image overflow="visible" width="31" height="27" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
|
73
|
+
EAMCAwYAAAGTAAABxAAAAj3/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
|
74
|
+
Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
|
75
|
+
JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIABsAHwMBIgACEQEDEQH/
|
76
|
+
xAB8AAADAAMAAAAAAAAAAAAAAAAABAcBBQYBAQAAAAAAAAAAAAAAAAAAAAAQAAIBBQADAAAAAAAA
|
77
|
+
AAAAAAQFBgAQIAIDAUIHEQACAQIEBgMAAAAAAAAAAAABAgMxBAARIRMQQWFxgQUgEiISAQAAAAAA
|
78
|
+
AAAAAAAAAAAAACD/2gAMAwEAAhEDEQAAAJ+HZmsZo8vFesn2BxMD/9oACAECAAEFAMP/2gAIAQMA
|
79
|
+
AQUAw//aAAgBAQABBQC0eiBzrw4ifFezqHQ7czYw5emEYybc99HeAe5jL6EONxYtj2fWvW//2gAI
|
80
|
+
AQICBj8AH//aAAgBAwIGPwAf/9oACAEBAQY/AOG8c4bbk5GrdsWForkrdzxwtrT7sFz4Lf8AsFKw
|
81
|
+
DWOM8+pwWcrEiD8roKYtvYOCILWdJEXojhs8vGN69I2osiAaE4Ft6uMOVGQeijG5eSlzULRR2HDn
|
82
|
+
Xx8P/9k=" transform="matrix(1 0 0 1 26 9)">
|
83
|
+
</image>
|
84
|
+
</g>
|
85
|
+
</mask>
|
86
|
+
<g mask="url(#SVGID_5_)">
|
87
|
+
|
88
|
+
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="42.7148" y1="27.9424" x2="33.0063" y2="35.8643" gradientTransform="matrix(1.3624 0.7119 -1.639 3.3773 42.244 -110.9866)">
|
89
|
+
<stop offset="0" style="stop-color:#FFFFFF"/>
|
90
|
+
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
91
|
+
</linearGradient>
|
92
|
+
<path fill="url(#SVGID_6_)" d="M46.744,14.155c9.627-7.496,10.746,4.681,0.479,10.713
|
93
|
+
C15.273,43.639,30.783,26.586,46.744,14.155z"/>
|
94
|
+
</g>
|
95
|
+
</g>
|
96
|
+
<g>
|
97
|
+
<g>
|
98
|
+
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="50.1357" y1="7.8887" x2="55.3858" y2="23.0137">
|
99
|
+
<stop offset="0" style="stop-color:#ABFF00"/>
|
100
|
+
<stop offset="0.2207" style="stop-color:#91EF00"/>
|
101
|
+
<stop offset="0.7466" style="stop-color:#58CD00"/>
|
102
|
+
<stop offset="1" style="stop-color:#42BF00"/>
|
103
|
+
</linearGradient>
|
104
|
+
<path fill="url(#SVGID_7_)" d="M49.885,10.373c2.796-1.288,6.432,0.774,7.539-0.947c1.11-1.72,2.794-2.881,2.794-2.881
|
105
|
+
s2.528,1.299,1.884,2.009c0,0-2.957,1.981-2.939,3.116c0.019,1.135,3.424,6.891,0.492,10.712
|
106
|
+
c-2.932,3.823-6.423,8.222-6.423,8.222s0.474-4.658,0.868-5.997c0.395-1.337,0.814-5.187,0.993-6.478
|
107
|
+
c0,0-8.485,3.427-9.633,5.497c0,0,2.903-7.119,4.697-8.303c-2.503,0.541-6.163,0.99-8.632,2.208
|
108
|
+
C41.525,17.532,46.843,11.773,49.885,10.373z"/>
|
109
|
+
<path fill="none" stroke="#223502" stroke-width="0.8905" stroke-miterlimit="10" d="M49.885,10.373
|
110
|
+
c2.796-1.288,6.432,0.774,7.539-0.947c1.11-1.72,2.794-2.881,2.794-2.881s2.528,1.299,1.884,2.009c0,0-2.957,1.981-2.939,3.116
|
111
|
+
c0.019,1.135,3.424,6.891,0.492,10.712c-2.932,3.823-6.423,8.222-6.423,8.222s0.474-4.658,0.868-5.997
|
112
|
+
c0.395-1.337,0.814-5.187,0.993-6.478c0,0-8.485,3.427-9.633,5.497c0,0,2.903-7.119,4.697-8.303
|
113
|
+
c-2.503,0.541-6.163,0.99-8.632,2.208C41.525,17.532,46.843,11.773,49.885,10.373z"/>
|
114
|
+
</g>
|
115
|
+
<defs>
|
116
|
+
<filter id="Adobe_OpacityMaskFilter_2_" filterUnits="userSpaceOnUse" x="39.571" y="6.028" width="23.081" height="26.045">
|
117
|
+
|
118
|
+
<feColorMatrix type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" color-interpolation-filters="sRGB" result="source"/>
|
119
|
+
</filter>
|
120
|
+
</defs>
|
121
|
+
<mask maskUnits="userSpaceOnUse" x="39.571" y="6.028" width="23.081" height="26.045" id="SVGID_8_">
|
122
|
+
<g filter="url(#Adobe_OpacityMaskFilter_2_)">
|
123
|
+
|
124
|
+
<image overflow="visible" width="28" height="31" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
|
125
|
+
EAMCAwYAAAGWAAABxAAAAi7/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
|
126
|
+
Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
|
127
|
+
JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIAB8AHAMBIgACEQEDEQH/
|
128
|
+
xAB+AAACAwEAAAAAAAAAAAAAAAACBwAEBgUBAQAAAAAAAAAAAAAAAAAAAAAQAAAFBQEBAAAAAAAA
|
129
|
+
AAAAAAIDBAUGABAgARIRFBEAAQMDAgUFAAAAAAAAAAAAARECAwBBEhAxIFFhBAUhcdEiJBIBAAAA
|
130
|
+
AAAAAAAAAAAAAAAAIP/aAAwDAQACEQMRAAAAX92oyjHcZ0JUhhDXZEhP/9oACAECAAEFAMP/2gAI
|
131
|
+
AQMAAQUAw//aAAgBAQABBQCkDO4uOwxdeSX4DsHHUHeEnxyAohYy2EcaICiRjQMNzNmbFX//2gAI
|
132
|
+
AQICBj8AH//aAAgBAwIGPwAf/9oACAEBAQY/AK/JC57VTLYVLP5CMwQxL6m6X9qRTgu90oF6ltwK
|
133
|
+
eyRje3Yw4xuJH2CfNdwCQ+NzCjgenPURlxwGzRtUPjIjnI5gatgE4FkXLry0/9k=" transform="matrix(1 0 0 1 37 4)">
|
134
|
+
</image>
|
135
|
+
</g>
|
136
|
+
</mask>
|
137
|
+
<g opacity="0.16" mask="url(#SVGID_8_)">
|
138
|
+
<path fill="#355606" d="M49.885,10.373c2.796-1.288,6.432,0.774,7.539-0.947c1.11-1.72,2.794-2.881,2.794-2.881
|
139
|
+
s2.528,1.299,1.884,2.009c0,0-2.957,1.981-2.939,3.116c0.019,1.135,3.424,6.891,0.492,10.712
|
140
|
+
c-2.932,3.823-6.423,8.222-6.423,8.222s0.474-4.658,0.868-5.997c0.395-1.337,0.814-5.187,0.993-6.478
|
141
|
+
c0,0-8.485,3.427-9.633,5.497c0,0,2.903-7.119,4.697-8.303c-2.503,0.541-6.163,0.99-8.632,2.208
|
142
|
+
C41.525,17.532,46.843,11.773,49.885,10.373z"/>
|
143
|
+
<path fill="none" stroke="#355606" stroke-width="0.8905" stroke-miterlimit="10" d="M49.885,10.373
|
144
|
+
c2.796-1.288,6.432,0.774,7.539-0.947c1.11-1.72,2.794-2.881,2.794-2.881s2.528,1.299,1.884,2.009c0,0-2.957,1.981-2.939,3.116
|
145
|
+
c0.019,1.135,3.424,6.891,0.492,10.712c-2.932,3.823-6.423,8.222-6.423,8.222s0.474-4.658,0.868-5.997
|
146
|
+
c0.395-1.337,0.814-5.187,0.993-6.478c0,0-8.485,3.427-9.633,5.497c0,0,2.903-7.119,4.697-8.303
|
147
|
+
c-2.503,0.541-6.163,0.99-8.632,2.208C41.525,17.532,46.843,11.773,49.885,10.373z"/>
|
148
|
+
</g>
|
149
|
+
</g>
|
150
|
+
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="16.4053" y1="35.6416" x2="33.3303" y2="29.8717">
|
151
|
+
<stop offset="0" style="stop-color:#FFFFFF"/>
|
152
|
+
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
153
|
+
</linearGradient>
|
154
|
+
<path fill="url(#SVGID_9_)" d="M12.87,32.214c-0.064,0.042-0.12,0.082-0.167,0.121c-2.693,1.298-5.364,3.175-6.352,5.095
|
155
|
+
c-4.375,8.5,4.375,7.875,6,2.5c1.163-3.846,4.868-7.421,6.411-8.446c3.897-2.589,11.816-2.968,12.498-5.121
|
156
|
+
C32.04,23.907,14.362,31.25,12.87,32.214z"/>
|
157
|
+
</g>
|
158
|
+
</g>
|
159
|
+
</g>
|
160
|
+
</svg>
|
@@ -0,0 +1,78 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4
|
+
<svg version="1.1" id="レイヤー_1"
|
5
|
+
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="64px" height="64px"
|
6
|
+
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
|
7
|
+
<g>
|
8
|
+
<g>
|
9
|
+
<defs>
|
10
|
+
<filter id="Adobe_OpacityMaskFilter" filterUnits="userSpaceOnUse" x="2.313" y="40.02" width="59.375" height="2.375">
|
11
|
+
<feFlood style="flood-color:white;flood-opacity:1" result="back"/>
|
12
|
+
<feBlend in="SourceGraphic" in2="back" mode="normal"/>
|
13
|
+
</filter>
|
14
|
+
</defs>
|
15
|
+
<mask maskUnits="userSpaceOnUse" x="2.313" y="40.02" width="59.375" height="2.375" id="SVGID_1_">
|
16
|
+
<g style="filter:url(#Adobe_OpacityMaskFilter);">
|
17
|
+
|
18
|
+
<image style="overflow:visible;" width="64" height="7" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
|
19
|
+
EAMCAwYAAAGEAAABqgAAAin/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
|
20
|
+
Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
|
21
|
+
JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIAAcAQAMBIgACEQEDEQH/
|
22
|
+
xAB0AAEBAQEAAAAAAAAAAAAAAAAAAgUGAQEAAAAAAAAAAAAAAAAAAAAAEAABBQEBAAAAAAAAAAAA
|
23
|
+
AAAFAAMEFQcgAREAAgAEBgMAAAAAAAAAAAAAAQIAEgMEEZIU1AU1IUGREgEAAAAAAAAAAAAAAAAA
|
24
|
+
AAAg/9oADAMBAAIRAxEAAADltYLABGSH/9oACAECAAEFAOP/2gAIAQMAAQUA4//aAAgBAQABBQAe
|
25
|
+
SAR4rRPOvW7LNlZZsrLNlZZsnSedeNkCQCRF/9oACAECAgY/AB//2gAIAQMCBj8AH//aAAgBAQEG
|
26
|
+
PwBaV9w2tuATNX1VWjMCfAkQYDAQprcPcpVIE6pUZ1B9gMbhSfgjqbvO26jqbvO26jqbvO26jqbv
|
27
|
+
O26hjR4e5eqAZFeoyKT6BYXDEfDDUrHhtFcEiWvqqtaUA+RI4wOIj//Z" transform="matrix(1 0 0 1 0 38)">
|
28
|
+
</image>
|
29
|
+
</g>
|
30
|
+
</mask>
|
31
|
+
<g style="mask:url(#SVGID_1_);">
|
32
|
+
<ellipse style="fill:#888888;" cx="32" cy="41.207" rx="29.688" ry="1.188"/>
|
33
|
+
</g>
|
34
|
+
</g>
|
35
|
+
<path style="fill:#D82400;stroke:#260E0A;stroke-miterlimit:10;" d="M2.563,34.869c0,0,0.5-1.935,2.25-2.579s9.75-3.224,16-3.482
|
36
|
+
c0,0,6.875-3.868,9.75-4.771c2.875-0.903,8.75-0.517,11.75-0.259c3,0.259,9.75,3.354,12.125,3.611s5,0.902,5,0.902l0.125,2.837
|
37
|
+
l1.25,1.935c0,0,0.375,3.74-1,4.9c-1.375,1.161-2.5,0.774-2.5,0.774l-2,0.387c0,0,1.125-4.127-1.625-6.062
|
38
|
+
s-6.625-0.645-7.875,1.548s-0.375,4.9-0.375,4.9l-26.5,0.129c0,0,0.625-4.643-2.5-6.577s-6.25-0.258-7.375,1.548
|
39
|
+
S8.438,39.77,8.438,39.77l-5.125-0.773l-0.25-1.227L2.563,34.869z"/>
|
40
|
+
<circle style="fill:#0C0A09;" cx="13.375" cy="37.332" r="4.438"/>
|
41
|
+
<circle style="fill:#0C0A09;" cx="50.375" cy="37.207" r="4.438"/>
|
42
|
+
<path style="fill:#FFFFFF;stroke:#260E0A;stroke-miterlimit:10;" d="M23.688,29.895c0,0,5.875-4.375,7.75-4.625
|
43
|
+
s6.875-0.375,9.625,0.25s5.375,1.875,5.375,1.875s-3.375,2.125-6.375,1.875S23.688,29.895,23.688,29.895z"/>
|
44
|
+
<path style="fill:#FFFDFD;" d="M4.313,33.895c0,0,3.5-0.5,4.125-1.625S5.063,33.145,4.313,33.895z"/>
|
45
|
+
<path style="fill:#D82400;stroke:#260E0A;stroke-miterlimit:10;" d="M23.938,31.02l-0.875-0.375l1.25-1l1.875-1.5
|
46
|
+
c0,0,1.875,0,2.5,0.5s-0.5,2.625-0.5,2.625l-2.375-0.5L23.938,31.02z"/>
|
47
|
+
<line style="fill:#FFFFFF;stroke:#260E0A;stroke-miterlimit:10;" x1="41.046" y1="23.683" x2="43.829" y2="21.605"/>
|
48
|
+
<polygon style="fill:#63170A;" points="21.313,38.395 45.188,36.52 44.938,39.02 21.688,39.145 "/>
|
49
|
+
<path style="fill:#FFC3BB;" d="M58.938,31.645c0,0-2.375,0.625-2.5-1.75l2.875-0.25L58.938,31.645z"/>
|
50
|
+
<polygon style="fill:#260E0A;" points="40.373,25.27 46.438,27.627 40.063,29.395 "/>
|
51
|
+
<polygon style="fill:#63170A;" points="2.563,34.895 3.563,34.895 3.688,36.645 2.688,37.52 "/>
|
52
|
+
<polygon style="fill:#63170A;" points="3.313,38.77 5.688,35.645 6.938,35.145 5.688,38.395 "/>
|
53
|
+
<path style="fill:none;stroke:#DD3E28;stroke-miterlimit:10;" d="M14.938,31.145c0,0,3.25,0.75,4.125,3l22.75-1.75l4-0.125
|
54
|
+
c0,0,3.75-2.875,7.625-1"/>
|
55
|
+
<circle style="fill:none;stroke:#595757;stroke-width:0.5;stroke-miterlimit:10;" cx="13.563" cy="37.395" r="3.375"/>
|
56
|
+
<g>
|
57
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;stroke-miterlimit:3;" points="16.438,35.895 13.813,37.27
|
58
|
+
13.188,34.27 "/>
|
59
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;stroke-miterlimit:10;" points="16.688,37.02 13.313,37.145
|
60
|
+
14.188,34.395 "/>
|
61
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;stroke-miterlimit:3;" points="14.938,40.02 13.813,37.27
|
62
|
+
15.813,39.52 "/>
|
63
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;" points="11.313,39.395 13.813,37.27 12.188,39.895 "/>
|
64
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;" points="10.688,35.52 13.813,37.27 10.438,36.645 "/>
|
65
|
+
</g>
|
66
|
+
<circle style="fill:none;stroke:#595757;stroke-width:0.5;stroke-miterlimit:10;" cx="50.313" cy="37.27" r="3.375"/>
|
67
|
+
<g>
|
68
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;stroke-miterlimit:3;" points="53.188,35.77 50.563,37.145
|
69
|
+
49.938,34.145 "/>
|
70
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;stroke-miterlimit:10;" points="53.438,36.895 50.063,37.02
|
71
|
+
50.938,34.27 "/>
|
72
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;stroke-miterlimit:3;" points="51.688,39.895 50.563,37.145
|
73
|
+
52.563,39.395 "/>
|
74
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;" points="48.063,39.27 50.563,37.145 48.938,39.77 "/>
|
75
|
+
<polyline style="fill:none;stroke:#F7F7F7;stroke-width:0.5;" points="47.438,35.395 50.563,37.145 47.188,36.52 "/>
|
76
|
+
</g>
|
77
|
+
</g>
|
78
|
+
</svg>
|