Merge pull request #3372 from splitbrain/mediaitems

Media Manager Refactoring
This commit is contained in:
Andreas Gohr 2021-02-16 21:02:20 +01:00 committed by GitHub
commit c4faa1ad31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
68 changed files with 640 additions and 410 deletions

View File

@ -1,6 +1,7 @@
<?php
class media_searchlist_test extends DokuWikiTest {
class media_searchlist_test extends DokuWikiTest
{
/**
* @var string namespace used for testing
@ -10,11 +11,12 @@ class media_searchlist_test extends DokuWikiTest {
/**
* Save the file
*
* @param $name name of saving file
* @param $copy file used as a content of uploaded file
* @param string $name name of saving file
* @param string $copy file used as a content of uploaded file
*/
protected function save($name, $copy) {
$media_id = $this->upload_ns.':'.$name;
protected function save($name, $copy)
{
$media_id = $this->upload_ns . ':' . $name;
media_save(array('name' => $copy), $media_id, true, AUTH_UPLOAD, 'copy');
}
@ -23,7 +25,10 @@ class media_searchlist_test extends DokuWikiTest {
*
* @throws Exception
*/
function setUp() {
public function setUp()
{
parent::setUp();
//create some files to search
$png = mediaFN('wiki:kind_zu_katze.png');
$ogv = mediaFN('wiki:kind_zu_katze.ogv');
@ -44,54 +49,6 @@ class media_searchlist_test extends DokuWikiTest {
}
/*
* Reset media_printfile static variable $twibble to stat state
*/
protected function reset_media_printfile() {
$reflect = new ReflectionFunction('media_printfile');
$static = $reflect->getStaticVariables();
if ($static['twibble'] == -1) {
ob_start();
@media_printfile(array(), 0, '');
ob_end_clean();
}
}
/**
* Build search result header as in media_searchlist() with $fullscreen = false
*
* @param $query search query
* @param $ns namespece where we search
*
* @return string
*/
protected function media_searchlist_header($query, $ns) {
global $lang;
$header = '<h1 id="media__ns">'.sprintf($lang['searchmedia_in'],hsc($ns).':*').'</h1>'.NL;
ob_start();
media_searchform($ns,$query);
$header .= ob_get_contents();
ob_end_clean();
return $header;
}
/**
* Wrap around media_printfile: return the result.
*
* @param $item
* @return string
*/
protected function media_printfile($item) {
ob_start();
media_printfile($item,$item['perm'],'',true);
$out = ob_get_contents();
ob_end_clean();
return $out;
}
/**
* Wrap around media_searchlist: return the result
* Reset media_printfile static variables afterwards
@ -100,159 +57,53 @@ class media_searchlist_test extends DokuWikiTest {
* @param $ns
* @return string
*/
protected function media_searchlist($query, $ns) {
protected function media_searchlist($query, $ns)
{
ob_start();
media_searchlist($query, $ns);
$out = ob_get_contents();
ob_end_clean();
//reset media_printfile static variables
$this->reset_media_printfile();
return $out;
}
/**
*
* @param array[string] $rel_ids media ids relative to $this->upload_ns
* @return array $items as required by media_printfile
* @return array[]
* @see testSearch
*/
protected function create_media_items($rel_ids) {
$items = array();
foreach ($rel_ids as $rel_id){
$file = mediaFN($this->upload_ns . ':' . $rel_id);
$info = array();
$info['id'] = $this->upload_ns . ':' . $rel_id;
$info['perm'] = auth_quickaclcheck(getNS($info['id']).':*');
$info['file'] = \dokuwiki\Utf8\PhpString::basename($file);
$info['size'] = filesize($file);
$info['mtime'] = filemtime($file);
$info['writable'] = is_writable($file);
if(preg_match("/\.(jpe?g|gif|png)$/",$file)){
$info['isimg'] = true;
$info['meta'] = new JpegMeta($file);
}else{
$info['isimg'] = false;
}
$info['hash'] = md5(io_readFile(mediaFN($info['id']),false));
$items[] = $info;
}
return $items;
public function provideSearch()
{
return [
['a.png', ['a:a.png', 'b:a.png', 'a.png', 'aa.png']], // no globbing
['a*.png', ['a:a.png', 'b:a.png', 'a.png', 'aa.png', 'ab.png']], // globbing asterisk
['*.ogv', ['a.ogv', 'aa.ogv', 'ab.ogv']], // globbing find by ext
['a?.png', ['aa.png', 'ab.png']], // globbing question mark
['a?.*', ['aa.ogv', 'aa.png', 'ab.ogv', 'ab.png']], // globbing question mark and asterisk
['?.png', ['a:a.png', 'b:a.png', 'a.png']], // globbing question mark on the beginning
['??.png', ['aa.png', 'ab.png']], // globbing two question marks on the beginning
['??.*', ['aa.ogv', 'aa.png', 'ab.ogv', 'ab.png']], // globbing two letter file names
['0', ['0.webm']], // zero search
];
}
/**
* Output result as in 'media_searchlist' but use an arbitrary media IDs list instead of actual searching
* Reset media_printfile static variables afterwards
*
* @param array[string] $rel_ids media ids relative to $this->upload_ns
* @param string $query actual seqrch query (used for filling search filed input)
* @param string $ns
* @return string
* @dataProvider provideSearch
* @param string $query The query to use
* @param string[] $expected The expected media IDs in the result HTML
* @throws Exception
*/
protected function media_searchlist_except($rel_ids, $query, $ns) {
//build a search result header
$expect = $this->media_searchlist_header($query, $ns);
public function testSearch($query, $expected)
{
$result = $this->media_searchlist($query, $this->upload_ns);
$pq = phpQuery::newDocument($result);
//get the items list
$items = $this->create_media_items($rel_ids);
foreach ($items as $item) {
$expect .= $this->media_printfile($item);
$elements = $pq->find('a.mediafile');
$actual = [];
foreach ($elements as $element) {
$actual[] = $element->textContent;
}
//reset media_printfile static variables
$this->reset_media_printfile();
return $expect;
$this->assertEquals(count($expected), count($elements));
$this->assertEquals($expected, $actual);
}
public function test_noglobbing(){
$query = 'a.png';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('a:a.png', 'b:a.png', 'a.png', 'aa.png'), $query, $ns);
$this->assertEquals($expect, $result);
}
public function test_globbing_asterisk(){
$query = 'a*.png';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('a:a.png', 'b:a.png', 'a.png', 'aa.png', 'ab.png'), $query, $ns);
$this->assertEquals($expect, $result);
}
public function test_globbing_find_by_ext(){
$query = '*.ogv';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('a.ogv', 'aa.ogv', 'ab.ogv'), $query, $ns);
$this->assertEquals($expect, $result);
}
public function test_globbing_question_mark(){
$query = 'a?.png';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('aa.png', 'ab.png'), $query, $ns);
$this->assertEquals($expect, $result);
}
public function test_globbing_question_mark_and_asterisk(){
$query = 'a?.*';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('aa.ogv', 'aa.png', 'ab.ogv', 'ab.png'), $query, $ns);
$this->assertEquals($expect, $result);
}
public function test_globbing_question_mark_on_the_begining(){
$query = '?.png';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('a:a.png', 'b:a.png', 'a.png'), $query, $ns);
$this->assertEquals($expect, $result);
}
public function test_globbing_two_question_marks_on_the_begining(){
$query = '??.png';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('aa.png', 'ab.png'), $query, $ns);
$this->assertEquals($expect, $result);
}
public function test_globbing_two_letter_file_names(){
$query = '??.*';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('aa.ogv', 'aa.png', 'ab.ogv', 'ab.png'), $query, $ns);
$this->assertEquals($expect, $result);
}
public function test_zero_search(){
$query = '0';
$ns = $this->upload_ns;
$result = $this->media_searchlist($query, $ns);
$expect = $this->media_searchlist_except(array('0.webm'), $query, $ns);
$this->assertEquals($expect, $result);
}
}

166
inc/File/MediaFile.php Normal file
View File

@ -0,0 +1,166 @@
<?php
namespace dokuwiki\File;
use dokuwiki\Utf8\PhpString;
class MediaFile
{
protected $id;
protected $path;
protected $mime;
protected $ext;
protected $downloadable;
protected $width;
protected $height;
protected $meta;
/**
* MediaFile constructor.
* @param string $id
* @param string|int $rev optional revision
*/
public function __construct($id, $rev = '')
{
$this->id = $id; //FIXME should it be cleaned?
$this->path = mediaFN($id, $rev);
list($this->ext, $this->mime, $this->downloadable) = mimetype($this->path, false);
}
/** @return string */
public function getId()
{
return $this->id;
}
/** @return string */
public function getPath()
{
return $this->path;
}
/**
* The ID without namespace, used for display purposes
*
* @return string
*/
public function getDisplayName()
{
return noNS($this->id);
}
/** @return string */
public function getMime()
{
if (!$this->mime) return 'application/octet-stream';
return $this->mime;
}
/** @return string */
public function getExtension()
{
return (string)$this->ext;
}
/**
* Similar to the extesion but does some clean up
*
* @return string
*/
public function getIcoClass()
{
$ext = $this->getExtension();
if ($ext === '') $ext = 'file';
return preg_replace('/[^_\-a-z0-9]+/i', '_', $ext);
}
/**
* Should this file be downloaded instead being displayed inline?
*
* @return bool
*/
public function isDownloadable()
{
return $this->downloadable;
}
/** @return int */
public function getFileSize()
{
return filesize($this->path);
}
/** @return int */
public function getLastModified()
{
return filemtime($this->path);
}
/** @return bool */
public function isWritable()
{
return is_writable($this->path);
}
/** @return bool */
public function isImage()
{
return (substr($this->mime, 0, 6) === 'image/');
}
/**
* initializes width and height for images when requested
*/
protected function initSizes()
{
$this->width = 0;
$this->height = 0;
if (!$this->isImage()) return;
$info = getimagesize($this->path);
if ($info === false) return;
list($this->width, $this->height) = $info;
}
/**
* Returns the width if this is a supported image, 0 otherwise
*
* @return int
*/
public function getWidth()
{
if ($this->width === null) $this->initSizes();
return $this->width;
}
/**
* Returns the height if this is a supported image, 0 otherwise
*
* @return int
*/
public function getHeight()
{
if ($this->height === null) $this->initSizes();
return $this->height;
}
/**
* Returns the permissions the current user has on the file
*
* @todo doing this for each file within a namespace is a waste, we need to cache this somehow
* @return int
*/
public function userPermission()
{
return auth_quickaclcheck(getNS($this->id).':*');
}
/** @return \JpegMeta */
public function getMeta()
{
if($this->meta === null) $this->meta = new \JpegMeta($this->path);
return $this->meta;
}
}

119
inc/Ui/Media/Display.php Normal file
View File

@ -0,0 +1,119 @@
<?php
namespace dokuwiki\Ui\Media;
use dokuwiki\File\MediaFile;
class Display
{
/** @var MediaFile */
protected $mediaFile;
/** @var string should IDs be shown relative to this namespace? Used in search results */
protected $relativeDisplay = null;
/** @var bool scroll to this file on display? */
protected $scrollIntoView = false;
/**
* Display constructor.
* @param MediaFile $mediaFile
*/
public function __construct(MediaFile $mediaFile)
{
$this->mediaFile = $mediaFile;
}
/**
* Get the HTML to display a preview image if possible, otherwise show an icon
*
* @param int $w bounding box width to resize pixel based images to
* @param int $h bounding box height to resize pixel based images to
* @return string
*/
public function getPreviewHtml($w, $h)
{
if ($this->mediaFile->isImage()) {
$src = ml($this->mediaFile->getId(), ['w' => $w, 'h' => $h]);
} else {
$src = $this->getIconUrl();
}
return '<img src="' . $src . '" alt="' . hsc($this->mediaFile->getDisplayName()) . '" loading="lazy" />';
}
/**
* Return the URL to the icon for this file
*
* @return string
*/
public function getIconUrl()
{
$link = 'lib/images/fileicons/svg/' . $this->mediaFile->getIcoClass() . '.svg';
if (!file_exists(DOKU_INC . $link)) $link = 'lib/images/fileicons/svg/file.svg';
return DOKU_BASE . $link;
}
/**
* Show IDs relative to this namespace
*
* @param string|null $ns Use null to disable
*/
public function relativeDisplay($ns)
{
$this->relativeDisplay = $ns;
}
/**
* Scroll to this file on display?
*
* @param bool $set
*/
public function scrollIntoView($set = true)
{
$this->scrollIntoView = $set;
}
/** @return string */
protected function formatDate()
{
return dformat($this->mediaFile->getLastModified());
}
/**
* Output the image dimension if any
*
* @param string $empty what to show when no dimensions are available
* @return string
*/
protected function formatDimensions($empty = '&#160;')
{
$w = $this->mediaFile->getWidth();
$h = $this->mediaFile->getHeight();
if ($w && $h) {
return $w . '&#215;' . $h;
} else {
return $empty;
}
}
/** @return string */
protected function formatFileSize()
{
return filesize_h($this->mediaFile->getFileSize());
}
/** @return string */
protected function formatDisplayName()
{
if ($this->relativeDisplay !== null) {
$id = $this->mediaFile->getId();
if (substr($id, 0, strlen($this->relativeDisplay)) == $this->relativeDisplay) {
$id = substr($id, strlen($this->relativeDisplay));
}
return ltrim($id, ':');
} else {
return $this->mediaFile->getDisplayName();
}
}
}

View File

@ -0,0 +1,93 @@
<?php
namespace dokuwiki\Ui\Media;
use dokuwiki\Utf8\PhpString;
/**
* Display a MediaFile in the Media Popup
*/
class DisplayRow extends DisplayTile
{
/** @inheritDoc */
public function show()
{
global $lang;
// FIXME Zebra classes have been dropped and need to be readded via CSS
$id = $this->mediaFile->getId();
$class = 'select mediafile mf_' . $this->mediaFile->getIcoClass();
$info = trim($this->formatDimensions('') . ' ' . $this->formatDate() . ' ' . $this->formatFileSize());
$jump = $this->scrollIntoView ? 'id="scroll__here"' : '';
echo '<div title="' . $id . '" ' . $jump . '>';
echo '<a id="h_:' . $id . '" class="' . $class . '">' .
$this->formatDisplayName() .
'</a> ';
echo '<span class="info">(' . $info . ')</span>' . NL;
// view button
$link = ml($id, '', true);
echo ' <a href="' . $link . '" target="_blank"><img src="' . DOKU_BASE . 'lib/images/magnifier.png" ' .
'alt="' . $lang['mediaview'] . '" title="' . $lang['mediaview'] . '" class="btn" /></a>';
// mediamanager button
$link = wl('', array('do' => 'media', 'image' => $id, 'ns' => getNS($id)));
echo ' <a href="' . $link . '" target="_blank"><img src="' . DOKU_BASE . 'lib/images/mediamanager.png" ' .
'alt="' . $lang['btn_media'] . '" title="' . $lang['btn_media'] . '" class="btn" /></a>';
// delete button
if ($this->mediaFile->isWritable() && $this->mediaFile->userPermission() >= AUTH_DELETE) {
$link = DOKU_BASE . 'lib/exe/mediamanager.php?delete=' . rawurlencode($id) .
'&amp;sectok=' . getSecurityToken();
echo ' <a href="' . $link . '" class="btn_media_delete" title="' . $id . '">' .
'<img src="' . DOKU_BASE . 'lib/images/trash.png" alt="' . $lang['btn_delete'] . '" ' .
'title="' . $lang['btn_delete'] . '" class="btn" /></a>';
}
echo '<div class="example" id="ex_' . str_replace(':', '_', $id) . '">';
echo $lang['mediausage'] . ' <code>{{:' . $id . '}}</code>';
echo '</div>';
if ($this->mediaFile->getWidth()) $this->showDetails();
echo '<div class="clearer"></div>' . NL;
echo '</div>' . NL;
}
/**
* Show Thumbnail and EXIF data
*/
protected function showDetails()
{
$id = $this->mediaFile->getId();
echo '<div class="detail">';
echo '<div class="thumb">';
echo '<a id="d_:' . $id . '" class="select">';
echo $this->getPreviewHtml(120, 120);
echo '</a>';
echo '</div>';
// read EXIF/IPTC data
$t = $this->mediaFile->getMeta()->getField(array('IPTC.Headline', 'xmp.dc:title'));
$d = $this->mediaFile->getMeta()->getField(array(
'IPTC.Caption',
'EXIF.UserComment',
'EXIF.TIFFImageDescription',
'EXIF.TIFFUserComment',
));
if (PhpString::strlen($d) > 250) $d = PhpString::substr($d, 0, 250) . '...';
$k = $this->mediaFile->getMeta()->getField(array('IPTC.Keywords', 'IPTC.Category', 'xmp.dc:subject'));
// print EXIF/IPTC data
if ($t || $d || $k) {
echo '<p>';
if ($t) echo '<strong>' . hsc($t) . '</strong><br />';
if ($d) echo hsc($d) . '<br />';
if ($t) echo '<em>' . hsc($k) . '</em>';
echo '</p>';
}
echo '</div>';
}
}

View File

@ -0,0 +1,54 @@
<?php
namespace dokuwiki\Ui\Media;
use dokuwiki\File\MediaFile;
/**
* Display a MediaFile in the FullScreen MediaManager
*/
class DisplayTile extends Display
{
/** @var string URL to open this file in the media manager */
protected $mmUrl;
/** @inheritDoc */
public function __construct(MediaFile $mediaFile)
{
parent::__construct($mediaFile);
// FIXME we may want to integrate this function here or in another class
$this->mmUrl = media_managerURL([
'image' => $this->mediaFile->getId(),
'ns' => getNS($this->mediaFile->getId()),
'tab_details' => 'view',
]);
}
/**
* Display the tile
*/
public function show()
{
$jump = $this->scrollIntoView ? 'id="scroll__here"' : '';
echo '<dl title="' . $this->mediaFile->getDisplayName() . '"' . $jump . '>';
echo '<dt>';
echo '<a id="l_:' . $this->mediaFile->getId() . '" class="image thumb" href="' . $this->mmUrl . '">';
echo $this->getPreviewHtml(90, 90);
echo '</a>';
echo '</dt>';
echo '<dd class="name">';
echo '<a href="' . $this->mmUrl . '" id="h_:' . $this->mediaFile->getId() . '">' .
$this->formatDisplayName() .
'</a>';
echo '</dd>';
echo '<dd class="size">' . $this->formatDimensions() . '</dd>';
echo '<dd class="date">' . $this->formatDate() . '</dd>';
echo '<dd class="filesize">' . $this->formatFileSize() . '</dd>';
echo '</dl>';
}
}

View File

@ -699,7 +699,7 @@ function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=fals
$dir = utf8_encodeFN(str_replace(':','/',$ns));
$data = array();
search($data,$conf['mediadir'],'search_media',
search($data,$conf['mediadir'],'search_mediafiles',
array('showmsg'=>true,'depth'=>1),$dir,1,$sort);
if(!count($data)){
@ -710,9 +710,17 @@ function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=fals
}
foreach($data as $item){
if (!$fullscreenview) {
media_printfile($item,$auth,$jump);
//FIXME old call: media_printfile($item,$auth,$jump);
$display = new \dokuwiki\Ui\Media\DisplayRow($item);
$display->scrollIntoView($jump == $item->getID());
$display->show();
} else {
media_printfile_thumbs($item,$auth,$jump);
//FIXME old call: media_printfile_thumbs($item,$auth,$jump);
echo '<li>';
$display = new \dokuwiki\Ui\Media\DisplayTile($item);
$display->scrollIntoView($jump == $item->getID());
$display->show();
echo '</li>';
}
}
if ($fullscreenview) echo '</ul>'.NL;
@ -1536,7 +1544,7 @@ function media_searchlist($query,$ns,$auth=null,$fullscreen=false,$sort='natural
$pattern = '/'.$quoted.'/i';
search($evdata['data'],
$conf['mediadir'],
'search_media',
'search_mediafiles',
array('showmsg'=>false,'pattern'=>$pattern),
$dir,
1,
@ -1558,93 +1566,24 @@ function media_searchlist($query,$ns,$auth=null,$fullscreen=false,$sort='natural
echo '<ul class="' . _media_get_list_type() . '">';
}
foreach($evdata['data'] as $item){
if (!$fullscreen) media_printfile($item,$item['perm'],'',true);
else media_printfile_thumbs($item,$item['perm'],false,true);
if (!$fullscreen) {
// FIXME old call: media_printfile($item,$item['perm'],'',true);
$display = new \dokuwiki\Ui\Media\DisplayRow($item);
$display->relativeDisplay($ns);
$display->show();
} else {
// FIXME old call: media_printfile_thumbs($item,$item['perm'],false,true);
$display = new \dokuwiki\Ui\Media\DisplayTile($item);
$display->relativeDisplay($ns);
echo '<li>';
$display->show();
echo '</li>';
}
}
if ($fullscreen) echo '</ul>'.NL;
}
}
/**
* Formats and prints one file in the list
*
* @param array $item
* @param int $auth permission level
* @param string $jump item id
* @param bool $display_namespace
*/
function media_printfile($item,$auth,$jump,$display_namespace=false){
global $lang;
// Prepare zebra coloring
// I always wanted to use this variable name :-D
static $twibble = 1;
$twibble *= -1;
$zebra = ($twibble == -1) ? 'odd' : 'even';
// Automatically jump to recent action
if($jump == $item['id']) {
$jump = ' id="scroll__here" ';
}else{
$jump = '';
}
// Prepare fileicons
list($ext) = mimetype($item['file'],false);
$class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
$class = 'select mediafile mf_'.$class;
// Prepare filename
$file = utf8_decodeFN($item['file']);
// Prepare info
$info = '';
if($item['isimg']){
$info .= (int) $item['meta']->getField('File.Width');
$info .= '&#215;';
$info .= (int) $item['meta']->getField('File.Height');
$info .= ' ';
}
$info .= '<i>'.dformat($item['mtime']).'</i>';
$info .= ' ';
$info .= filesize_h($item['size']);
// output
echo '<div class="'.$zebra.'"'.$jump.' title="'.hsc($item['id']).'">'.NL;
if (!$display_namespace) {
echo '<a id="h_:'.$item['id'].'" class="'.$class.'">'.hsc($file).'</a> ';
} else {
echo '<a id="h_:'.$item['id'].'" class="'.$class.'">'.hsc($item['id']).'</a><br/>';
}
echo '<span class="info">('.$info.')</span>'.NL;
// view button
$link = ml($item['id'],'',true);
echo ' <a href="'.$link.'" target="_blank"><img src="'.DOKU_BASE.'lib/images/magnifier.png" '.
'alt="'.$lang['mediaview'].'" title="'.$lang['mediaview'].'" class="btn" /></a>';
// mediamanager button
$link = wl('',array('do'=>'media','image'=>$item['id'],'ns'=>getNS($item['id'])));
echo ' <a href="'.$link.'" target="_blank"><img src="'.DOKU_BASE.'lib/images/mediamanager.png" '.
'alt="'.$lang['btn_media'].'" title="'.$lang['btn_media'].'" class="btn" /></a>';
// delete button
if($item['writable'] && $auth >= AUTH_DELETE){
$link = DOKU_BASE.'lib/exe/mediamanager.php?delete='.rawurlencode($item['id']).
'&amp;sectok='.getSecurityToken();
echo ' <a href="'.$link.'" class="btn_media_delete" title="'.$item['id'].'">'.
'<img src="'.DOKU_BASE.'lib/images/trash.png" alt="'.$lang['btn_delete'].'" '.
'title="'.$lang['btn_delete'].'" class="btn" /></a>';
}
echo '<div class="example" id="ex_'.str_replace(':','_',$item['id']).'">';
echo $lang['mediausage'].' <code>{{:'.$item['id'].'}}</code>';
echo '</div>';
if($item['isimg']) media_printimgdetail($item);
echo '<div class="clearer"></div>'.NL;
echo '</div>'.NL;
}
/**
* Display a media icon
*
@ -1664,127 +1603,6 @@ function media_printicon($filename, $size=''){
return '<img src="'.$icon.'" alt="'.$filename.'" class="icon" />';
}
/**
* Formats and prints one file in the list in the thumbnails view
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param array $item
* @param int $auth permission level
* @param bool|string $jump item id
* @param bool $display_namespace
*/
function media_printfile_thumbs($item,$auth,$jump=false,$display_namespace=false){
// Prepare filename
$file = utf8_decodeFN($item['file']);
// output
echo '<li><dl title="'.hsc($item['id']).'">'.NL;
echo '<dt>';
if($item['isimg']) {
media_printimgdetail($item, true);
} else {
echo '<a id="d_:'.$item['id'].'" class="image" title="'.$item['id'].'" href="'.
media_managerURL(['image' => hsc($item['id']), 'ns' => getNS($item['id']),
'tab_details' => 'view']).'">';
echo media_printicon($item['id'], '32x32');
echo '</a>';
}
echo '</dt>'.NL;
if (!$display_namespace) {
$name = hsc($file);
} else {
$name = hsc($item['id']);
}
echo '<dd class="name"><a href="'.media_managerURL(['image' => hsc($item['id']), 'ns' => getNS($item['id']),
'tab_details' => 'view']).'" id="h_:'.$item['id'].'">'.$name.'</a></dd>'.NL;
if($item['isimg']){
$size = '';
$size .= (int) $item['meta']->getField('File.Width');
$size .= '&#215;';
$size .= (int) $item['meta']->getField('File.Height');
echo '<dd class="size">'.$size.'</dd>'.NL;
} else {
echo '<dd class="size">&#160;</dd>'.NL;
}
$date = dformat($item['mtime']);
echo '<dd class="date">'.$date.'</dd>'.NL;
$filesize = filesize_h($item['size']);
echo '<dd class="filesize">'.$filesize.'</dd>'.NL;
echo '</dl></li>'.NL;
}
/**
* Prints a thumbnail and metainfo
*
* @param array $item
* @param bool $fullscreen
*/
function media_printimgdetail($item, $fullscreen=false){
// prepare thumbnail
$size = $fullscreen ? 90 : 120;
$w = (int) $item['meta']->getField('File.Width');
$h = (int) $item['meta']->getField('File.Height');
if($w>$size || $h>$size){
if (!$fullscreen) {
$ratio = $item['meta']->getResizeRatio($size);
} else {
$ratio = $item['meta']->getResizeRatio($size,$size);
}
$w = floor($w * $ratio);
$h = floor($h * $ratio);
}
$src = ml($item['id'],array('w'=>$w,'h'=>$h,'t'=>$item['mtime']));
$p = array();
if (!$fullscreen) {
// In fullscreen mediamanager view, image resizing is done via CSS.
$p['width'] = $w;
$p['height'] = $h;
}
$p['alt'] = $item['id'];
$att = buildAttributes($p);
// output
if ($fullscreen) {
echo '<a id="l_:'.$item['id'].'" class="image thumb" href="'.
media_managerURL(['image' => hsc($item['id']), 'ns' => getNS($item['id']), 'tab_details' => 'view']).'">';
echo '<img src="'.$src.'" '.$att.' />';
echo '</a>';
}
if ($fullscreen) return;
echo '<div class="detail">';
echo '<div class="thumb">';
echo '<a id="d_:'.$item['id'].'" class="select">';
echo '<img src="'.$src.'" '.$att.' />';
echo '</a>';
echo '</div>';
// read EXIF/IPTC data
$t = $item['meta']->getField(array('IPTC.Headline','xmp.dc:title'));
$d = $item['meta']->getField(array('IPTC.Caption','EXIF.UserComment',
'EXIF.TIFFImageDescription',
'EXIF.TIFFUserComment'));
if(\dokuwiki\Utf8\PhpString::strlen($d) > 250) $d = \dokuwiki\Utf8\PhpString::substr($d,0,250).'...';
$k = $item['meta']->getField(array('IPTC.Keywords','IPTC.Category','xmp.dc:subject'));
// print EXIF/IPTC data
if($t || $d || $k ){
echo '<p>';
if($t) echo '<strong>'.hsc($t).'</strong><br />';
if($d) echo hsc($d).'<br />';
if($t) echo '<em>'.hsc($k).'</em>';
echo '</p>';
}
echo '</div>';
}
/**
* Build link based on the current, adding/rewriting parameters
*

View File

@ -233,6 +233,58 @@ function search_media(&$data,$base,$file,$type,$lvl,$opts){
return false;
}
/**
* List all mediafiles in a namespace
* $opts['depth'] recursion level, 0 for all
* $opts['showmsg'] shows message if invalid media id is used
* $opts['skipacl'] skip acl checking
* $opts['pattern'] check given pattern
* $opts['hash'] add hashes to result list
*
* @todo This is a temporary copy of search_media returning a list of MediaFile intances
*
* @param array $data
* @param string $base
* @param string $file
* @param string $type
* @param integer $lvl
* @param array $opts
*
* @return bool
*/
function search_mediafiles(&$data,$base,$file,$type,$lvl,$opts){
//we do nothing with directories
if($type == 'd') {
if(empty($opts['depth'])) return true; // recurse forever
$depth = substr_count($file,'/');
if($depth >= $opts['depth']) return false; // depth reached
return true;
}
$id = pathID($file,true);
if($id != cleanID($id)){
if($opts['showmsg'])
msg(hsc($id).' is not a valid file name for DokuWiki - skipped',-1);
return false; // skip non-valid files
}
//check ACL for namespace (we have no ACL for mediafiles)
$info['perm'] = auth_quickaclcheck(getNS($id).':*');
if(empty($opts['skipacl']) && $info['perm'] < AUTH_READ){
return false;
}
//check pattern filter
if(!empty($opts['pattern']) && !@preg_match($opts['pattern'], $id)){
return false;
}
$data[] = new \dokuwiki\File\MediaFile($id);
return false;
}
/**
* This function just lists documents (for RSS namespace export)
*

View File

@ -357,30 +357,26 @@ function css_filetypes(){
// default style
echo '.mediafile {';
echo ' background: transparent url('.DOKU_BASE.'lib/images/fileicons/file.png) 0px 1px no-repeat;';
echo ' padding-left: 18px;';
echo ' padding-bottom: 1px;';
echo ' background: transparent url('.DOKU_BASE.'lib/images/fileicons/svg/file.svg) 0px 1px no-repeat;';
echo ' background-size: 1.2em;';
echo ' padding-left: 1.5em;';
echo '}';
// additional styles when icon available
// scan directory for all icons
$exts = array();
if($dh = opendir(DOKU_INC.'lib/images/fileicons')){
if($dh = opendir(DOKU_INC.'lib/images/fileicons/svg')){
while(false !== ($file = readdir($dh))){
if(preg_match('/([_\-a-z0-9]+(?:\.[_\-a-z0-9]+)*?)\.(png|gif)/i',$file,$match)){
$ext = strtolower($match[1]);
$type = '.'.strtolower($match[2]);
if($ext!='file' && (!isset($exts[$ext]) || $type=='.png')){
$exts[$ext] = $type;
}
if(preg_match('/(.*?)\.svg$/i',$file, $match)){
$exts[] = strtolower($match[1]);
}
}
closedir($dh);
}
foreach($exts as $ext=>$type){
foreach($exts as $ext){
$class = preg_replace('/[^_\-a-z0-9]+/','_',$ext);
echo ".mf_$class {";
echo ' background-image: url('.DOKU_BASE.'lib/images/fileicons/'.$ext.$type.')';
echo ' background-image: url('.DOKU_BASE.'lib/images/fileicons/svg/'.$ext.'.svg)';
echo '}';
}
}

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#d8a13f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M72.4 38.5h-7.9v-7.9l7.9 7.9zm-21.3-7.9v28.8h21.4v-19h-9.9v-9.9H51.1zm3.3-7.6H30.8v5.6h9.3l-5.9 4.5v4.8l8.6-6.6v-2.7h30.1v-2.3L54.4 23zM42.9 35.1l-8.6 6.6v4.8l8.6-6.6v-4.8zm-8.7 20l8.6-6.6v-4.8l-8.6 6.6v4.8zm8.7 2v-4.8l-8.6 6.6v2.6h-3.4v5.6h5.3v3.8H33c-.6-1-1.6-1.6-2.8-1.6-1.8 0-3.2 1.4-3.2 3.2s1.4 3.2 3.2 3.2c1.2 0 2.2-.6 2.8-1.6h3.1V77h4.8v-2.9H44c.6 1 1.6 1.6 2.8 1.6 1.8 0 3.2-1.4 3.2-3.2s-1.4-3.2-3.2-3.2c-1.2 0-2.2.6-2.8 1.6h-3.1v-3.8h13.5l18.5-3.3v-2.3H37.1l5.8-4.4z"/></svg>

After

Width:  |  Height:  |  Size: 703 B

View File

@ -0,0 +1 @@
Icons come from https://fileicons.org/

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#999"/><path d="M69.4 28.6v5.5H21.5v-5.5M30.6 41h47.9v5.6H30.6zm-9.1 12.4h47.9V59H21.5zm9.1 12.5h47.9v5.6H30.6z" fill="#999" stroke="#999" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 327 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#999"/><path d="M42.3 44.2h15.4V48H42.3v-3.8zm0 7.7h15.4v3.8H42.3v-3.8zm0 7.7h15.4v3.8H42.3v-3.8zM69.2 25H38.5c-4.2 0-7.7 3.4-7.7 7.7v34.6h-7.7c0 4.2 3.4 7.7 7.7 7.7h30.8c4.2 0 7.7-3.4 7.7-7.7V36.5H77v-3.8c-.1-4.3-3.5-7.7-7.8-7.7zm-3.8 41.6c0 2.5-2 4.5-4.5 4.5H32.7c1.9-1.3 1.9-3.8 1.9-3.8V32.7c0-2.1 1.7-3.8 3.8-3.8s3.8 1.7 3.8 3.8v3.8h23.1v30.1zM46.2 32.7v-3.8h23.1c3.5 0 3.8 2.2 3.8 3.8H46.2z" fill="#999" stroke="#999" stroke-width=".75" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 630 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#d8a13f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M72.4 38.5h-7.9v-7.9l7.9 7.9zm-21.3-7.9v28.8h21.4v-19h-9.9v-9.9H51.1zm3.3-7.6H30.8v5.6h9.3l-5.9 4.5v4.8l8.6-6.6v-2.7h30.1v-2.3L54.4 23zM42.9 35.1l-8.6 6.6v4.8l8.6-6.6v-4.8zm-8.7 20l8.6-6.6v-4.8l-8.6 6.6v4.8zm8.7 2v-4.8l-8.6 6.6v2.6h-3.4v5.6h5.3v3.8H33c-.6-1-1.6-1.6-2.8-1.6-1.8 0-3.2 1.4-3.2 3.2s1.4 3.2 3.2 3.2c1.2 0 2.2-.6 2.8-1.6h3.1V77h4.8v-2.9H44c.6 1 1.6 1.6 2.8 1.6 1.8 0 3.2-1.4 3.2-3.2s-1.4-3.2-3.2-3.2c-1.2 0-2.2.6-2.8 1.6h-3.1v-3.8h13.5l18.5-3.3v-2.3H37.1l5.8-4.4z"/></svg>

After

Width:  |  Height:  |  Size: 703 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path d="M51.8 73c-12.4 0-22.5-10.1-22.5-22.5S39.4 28 51.8 28c7.1 0 13.6 3.3 17.9 8.9l-8.2 4.8c-2.5-2.7-6-4.3-9.7-4.3-7.2 0-13.1 5.9-13.1 13.1s5.9 13.1 13.1 13.1c3.7 0 7.2-1.6 9.7-4.3l8.2 4.8C65.4 69.7 58.9 73 51.8 73z" fill="#215997"/></svg>

After

Width:  |  Height:  |  Size: 407 B

View File

@ -0,0 +1 @@
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#999}</style><path d="M0 0h100v100H0V0z" fill="#fff"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M57.5 42.7c0-3.2-1.9-5.7-4.7-6.8v-9.2c0-1.5-1.1-2.7-2.7-2.7-1.5 0-2.7 1.1-2.7 2.7v9.2c-2.8 1-4.7 3.7-4.7 6.8s1.9 5.8 4.7 6.8c0 .1-.1.4-.1.5v23.3c0 1.5 1.1 2.7 2.7 2.7 1.5 0 2.7-1.1 2.7-2.7V50.1c0-.3 0-.4-.1-.5 3-1.1 4.9-3.7 4.9-6.9zm-7.3 2c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm21.2-17.9c0-1.5-1.1-2.7-2.7-2.7-1.5 0-2.7 1.1-2.7 2.7v21.8c-2.8 1-4.7 3.7-4.7 6.8s1.9 5.8 4.7 6.8c0 .1-.1.4-.1.5v10.6c0 1.5 1.1 2.7 2.7 2.7 1.5 0 2.7-1.1 2.7-2.7V62.7c0-.3 0-.4-.1-.5 2.8-1 4.7-3.7 4.7-6.8s-1.9-5.7-4.7-6.8V26.8h.2zm-2.6 30.6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM28.9 73.3c0 1.5 1.1 2.7 2.7 2.7s2.7-1.1 2.7-2.7V62.7c0-.3 0-.4-.1-.5 2.8-1 4.7-3.7 4.7-6.8s-1.9-5.7-4.7-6.8V26.8c0-1.5-1.1-2.7-2.7-2.7-1.5 0-2.7 1.1-2.7 2.7v21.8c-2.8 1-4.7 3.7-4.7 6.8s1.9 5.8 4.7 6.8c0 .1-.1.4-.1.5v10.6h.2zm2.7-19.9c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st2{fill:#215997}</style><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path class="st2" d="M44.4 72.5C32 72.5 21.9 62.4 21.9 50S32 27.5 44.4 27.5c7.1 0 13.6 3.3 17.9 8.9l-8.2 4.8c-2.5-2.7-6-4.3-9.7-4.3-7.2 0-13.1 5.9-13.1 13.1s5.9 13.1 13.1 13.1c3.7 0 7.2-1.6 9.7-4.3l8.2 4.8c-4.2 5.6-10.8 8.9-17.9 8.9z"/><path class="st2" d="M66.9 51.9h-3.7v3.7h-3.8v-3.7h-3.7v-3.8h3.7v-3.7h3.8v3.7h3.7zm13.2 0h-3.8v3.7h-3.7v-3.7h-3.8v-3.8h3.8v-3.7h3.7v3.7h3.8z"/></svg>

After

Width:  |  Height:  |  Size: 583 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st0{fill:#fff}.st1{fill:#d5006e}</style><path class="st0" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M44.9 73c-12.4 0-22.5-10.1-22.5-22.5S32.5 28 44.9 28c7.1 0 13.6 3.3 17.9 8.9l-8.2 4.8c-2.5-2.7-6-4.3-9.7-4.3-7.2 0-13.1 5.9-13.1 13.1s5.9 13.1 13.1 13.1c3.7 0 7.2-1.6 9.7-4.3l8.2 4.8C58.5 69.7 52 73 44.9 73z"/><path class="st1" d="M78.6 48.6h-3.7v3.8h3.7v3.7h-3.7v3.8h-3.8v-3.8h-3.7v3.8h-3.8v-3.8h-3.7v-3.7h3.7v-3.8h-3.7v-3.7h3.7v-3.8h3.8v3.8h3.7v-3.8h3.8v3.8h3.7z"/><path class="st0" d="M67.4 48.6h3.8v3.8h-3.8z"/></svg>

After

Width:  |  Height:  |  Size: 655 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#999"/><path d="M42.3 44.2h15.4V48H42.3v-3.8zm0 7.7h15.4v3.8H42.3v-3.8zm0 7.7h15.4v3.8H42.3v-3.8zM69.2 25H38.5c-4.2 0-7.7 3.4-7.7 7.7v34.6h-7.7c0 4.2 3.4 7.7 7.7 7.7h30.8c4.2 0 7.7-3.4 7.7-7.7V36.5H77v-3.8c-.1-4.3-3.5-7.7-7.8-7.7zm-3.8 41.6c0 2.5-2 4.5-4.5 4.5H32.7c1.9-1.3 1.9-3.8 1.9-3.8V32.7c0-2.1 1.7-3.8 3.8-3.8s3.8 1.7 3.8 3.8v3.8h23.1v30.1zM46.2 32.7v-3.8h23.1c3.5 0 3.8 2.2 3.8 3.8H46.2z" fill="#999" stroke="#999" stroke-width=".75" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 630 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st0{fill:#fff}.st5{fill:#e6e6e5}</style><path class="st0" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path fill="#1072ba" d="M30.1 73l-4.3-49.5h48.4L69.9 73 50 78.5z"/><path fill="#2aaae2" d="M50 74.3l16.1-4.4 3.7-42.3H50z"/><path fill="#b4b4b4" d="M35.9 45.8l.5 6.1L50 45.8v-6.1z"/><path class="st5" d="M65.2 33.2L50 39.7v6.1l14.6-6.5zM50 61.7l-6.8-1.9-.4-4.8h-6.1l.8 9.5L50 68z"/><path class="st0" d="M50 45.8v6.1h7.5l-.7 7.9-6.8 1.9V68l12.4-3.5 1.7-18.7z"/><path class="st5" d="M50 45.8H35.9l.5 6.1H50zm0-6.5v-6.1H34.8l.5 6.1z"/><path class="st0" d="M50 33.2v6.1h14.6l.6-6.1z"/></svg>

After

Width:  |  Height:  |  Size: 699 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#1f7244}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M62.1 30.9h14.1v9.4H62.1zm0 14.5h14.1v9.4H62.1zm0 14.3h14.1v9.4H62.1zm-19.2 0H57v9.4H42.9zm-19 0H38v9.4H23.9zm19.2-14.2h14.1v9.4H43.1zm-19.2 0H38v9.4H23.9zm19.2-14.6h14.1v9.4H43.1zm-19.2 0H38v9.4H23.9z"/></svg>

After

Width:  |  Height:  |  Size: 429 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#a87d45}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M59.4 53.8L50 49.4l18.8-8.8 9.4 4.4-9.4 4.4-9.4 4.4zm9.4-21.9l-9.4-4.4-9.4 4.4 18.8 8.8 9.4-4.4-9.4-4.4zM40.6 45l-9.4-4.4-9.4 4.4 18.8 8.8 9.4-4.4-9.4-4.4zm0-8.7l9.4-4.4-9.4-4.4-18.8 8.8 9.4 4.4 9.4-4.4zM68.8 52l-8.4 3.9-1 .5-1-.5L50 52l-8.4 3.9-1 .5-1-.5-8.4-3.9v13.7L50 75.5l18.8-9.8V52z"/></svg>

After

Width:  |  Height:  |  Size: 517 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#2372ba}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M27.6 27l7.9 29.7L45.2 27h9.5l9.8 29.7L72.4 27H85L71.2 73H59l-9-26.7L41 73H28.8L15 27h12.6z"/></svg>

After

Width:  |  Height:  |  Size: 319 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#2372ba}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M27.6 27l7.9 29.7L45.2 27h9.5l9.8 29.7L72.4 27H85L71.2 73H59l-9-26.7L41 73H28.8L15 27h12.6z"/></svg>

After

Width:  |  Height:  |  Size: 319 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#bababa"/><path d="M71 36.3L57.8 23.1c-.4-.4-.9-.6-1.4-.6h-26c-1.1 0-2 .9-2 2v51.1c0 1.1.9 2 2 2h39.3c1.1 0 2-.9 2-2V37.7c-.1-.5-.3-1-.7-1.4zm-3.9 2.3H55.5V27l11.6 11.6zm.1 34.5H32.8V26.9h18.5v13.3c0 1.4 1.2 2.6 2.6 2.6h13.3v30.3z" fill="#bababa" stroke="#bababa" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 452 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#5b2d8d}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><circle class="st1" cx="32.4" cy="35" r="8"/><path class="st1" d="M78.9 47.3l-9.7-9.6L50 57l-9.6-9.7-19.3 19.3V73h57.8z"/></svg>

After

Width:  |  Height:  |  Size: 326 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#d8a13f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M72.4 38.5h-7.9v-7.9l7.9 7.9zm-21.3-7.9v28.8h21.4v-19h-9.9v-9.9H51.1zm3.3-7.6H30.8v5.6h9.3l-5.9 4.5v4.8l8.6-6.6v-2.7h30.1v-2.3L54.4 23zM42.9 35.1l-8.6 6.6v4.8l8.6-6.6v-4.8zm-8.7 20l8.6-6.6v-4.8l-8.6 6.6v4.8zm8.7 2v-4.8l-8.6 6.6v2.6h-3.4v5.6h5.3v3.8H33c-.6-1-1.6-1.6-2.8-1.6-1.8 0-3.2 1.4-3.2 3.2s1.4 3.2 3.2 3.2c1.2 0 2.2-.6 2.8-1.6h3.1V77h4.8v-2.9H44c.6 1 1.6 1.6 2.8 1.6 1.8 0 3.2-1.4 3.2-3.2s-1.4-3.2-3.2-3.2c-1.2 0-2.2.6-2.8 1.6h-3.1v-3.8h13.5l18.5-3.3v-2.3H37.1l5.8-4.4z"/></svg>

After

Width:  |  Height:  |  Size: 703 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path d="M33.4 29.8h7.4V47h18.5V29.8h7.4v40.5h-7.4v-17H40.7v17h-7.4V29.8z" fill="#215997" stroke="#215997" stroke-width="1.75" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 322 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st0{fill:#fff}</style><path class="st0" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path fill="#e44f26" d="M74.3 23.5H25.7l4.5 49.4L50 78.5l19.7-5.6z"/><path fill="#f1662a" d="M50 27.5v46.8l16-4.5 3.9-42.3z"/><path class="st0" d="M65.3 33.6H34.7l1.7 18.5.1-.2h20.8l-.6 7.9-6.7 1.9-6.8-1.9-.4-4.8h-6.1l.9 9.5L50 68l12.4-3.5 1.8-18.6H42l-.6-6.2h23.3z"/><path d="M50 33.6H34.7l1.7 18.5V52H50v-6h-8l-.6-6.2H50v-6.2zM42.8 55h-6.1l.9 9.4L50 68v-6.3l-6.7-2-.5-4.7z" fill="#ebebeb"/></svg>

After

Width:  |  Height:  |  Size: 593 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st0{fill:#fff}</style><path class="st0" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path fill="#e44f26" d="M74.3 23.5H25.7l4.5 49.4L50 78.5l19.7-5.6z"/><path fill="#f1662a" d="M50 27.5v46.8l16-4.5 3.9-42.3z"/><path class="st0" d="M65.3 33.6H34.7l1.7 18.5.1-.2h20.8l-.6 7.9-6.7 1.9-6.8-1.9-.4-4.8h-6.1l.9 9.5L50 68l12.4-3.5 1.8-18.6H42l-.6-6.2h23.3z"/><path d="M50 33.6H34.7l1.7 18.5V52H50v-6h-8l-.6-6.2H50v-6.2zM42.8 55h-6.1l.9 9.4L50 68v-6.3l-6.7-2-.5-4.7z" fill="#ebebeb"/></svg>

After

Width:  |  Height:  |  Size: 593 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#8ed200}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M49.7 25.4c.2-.5.4-.5.6 0L56 43c.2.5.7.9 1.2.9h18.6c.5 0 .6.2.2.6L61 55.4c-.4.3-.6.9-.5 1.5l5.7 17.7c.2.5-.1.7-.5.3L50.7 64c-.5-.3-1.1-.3-1.5 0l-15 10.9c-.4.3-.6.2-.5-.3l5.7-17.7c.1-.5 0-1.1-.5-1.5L24 44.5c-.4-.3-.3-.6.2-.6h18.6c.6 0 1.1-.4 1.2-.9l5.7-17.6z"/><path d="M49.7 25.4c.2-.5.4-.5.6 0L56 43c.2.5.7.9 1.2.9h18.6c.5 0 .6.2.2.6L61 55.4c-.4.3-.6.9-.5 1.5l5.7 17.7c.2.5-.1.7-.5.3L50.7 64c-.5-.3-1.1-.3-1.5 0l-15 10.9c-.4.3-.6.2-.5-.3l5.7-17.7c.1-.5 0-1.1-.5-1.5L24 44.5c-.4-.3-.3-.6.2-.6h18.6c.6 0 1.1-.4 1.2-.9l5.7-17.6z" fill="none"/></svg>

After

Width:  |  Height:  |  Size: 766 B

View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<title>Filetype icons</title>
<style>
body {
background-color: #fff;
font-family: Arial;
}
</style>
</head>
<body>
<?php
foreach (glob('*.svg') as $img) {
echo '<img src="'.$img.'" alt="'.$img.'" width="32" height="32" title="'.$img.'" /> ';
}
?>
</body>
</html>

View File

@ -0,0 +1 @@
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st2,.st3{fill:#c00;stroke:#c00;stroke-miterlimit:10}.st3{fill:#265db4;stroke:#265db4}</style><path d="M0 0h100v100H0V0z" fill="#fff"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path class="st2" d="M52.3 47.1c2.9 3.3-.8 6.3-.8 6.3s7.3-3.8 4-8.5c-3.1-4.4-5.6-6.6 7.5-14.2 0 0-20.5 5.2-10.7 16.4"/><path class="st2" d="M55.5 18.5s6.2 6.2-5.9 15.8c-9.7 7.7-2.2 12.1 0 17.1-5.7-5.1-9.8-9.6-7-13.8 4-6.2 15.4-9.2 12.9-19.1"/><path class="st3" d="M62.3 64.5c11.2-5.8 6-11.5 2.4-10.7-.9.2-1.3.3-1.3.3s.3-.5 1-.7c7.2-2.5 12.7 7.4-2.3 11.4-.1 0 .1-.2.2-.3m-20.7 2.4s-2.3 1.3 1.6 1.8c4.7.5 7.2.5 12.4-.5 0 0 1.4.9 3.3 1.6-11.7 5-26.5-.3-17.3-2.9m-1.4-6.5s-2.6 1.9 1.4 2.3c5.1.5 9.1.6 16-.8 0 0 1 1 2.5 1.5-14.2 4.2-30 .3-19.9-3"/><path class="st3" d="M67.8 71.8s1.7 1.4-1.9 2.5c-6.8 2.1-28.2 2.7-34.1.1-2.1-.9 1.9-2.2 3.1-2.5 1.3-.3 2.1-.2 2.1-.2-2.4-1.7-15.4 3.3-6.6 4.7 23.9 3.8 43.6-1.8 37.4-4.6M42.7 53.6s-10.9 2.6-3.9 3.5c3 .4 8.9.3 14.4-.2 4.5-.4 9-1.2 9-1.2s-1.6.7-2.7 1.5c-11.1 2.9-32.4 1.6-26.3-1.4 5.3-2.5 9.5-2.2 9.5-2.2"/><path class="st3" d="M43.8 80.3c10.8.7 27.3-.4 27.7-5.5 0 0-.8 1.9-8.9 3.5-9.2 1.7-20.6 1.5-27.3.4.1 0 1.5 1.2 8.5 1.6"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#5b2d8d}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><circle class="st1" cx="32.4" cy="35" r="8"/><path class="st1" d="M78.9 47.3l-9.7-9.6L50 57l-9.6-9.7-19.3 19.3V73h57.8z"/></svg>

After

Width:  |  Height:  |  Size: 326 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#5b2d8d}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><circle class="st1" cx="32.4" cy="35" r="8"/><path class="st1" d="M78.9 47.3l-9.7-9.6L50 57l-9.6-9.7-19.3 19.3V73h57.8z"/></svg>

After

Width:  |  Height:  |  Size: 326 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st0{fill:#fff}</style><path class="st0" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path fill="#72a536" d="M74.3 23.5H25.7l4.5 49.4L50 78.5l19.7-5.6z"/><path fill="#9c4" d="M50 27.5v46.8l16-4.5 3.9-42.3z"/><path d="M62.4 64.6L50 68l-12.5-3.5-.9-9.5h6.2l.3 4.7 6.9 2 6.6-2 1.9-20.1H35.1l-.4-6h30.6l-2.9 31z" fill="#e6e6e5"/><path class="st0" d="M62.5 64.6L50 68v-6.3l6.6-2 1.9-20.1H50v-6h15.4z"/></svg>

After

Width:  |  Height:  |  Size: 513 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#999}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path d="M22 53.4v-5.9c1.3-.1 2.3-.2 2.9-.6.6-.2 1.1-.8 1.6-1.4.5-.7.8-1.5 1-2.6.1-.8.3-2.1.3-4 0-3.2.1-5.4.5-6.7.3-1.2.9-2.3 1.6-3 .8-.7 2-1.3 3.5-1.8 1-.2 2.6-.5 4.9-.5h1.4v5.8c-1.9 0-3.2.1-3.7.4-.5.2-.9.5-1.3 1-.3.4-.4 1.1-.4 2.1s-.1 3-.3 5.8c-.1 1.7-.3 3-.6 3.9-.4 1-.9 1.8-1.4 2.5-.5.6-1.4 1.3-2.5 2 1 .6 1.9 1.2 2.5 1.9.6.7 1.1 1.7 1.5 2.7.4 1.1.6 2.5.6 4.3.1 2.7.1 4.4.1 5.2 0 1.1.1 1.8.4 2.3.3.5.8.7 1.3 1 .5.2 1.8.4 3.7.4V74h-1.4c-2.3 0-4.2-.1-5.3-.5-1.3-.4-2.3-1-3.2-1.8-.9-.8-1.4-1.8-1.8-3-.3-1.2-.4-3.1-.4-5.7 0-3-.1-5-.4-5.8-.4-1.3-1-2.3-1.8-2.9-.5-.5-1.7-.9-3.3-.9zm55.9 0c-1.3.1-2.3.2-2.9.6-.6.2-1.1.8-1.6 1.4-.5.7-.8 1.5-1 2.6-.1.8-.3 2.1-.3 4 0 3.2-.1 5.4-.5 6.7-.3 1.3-.9 2.3-1.6 3-.8.7-2 1.3-3.5 1.8-1 .2-2.6.5-4.9.5h-1.4v-5.8c1.9 0 3-.1 3.7-.4.6-.2 1-.6 1.3-1s.4-1.1.4-2.1.1-2.9.3-5.7c.1-1.7.4-3.1.8-4 .4-1.1.9-1.9 1.5-2.6.6-.7 1.4-1.3 2.4-1.9-1.6-1-2.6-1.7-3.1-2.4-.8-1.1-1.4-2.5-1.6-4-.3-1.2-.4-3.7-.4-7.5 0-1.2-.1-2-.4-2.5-.3-.4-.6-.7-1.1-1-.5-.2-1.8-.4-3.8-.4v-5.8h1.4c2.3 0 4.2.1 5.3.5 1.3.4 2.3 1 3.2 1.8.9.8 1.4 1.8 1.8 3 .3 1.2.5 3.1.5 5.7 0 3 .1 4.9.4 5.8.4 1.3 1 2.3 1.8 2.7.8.6 2 .8 3.5 1v5.9l-.2.1z" stroke="#999" stroke-width=".5" stroke-miterlimit="10" fill="#999"/><path class="st1" d="M61.1 52.8c-1-.3-1.6-1.2-1.6-2.2 0-1 .7-1.9 1.6-2.2.3-.1.5-.4.4-.7-.3-1.1-.7-2.1-1.3-3-.1-.3-.5-.4-.8-.2-.3.2-.7.3-1.1.3-1.3 0-2.3-1.1-2.3-2.3 0-.4.1-.8.3-1.1.1-.3 0-.6-.2-.8-.9-.6-2-1-3-1.3-.3-.1-.6.1-.7.4-.3 1-1.2 1.6-2.2 1.6s-1.9-.7-2.2-1.6c-.1-.3-.4-.5-.7-.4-1.1.3-2.1.7-3 1.3-.3.1-.4.5-.2.8.2.3.3.7.3 1.1 0 1.3-1.1 2.3-2.3 2.3-.4 0-.8-.1-1.1-.3-.3-.1-.6 0-.8.2-.6.9-1 2-1.3 3-.1.3.1.6.4.7 1 .3 1.6 1.2 1.6 2.2 0 1-.7 1.9-1.6 2.2-.3.1-.5.4-.4.7.3 1.1.7 2.1 1.3 3 .1.3.5.4.8.2.3-.2.7-.3 1.1-.3 1.3 0 2.3 1.1 2.3 2.3 0 .4-.1.8-.3 1.1-.1.3 0 .6.2.8.9.6 2 1 3 1.3h.1c.2 0 .5-.1.6-.4.3-1 1.2-1.6 2.2-1.6s1.9.7 2.2 1.6c.1.3.4.5.7.4 1.1-.3 2.1-.7 3-1.3.3-.1.4-.5.2-.8-.2-.3-.3-.7-.3-1.1 0-1.3 1.1-2.3 2.3-2.3.4 0 .8.1 1.1.3.3.1.6 0 .8-.2.6-.9 1-2 1.3-3 .1-.3-.1-.6-.4-.7zM50 54.1c-2 0-3.6-1.6-3.6-3.6s1.6-3.6 3.6-3.6 3.6 1.6 3.6 3.6-1.6 3.6-3.6 3.6z"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path d="M46.8 75C34.8 75 25 65.2 25 53.2s9.8-22 22.2-21.8c11.7.3 21.2 9.8 21.2 21.8S58.8 75 46.8 75zm9-37.2c-3.5 0-6.5 3-6.5 6.5s2.8 6.5 6.5 6.5c3.5 0 6.5-2.8 6.5-6.5-.1-3.5-2.8-6.5-6.5-6.5zm12.7 0c-3.5 0-6.5-2.8-6.2-6.5 0-3.5 2.8-6.2 6.5-6.2 3.5 0 6.2 3 6.2 6.5s-3 6.2-6.5 6.2z" fill="navy"/></svg>

After

Width:  |  Height:  |  Size: 465 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st2{fill:#039}</style><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#0e3693"/><path class="st2" d="M32.5 37.5h-9v25h9L53.6 77V23L32.5 37.5M71.9 50c0 6.8-3.7 12.7-9.1 15.8l2.8 4.9c7.1-4.1 11.9-11.8 11.9-20.7 0-8.8-4.8-16.6-11.9-20.7l-2.8 4.9c5.4 3.1 9.1 9 9.1 15.8z"/><path class="st2" d="M62.1 50c0 3.2-1.7 5.9-4.3 7.4l2.7 4.7c4.2-2.4 7-6.9 7-12.1 0-5.2-2.8-9.7-7-12.1l-2.7 4.7c2.6 1.5 4.3 4.2 4.3 7.4z"/></svg>

After

Width:  |  Height:  |  Size: 531 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#ef6f2e}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M21 26.4v47.1h58V26.4H21zm10.9 43.5h-7.2v-7.2h7.2v7.2zm0-10.8h-7.2v-7.2h7.2v7.2zm0-10.9h-7.2V41h7.2v7.2zm0-10.9h-7.2v-7.2h7.2v7.2zm10.9 25.4V37.3L60.9 50 42.8 62.7zm32.6 7.2h-7.2v-7.2h7.2v7.2zm0-10.8h-7.2v-7.2h7.2v7.2zm0-10.9h-7.2V41h7.2v7.2zm0-10.9h-7.2v-7.2h7.2v7.2z"/></svg>

After

Width:  |  Height:  |  Size: 496 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#1f7244}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M62.4 34h14.1v9.4H62.4zm0 14.5h14.1v9.4H62.4zm0 14.3h14.1v9.4H62.4zm-19.1 0h14.1v9.4H43.3zm-19.1 0h14.1v9.4H24.2zm24.6-35h2c3 .2 5.3.9 7.6 1.9 4.4-2 10.6-.5 14.6 1-5-.5-10.9 0-14.3 2-3.5-2.8-10-3.6-16.1-2.8 1.7-1.2 3.8-1.9 6.2-2.1zm-1.3 7.5c-3.6.2-6.5 1.4-8.4 3-5.9-2.7-16.1-1.5-19.9 2.1-.3.2-.7.5-.6.8 3.4-1 7.4-1.9 11.6-1.5 4.2.3 7.3 1.7 9.6 3.6 4.3-3.8 10.6-6 18.6-5.9-2.8-1.3-6.9-2.3-10.9-2.1zm-4.1 13.3h14.1V58H43.4zm-19.1 0h14.1V58H24.3z"/></svg>

After

Width:  |  Height:  |  Size: 671 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1,.st2{fill:#1a75ce}.st2{stroke:#1a75ce;stroke-width:.5;stroke-miterlimit:10}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st2" d="M59 42.8h19.4v3.1H59v-3.1zm-37.9 8.4h57.4v3.4H21.1v-3.4zm0 8.4h57.4V63H21.1v-3.4z"/><path class="st1" d="M53.3 28.7h2.1c3.2.2 5.7 1 8.1 2 4.7-2.1 11.3-.5 15.5 1.1-5.3-.5-11.6 0-15.2 2.1C60 31 53.1 30.1 46.6 31c1.9-1.3 4.1-2 6.7-2.3zm-1.5 8c-3.8.2-6.9 1.5-9 3.2-6.3-2.8-17.1-1.6-21.1 2.2-.4.2-.7.5-.6.9 3.6-1.1 7.9-2 12.3-1.6 4.4.4 7.7 1.8 10.2 3.8 4.5-4.1 11.3-6.4 19.8-6.3-3-1.3-7.3-2.4-11.6-2.2z"/><path class="st2" d="M21.1 67.8h57.4v3.4H21.1v-3.4z"/></svg>

After

Width:  |  Height:  |  Size: 741 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st2{fill:#039}</style><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#0e3693"/><path class="st2" d="M32.5 37.5h-9v25h9L53.6 77V23L32.5 37.5M71.9 50c0 6.8-3.7 12.7-9.1 15.8l2.8 4.9c7.1-4.1 11.9-11.8 11.9-20.7 0-8.8-4.8-16.6-11.9-20.7l-2.8 4.9c5.4 3.1 9.1 9 9.1 15.8z"/><path class="st2" d="M62.1 50c0 3.2-1.7 5.9-4.3 7.4l2.7 4.7c4.2-2.4 7-6.9 7-12.1 0-5.2-2.8-9.7-7-12.1l-2.7 4.7c2.6 1.5 4.3 4.2 4.3 7.4z"/></svg>

After

Width:  |  Height:  |  Size: 531 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#ef6f2e}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M21 26.4v47.1h58V26.4H21zm10.9 43.5h-7.2v-7.2h7.2v7.2zm0-10.8h-7.2v-7.2h7.2v7.2zm0-10.9h-7.2V41h7.2v7.2zm0-10.9h-7.2v-7.2h7.2v7.2zm10.9 25.4V37.3L60.9 50 42.8 62.7zm32.6 7.2h-7.2v-7.2h7.2v7.2zm0-10.8h-7.2v-7.2h7.2v7.2zm0-10.9h-7.2V41h7.2v7.2zm0-10.9h-7.2v-7.2h7.2v7.2z"/></svg>

After

Width:  |  Height:  |  Size: 496 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#c11e07"/><path d="M46.2 21.8c-3.5 0-6.3 2.9-6.3 6.3 0 4.3 2.4 9.6 4.9 14.7-2 6.1-4.1 12.7-7 18.2-5.8 2.3-11 4-14 6.6l-.2.2c-1.1 1.2-1.8 2.7-1.8 4.4 0 3.5 2.9 6.3 6.3 6.3 1.7 0 3.4-.6 4.4-1.8 0 0 .2 0 .2-.2 2.3-2.7 5-7.8 7.5-12.2 5.5-2.1 11.5-4.4 16.9-5.8 4.1 3.4 10.1 5.5 15 5.5 3.5 0 6.3-2.9 6.3-6.3 0-3.5-2.9-6.3-6.3-6.3-4 0-9.6 1.4-13.9 2.9-3.5-3.4-6.7-7.5-9.2-11.9C50.6 37 52.6 32 52.6 28c-.2-3.5-2.9-6.2-6.4-6.2zm0 3.6c1.4 0 2.4 1.1 2.4 2.4 0 1.8-1.1 5.3-2.1 9-1.5-3.7-2.9-7.2-2.9-9 .1-1.2 1.2-2.4 2.6-2.4zm1.1 21.5c1.8 3.1 4.1 5.8 6.6 8.2-3.7 1.1-7.3 2.3-11 3.7 1.8-3.8 3.1-7.9 4.4-11.9zM72 55c1.4 0 2.4 1.1 2.4 2.4 0 1.4-1.1 2.4-2.4 2.4-2.9 0-6.9-1.2-10.1-3.1C65.6 56 69.7 55 72 55zM34.6 66.2c-1.8 3.2-3.5 6.1-4.7 7.6-.5.5-.9.6-1.7.6-1.4 0-2.4-1.1-2.4-2.4 0-.6.3-1.4.6-1.7 1.3-1.2 4.5-2.6 8.2-4.1z" fill="#c11e07" stroke="#c11e07" stroke-width="1.25" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.a{fill:#6781b2}</style><path fill="#FFF" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" class="a"/><path d="M27.3 54.7c1.8 0 3.2-.3 4-1 .8-.7 1.4-1.8 1.7-3.4.3-1.5.2-2.5-.3-3.1-.5-.6-1.6-.9-3.3-.9h-2.9l-1.6 8.4h2.4zM17.8 65c-.1 0-.3-.1-.3-.2-.1-.1-.1-.2-.1-.4l4.2-22.2c0-.2.2-.4.4-.4h9.2c2.9 0 5 .8 6.4 2.4 1.4 1.6 1.8 3.8 1.2 6.5-.2 1.1-.6 2.2-1.1 3.1-.5.9-1.2 1.8-2 2.6-1 .9-2.1 1.6-3.3 2-1.2.4-2.7.6-4.6.6h-3.7L23 64.6c0 .2-.2.4-.4.4h-4.8zm34.5-5.9c-.1 0-.3-.1-.3-.2-.1-.1-.1-.2-.1-.4l1.9-9.8c.2-.9.1-1.6-.1-1.9-.2-.2-.6-.5-2-.5h-3.4L46 58.6c0 .2-.2.4-.4.4h-4.7c-.1 0-.3-.1-.3-.2-.1-.1-.1-.2-.1-.4l4.2-22.2c0-.2.2-.4.4-.4h4.7c.1 0 .3.1.3.2.1.1.1.2.1.4l-1 5.4h3.6c2.8 0 4.6.5 5.7 1.5 1.1 1 1.5 2.7 1 5l-1.9 10.3c0 .2-.2.4-.4.4h-4.9v.1zm18.1-4.4c1.9 0 3.3-.3 4.2-1 .9-.7 1.5-1.8 1.8-3.4.3-1.5.2-2.5-.3-3.1-.5-.6-1.7-.9-3.4-.9h-3L68 54.7h2.4zM60.6 65c-.1 0-.3-.1-.4-.2-.1-.1-.1-.2-.1-.4l4.4-22.2c0-.2.2-.4.5-.4h9.5c3 0 5.2.8 6.6 2.4 1.4 1.6 1.8 3.8 1.3 6.5-.2 1.1-.6 2.2-1.1 3.1-.5.9-1.2 1.8-2.1 2.6-1 .9-2.2 1.6-3.5 2-1.2.4-2.8.6-4.8.6h-3.8L66 64.6c0 .2-.2.4-.5.4h-4.9z" class="a"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st0{fill:#fff}</style><path class="st0" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path d="M78 50.5c0 15.5-12.5 28-28 28S22 66 22 50.5s12.5-28 28-28 28 12.5 28 28" fill="#3a3c5b"/><path class="st0" d="M69.5 52.6c-.9-6-7.2-9.8-11.8-12.7-2-1.3-5.3-2.9-5.8-5.6-.2-1.1-.2-2.2-.2-3.4 0-.4 0-.9-.1-1.3-.1-.6-.6.1-.9-.4-.8-1.2-.5.4-.4 1 .2 1.5.4 3 .4 4.5 0 2.9-.5 5.7-1.2 8.5-1.7 6.6-3 13.3-1.4 20 .3 1.4.8 2.8 1.4 4.1.2.4.5 1.5 1 1.6 1.8.5 3.1.6 4.5 1.9.9.8 1.5.4 2.6 0 3.2-1.3 5.9-2.9 8.1-5.5 3.3-3.6 4.6-7.9 3.8-12.7m-3.3 6c-.3 2.4-1.8 4.6-3.4 6.5-1.1 1.3-2.7 3-4.4 3.6-.6.2.1-1 .2-1.1.5-.8 1.2-1.5 1.8-2.2.9-1.1 1.6-2.2 2.2-3.5 1.7-4.3 1.3-9.5-1.2-13.4-1.4-2.1-3.3-3.9-5.2-5.5-.9-.8-1.9-1.5-2.6-2.5-.2-.2-1.8-2.3-1.3-2.6.2-.1 3.6 3.6 4 3.8 1.4 1.1 2.9 2.1 4.2 3.3 1.8 1.7 3.6 3.5 4.7 5.7 1.1 2.4 1.3 5.2 1 7.9"/><path class="st0" d="M49 23.3c.5.3.6 2.4.6 4.2 0 1.9.2 9.8-.4 12-.6 2.1-1.9 4.5-3.4 6.6-1.4 2.1-3.1 6.5-3.1 9.2.1 2.7 1.6 7.2 2.8 9 1.2 1.9 3.3 4.5 2.8 5-.8 1-4.1-2.5-5.9-4.6-1.7-2.1-3.5-6.3-3.5-9.6-.1-3.3 1.8-6.4 3.1-8.2 1.3-1.9 3.9-5 4.6-6.5.7-1.4 1.4-3 1.7-5 .2-2 0-9.3 0-9.3s.1-3.2.7-2.8"/><path class="st0" d="M47.6 26.7c.5.2.6.9.6 1.5s-.2 3.2-.3 5.8c-.2 2.5-2.2 4.7-3.7 6.2s-5.9 6.2-7.5 8.5c-1.6 2.3-2.4 5.4-2.3 7.9.2 2.6.8 5.2 3.2 7.9 2.4 2.7 4.1 4 5.4 4.6 1.3.6 2.5 1.1 2.3 1.7-.3.6-1.5.2-2.8-.3-1.3-.5-5.9-2.3-8.5-5.3-2.6-3-3.9-6.9-3.8-10.7.1-3.8 1.2-5.3 2.9-7.8 1.7-2.4 6.5-6 8.1-7 1.5-.9 3.5-2.5 4.5-3.8 1-1.3 1.5-2.3 1.4-4.1-.1-1.7.1-3.3.1-3.9-.1-.3-.1-1.5.4-1.2m.1 45.4c.2 0 .1 1-.3 1.5s-1.1.8-1.2.6c-.1-.2.5-.3 1-.8.3-.5.2-1.3.5-1.3m4.7-.1c-.2 0-.1 1 .3 1.5s1.1.8 1.2.6c.1-.2-.5-.3-1-.8-.3-.4-.2-1.2-.5-1.3m-2.1 1.2c0 .9 0 1.6-.1 1.6-.2 0-.1-.7-.1-1.6 0-.9-.1-1.6.1-1.6.2-.1.1.7.1 1.6"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#5b2d8d}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><circle class="st1" cx="32.4" cy="35" r="8"/><path class="st1" d="M78.9 47.3l-9.7-9.6L50 57l-9.6-9.7-19.3 19.3V73h57.8z"/></svg>

After

Width:  |  Height:  |  Size: 326 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#c24f32}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M45.2 74H32.7V26h19.9c5.4 0 9.5 1.4 12.4 4.2 2.9 2.8 4.3 6.7 4.3 11.8 0 5.1-1.4 9-4.3 11.8-2.9 2.8-7 4.2-12.4 4.2h-7.4v16zm0-26h4.1c4.6 0 6.9-2 6.9-6s-2.3-6-6.9-6h-4.1v12z"/></svg>

After

Width:  |  Height:  |  Size: 399 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#c24f32}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M45.2 74H32.7V26h19.9c5.4 0 9.5 1.4 12.4 4.2 2.9 2.8 4.3 6.7 4.3 11.8 0 5.1-1.4 9-4.3 11.8-2.9 2.8-7 4.2-12.4 4.2h-7.4v16zm0-26h4.1c4.6 0 6.9-2 6.9-6s-2.3-6-6.9-6h-4.1v12z"/></svg>

After

Width:  |  Height:  |  Size: 399 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#fea500}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M37.6 41.6L24.5 69.4l2.5 2.5 16.3-16.3c-.6-1.3-.4-2.9.7-4 1.4-1.4 3.6-1.4 5 0s1.4 3.6 0 5c-1.1 1.1-2.7 1.3-4 .7L28.7 73.5l2.5 2.5L59 62.9l5.9-16.6-10.7-10.7-16.6 6zm38.1-3.3L62.2 24.8c-1.1-1.1-2.9-1.1-4 0L55 28c-1.1 1.1-1.1 2.9 0 4l13.5 13.5c1.1 1.1 2.9 1.1 4 0l3.2-3.2c1.1-1.1 1.1-2.9 0-4z"/></svg>

After

Width:  |  Height:  |  Size: 518 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path d="M48.9 75.9c-6.3-.2-10.2-2.1-11.2-5.4l-.1-.4v-6.4c0-7.4 0-7.5.4-8.7.7-2.1 2.4-3.5 5-4.1l.6-.1h7.3c5.2 0 7.4 0 7.6-.1 1.5-.3 2.4-.6 3.3-1.3 1.1-.8 2-2.2 2.3-3.7.3-1.1.3-1 .3-4.9v-3.6h5.2l.5.1c2.7.8 4.7 3.3 5.5 7.2.3 1.5.3 1.6.3 5.4 0 3.7 0 3.7-.3 5-.3 1.2-.6 2.2-1.1 3.2-1 2-2.5 3.4-4.4 4-1.1.4-.2.3-10.7.4h-9.5v1.8h12.6v6.5c-.1.4-.2.9-.5 1.4-.3.5-1.1 1.3-1.6 1.7-1.7 1.1-4.3 1.8-7.7 2h-3.8zm8.7-4c1.2-.2 2.1-1.4 1.9-2.6-.2-1-.9-1.7-1.9-1.9-1.5-.2-2.8 1.1-2.6 2.6.2 1.1 1.1 1.8 2.2 1.9h.4zm-27-9.2c-1.4-.3-2.8-1.1-3.8-2.4-1.9-2.3-2.8-6.2-2.7-11.1.1-3 .5-5.3 1.5-7.2 1.2-2.5 3-3.9 5.4-4.4.5-.1.6-.1 9.8-.1h9.4c.1 0 .1-.1.1-.9v-.9H37.7v-3.3c0-3.6 0-3.5.3-4.2 1.1-2.3 4.2-3.7 9.2-4.1.4 0 1.3-.1 2.2-.1 5.6-.1 9.6.9 11.8 2.9.2.2.5.6.7.7.3.4.7 1.2.9 1.8l.1.4v6.8c0 6.3 0 6.8-.1 7.2-.1.6-.4 1.4-.6 1.8-.8 1.5-2.2 2.6-4.1 3.1-1.2.3-.7.3-8.7.4-8 0-7.5 0-8.6.3-2.2.6-3.8 2.3-4.4 4.7-.3 1.1-.3 1-.3 4.9v3.7h-2.4c-2.2.1-2.9.1-3.1 0zm13.3-30.4c.9-.4 1.5-1.5 1.3-2.4-.2-.9-.8-1.6-1.6-1.8-1.3-.4-2.7.4-2.9 1.8-.2 1.1.4 2.2 1.5 2.5.2.1.4.1.8.1.5 0 .6 0 .9-.2z" fill="#fed142"/><path d="M30.6 62.7c-1.4-.3-2.8-1.1-3.8-2.4-1.9-2.3-2.8-6.2-2.7-11.1.1-3 .5-5.3 1.5-7.2 1.2-2.5 3-3.9 5.4-4.4.5-.1.6-.1 9.8-.1h9.4c.1 0 .1-.1.1-.9v-.9H37.7v-3.3c0-3.6 0-3.5.3-4.2 1.1-2.3 4.2-3.7 9.2-4.1.4 0 1.3-.1 2.2-.1 5.6-.1 9.6.9 11.8 2.9.2.2.5.6.7.7.3.4.7 1.2.9 1.8l.1.4v6.8c0 6.3 0 6.8-.1 7.2-.1.6-.4 1.4-.6 1.8-.8 1.5-2.2 2.6-4.1 3.1-1.2.3-.7.3-8.7.4-8 0-7.5 0-8.6.3-2.2.6-3.8 2.3-4.4 4.7-.3 1.1-.3 1-.3 4.9v3.7h-2.4c-2.2.1-2.9.1-3.1 0zm13.3-30.4c.9-.4 1.5-1.5 1.3-2.4-.2-.9-.8-1.6-1.6-1.8-1.3-.4-2.7.4-2.9 1.8-.2 1.1.4 2.2 1.5 2.5.2.1.4.1.8.1.5 0 .6 0 .9-.2z" fill="#3571a3"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#d8a13f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M72.4 38.5h-7.9v-7.9l7.9 7.9zm-21.3-7.9v28.8h21.4v-19h-9.9v-9.9H51.1zm3.3-7.6H30.8v5.6h9.3l-5.9 4.5v4.8l8.6-6.6v-2.7h30.1v-2.3L54.4 23zM42.9 35.1l-8.6 6.6v4.8l8.6-6.6v-4.8zm-8.7 20l8.6-6.6v-4.8l-8.6 6.6v4.8zm8.7 2v-4.8l-8.6 6.6v2.6h-3.4v5.6h5.3v3.8H33c-.6-1-1.6-1.6-2.8-1.6-1.8 0-3.2 1.4-3.2 3.2s1.4 3.2 3.2 3.2c1.2 0 2.2-.6 2.8-1.6h3.1V77h4.8v-2.9H44c.6 1 1.6 1.6 2.8 1.6 1.8 0 3.2-1.4 3.2-3.2s-1.4-3.2-3.2-3.2c-1.2 0-2.2.6-2.8 1.6h-3.1v-3.8h13.5l18.5-3.3v-2.3H37.1l5.8-4.4z"/></svg>

After

Width:  |  Height:  |  Size: 703 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path d="M74.5 25.5v49L62.2 37.8l12.3-12.3zm-49 49h49L37.8 62.2 25.5 74.5zm12.3-12.3l36.8 12.2L50 50 37.8 62.2zM50 50l24.5 24.5-12.3-36.7L50 50zM25.5 62.2v12.2l12.2-12.2H25.5zM50 50H37.8v12.2L50 50zm12.2-12.2H50V50l12.2-12.2zm12.3-12.3H62.2v12.2l12.3-12.2zM37.8 50L25.5 62.2h12.2V50zM50 37.8L37.8 50H50V37.8zm12.2-12.3L50 37.8h12.2V25.5z" fill="#992315"/><path d="M74.5 25.5v49L62.2 37.8l12.3-12.3zm-49 49h49L37.8 62.2 25.5 74.5zm12.3-12.3l36.8 12.2L50 50 37.8 62.2zM50 50l24.5 24.5-12.3-36.7L50 50zM25.5 62.2v12.2l12.2-12.2H25.5zM50 50H37.8v12.2L50 50zm12.2-12.2H50V50l12.2-12.2zm12.3-12.3H62.2v12.2l12.3-12.2zM37.8 50L25.5 62.2h12.2V50zM50 37.8L37.8 50H50V37.8zm12.2-12.3L50 37.8h12.2V25.5z" fill="#992315" fill-opacity="0" stroke="#fff"/></svg>

After

Width:  |  Height:  |  Size: 912 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#a87d45}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M59.4 53.8L50 49.4l18.8-8.8 9.4 4.4-9.4 4.4-9.4 4.4zm9.4-21.9l-9.4-4.4-9.4 4.4 18.8 8.8 9.4-4.4-9.4-4.4zM40.6 45l-9.4-4.4-9.4 4.4 18.8 8.8 9.4-4.4-9.4-4.4zm0-8.7l9.4-4.4-9.4-4.4-18.8 8.8 9.4 4.4 9.4-4.4zM68.8 52l-8.4 3.9-1 .5-1-.5L50 52l-8.4 3.9-1 .5-1-.5-8.4-3.9v13.7L50 75.5l18.8-9.8V52z"/></svg>

After

Width:  |  Height:  |  Size: 517 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#6b533b}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M19 63.7h35.3V73H19v-9.3m0-18.5h62v9.3H19zM19 27h62v9.3H19z"/></svg>

After

Width:  |  Height:  |  Size: 287 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#999"/><path d="M42.3 44.2h15.4V48H42.3v-3.8zm0 7.7h15.4v3.8H42.3v-3.8zm0 7.7h15.4v3.8H42.3v-3.8zM69.2 25H38.5c-4.2 0-7.7 3.4-7.7 7.7v34.6h-7.7c0 4.2 3.4 7.7 7.7 7.7h30.8c4.2 0 7.7-3.4 7.7-7.7V36.5H77v-3.8c-.1-4.3-3.5-7.7-7.8-7.7zm-3.8 41.6c0 2.5-2 4.5-4.5 4.5H32.7c1.9-1.3 1.9-3.8 1.9-3.8V32.7c0-2.1 1.7-3.8 3.8-3.8s3.8 1.7 3.8 3.8v3.8h23.1v30.1zM46.2 32.7v-3.8h23.1c3.5 0 3.8 2.2 3.8 3.8H46.2z" fill="#999" stroke="#999" stroke-width=".75" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 630 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#a03537}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M48.1 75.5c-6.5-.3-12.3-2.3-15.4-5.4-.9-.9-1.8-2.1-2.2-2.9l-.3-.5v-6.1c0-6 0-6.1.1-5.6.3 1.3 1.1 2.7 2.3 3.7.8.7 2.5 1.8 3.8 2.5 2.4 1.2 5.2 2 8.4 2.5 1.9.3 2.6.3 5.3.3s3.4 0 5.3-.3c3.1-.5 6-1.3 8.3-2.5 1.4-.7 3-1.7 3.8-2.5 1.1-1 2-2.5 2.3-3.8.1-.5.1-.4.1 5.5v6l-.3.6c-1 1.9-2.6 3.6-4.7 4.8-4.3 2.7-10.5 4-16.8 3.7z"/><path class="st1" d="M48.1 60.4c-5.7-.3-11-1.9-14.3-4.4-.7-.6-1.8-1.6-2.3-2.2-.4-.6-.8-1.2-1.1-1.8l-.3-.5v-6c0-5.9 0-6 .1-5.5.2.9.7 2 1.5 2.9.4.5 1.1 1.2 1.5 1.4.1.1.5.3.7.5 2.7 1.9 6.5 3.3 10.8 3.9 1.9.3 2.6.3 5.3.3s3.4 0 5.3-.3c3.1-.5 6-1.3 8.4-2.5 1.4-.7 3-1.8 3.9-2.5 1.1-1 2-2.4 2.2-3.7.1-.5.1-.4.1 5.5v5.9l-.4.8c-.7 1.2-1.1 1.8-1.9 2.7-.8.8-1.6 1.5-2.7 2.1-4.3 2.4-10.5 3.7-16.8 3.4z"/><path class="st1" d="M47.7 45.4c-3.8-.3-6.8-.9-9.6-2-3.4-1.3-5.8-3.1-7.1-5.2-.3-.4-.5-1-.7-1.6-.2-.6-.3-2-.1-2.7.9-4.3 6.6-7.9 14.5-9 1.9-.3 2.6-.3 5.3-.3s3.4 0 5.3.3c3.1.5 6 1.3 8.4 2.5 3.5 1.7 5.6 4 6.1 6.5.1.7.1 2.1-.1 2.7-.4 1.3-1 2.2-2 3.2-2.8 2.9-7.9 4.9-14.1 5.6-.9-.1-5.1 0-5.9 0z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#fea500}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M37.6 41.6L24.5 69.4l2.5 2.5 16.3-16.3c-.6-1.3-.4-2.9.7-4 1.4-1.4 3.6-1.4 5 0s1.4 3.6 0 5c-1.1 1.1-2.7 1.3-4 .7L28.7 73.5l2.5 2.5L59 62.9l5.9-16.6-10.7-10.7-16.6 6zm38.1-3.3L62.2 24.8c-1.1-1.1-2.9-1.1-4 0L55 28c-1.1 1.1-1.1 2.9 0 4l13.5 13.5c1.1 1.1 2.9 1.1 4 0l3.2-3.2c1.1-1.1 1.1-2.9 0-4z"/></svg>

After

Width:  |  Height:  |  Size: 518 B

View File

@ -0,0 +1 @@
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#d10407}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M65.6 36.6c1.4-.5 2.9-.7 4.4-.7V26c-6.7-.2-13.1 2.8-17.2 8.1-1.7 2.2-3.2 4.6-4.3 7.2l-3.2 7.9c-.8 2.4-1.8 4.8-2.9 7.1-.8 1.9-1.8 3.6-3 5.3-1 1.4-2.4 2.5-3.9 3.2-1.7.8-3.6 1.2-5.5 1.2v10c6.7.2 13.1-2.8 17.2-8.1 1.3-1.8 2.5-3.7 3.5-5.7l2.7-6.3H65V46h-7.6c.6-1.5 1.4-2.9 2.3-4.3.7-1.2 1.6-2.2 2.6-3.1 1-.9 2.1-1.6 3.3-2z"/></svg>

After

Width:  |  Height:  |  Size: 558 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#a87d45}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M59.4 53.8L50 49.4l18.8-8.8 9.4 4.4-9.4 4.4-9.4 4.4zm9.4-21.9l-9.4-4.4-9.4 4.4 18.8 8.8 9.4-4.4-9.4-4.4zM40.6 45l-9.4-4.4-9.4 4.4 18.8 8.8 9.4-4.4-9.4-4.4zm0-8.7l9.4-4.4-9.4-4.4-18.8 8.8 9.4 4.4 9.4-4.4zM68.8 52l-8.4 3.9-1 .5-1-.5L50 52l-8.4 3.9-1 .5-1-.5-8.4-3.9v13.7L50 75.5l18.8-9.8V52z"/></svg>

After

Width:  |  Height:  |  Size: 517 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#d8a13f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M72.4 38.5h-7.9v-7.9l7.9 7.9zm-21.3-7.9v28.8h21.4v-19h-9.9v-9.9H51.1zm3.3-7.6H30.8v5.6h9.3l-5.9 4.5v4.8l8.6-6.6v-2.7h30.1v-2.3L54.4 23zM42.9 35.1l-8.6 6.6v4.8l8.6-6.6v-4.8zm-8.7 20l8.6-6.6v-4.8l-8.6 6.6v4.8zm8.7 2v-4.8l-8.6 6.6v2.6h-3.4v5.6h5.3v3.8H33c-.6-1-1.6-1.6-2.8-1.6-1.8 0-3.2 1.4-3.2 3.2s1.4 3.2 3.2 3.2c1.2 0 2.2-.6 2.8-1.6h3.1V77h4.8v-2.9H44c.6 1 1.6 1.6 2.8 1.6 1.8 0 3.2-1.4 3.2-3.2s-1.4-3.2-3.2-3.2c-1.2 0-2.2.6-2.8 1.6h-3.1v-3.8h13.5l18.5-3.3v-2.3H37.1l5.8-4.4z"/></svg>

After

Width:  |  Height:  |  Size: 703 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#6b533b}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M19 63.7h35.3V73H19v-9.3m0-18.5h62v9.3H19zM19 27h62v9.3H19z"/></svg>

After

Width:  |  Height:  |  Size: 287 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st2{fill:#039}</style><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#0e3693"/><path class="st2" d="M32.5 37.5h-9v25h9L53.6 77V23L32.5 37.5M71.9 50c0 6.8-3.7 12.7-9.1 15.8l2.8 4.9c7.1-4.1 11.9-11.8 11.9-20.7 0-8.8-4.8-16.6-11.9-20.7l-2.8 4.9c5.4 3.1 9.1 9 9.1 15.8z"/><path class="st2" d="M62.1 50c0 3.2-1.7 5.9-4.3 7.4l2.7 4.7c4.2-2.4 7-6.9 7-12.1 0-5.2-2.8-9.7-7-12.1l-2.7 4.7c2.6 1.5 4.3 4.2 4.3 7.4z"/></svg>

After

Width:  |  Height:  |  Size: 531 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#ef6f2e}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M21 26.4v47.1h58V26.4H21zm10.9 43.5h-7.2v-7.2h7.2v7.2zm0-10.8h-7.2v-7.2h7.2v7.2zm0-10.9h-7.2V41h7.2v7.2zm0-10.9h-7.2v-7.2h7.2v7.2zm10.9 25.4V37.3L60.9 50 42.8 62.7zm32.6 7.2h-7.2v-7.2h7.2v7.2zm0-10.8h-7.2v-7.2h7.2v7.2zm0-10.9h-7.2V41h7.2v7.2zm0-10.9h-7.2v-7.2h7.2v7.2z"/></svg>

After

Width:  |  Height:  |  Size: 496 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#30723f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M41.8 48.5L23.9 27h18.5l7.8 11.9L59.8 27h18.5l-19 21.5L80.7 73H62.4L50.9 58 37.4 73H19.3l22.5-24.5z"/></svg>

After

Width:  |  Height:  |  Size: 327 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#30723f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M41.8 48.5L23.9 27h18.5l7.8 11.9L59.8 27h18.5l-19 21.5L80.7 73H62.4L50.9 58 37.4 73H19.3l22.5-24.5z"/></svg>

After

Width:  |  Height:  |  Size: 327 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#666"/><path d="M21.5 48.3l16.2-14v7.1l-11 9.2v.1l11 9.2V67L21.5 53v-4.7zm30.6-17.6h4.3L48 71.3h-4.2l8.3-40.6zM62.3 60l11-9.2v-.1l-11-9.2v-7.1l16.2 14v4.9l-16.2 14V60z" fill="#666" stroke="#666" stroke-width="2" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 400 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#d8a13f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M72.4 38.5h-7.9v-7.9l7.9 7.9zm-21.3-7.9v28.8h21.4v-19h-9.9v-9.9H51.1zm3.3-7.6H30.8v5.6h9.3l-5.9 4.5v4.8l8.6-6.6v-2.7h30.1v-2.3L54.4 23zM42.9 35.1l-8.6 6.6v4.8l8.6-6.6v-4.8zm-8.7 20l8.6-6.6v-4.8l-8.6 6.6v4.8zm8.7 2v-4.8l-8.6 6.6v2.6h-3.4v5.6h5.3v3.8H33c-.6-1-1.6-1.6-2.8-1.6-1.8 0-3.2 1.4-3.2 3.2s1.4 3.2 3.2 3.2c1.2 0 2.2-.6 2.8-1.6h3.1V77h4.8v-2.9H44c.6 1 1.6 1.6 2.8 1.6 1.8 0 3.2-1.4 3.2-3.2s-1.4-3.2-3.2-3.2c-1.2 0-2.2.6-2.8 1.6h-3.1v-3.8h13.5l18.5-3.3v-2.3H37.1l5.8-4.4z"/></svg>

After

Width:  |  Height:  |  Size: 703 B