diff --git a/StreamAwesome/src/assets/examples/neo-style-background.png b/StreamAwesome/src/assets/examples/neo-style-background.png new file mode 100644 index 00000000..e9a21869 Binary files /dev/null and b/StreamAwesome/src/assets/examples/neo-style-background.png differ diff --git a/StreamAwesome/src/assets/examples/neo-style-black.png b/StreamAwesome/src/assets/examples/neo-style-black.png new file mode 100644 index 00000000..cad5d617 Binary files /dev/null and b/StreamAwesome/src/assets/examples/neo-style-black.png differ diff --git a/StreamAwesome/src/assets/examples/neo-style-dark.png b/StreamAwesome/src/assets/examples/neo-style-dark.png new file mode 100644 index 00000000..fe82b1ac Binary files /dev/null and b/StreamAwesome/src/assets/examples/neo-style-dark.png differ diff --git a/StreamAwesome/src/assets/examples/neo-style-white.png b/StreamAwesome/src/assets/examples/neo-style-white.png new file mode 100644 index 00000000..a0d46019 Binary files /dev/null and b/StreamAwesome/src/assets/examples/neo-style-white.png differ diff --git a/StreamAwesome/src/components/settings/presets/NeoPreset.vue b/StreamAwesome/src/components/settings/presets/NeoPreset.vue index 8d574407..58ee2c03 100644 --- a/StreamAwesome/src/components/settings/presets/NeoPreset.vue +++ b/StreamAwesome/src/components/settings/presets/NeoPreset.vue @@ -1,7 +1,11 @@ @@ -58,17 +79,34 @@ const toggleSettings = () => { - - - - Symbol Only - + Neo Style: + + + updateNeoStyle(style)" + :checked="style === (currentIcon as CustomIcon<'Neo'>).presetSettings.neoStyle" + /> + + + + + diff --git a/StreamAwesome/src/logic/generator/presets/neoIconGenerator.ts b/StreamAwesome/src/logic/generator/presets/neoIconGenerator.ts index 49addc56..6a7d83d2 100644 --- a/StreamAwesome/src/logic/generator/presets/neoIconGenerator.ts +++ b/StreamAwesome/src/logic/generator/presets/neoIconGenerator.ts @@ -9,22 +9,26 @@ export default class NeoIconGenerator extends IconGenerator<'Neo'> { const foregroundColorName = this.getHTMLColorName(startColor.hex()) const invertedPart = icon.presetSettings.invertDirection ? '-inverted' : '' - const symbolPart = icon.presetSettings.symbolOnly ? '-symbol' : '' + const neoStylePart = '-' + icon.presetSettings.neoStyle.replace(' ', '-').toLowerCase() - return `neo-${foregroundColorName}${invertedPart}${symbolPart}` + return `neo-${foregroundColorName}${neoStylePart}${invertedPart}` } protected getIconFillStyle(icon: CustomIcon<'Neo'>): string | CanvasGradient | CanvasPattern { - if (!icon.presetSettings.symbolOnly) { + const style = icon.presetSettings.neoStyle + if (style === 'White Icon' || style === 'Dark Background') { return chroma('white').hex() } + if (style === 'Black Icon') { + return chroma('black').hex() + } return this.calculateGradient(icon, this.calculateColors(icon)) } protected getSecondaryFillStyle( icon: CustomIcon<'Neo'> ): string | CanvasGradient | CanvasPattern { - if (!icon.presetSettings.symbolOnly) { + if (icon.presetSettings.neoStyle !== 'Black Background') { return super.getSecondaryFillStyle(icon) } @@ -36,7 +40,13 @@ export default class NeoIconGenerator extends IconGenerator<'Neo'> { } protected drawBackground(icon: CustomIcon<'Neo'>): void { - if (!icon.presetSettings.symbolOnly) { + if (icon.presetSettings.neoStyle === 'Dark Background') { + const colors = this.calculateColors(icon) + this.renderingContext.fillStyle = this.calculateGradient(icon, { + start: colors.start.darken(2.5).desaturate(2), + stop: colors.stop.darken(2.5).desaturate(2) + }) + } else if (icon.presetSettings.neoStyle !== 'Black Background') { this.renderingContext.fillStyle = this.calculateGradient(icon, this.calculateColors(icon)) } else { this.renderingContext.fillStyle = 'black' diff --git a/StreamAwesome/src/model/customIcon.ts b/StreamAwesome/src/model/customIcon.ts index 005c339e..7e667a6d 100644 --- a/StreamAwesome/src/model/customIcon.ts +++ b/StreamAwesome/src/model/customIcon.ts @@ -28,10 +28,18 @@ interface ModernPreset extends Preset { inverted: boolean } +export const NeoStyleKeys = [ + 'White Icon', + 'Black Icon', + 'Black Background', + 'Dark Background' +] as const +export type NeoStyle = (typeof NeoStyleKeys)[number] + interface NeoPreset extends Preset { preset: (typeof FontAwesomePresetKeys)[2] invertDirection: boolean - symbolOnly: boolean + neoStyle: NeoStyle hueStart: number hueShift: number saturation: number