Warning, /plasma/breeze-gtk/src/_functions.scss is written in an unsupported language. File is not indexed.
0001 @charset "UTF-8";
0002
0003 // GTK functions
0004
0005 // escape string entirely
0006 @function gtk($str) {
0007 @return unquote("#{$str}_breeze");
0008 }
0009
0010 // alpha function
0011 @function gtkalpha($c, $a) {
0012 @return unquote("alpha(#{$c},#{$a})");
0013 }
0014
0015 // shade function
0016 @function gtkshade($c, $a) {
0017 @return unquote("shade(#{$c}_breeze,#{$a})");
0018 }
0019
0020 // mix function
0021 @function gtkmix($c1, $c2, $m) {
0022 @return unquote("mix(#{$c1},#{$c2},#{$m})");
0023 }
0024
0025 @function gtkoverlay($c1, $c2) {
0026 @return unquote("linear-gradient(#{$c2},#{$c2}),
0027 linear-gradient(#{$c1},#{$c1})");
0028 }
0029
0030 @function gtkoverlayalpha($c1, $c2, $a) {
0031 $ca1: gtkalpha(#{$c1}, #{$a});
0032 $ca2: gtkalpha(#{$c2}, #{$a});
0033 @return unquote("linear-gradient(#{$ca2},#{$ca2}),
0034 linear-gradient(#{$ca1},#{$ca1})");
0035 }
0036
0037 //
0038 // Theme color functions
0039 //
0040
0041 // Button Color
0042 @function internal_b_color($c: normal) {
0043 @if $c == normal {
0044 @return $ButtonBackgroundNormal;
0045 }
0046 @if $c == hover {
0047 @return $ButtonDecorationHover;
0048 }
0049 @if $c == active {
0050 @return $ButtonDecorationFocus;
0051 }
0052 @if $c == text {
0053 @return $ButtonForegroundNormal;
0054 }
0055 @if $c == active-text {
0056 @return $SelectionForegroundNormal;
0057 }
0058 }
0059
0060 // Selection Color
0061 @function internal_s_color($c: normal) {
0062 @if $c == normal {
0063 @return $SelectionBackgroundNormal;
0064 }
0065 @if $c == hover {
0066 @return $SelectionDecorationHover;
0067 }
0068 @if $c == text {
0069 @return $SelectionForegroundNormal;
0070 }
0071 @if $c == backdrop {
0072 @return transparentize($SelectionBackgroundNormal, 0.5);
0073 }
0074 }
0075
0076 // View Color
0077 @function internal_v_color($c: normal) {
0078 @if $c == normal {
0079 @return $ViewBackgroundNormal;
0080 }
0081 @if $c == hover {
0082 @return $ViewDecorationHover;
0083 }
0084 @if $c == active {
0085 @return $ViewDecorationFocus;
0086 }
0087 @if $c == text {
0088 @return $ViewForegroundNormal;
0089 }
0090 }
0091
0092 // Window Color
0093 @function internal_w_color($c: normal) {
0094 @if $c == normal {
0095 @return $WindowBackgroundNormal;
0096 }
0097 @if $c == text {
0098 @return $WindowForegroundNormal;
0099 }
0100 }
0101
0102 // Titlebar color
0103 @function internal_t_color($c: text) {
0104 @if $c == text {
0105 @return $WMactiveForeground;
0106 }
0107 @if $c == background {
0108 @return $WMactiveBackground;
0109 }
0110 @if $c == background-light {
0111 @return $WindowBackgroundNormal;
0112 }
0113 @if $c == backdrop-text {
0114 @return $WMinactiveForeground;
0115 }
0116 @if $c == backdrop-background {
0117 @return $WMinactiveBackground;
0118 }
0119 }
0120
0121 @function internal_tooltip($c: text) {
0122 @if $c == text {
0123 @return $TooltipForegroundNormal;
0124 }
0125 @if $c == background {
0126 @return $TooltipBackgroundNormal;
0127 }
0128 @if $c == border {
0129 @return mix(
0130 $TooltipForegroundNormal,
0131 $TooltipBackgroundNormal,
0132 25%
0133 );
0134 }
0135 }
0136
0137 @function internal_button_gradient($c, $state: normal) {
0138 @if $state == normal {
0139 @return linear-gradient(
0140 to bottom,
0141 change-color(
0142 $c,
0143 $lightness: min(lightness($c) * 1.01, 100%)
0144 ),
0145 change-color(
0146 $c,
0147 $lightness: min(lightness($c) / 1.03, 100%)
0148 )
0149 );
0150 } @else {
0151 @return linear-gradient(
0152 to bottom,
0153 change-color(
0154 $c,
0155 $lightness: min(lightness($c) * 1.03, 100%)
0156 ),
0157 change-color(
0158 $c,
0159 $lightness: min(lightness($c) / 1.1, 100%)
0160 )
0161 );
0162 }
0163 }
0164
0165 $border_color: mix(
0166 $WindowBackgroundNormal,
0167 $WindowForegroundNormal,
0168 75%
0169 );
0170 $ligh_border_color: gtkmix(
0171 $WindowBackgroundNormal,
0172 $WindowForegroundNormal,
0173 0.07
0174 );
0175
0176 $menu_color: internal_w_color(normal);
0177 $link_color: $ViewForegroundLink;
0178 $link_visited_color: $ViewForegroundVisited;
0179
0180 $warning_color: $ViewForegroundNeutral;
0181 $error_color: $ViewForegroundNegative;
0182 $success_color: $ViewForegroundPositive;
0183 $destructive_color: $error_color;
0184
0185 $arrow_down: "go-down-symbolic";
0186 $arrow_left: "go-previous-symbolic";
0187 $arrow_right: "go-next-symbolic";
0188 $arrow_up: "go-up-symbolic";
0189
0190 $trough_color: gtkmix(
0191 gtk("@theme_bg_color"),
0192 gtk("@theme_fg_color"),
0193 0.7
0194 );
0195 $trough_color_backdrop: gtkmix(
0196 gtk("@theme_unfocused_bg_color"),
0197 gtk("@theme_unfocused_fg_color"),
0198 0.7
0199 );
0200 $trough_color_insensitive: gtkmix(
0201 gtk("@insensitive_bg_color"),
0202 gtk("@insensitive_fg_color"),
0203 0.7
0204 );
0205 $trough_color_backdrop_insensitive: gtkmix(
0206 gtk("@insensitive_unfocused_bg_color"),
0207 gtk("@insensitive_unfocused_fg_color"),
0208 0.7
0209 );
0210
0211 $scrollbar_color: gtkmix(
0212 $trough_color,
0213 gtk("@theme_text_color"),
0214 0.5
0215 );
0216 $scrollbar_color_backdrop: gtkmix(
0217 $trough_color_backdrop,
0218 gtk("@theme_unfocused_text_color"),
0219 0.5
0220 );
0221
0222 //
0223 // Color effects
0224 //
0225 //
0226 // Color maps for color effect functions
0227 //
0228 $Color: (
0229 Disabled: $DisabledColor,
0230 Inactive: $InactiveColor,
0231 );
0232 $ColorAmount: (
0233 Disabled: $DisabledColorAmount,
0234 Inactive: $InactiveColorAmount,
0235 );
0236 $ColorEffect: (
0237 Disabled: $DisabledColorEffect,
0238 Inactive: $InactiveColorEffect,
0239 );
0240 $ContrastAmount: (
0241 Disabled: $DisabledContrastAmount,
0242 Inactive: $InactiveContrastAmount,
0243 );
0244 $ContrastEffect: (
0245 Disabled: $DisabledContrastEffect,
0246 Inactive: $InactiveContrastEffect,
0247 );
0248 $IntensityAmount: (
0249 Disabled: $DisabledIntensityAmount,
0250 Inactive: $InactiveIntensityAmount,
0251 );
0252 $IntensityEffect: (
0253 Disabled: $DisabledIntensityEffect,
0254 Inactive: $InactiveIntensityEffect,
0255 );
0256
0257 $r: 0.75mm; // standard radius
0258
0259 @function internal_insensitive($c) {
0260 @return internal_Color(
0261 internal_Intensity(
0262 internal_Contrast($c, Disabled),
0263 Disabled
0264 ),
0265 Disabled
0266 );
0267 }
0268
0269 @function internal_backdrop($c) {
0270 @if $InactiveEnable == true {
0271 @return internal_Color(
0272 internal_Intensity(
0273 internal_Contrast($c, Inactive),
0274 Inactive
0275 ),
0276 Inactive
0277 );
0278 } @else {
0279 @return $c;
0280 }
0281 }
0282
0283 @function internal_Contrast($c, $state) {
0284 @if map-get($ContrastEffect, $state) == 0 {
0285 @return $c;
0286 }
0287
0288 @if map-get($ContrastEffect, $state) == 1 {
0289 @if lightness(internal_w_color()) >
0290 lightness(internal_w_color(text))
0291 {
0292 @if lightness($c) <
0293 lightness(internal_w_color()) or
0294 (
0295 $c ==
0296 internal_t_color(text) and
0297 lightness(internal_t_color(background)) <=
0298 lightness(internal_t_color(text))
0299 )
0300 {
0301 @return transparentize(
0302 $c,
0303 map-get($ContrastAmount, $state)
0304 );
0305 } @else {
0306 @return $c;
0307 }
0308 }
0309 @if lightness(internal_w_color()) <=
0310 lightness(internal_w_color(text))
0311 {
0312 @if lightness($c) >
0313 lightness(internal_w_color()) or
0314 (
0315 $c ==
0316 internal_t_color(text) and
0317 lightness(internal_t_color(background)) >
0318 lightness(internal_t_color(text))
0319 )
0320 {
0321 @return transparentize(
0322 $c,
0323 map-get($ContrastAmount, $state)
0324 );
0325 } @else {
0326 @return $c;
0327 }
0328 }
0329 }
0330
0331 @if map-get($ContrastEffect, $state) == 2 {
0332 @if lightness(internal_w_color()) >
0333 lightness(internal_w_color(text))
0334 {
0335 // don't know what a reasonable lightness treshhold is for Contrast
0336 @if lightness($c) <
0337 lightness(internal_w_color()) or
0338 (
0339 $c ==
0340 internal_t_color(text) and
0341 lightness(internal_t_color(background)) <=
0342 lightness(internal_t_color(text))
0343 )
0344 {
0345 @return transparentize(
0346 $c,
0347 map-get($ContrastAmount, $state)
0348 );
0349 } @else {
0350 @return $c;
0351 }
0352 }
0353 @if lightness(internal_w_color()) <=
0354 lightness(internal_w_color(text))
0355 {
0356 @if lightness($c) >
0357 lightness(internal_w_color()) or
0358 (
0359 $c ==
0360 internal_t_color(text) and
0361 lightness(internal_t_color(background)) >
0362 lightness(internal_t_color(text))
0363 )
0364 {
0365 @return transparentize(
0366 $c,
0367 map-get($ContrastAmount, $state)
0368 );
0369 } @else {
0370 @return $c;
0371 }
0372 }
0373 }
0374 }
0375
0376 @function internal_Color($c, $state) {
0377 @if map-get($ColorEffect, $state) ==0 {
0378 @return $c;
0379 }
0380
0381 @if map-get($ColorEffect, $state) ==1 {
0382 @if map-get($ColorAmount, $state) >=0 {
0383 @return desaturate(
0384 $c,
0385 percentage(map-get($ColorAmount, $state))
0386 );
0387 } @else {
0388 @return saturate(
0389 $c,
0390 percentage(abs(map-get($ColorAmount, $state)))
0391 );
0392 }
0393 }
0394
0395 @if map-get($ColorEffect, $state)
0396 ==2 or
0397 map-get($ColorEffect, $state)
0398 ==3
0399 {
0400 // 2 and 3 seem to do the same
0401 @return mix(
0402 map-get($Color, $state),
0403 $c,
0404 percentage(map-get($ColorAmount, $state))
0405 );
0406 }
0407 }
0408
0409 @function internal_Intensity($c, $state) {
0410 @if map-get($IntensityEffect, $state) == 0 {
0411 @return $c;
0412 }
0413 @if map-get($IntensityEffect, $state) == 1 {
0414 @if map-get($IntensityAmount, $state) >= 0 {
0415 @return mix(
0416 white,
0417 $c,
0418 percentage(map-get($IntensityAmount, $state))
0419 );
0420 } @else {
0421 @return mix(
0422 black,
0423 $c,
0424 percentage(abs(map-get($IntensityAmount, $state)))
0425 );
0426 }
0427 }
0428
0429 @if map-get($IntensityEffect, $state) == 2 {
0430 @if map-get($IntensityAmount, $state) == -1 {
0431 @return change-color($c, $lightness: 100%);
0432 } @else {
0433 @return change-color(
0434 $c,
0435 $lightness:
0436 min(
0437 lightness($c) /
0438 (1 + map-get($IntensityAmount, $state)),
0439 100%
0440 )
0441 );
0442 }
0443 }
0444
0445 @if map-get($IntensityEffect, $state) == 3 {
0446 @return change-color(
0447 $c,
0448 $lightness:
0449 min(
0450 lightness($c) *
0451 (1 + map-get($IntensityAmount, $state)),
0452 100%
0453 )
0454 );
0455 }
0456 }
0457
0458 @function internal_alpha2solid($c, $background) {
0459 $amount: alpha($c);
0460 $c: rgb(red($c), green($c), blue($c));
0461 @return mix($c, $background, $amount);
0462 }