82 lines
4.1 KiB
TypeScript
82 lines
4.1 KiB
TypeScript
import bgBlurLight from './assets/bg.jpg'
|
|
import bgBlurDark from './assets/bg-dark.jpg'
|
|
import bgSharpLight from './assets/bg-sharp.jpg'
|
|
import bgSharpDark from './assets/bg-sharp-dark.jpg'
|
|
import bgOriginalLight from './assets/bg-sharp.png'
|
|
import bgOriginalDark from './assets/bg-sharp-dark.png'
|
|
import banaBlur from './assets/bg-bana.jpg'
|
|
import banaSharp from './assets/bg-bana-sharp.jpg'
|
|
import banaOriginal from './assets/bg-bana-sharp.png'
|
|
import bana2Blur from './assets/bg-bana2.jpg'
|
|
import bana2Sharp from './assets/bg-bana2-sharp.jpg'
|
|
import bana2Original from './assets/bg-bana2-sharp.png'
|
|
import photo86_3Blur from './assets/photo86-3-blur.jpg'
|
|
import photo86_3 from './assets/photo86-3.jpg'
|
|
import photo86_3Original from './assets/photo86-3-original.png'
|
|
import photo86_7Blur from './assets/photo86-7-blur.jpg'
|
|
import photo86_7 from './assets/photo86-7.jpg'
|
|
import photo86_7Original from './assets/photo86-7-original.jpg'
|
|
import photo86_2Blur from './assets/photo86-2-blur.jpg'
|
|
import photo86_2 from './assets/photo86-2.jpg'
|
|
import photo86_2Original from './assets/photo86-2-original.jpg'
|
|
import photo86_8Blur from './assets/photo86-8-blur.jpg'
|
|
import photo86_8 from './assets/photo86-8.jpg'
|
|
import photo86_8Original from './assets/photo86-8-original.jpg'
|
|
import photo86_5Blur from './assets/photo86-5-blur.jpg'
|
|
import photo86_5 from './assets/photo86-5.jpg'
|
|
import photo86_5Original from './assets/photo86-5-original.jpg'
|
|
import photo86_6Blur from './assets/photo86-6-blur.jpg'
|
|
import photo86_6 from './assets/photo86-6.jpg'
|
|
import photo86_6Original from './assets/photo86-6-original.jpg'
|
|
|
|
/** 一张照片的三个版本:blur 是预先模糊过的,sharp 是不模糊但压缩过的,original 是没压缩的原图。 */
|
|
export interface Variants {
|
|
blur: string
|
|
sharp: string
|
|
original: string
|
|
}
|
|
|
|
/** 可选的背景照片:group 是分组(面板里一组一行),亮色和暗色可以是不同的两张,也可以是同一张。 */
|
|
export interface Photo {
|
|
id: string
|
|
group: string
|
|
label: string
|
|
light: Variants
|
|
dark: Variants
|
|
}
|
|
|
|
const same = (variants: Variants) => ({ light: variants, dark: variants })
|
|
|
|
/** 加一张照片:把它的三个版本放进 assets/,在这里加一项。第一项是默认的。 */
|
|
export const PHOTOS: Photo[] = [
|
|
{
|
|
id: 'sleep',
|
|
group: 'shirobana',
|
|
label: '睡颜',
|
|
// 亮色睁眼、暗色闭眼
|
|
light: { blur: bgBlurLight, sharp: bgSharpLight, original: bgOriginalLight },
|
|
dark: { blur: bgBlurDark, sharp: bgSharpDark, original: bgOriginalDark },
|
|
},
|
|
{ id: 'bana', group: 'shirobana', label: '伸手', ...same({ blur: banaBlur, sharp: banaSharp, original: banaOriginal }) },
|
|
{ id: 'bana2', group: 'shirobana', label: '海边', ...same({ blur: bana2Blur, sharp: bana2Sharp, original: bana2Original }) },
|
|
{ id: '86-3', group: '86', label: '小憩', ...same({ blur: photo86_3Blur, sharp: photo86_3, original: photo86_3Original }) },
|
|
{ id: '86-7', group: '86', label: '窗边', ...same({ blur: photo86_7Blur, sharp: photo86_7, original: photo86_7Original }) },
|
|
{ id: '86-2', group: '86', label: '伞下', ...same({ blur: photo86_2Blur, sharp: photo86_2, original: photo86_2Original }) },
|
|
{ id: '86-8', group: '86', label: '驾驶', ...same({ blur: photo86_8Blur, sharp: photo86_8, original: photo86_8Original }) },
|
|
{ id: '86-5', group: '86', label: '怀中', ...same({ blur: photo86_5Blur, sharp: photo86_5, original: photo86_5Original }) },
|
|
{ id: '86-6', group: '86', label: '倚靠', ...same({ blur: photo86_6Blur, sharp: photo86_6, original: photo86_6Original }) },
|
|
]
|
|
|
|
export const DEFAULT_PHOTO = PHOTOS[0].id
|
|
|
|
/** 照片所在的分组,按出现的顺序。 */
|
|
export const PHOTO_GROUPS = [...new Set(PHOTOS.map((photo) => photo.group))]
|
|
|
|
export const findPhoto = (id: string): Photo => PHOTOS.find((photo) => photo.id === id) ?? PHOTOS[0]
|
|
|
|
/** 当前该用哪张图:哪张照片、哪个主题,再按「背景模糊」「不压缩」选版本。 */
|
|
export function backgroundUrl(id: string, dark: boolean, blurred: boolean, original: boolean): string {
|
|
const variants = dark ? findPhoto(id).dark : findPhoto(id).light
|
|
return blurred ? variants.blur : original ? variants.original : variants.sharp
|
|
}
|