@startuml dz-a1-image-effects-classes title ДЗ.А1 — сервис эффектов палитры (контраст, оттенки серого) skinparam classAttributeIconSize 0 skinparam shadowing false package "Minint.Core.Services" { interface IImageEffectsService { + ApplyContrast(doc : MinintDocument, factor : double) : void + ApplyGrayscale(doc : MinintDocument) : void } } package "Minint.Core.Services.Impl" { class ImageEffectsService { + ApplyContrast(doc : MinintDocument, factor : double) : void + ApplyGrayscale(doc : MinintDocument) : void -- {static} - ContrastByte(value : byte, factor : double) : byte } } package "Minint.Core.Models" <> { class MinintDocument { + Palette : List~RgbaColor~ + InvalidatePaletteCache() : void } } IImageEffectsService <|.. ImageEffectsService : реализует ImageEffectsService ..> MinintDocument : изменяет Palette[i],\ni = 1..Count-1 ImageEffectsService ..> MinintDocument : InvalidatePaletteCache() note bottom of ImageEffectsService Индекс **0** палитры (прозрачный) не меняется. Контраст: **factor** 0 → серое, 1 → без изменений, >1 → выше контраст. Grayscale: яркость **0,299·R + 0,587·G + 0,114·B** (округление к byte). end note @enduml