/*
 * ImageToolbox is an image editor for android
 * Copyright (c) 2026 T8RIN (Malik Mukhametzyanov)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * You should have received a copy of the Apache License
 * along with this program.  If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
 */

package com.t8rin.imagetoolbox.core.resources.icons

import com.t8rin.imagetoolbox.core.resources.Icons
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp

val Icons.Rounded.DesignServices: ImageVector by lazy(LazyThreadSafetyMode.NONE) {
    ImageVector.Builder(
        name = "Rounded.DesignServices",
        defaultWidth = 24.dp,
        defaultHeight = 24.dp,
        viewportWidth = 960f,
        viewportHeight = 960f
    ).apply {
        path(fill = SolidColor(Color.Black)) {
            moveToRelative(352f, 438f)
            lineToRelative(86f, -87f)
            lineToRelative(-56f, -57f)
            lineToRelative(-16f, 16f)
            quadToRelative(-11f, 11f, -27.5f, 11.5f)
            reflectiveQuadTo(310f, 310f)
            quadToRelative(-12f, -12f, -12f, -28.5f)
            reflectiveQuadToRelative(12f, -28.5f)
            lineToRelative(15f, -15f)
            lineToRelative(-45f, -45f)
            lineToRelative(-87f, 87f)
            lineToRelative(159f, 158f)
            close()
            moveTo(680f, 767f)
            lineTo(767f, 680f)
            lineTo(722f, 635f)
            lineTo(706f, 650f)
            quadToRelative(-12f, 12f, -28f, 12f)
            reflectiveQuadToRelative(-28f, -12f)
            quadToRelative(-12f, -12f, -12f, -28f)
            reflectiveQuadToRelative(12f, -28f)
            lineToRelative(15f, -16f)
            lineToRelative(-57f, -56f)
            lineToRelative(-86f, 86f)
            lineToRelative(158f, 159f)
            close()
            moveTo(649f, 257f)
            lineTo(705f, 313f)
            lineTo(761f, 257f)
            lineTo(704f, 200f)
            lineTo(649f, 257f)
            close()
            moveTo(160f, 840f)
            quadToRelative(-17f, 0f, -28.5f, -11.5f)
            reflectiveQuadTo(120f, 800f)
            verticalLineToRelative(-113f)
            quadToRelative(0f, -8f, 3f, -15.5f)
            reflectiveQuadToRelative(9f, -13.5f)
            lineToRelative(163f, -163f)
            lineToRelative(-173f, -173f)
            quadToRelative(-17f, -17f, -17f, -42f)
            reflectiveQuadToRelative(17f, -42f)
            lineToRelative(116f, -116f)
            quadToRelative(17f, -17f, 42f, -16.5f)
            reflectiveQuadToRelative(42f, 17.5f)
            lineToRelative(174f, 173f)
            lineToRelative(151f, -152f)
            quadToRelative(12f, -12f, 27f, -18f)
            reflectiveQuadToRelative(31f, -6f)
            quadToRelative(16f, 0f, 31f, 6f)
            reflectiveQuadToRelative(27f, 18f)
            lineToRelative(53f, 54f)
            quadToRelative(12f, 12f, 18f, 27f)
            reflectiveQuadToRelative(6f, 31f)
            quadToRelative(0f, 16f, -6f, 30.5f)
            reflectiveQuadTo(816f, 313f)
            lineTo(665f, 465f)
            lineToRelative(173f, 173f)
            quadToRelative(17f, 17f, 17f, 42f)
            reflectiveQuadToRelative(-17f, 42f)
            lineTo(722f, 838f)
            quadToRelative(-17f, 17f, -42f, 17f)
            reflectiveQuadToRelative(-42f, -17f)
            lineTo(465f, 665f)
            lineTo(302f, 828f)
            quadToRelative(-6f, 6f, -13.5f, 9f)
            reflectiveQuadToRelative(-15.5f, 3f)
            lineTo(160f, 840f)
            close()
        }
    }.build()
}

val Icons.TwoTone.DesignServices: ImageVector by lazy(LazyThreadSafetyMode.NONE) {
    ImageVector.Builder(
        name = "TwoTone.DesignServices",
        defaultWidth = 24.dp,
        defaultHeight = 24.dp,
        viewportWidth = 24f,
        viewportHeight = 24f
    ).apply {
        path(fill = SolidColor(Color.Black)) {
            moveTo(20.95f, 15.95f)
            lineToRelative(-4.325f, -4.325f)
            lineToRelative(3.775f, -3.8f)
            curveToRelative(0.2f, -0.2f, 0.35f, -0.421f, 0.45f, -0.663f)
            curveToRelative(0.1f, -0.242f, 0.15f, -0.496f, 0.15f, -0.762f)
            reflectiveCurveToRelative(-0.05f, -0.525f, -0.15f, -0.775f)
            curveToRelative(-0.1f, -0.25f, -0.25f, -0.475f, -0.45f, -0.675f)
            lineToRelative(-1.325f, -1.35f)
            curveToRelative(-0.2f, -0.2f, -0.425f, -0.35f, -0.675f, -0.45f)
            curveToRelative(-0.25f, -0.1f, -0.508f, -0.15f, -0.775f, -0.15f)
            reflectiveCurveToRelative(-0.525f, 0.05f, -0.775f, 0.15f)
            curveToRelative(-0.25f, 0.1f, -0.475f, 0.25f, -0.675f, 0.45f)
            lineToRelative(-3.775f, 3.8f)
            lineToRelative(-4.35f, -4.325f)
            curveToRelative(-0.283f, -0.283f, -0.633f, -0.429f, -1.05f, -0.438f)
            curveToRelative(-0.417f, -0.008f, -0.767f, 0.129f, -1.05f, 0.412f)
            lineToRelative(-2.9f, 2.9f)
            curveToRelative(-0.283f, 0.283f, -0.425f, 0.633f, -0.425f, 1.05f)
            reflectiveCurveToRelative(0.142f, 0.767f, 0.425f, 1.05f)
            lineToRelative(4.325f, 4.325f)
            lineToRelative(-4.075f, 4.075f)
            curveToRelative(-0.1f, 0.1f, -0.175f, 0.212f, -0.225f, 0.337f)
            reflectiveCurveToRelative(-0.075f, 0.254f, -0.075f, 0.388f)
            verticalLineToRelative(2.825f)
            curveToRelative(0f, 0.283f, 0.096f, 0.521f, 0.287f, 0.713f)
            curveToRelative(0.192f, 0.192f, 0.429f, 0.287f, 0.713f, 0.287f)
            horizontalLineToRelative(2.825f)
            curveToRelative(0.133f, 0f, 0.263f, -0.025f, 0.388f, -0.075f)
            reflectiveCurveToRelative(0.237f, -0.125f, 0.337f, -0.225f)
            lineToRelative(4.075f, -4.075f)
            lineToRelative(4.325f, 4.325f)
            curveToRelative(0.283f, 0.283f, 0.633f, 0.425f, 1.05f, 0.425f)
            reflectiveCurveToRelative(0.767f, -0.142f, 1.05f, -0.425f)
            lineToRelative(2.9f, -2.9f)
            curveToRelative(0.283f, -0.283f, 0.425f, -0.633f, 0.425f, -1.05f)
            reflectiveCurveToRelative(-0.142f, -0.767f, -0.425f, -1.05f)
            close()
            moveTo(4.825f, 7f)
            lineToRelative(2.175f, -2.175f)
            lineToRelative(1.125f, 1.125f)
            lineToRelative(-0.375f, 0.375f)
            curveToRelative(-0.2f, 0.2f, -0.3f, 0.438f, -0.3f, 0.712f)
            curveToRelative(0f, 0.275f, 0.1f, 0.513f, 0.3f, 0.713f)
            reflectiveCurveToRelative(0.438f, 0.296f, 0.713f, 0.287f)
            curveToRelative(0.275f, -0.008f, 0.504f, -0.104f, 0.688f, -0.287f)
            lineToRelative(0.4f, -0.4f)
            lineToRelative(1.4f, 1.425f)
            lineToRelative(-2.15f, 2.175f)
            lineToRelative(-3.975f, -3.95f)
            close()
            moveTo(6.4f, 19f)
            horizontalLineToRelative(-1.4f)
            verticalLineToRelative(-1.4f)
            lineTo(14.775f, 7.8f)
            lineToRelative(1.425f, 1.425f)
            lineToRelative(-9.8f, 9.775f)
            close()
            moveTo(17f, 19.175f)
            lineToRelative(-3.95f, -3.975f)
            lineToRelative(2.15f, -2.15f)
            lineToRelative(1.425f, 1.4f)
            lineToRelative(-0.375f, 0.4f)
            curveToRelative(-0.2f, 0.2f, -0.3f, 0.433f, -0.3f, 0.7f)
            reflectiveCurveToRelative(0.1f, 0.5f, 0.3f, 0.7f)
            reflectiveCurveToRelative(0.433f, 0.3f, 0.7f, 0.3f)
            reflectiveCurveToRelative(0.5f, -0.1f, 0.7f, -0.3f)
            lineToRelative(0.4f, -0.375f)
            lineToRelative(1.125f, 1.125f)
            lineToRelative(-2.175f, 2.175f)
            close()
        }
        path(
            fill = SolidColor(Color.Black),
            fillAlpha = 0.3f,
            strokeAlpha = 0.3f
        ) {
            moveTo(8.8f, 10.95f)
            lineToRelative(2.15f, -2.175f)
            lineToRelative(-1.4f, -1.425f)
            lineToRelative(-0.4f, 0.4f)
            curveToRelative(-0.183f, 0.183f, -0.412f, 0.279f, -0.688f, 0.287f)
            reflectiveCurveToRelative(-0.512f, -0.087f, -0.712f, -0.287f)
            reflectiveCurveToRelative(-0.3f, -0.438f, -0.3f, -0.712f)
            reflectiveCurveToRelative(0.1f, -0.512f, 0.3f, -0.712f)
            lineToRelative(0.375f, -0.375f)
            lineToRelative(-1.125f, -1.125f)
            lineToRelative(-2.175f, 2.175f)
            lineToRelative(3.975f, 3.95f)
            close()
        }
        path(
            fill = SolidColor(Color.Black),
            fillAlpha = 0.3f,
            strokeAlpha = 0.3f
        ) {
            moveTo(17f, 19.175f)
            lineToRelative(2.175f, -2.175f)
            lineToRelative(-1.125f, -1.125f)
            lineToRelative(-0.4f, 0.375f)
            curveToRelative(-0.2f, 0.2f, -0.433f, 0.3f, -0.7f, 0.3f)
            reflectiveCurveToRelative(-0.5f, -0.1f, -0.7f, -0.3f)
            reflectiveCurveToRelative(-0.3f, -0.433f, -0.3f, -0.7f)
            reflectiveCurveToRelative(0.1f, -0.5f, 0.3f, -0.7f)
            lineToRelative(0.375f, -0.4f)
            lineToRelative(-1.425f, -1.4f)
            lineToRelative(-2.15f, 2.15f)
            lineToRelative(3.95f, 3.975f)
            close()
        }
        path(
            fill = SolidColor(Color.Black),
            fillAlpha = 0.3f,
            strokeAlpha = 0.3f
        ) {
            moveTo(5f, 19f)
            lineToRelative(1.4f, 0f)
            lineToRelative(9.8f, -9.775f)
            lineToRelative(-1.425f, -1.425f)
            lineToRelative(-9.775f, 9.8f)
            lineToRelative(0f, 1.4f)
            close()
        }
    }.build()
}