mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-21 06:45:39 -06:00
ide: IconDes improvements
This commit is contained in:
parent
237ab0ea97
commit
9a3d83e177
4 changed files with 21 additions and 24 deletions
|
|
@ -349,7 +349,7 @@ private:
|
|||
void Upscale();
|
||||
|
||||
void PlaceDlg(TopWindow& dlg);
|
||||
void Couple(TopWindow& dlg, EditDouble& level, SliderCtrl& slider, double max, double init = 0);
|
||||
void Couple(TopWindow& dlg, EditDouble& level, SliderCtrl& slider, double max, double init = 0, double offset = 0);
|
||||
void Couple(TopWindow& dlg, EditInt& level, SliderCtrl& slider, int max, int init = 0);
|
||||
Image ImageStart();
|
||||
void ImageSet(const Image& m);
|
||||
|
|
|
|||
|
|
@ -32,20 +32,15 @@ LAYOUT(FilePropertiesLayout, 176, 68)
|
|||
ITEM(Upp::Button, cancel, SetLabel(t_("Cancel")).LeftPosZ(104, 64).TopPosZ(36, 24))
|
||||
END_LAYOUT
|
||||
|
||||
LAYOUT(SharpenLayout, 220, 68)
|
||||
ITEM(Upp::Label, dv___0, SetLabel(t_("Level")).LeftPosZ(8, 32).TopPosZ(8, 19))
|
||||
ITEM(Upp::EditDoubleSpin, level, SetInc(0.05).Min(-2).Max(2).NotNull(true).LeftPosZ(44, 64).TopPosZ(8, 19))
|
||||
ITEM(Upp::Label, dv___2, SetLabel(t_("Radius")).LeftPosZ(128, 36).TopPosZ(8, 19))
|
||||
ITEM(Upp::EditIntSpin, passes, Min(1).Max(10).NotNull(true).LeftPosZ(168, 44).TopPosZ(8, 19))
|
||||
ITEM(Upp::Button, ok, SetLabel(t_("OK")).LeftPosZ(80, 64).TopPosZ(36, 24))
|
||||
ITEM(Upp::Button, cancel, SetLabel(t_("Cancel")).LeftPosZ(148, 64).TopPosZ(36, 24))
|
||||
END_LAYOUT
|
||||
|
||||
LAYOUT(ColorizeLayout, 148, 68)
|
||||
ITEM(Upp::Label, dv___0, SetLabel(t_("Level")).LeftPosZ(8, 32).TopPosZ(8, 19))
|
||||
ITEM(Upp::EditDoubleSpin, level, SetInc(0.05).Min(0).Max(1).NotNull(true).LeftPosZ(44, 64).TopPosZ(8, 19))
|
||||
ITEM(Upp::Button, ok, SetLabel(t_("OK")).LeftPosZ(8, 64).TopPosZ(36, 24))
|
||||
ITEM(Upp::Button, cancel, SetLabel(t_("Cancel")).LeftPosZ(76, 64).TopPosZ(36, 24))
|
||||
LAYOUT(SharpenLayout, 148, 152)
|
||||
ITEM(Upp::Button, ok, SetLabel(t_("OK")).LeftPosZ(8, 64).TopPosZ(120, 24))
|
||||
ITEM(Upp::Button, cancel, SetLabel(t_("Cancel")).LeftPosZ(76, 64).TopPosZ(120, 24))
|
||||
ITEM(Upp::Label, dv___2, SetLabel(t_("Radius")).LeftPosZ(4, 64).TopPosZ(4, 19))
|
||||
ITEM(Upp::EditIntSpin, radius, Min(0).Max(255).LeftPosZ(76, 64).TopPosZ(4, 19))
|
||||
ITEM(Upp::SliderCtrl, slider, LeftPosZ(4, 136).TopPosZ(28, 24))
|
||||
ITEM(Upp::Label, dv___5, SetLabel(t_("Level")).LeftPosZ(4, 64).TopPosZ(60, 19))
|
||||
ITEM(Upp::EditDoubleSpin, level, SetInc(0.05).Min(0).Max(1).NotNull(true).LeftPosZ(76, 64).TopPosZ(60, 19))
|
||||
ITEM(Upp::SliderCtrl, slider2, LeftPosZ(4, 136).TopPosZ(84, 24))
|
||||
END_LAYOUT
|
||||
|
||||
LAYOUT(ImageDblLayout, 148, 96)
|
||||
|
|
|
|||
|
|
@ -253,14 +253,14 @@ void IconDes::BlurSharpen()
|
|||
WithSharpenLayout<TopWindow> dlg;
|
||||
CtrlLayoutOKCancel(dlg, "Blur/Sharpen");
|
||||
PlaceDlg(dlg);
|
||||
dlg.level <<= 0;
|
||||
dlg.level <<= dlg.Breaker();
|
||||
dlg.passes <<= 1;
|
||||
dlg.passes <<= dlg.Breaker();
|
||||
|
||||
Couple(dlg, dlg.level, dlg.slider2, 1);
|
||||
Couple(dlg, dlg.radius, dlg.slider, 10, 1);
|
||||
|
||||
Image bk = ImageStart();
|
||||
for(;;) {
|
||||
Image m = bk;
|
||||
for(int q = 0; q < (int)~dlg.passes; q++)
|
||||
for(int q = 0; q < (int)~dlg.radius; q++)
|
||||
m = Sharpen(m, -int(256 * (double)~dlg.level));
|
||||
ImageSet(m);
|
||||
switch(dlg.Run()) {
|
||||
|
|
@ -349,14 +349,14 @@ void IconDes::Chroma()
|
|||
}
|
||||
}
|
||||
|
||||
void IconDes::Couple(TopWindow& dlg, EditDouble& level, SliderCtrl& slider, double max, double init)
|
||||
void IconDes::Couple(TopWindow& dlg, EditDouble& level, SliderCtrl& slider, double max, double init, double offset)
|
||||
{
|
||||
level.Max(max);
|
||||
level <<= init;
|
||||
slider.MinMax(0, 1000);
|
||||
slider <<= init * 1000 / max;
|
||||
slider << [=, &dlg, &level, &slider] { level <<= (int)~slider / 1000.0 * max; dlg.Break(); };
|
||||
level << [=, &dlg, &level, &slider] { slider <<= Nvl(int((double)~level * 1000 / max), 500); dlg.Break(); };
|
||||
slider << [=, &dlg, &level, &slider] { level <<= (int)~slider / 1000.0 * max + offset; dlg.Break(); };
|
||||
level << [=, &dlg, &level, &slider] { slider <<= Nvl(int(((double)~level - offset) * 1000 / max), 500); dlg.Break(); };
|
||||
}
|
||||
|
||||
void IconDes::Couple(TopWindow& dlg, EditInt& level, SliderCtrl& slider, int max, int init)
|
||||
|
|
|
|||
|
|
@ -73,12 +73,14 @@ Image Smoothen(const Image& img, double level)
|
|||
|
||||
void IconDes::Smoothen()
|
||||
{
|
||||
WithColorizeLayout<TopWindow> dlg;
|
||||
WithImageDblLayout<TopWindow> dlg;
|
||||
CtrlLayoutOKCancel(dlg, "Smoothen");
|
||||
PlaceDlg(dlg);
|
||||
dlg.txt = "Level";
|
||||
dlg.level.MinMax(0, 1);
|
||||
dlg.level <<= 0.75;
|
||||
dlg.level <<= dlg.Breaker();
|
||||
Couple(dlg, dlg.level, dlg.slider, 1, 0.75);
|
||||
Image bk = ImageStart();
|
||||
for(;;) {
|
||||
ImageSet(::Smoothen(bk, 0.4 * minmax((double)~dlg.level + 0.01, 0.01, 1.1)));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue