Skip to content

Commit

Permalink
I think this is complete
Browse files Browse the repository at this point in the history
  • Loading branch information
lainsce committed Aug 19, 2024
1 parent 9adf886 commit 95eddcb
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 207 deletions.
117 changes: 12 additions & 105 deletions data/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,16 @@ button.flat label {
}

.accent-mode radio {
min-height: 48px;
min-width: 48px;
min-height: 42px;
min-width: 42px;
margin: 6px;
}
.accent-mode:checked radio,
.accent-mode:active radio,
.accent-mode:hover:checked radio,
.accent-mode:active:checked radio {
box-shadow: 0 0 0 5px @accent_color, 0 0 0 2px @view_bg_color;
}

.red radio {
background: #e25480;
Expand All @@ -47,21 +53,6 @@ button.flat label {
background: alpha(#e25480, 0.18);
box-shadow: inset 0 0 0 3px alpha(#e25480, 0.32);
}
.red:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.red:hover radio {
box-shadow: inset 0 0 0 2px alpha(@view_fg_color, 0.52);
}
.red:active radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.red:hover:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.red:active:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}

.yellow radio {
background: #febc16;
Expand All @@ -71,21 +62,6 @@ button.flat label {
background: alpha(#febc16, 0.18);
box-shadow: inset 0 0 0 3px alpha(#febc16, 0.32);
}
.yellow:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.yellow:hover radio {
box-shadow: inset 0 0 0 2px alpha(@view_fg_color, 0.52);
}
.yellow:active radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.yellow:hover:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.yellow:active:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}

.green radio {
background: #72da82;
Expand All @@ -95,21 +71,6 @@ button.flat label {
background: alpha(#72da82, 0.18);
box-shadow: inset 0 0 0 3px alpha(#72da82, 0.32);
}
.green:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.green:hover radio {
box-shadow: inset 0 0 0 2px alpha(@view_fg_color, 0.52);
}
.green:active radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.green:hover:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.green:active:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}

.blue radio {
background: #58a8fa;
Expand All @@ -119,21 +80,6 @@ button.flat label {
background: alpha(#58a8fa, 0.18);
box-shadow: inset 0 0 0 3px alpha(#58a8fa, 0.32);
}
.blue:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.blue:hover radio {
box-shadow: inset 0 0 0 2px alpha(@view_fg_color, 0.52);
}
.blue:active radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.blue:hover:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.blue:active:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}

.purple radio {
background: #a57bcd;
Expand All @@ -143,21 +89,6 @@ button.flat label {
background: alpha(#a57bcd, 0.18);
box-shadow: inset 0 0 0 3px alpha(#a57bcd, 0.32);
}
.purple:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.purple:hover radio {
box-shadow: inset 0 0 0 2px alpha(@view_fg_color, 0.52);
}
.purple:active radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.purple:hover:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.purple:active:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}

.pink radio {
background: #cb76b8;
Expand All @@ -167,42 +98,15 @@ button.flat label {
background: alpha(#cb76b8, 0.18);
box-shadow: inset 0 0 0 3px alpha(#cb76b8, 0.32);
}
.pink:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.pink:hover radio {
box-shadow: inset 0 0 0 2px alpha(@view_fg_color, 0.52);
}
.pink:active radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.pink:hover:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.pink:active:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}

.multi radio {
background: no-repeat url("resource://com/fyralabs/Fusebox/Appearance/multi.svg");
background-size: cover;
color: transparent;
}
.multi:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.multi:hover radio {
box-shadow: inset 0 0 0 2px alpha(@view_fg_color, 0.52);
}
.multi:active radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.multi:hover:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.multi:active:checked radio {
box-shadow: inset 0 0 0 3px @accent_color;
}
.multi:disabled radio {
filter: opacity(0.38);
box-shadow: inset 0 0 0 3px alpha(@view_fg_color, 0.32);
Expand Down Expand Up @@ -341,6 +245,9 @@ spinbutton.flat {
padding: 14px;
background: @surface_container_bg_color;
}
.ensor-box > flowboxchild box {
box-shadow: inset 0 0 0 2px @borders;
}
.ensor-box > flowboxchild:selected box {
box-shadow: 0 0 0 5px @accent_color, 0 0 0 2px @view_bg_color;
}
Expand Down Expand Up @@ -410,6 +317,6 @@ spinbutton.flat {
color: @suggested_container_fg_color;
}
.pill-segment button:checked {
background: @accent_fg_color;
background: @surface_container_lowest_bg_color;
color: @view_fg_color;
}
83 changes: 18 additions & 65 deletions fuses/appearance/Utils/ColorGenerator.vala
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
public class ColorGenerator {
public class ColorGenerator : Object {
private const int SCHEME_COUNT = 6; // 6 entries on the He.SchemeVariant enum
private const int COLORS_PER_SCHEME = 4;
private const int DEFAULT_COLOR = 0x8C56BF; // Tau Purple as fallback
Expand All @@ -9,6 +9,7 @@ public class ColorGenerator {
public ColorGenerator(int[] argb_ints) {
this.argb_ints = argb_ints;
this.generated_colors = new Gee.ArrayList<int>();

generate_colors();
}

Expand All @@ -24,33 +25,33 @@ public class ColorGenerator {
var scheme = new He.DefaultScheme();
var dyn_scheme = scheme.generate(hct, false, 0.0);
generated_colors.add(hex_to_int(dyn_scheme.get_primary()));
generated_colors.add(hex_to_int(dyn_scheme.get_secondary()));
generated_colors.add(hex_to_int(dyn_scheme.get_tertiary()));
generated_colors.add(hex_to_int(dyn_scheme.get_surface()));
generated_colors.add(hex_to_int(dyn_scheme.get_secondary_container()));
generated_colors.add(hex_to_int(dyn_scheme.get_tertiary_container()));
generated_colors.add(hex_to_int(dyn_scheme.get_primary()));
break;
case He.SchemeVariant.MUTED:
var scheme = new He.MutedScheme();
var dyn_scheme = scheme.generate(hct, false, 0.0);
generated_colors.add(hex_to_int(dyn_scheme.get_primary()));
generated_colors.add(hex_to_int(dyn_scheme.get_secondary()));
generated_colors.add(hex_to_int(dyn_scheme.get_tertiary()));
generated_colors.add(hex_to_int(dyn_scheme.get_surface()));
generated_colors.add(hex_to_int(dyn_scheme.get_secondary_container()));
generated_colors.add(hex_to_int(dyn_scheme.get_tertiary_container()));
generated_colors.add(hex_to_int(dyn_scheme.get_primary()));
break;
case He.SchemeVariant.VIBRANT:
var scheme = new He.VibrantScheme();
var dyn_scheme = scheme.generate(hct, false, 0.0);
generated_colors.add(hex_to_int(dyn_scheme.get_primary()));
generated_colors.add(hex_to_int(dyn_scheme.get_secondary()));
generated_colors.add(hex_to_int(dyn_scheme.get_tertiary()));
generated_colors.add(hex_to_int(dyn_scheme.get_surface()));
generated_colors.add(hex_to_int(dyn_scheme.get_secondary_container()));
generated_colors.add(hex_to_int(dyn_scheme.get_tertiary_container()));
generated_colors.add(hex_to_int(dyn_scheme.get_primary()));
break;
case He.SchemeVariant.SALAD:
var scheme = new He.SaladScheme();
var dyn_scheme = scheme.generate(hct, false, 0.0);
generated_colors.add(hex_to_int(dyn_scheme.get_primary()));
generated_colors.add(hex_to_int(dyn_scheme.get_secondary()));
generated_colors.add(hex_to_int(dyn_scheme.get_tertiary()));
generated_colors.add(hex_to_int(dyn_scheme.get_surface()));
generated_colors.add(hex_to_int(dyn_scheme.get_secondary_container()));
generated_colors.add(hex_to_int(dyn_scheme.get_tertiary_container()));
generated_colors.add(hex_to_int(dyn_scheme.get_primary()));
break;
}
}
Expand All @@ -59,36 +60,20 @@ public class ColorGenerator {

// Converts a hex color string to an int
private int hex_to_int(string hex_color) {
try {
int res;
int.try_parse(hex_color.replace("#", ""), out res, null, 16);
return res;
} catch (Error e) {
warning("Error parsing hex color '%s': %s. Using default color.", hex_color, e.message);
return DEFAULT_COLOR;
}
int res;
int.try_parse(hex_color.replace("#", ""), out res, null, 16);
return res;
}

// Retrieves the generated colors for a specified scheme
public Gee.ArrayList<int> get_generated_colors(He.SchemeVariant scheme_variant) {
int scheme_index = (int) scheme_variant;
if (scheme_index < 0 || scheme_index >= SCHEME_COUNT) {
warning("Scheme index %d is out of range. Returning default colors.", scheme_index);
return get_default_colors();
}

var colors = new Gee.ArrayList<int>();
int base_index = scheme_index * COLORS_PER_SCHEME;

for (int i = 0; i < argb_ints.length; i++) {
int offset = i * SCHEME_COUNT * COLORS_PER_SCHEME + base_index;
debug("Calculated offset: %d for ARGB int index: %d, scheme index: %d", offset, i, scheme_index);

// Safety check to avoid out-of-bounds access
if (offset < 0 || offset + COLORS_PER_SCHEME > generated_colors.size) {
warning("Offset out of bounds: %d. Returning default colors.", offset);
return get_default_colors();
}
int offset = i * 4 * COLORS_PER_SCHEME + base_index;

colors.add(generated_colors.get(offset));
colors.add(generated_colors.get(offset + 1));
Expand All @@ -98,36 +83,4 @@ public class ColorGenerator {

return colors;
}

// Retrieves the colors for a specific ARGB int and scheme
public Gee.ArrayList<int> get_colors_for_argb(int index, He.SchemeVariant scheme_variant) {
if (index < 0 || index >= argb_ints.length) {
warning("Index %d out of range for ARGB values. Returning default colors.", index);
return get_default_colors();
}

int scheme_index = (int) scheme_variant;
if (scheme_index < 0 || scheme_index >= SCHEME_COUNT) {
warning("Scheme index %d is out of range. Returning default colors.", scheme_index);
return get_default_colors();
}

var colors = new Gee.ArrayList<int>();
int base_index = index * SCHEME_COUNT * COLORS_PER_SCHEME + scheme_index * COLORS_PER_SCHEME;

for (int i = 0; i < COLORS_PER_SCHEME; i++) {
colors.add(generated_colors.get(base_index + i));
}

return colors;
}

// Provides a default set of colors
private Gee.ArrayList<int> get_default_colors() {
var default_colors = new Gee.ArrayList<int>();
for (int i = 0; i <= COLORS_PER_SCHEME; i++) {
default_colors.add(DEFAULT_COLOR);
}
return default_colors;
}
}
Loading

0 comments on commit 95eddcb

Please sign in to comment.