App icon: winged-bubble adaptive icon (Android) + window/jpackage icon (desktop); concept art in app/icons/
No files matched your search
@@ -11,6 +11,8 @@
|
||||
|
||||
<application
|
||||
android:label="Iris"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:allowBackup="true"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:theme="@android:style/Theme.Material.NoActionBar">
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path android:pathData="M0,0h108v108h-108z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startColor="#262B3A"
|
||||
android:endColor="#14171F"
|
||||
android:startX="0"
|
||||
android:startY="0"
|
||||
android:endX="0"
|
||||
android:endY="108" />
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path android:pathData="M33.96,51.18a29.75,29.75 0 1,0 59.5,0a29.75,29.75 0 1,0 -59.5,0z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:type="radial"
|
||||
android:centerX="63.71"
|
||||
android:centerY="51.18"
|
||||
android:gradientRadius="29.75"
|
||||
android:startColor="#384F7CFF"
|
||||
android:endColor="#004F7CFF" />
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</vector>
|
||||
@@ -0,0 +1,88 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:pathData="M41.79,43.67Q32.39,42.10 24.57,45.55"
|
||||
android:strokeWidth="4.07"
|
||||
android:strokeLineCap="round">
|
||||
<aapt:attr name="android:strokeColor">
|
||||
<gradient
|
||||
android:startColor="#E8EAF0"
|
||||
android:endColor="#7E9BFF"
|
||||
android:startX="23"
|
||||
android:startY="54"
|
||||
android:endX="42"
|
||||
android:endY="54" />
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M41.16,50.56Q30.51,49.93 23.00,54.31"
|
||||
android:strokeWidth="4.07"
|
||||
android:strokeLineCap="round">
|
||||
<aapt:attr name="android:strokeColor">
|
||||
<gradient
|
||||
android:startColor="#E8EAF0"
|
||||
android:endColor="#7E9BFF"
|
||||
android:startX="23"
|
||||
android:startY="54"
|
||||
android:endX="42"
|
||||
android:endY="54" />
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M41.79,57.44Q33.02,58.70 26.76,63.71"
|
||||
android:strokeWidth="4.07"
|
||||
android:strokeLineCap="round">
|
||||
<aapt:attr name="android:strokeColor">
|
||||
<gradient
|
||||
android:startColor="#E8EAF0"
|
||||
android:endColor="#7E9BFF"
|
||||
android:startX="23"
|
||||
android:startY="54"
|
||||
android:endX="42"
|
||||
android:endY="54" />
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M49.62,66.21C47.42,71.97 44.92,73.10 41.79,75.61C46.49,74.35 50.87,71.54 54.94,66.84Z"
|
||||
android:fillColor="#3D63E8" />
|
||||
<path
|
||||
android:pathData="M53.68,32.39H73.73A11.27,11.27 0 0,1 85,43.66V56.19A11.27,11.27 0 0,1 73.73,67.46H53.68A11.27,11.27 0 0,1 42.41,56.19V43.66A11.27,11.27 0 0,1 53.68,32.39Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startColor="#6E93FF"
|
||||
android:endColor="#3D63E8"
|
||||
android:startX="63.71"
|
||||
android:startY="32.39"
|
||||
android:endX="63.71"
|
||||
android:endY="67.46" />
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M50.56,51.81A13.15,13.15 0 0,1 76.86,51.81"
|
||||
android:strokeWidth="1.88"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FF6B6B" />
|
||||
<path
|
||||
android:pathData="M53.06,51.81A10.65,10.65 0 0,1 74.36,51.81"
|
||||
android:strokeWidth="1.88"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FFC107" />
|
||||
<path
|
||||
android:pathData="M55.57,51.81A8.14,8.14 0 0,1 71.85,51.81"
|
||||
android:strokeWidth="1.88"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#4CAF50" />
|
||||
<path
|
||||
android:pathData="M58.07,51.81A5.64,5.64 0 0,1 69.35,51.81"
|
||||
android:strokeWidth="1.88"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#29B6F6" />
|
||||
<path
|
||||
android:pathData="M61.99,51.81a1.72,1.72 0 1,0 3.44,0a1.72,1.72 0 1,0 -3.44,0z"
|
||||
android:fillColor="#7C4DFF" />
|
||||
</vector>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:pathData="M41.79,43.67Q32.39,42.10 24.57,45.55"
|
||||
android:strokeWidth="4.07"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M41.16,50.56Q30.51,49.93 23.00,54.31"
|
||||
android:strokeWidth="4.07"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M41.79,57.44Q33.02,58.70 26.76,63.71"
|
||||
android:strokeWidth="4.07"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M49.62,66.21C47.42,71.97 44.92,73.10 41.79,75.61C46.49,74.35 50.87,71.54 54.94,66.84Z"
|
||||
android:fillColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M53.68,32.39H73.73A11.27,11.27 0 0,1 85,43.66V56.19A11.27,11.27 0 0,1 73.73,67.46H53.68A11.27,11.27 0 0,1 42.41,56.19V43.66A11.27,11.27 0 0,1 53.68,32.39Z"
|
||||
android:strokeWidth="3"
|
||||
android:strokeColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M50.56,51.81A13.15,13.15 0 0,1 76.86,51.81"
|
||||
android:strokeWidth="1.88"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M53.06,51.81A10.65,10.65 0 0,1 74.36,51.81"
|
||||
android:strokeWidth="1.88"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M55.57,51.81A8.14,8.14 0 0,1 71.85,51.81"
|
||||
android:strokeWidth="1.88"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M58.07,51.81A5.64,5.64 0 0,1 69.35,51.81"
|
||||
android:strokeWidth="1.88"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#FFFFFF" />
|
||||
<path
|
||||
android:pathData="M61.99,51.81a1.72,1.72 0 1,0 3.44,0a1.72,1.72 0 1,0 -3.44,0z"
|
||||
android:fillColor="#FFFFFF" />
|
||||
</vector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
|
||||
</adaptive-icon>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
|
||||
</adaptive-icon>
|
||||
@@ -75,6 +75,7 @@ tasks.register<Exec>("jpackage") {
|
||||
"--input", inputDir.absolutePath,
|
||||
"--main-jar", "desktopApp-all.jar",
|
||||
"--main-class", "iris.desktop.MainKt",
|
||||
"--icon", file("src/main/resources/icon.png").absolutePath,
|
||||
"--dest", destDir.absolutePath,
|
||||
"--java-options", "-Xmx1g",
|
||||
)
|
||||
|
||||
@@ -21,6 +21,7 @@ import iris.platform.DesktopBridge
|
||||
import iris.platform.DesktopSecureStore
|
||||
import java.awt.Color
|
||||
import java.awt.Graphics2D
|
||||
import javax.imageio.ImageIO
|
||||
import java.awt.RenderingHints
|
||||
import java.awt.SystemTray
|
||||
import java.awt.event.WindowEvent
|
||||
@@ -45,6 +46,10 @@ import kotlinx.serialization.json.jsonPrimitive
|
||||
*/
|
||||
private val windowJson = File(System.getProperty("user.home"), ".iris/window.json")
|
||||
|
||||
// Window/taskbar icon (src/main/resources/icon.png).
|
||||
private class IrisDesktop
|
||||
private val windowIcon = ImageIO.read(IrisDesktop::class.java.getResource("/icon.png")!!).toComposeImageBitmap()
|
||||
|
||||
// Tray icon colors (ARGB). .toInt(): the literals exceed the Int range.
|
||||
private const val TRAY_OFFLINE = 0xFF9E9E9E.toInt()
|
||||
private const val TRAY_CONNECTING = 0xFFFFC107.toInt()
|
||||
@@ -107,6 +112,7 @@ fun main() {
|
||||
}
|
||||
|
||||
Window(
|
||||
icon = BitmapPainter(windowIcon),
|
||||
onCloseRequest = {
|
||||
if (closeToTray.get()) {
|
||||
composeWindow?.isVisible = false
|
||||
|
||||
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 43 KiB |
@@ -0,0 +1,48 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#262B3A"/>
|
||||
<stop offset="1" stop-color="#14171F"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bubble" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#6E93FF"/>
|
||||
<stop offset="1" stop-color="#3D63E8"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="wing" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0" stop-color="#E8EAF0"/>
|
||||
<stop offset="1" stop-color="#7E9BFF"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="glow" cx="0.5" cy="0.5" r="0.5">
|
||||
<stop offset="0" stop-color="#4F7CFF" stop-opacity="0.22"/>
|
||||
<stop offset="1" stop-color="#4F7CFF" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<clipPath id="bgclip">
|
||||
<rect x="16" y="16" width="480" height="480" rx="112"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
|
||||
<rect x="16" y="16" width="480" height="480" rx="112" fill="url(#bg)"/>
|
||||
<g clip-path="url(#bgclip)">
|
||||
<circle cx="312" cy="240" r="190" fill="url(#glow)"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="url(#wing)" stroke-width="26" stroke-linecap="round">
|
||||
<path d="M 172 192 Q 112 182 62 204"/>
|
||||
<path d="M 168 236 Q 100 232 52 260"/>
|
||||
<path d="M 172 280 Q 116 288 76 320"/>
|
||||
</g>
|
||||
|
||||
<path d="M 222 336 C 208 360 192 380 172 396 C 202 388 230 370 256 340 Z" fill="#3D63E8"/>
|
||||
|
||||
<rect x="176" y="120" width="272" height="224" rx="72" fill="url(#bubble)"/>
|
||||
|
||||
<g fill="none" stroke-width="12" stroke-linecap="round">
|
||||
<path d="M 228 244 A 84 84 0 0 1 396 244" stroke="#FF6B6B"/>
|
||||
<path d="M 244 244 A 68 68 0 0 1 380 244" stroke="#FFC107"/>
|
||||
<path d="M 260 244 A 52 52 0 0 1 364 244" stroke="#4CAF50"/>
|
||||
<path d="M 276 244 A 36 36 0 0 1 348 244" stroke="#29B6F6"/>
|
||||
</g>
|
||||
<circle cx="312" cy="244" r="11" fill="#7C4DFF"/>
|
||||
|
||||
<rect x="16" y="16" width="480" height="480" rx="112" fill="none" stroke="#2A2E3B" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 54 KiB |
@@ -0,0 +1,62 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#262B3A"/>
|
||||
<stop offset="1" stop-color="#14171F"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="glow" cx="0.5" cy="0.5" r="0.5">
|
||||
<stop offset="0" stop-color="#4F7CFF" stop-opacity="0.22"/>
|
||||
<stop offset="1" stop-color="#4F7CFF" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="wingL" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0" stop-color="#E8EAF0"/>
|
||||
<stop offset="1" stop-color="#7E9BFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="wingR" x1="1" y1="0" x2="0" y2="0">
|
||||
<stop offset="0" stop-color="#E8EAF0"/>
|
||||
<stop offset="1" stop-color="#7E9BFF"/>
|
||||
</linearGradient>
|
||||
<clipPath id="bgclip">
|
||||
<rect x="16" y="16" width="480" height="480" rx="112"/>
|
||||
</clipPath>
|
||||
<clipPath id="eye">
|
||||
<path d="M 96 272 Q 256 148 416 272 Q 256 396 96 272 Z"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
|
||||
<rect x="16" y="16" width="480" height="480" rx="112" fill="url(#bg)"/>
|
||||
<g clip-path="url(#bgclip)">
|
||||
<circle cx="256" cy="272" r="200" fill="url(#glow)"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke-width="14" stroke-linecap="round">
|
||||
<g stroke="url(#wingL)">
|
||||
<path d="M 88 248 Q 56 236 32 244"/>
|
||||
<path d="M 84 272 Q 52 268 28 280"/>
|
||||
<path d="M 88 296 Q 56 300 36 314"/>
|
||||
</g>
|
||||
<g stroke="url(#wingR)">
|
||||
<path d="M 424 248 Q 456 236 480 244"/>
|
||||
<path d="M 428 272 Q 460 268 484 280"/>
|
||||
<path d="M 424 296 Q 456 300 476 314"/>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g clip-path="url(#eye)">
|
||||
<path d="M 256 272 L 256 184 A 88 88 0 0 1 332 228 Z" fill="#7C4DFF"/>
|
||||
<path d="M 256 272 L 332 228 A 88 88 0 0 1 332 316 Z" fill="#4F7CFF"/>
|
||||
<path d="M 256 272 L 332 316 A 88 88 0 0 1 256 360 Z" fill="#29B6F6"/>
|
||||
<path d="M 256 272 L 256 360 A 88 88 0 0 1 180 316 Z" fill="#4CAF50"/>
|
||||
<path d="M 256 272 L 180 316 A 88 88 0 0 1 180 228 Z" fill="#FFC107"/>
|
||||
<path d="M 256 272 L 180 228 A 88 88 0 0 1 256 184 Z" fill="#FF6B6B"/>
|
||||
<circle cx="256" cy="272" r="38" fill="#10131C"/>
|
||||
<circle cx="272" cy="254" r="10" fill="#FFFFFF" opacity="0.9"/>
|
||||
<circle cx="242" cy="290" r="5" fill="#FFFFFF" opacity="0.35"/>
|
||||
</g>
|
||||
|
||||
<path d="M 96 272 Q 256 148 416 272 Q 256 396 96 272 Z" fill="none" stroke="#E8EAF0" stroke-width="12" stroke-linejoin="round"/>
|
||||
|
||||
<path d="M 262 372 L 238 414 L 254 412 L 244 444 L 274 398 L 257 400 Z" fill="#FFC107"/>
|
||||
|
||||
<rect x="16" y="16" width="480" height="480" rx="112" fill="none" stroke="#2A2E3B" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 50 KiB |
@@ -0,0 +1,40 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#262B3A"/>
|
||||
<stop offset="1" stop-color="#14171F"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="planeTop" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#8FB0FF"/>
|
||||
<stop offset="1" stop-color="#5B86FF"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="glow" cx="0.5" cy="0.5" r="0.5">
|
||||
<stop offset="0" stop-color="#4F7CFF" stop-opacity="0.22"/>
|
||||
<stop offset="1" stop-color="#4F7CFF" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<clipPath id="bgclip">
|
||||
<rect x="16" y="16" width="480" height="480" rx="112"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
|
||||
<rect x="16" y="16" width="480" height="480" rx="112" fill="url(#bg)"/>
|
||||
<g clip-path="url(#bgclip)">
|
||||
<circle cx="320" cy="220" r="190" fill="url(#glow)"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke-width="16" stroke-linecap="round">
|
||||
<path d="M 60 368 Q 172 348 258 284" stroke="#FF6B6B"/>
|
||||
<path d="M 84 396 Q 196 376 284 312" stroke="#FFC107"/>
|
||||
<path d="M 108 424 Q 220 404 308 340" stroke="#4CAF50"/>
|
||||
<path d="M 132 452 Q 244 432 332 368" stroke="#29B6F6"/>
|
||||
</g>
|
||||
|
||||
<path d="M 396 116 L 216 212 L 296 258 Z" fill="url(#planeTop)"/>
|
||||
<path d="M 396 116 L 296 258 L 316 326 Z" fill="#4F7CFF"/>
|
||||
<path d="M 216 212 L 296 258 L 316 326 Z" fill="#2A3550"/>
|
||||
|
||||
<path d="M 436 78 L 441 89 L 452 94 L 441 99 L 436 110 L 431 99 L 420 94 L 431 89 Z" fill="#E8EAF0" opacity="0.9"/>
|
||||
<path d="M 458 143 L 461 149 L 467 152 L 461 155 L 458 161 L 455 155 L 449 152 L 455 149 Z" fill="#E8EAF0" opacity="0.6"/>
|
||||
|
||||
<rect x="16" y="16" width="480" height="480" rx="112" fill="none" stroke="#2A2E3B" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 193 KiB |
@@ -0,0 +1,41 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#262B3A"/>
|
||||
<stop offset="1" stop-color="#14171F"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bubble" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#6E93FF"/>
|
||||
<stop offset="1" stop-color="#3D63E8"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="wing" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0" stop-color="#E8EAF0"/>
|
||||
<stop offset="1" stop-color="#7E9BFF"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="glow" cx="0.5" cy="0.5" r="0.5">
|
||||
<stop offset="0" stop-color="#4F7CFF" stop-opacity="0.22"/>
|
||||
<stop offset="1" stop-color="#4F7CFF" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
|
||||
<rect width="512" height="512" fill="url(#bg)"/>
|
||||
<circle cx="308.92" cy="240.64" r="162.17" fill="url(#glow)"/>
|
||||
|
||||
<g fill="none" stroke="url(#wing)" stroke-width="22.19" stroke-linecap="round">
|
||||
<path d="M 189.42 199.67 Q 138.21 191.13 95.53 209.91"/>
|
||||
<path d="M 186.01 237.22 Q 127.97 233.81 87.01 257.71"/>
|
||||
<path d="M 189.42 274.78 Q 141.63 281.61 107.48 308.92"/>
|
||||
</g>
|
||||
|
||||
<path d="M 232.10 322.58 C 220.15 343.06 206.49 360.13 189.42 373.79 C 215.03 366.96 238.93 351.60 261.12 325.99 Z" fill="#3D63E8"/>
|
||||
|
||||
<rect x="192.84" y="138.21" width="232.16" height="191.19" rx="61.45" fill="url(#bubble)"/>
|
||||
|
||||
<g fill="none" stroke-width="10.24" stroke-linecap="round">
|
||||
<path d="M 237.22 244.05 A 71.70 71.70 0 0 1 380.62 244.05" stroke="#FF6B6B"/>
|
||||
<path d="M 250.88 244.05 A 58.04 58.04 0 0 1 366.96 244.05" stroke="#FFC107"/>
|
||||
<path d="M 264.54 244.05 A 44.38 44.38 0 0 1 353.30 244.05" stroke="#4CAF50"/>
|
||||
<path d="M 278.19 244.05 A 30.73 30.73 0 0 1 339.65 244.05" stroke="#29B6F6"/>
|
||||
</g>
|
||||
<circle cx="308.92" cy="244.05" r="9.39" fill="#7C4DFF"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |