mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
Draw: MakeImage templated version, MakeImage(Image, fn) renamed as AdjustImage
This commit is contained in:
parent
3fa50d27f1
commit
49d81333f2
10 changed files with 44 additions and 47 deletions
|
|
@ -63,7 +63,7 @@ Image DisImage(const Image& m)
|
|||
|
||||
Image DisabledImage(const Image& img, bool dis)
|
||||
{
|
||||
return dis ? MakeImage(img, GUI_GlobalStyle() == GUISTYLE_CLASSIC ? Etched : DisImage)
|
||||
return dis ? AdjustImage(img, GUI_GlobalStyle() == GUISTYLE_CLASSIC ? Etched : DisImage)
|
||||
: img;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ void OriDraw::DrawRectOp(int x, int y, int cx, int cy, Color color)
|
|||
void OriDraw::DrawImageOp(int x, int y, int cx, int cy, const Image& img, const Rect& src, Color color)
|
||||
{
|
||||
Transform(x, y, cx, cy);
|
||||
Image m = MakeImage(img, clockwise ? RotateClockwise : RotateAntiClockwise);
|
||||
Image m = AdjustImage(img, clockwise ? RotateClockwise : RotateAntiClockwise);
|
||||
ptr->DrawImageOp(x, y, cx, cy, m, Size(cx, cy), color);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@ void DrawHighlightImage(Draw& w, int x, int y, const Image& img, bool highlight,
|
|||
w.DrawImage(x, y + 1, img, maskcolor);
|
||||
w.DrawImage(x, y - 1, img, maskcolor);
|
||||
}
|
||||
w.DrawImage(x, y, enabled ? img : MakeImage(img, Etched));
|
||||
w.DrawImage(x, y, enabled ? img : AdjustImage(img, Etched));
|
||||
}
|
||||
|
||||
Color GradientColor(Color fc, Color tc, int i, int n)
|
||||
|
|
|
|||
|
|
@ -170,7 +170,20 @@ void SysImageRealized(const Image& img); // SystemDraw realized Image handle in
|
|||
void SysImageReleased(const Image& img); // SystemDraw dropped Image handle
|
||||
|
||||
Image MakeImage(const ImageMaker& m);
|
||||
Image MakeImage(const Image& image, Image (*make)(const Image& image));
|
||||
|
||||
template <class T, class M>
|
||||
Image MakeImage(T key, M make) {
|
||||
return MakeValue(
|
||||
[&] { return key(); },
|
||||
[&] (Value& v) {
|
||||
Image img = make();
|
||||
v = img;
|
||||
return img.GetLength() * sizeof(RGBA);
|
||||
}
|
||||
).template To<Image>();
|
||||
};
|
||||
|
||||
Image AdjustImage(const Image& image, Image (*make)(const Image& image));
|
||||
|
||||
void SweepMkImageCache(); // deprecated, use AdjustValueCache();
|
||||
void SetMakeImageCacheMax(int m); // deprecated, use SetupValueCache
|
||||
|
|
|
|||
|
|
@ -94,34 +94,12 @@ Image MakeImagePaintOnly(const ImageMaker& m)
|
|||
return MakeImage__(m, true);
|
||||
}
|
||||
|
||||
class SimpleImageMaker : public ImageMaker {
|
||||
Image (*make)(const Image& image);
|
||||
Image image;
|
||||
|
||||
public:
|
||||
virtual String Key() const;
|
||||
virtual Image Make() const;
|
||||
|
||||
SimpleImageMaker(const Image& image, Image (*make)(const Image& image))
|
||||
: make(make),image(image) {}
|
||||
};
|
||||
|
||||
String SimpleImageMaker::Key() const
|
||||
Image AdjustImage(const Image& image, Image (*make)(const Image& image))
|
||||
{
|
||||
String key;
|
||||
RawCat(key, image.GetSerialId());
|
||||
RawCat(key, make);
|
||||
return key;
|
||||
}
|
||||
|
||||
Image SimpleImageMaker::Make() const
|
||||
{
|
||||
return (*make)(image);
|
||||
}
|
||||
|
||||
Image MakeImage(const Image& image, Image (*make)(const Image& image))
|
||||
{
|
||||
return MakeImage(SimpleImageMaker(image, make));
|
||||
return MakeImage(
|
||||
[&] { String key; RawCat(key, image.GetSerialId()); RawCat(key, make); return key; },
|
||||
[&] { return (*make)(image); }
|
||||
);
|
||||
}
|
||||
|
||||
struct sCachedRescale : public ImageMaker
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ void SyncUHDMode()
|
|||
Image DPI(const Image& img, int expected)
|
||||
{
|
||||
if(img.GetSize().cy <= expected && IsUHDMode())
|
||||
return MakeImage(img, Upscale2x);
|
||||
return AdjustImage(img, Upscale2x);
|
||||
return img;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,13 +51,20 @@ the cache or creates and stores to cache). Images are stored
|
|||
in the U`+`+ global cache.&]
|
||||
[s3;%% &]
|
||||
[s4; &]
|
||||
[s5;:MakeImage`(const Image`&`,Image`(`*`)`(const Image`&`)`): [_^Image^ Image]_[* MakeIm
|
||||
age]([@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 image],
|
||||
[_^Image^ Image]_(`*[*@3 make])([@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 image
|
||||
]))&]
|
||||
[s2;%% Simplified version for Image making process that does not
|
||||
require other parameters than single input image.&]
|
||||
[s3;%% &]
|
||||
[s5;:Upp`:`:MakeImage`(T`,M`): [@(0.0.255) template] <[@(0.0.255) class]
|
||||
T, [@(0.0.255) class] M> Image [* MakeImage](T [*@3 key], M [*@3 make])&]
|
||||
[s2;%% Templated version of Image maker `- [%-*@3 key] must be lambda
|
||||
that returns String that uniquely describes final Image, [%-*@3 make]
|
||||
must be lambda that returns the final Image.&]
|
||||
[s3; &]
|
||||
[s4; &]
|
||||
[s5;:Upp`:`:AdjustImage`(const Image`&`,Image`(`*`)`(const Image`&`)`): Image
|
||||
[* AdjustImage]([@(0.0.255) const] Image[@(0.0.255) `&] [*@3 image],
|
||||
Image ([@(0.0.255) `*]make)([@(0.0.255) const] Image[@(0.0.255) `&]))&]
|
||||
[s2;%% Simplified version for Image making and caching process that
|
||||
does not require other parameters than single input image and
|
||||
function that alters input image to produce the result.&]
|
||||
[s3; &]
|
||||
[s4; &]
|
||||
[s5;:MakeImagePaintOnly`(const ImageMaker`&`): [_^Image^ Image]_[* MakeImagePaintOnly]([@(0.0.255) c
|
||||
onst]_[_^ImageMaker^ ImageMaker][@(0.0.255) `&]_[*@3 m])&]
|
||||
|
|
|
|||
|
|
@ -118,9 +118,9 @@ Image DiagramEditor::CursorImage(Point p, dword keyflags)
|
|||
|
||||
rot += M_2PI * CursorItem().rotate / 360;
|
||||
|
||||
return MakeValue(
|
||||
return MakeImage(
|
||||
[&] { return String((const char *)&rot, sizeof(rot)); },
|
||||
[&] (Value& v) {
|
||||
[&] {
|
||||
ImagePainter w(DPI(32, 32));
|
||||
w.Clear();
|
||||
const double x1 = 10;
|
||||
|
|
@ -144,10 +144,9 @@ Image DiagramEditor::CursorImage(Point p, dword keyflags)
|
|||
w.Stroke(1, Black());
|
||||
Image img = w.GetResult();
|
||||
SetHotSpots(img, DPI(16, 16));
|
||||
v = img;
|
||||
return img.GetLength() * sizeof(RGBA);
|
||||
return img;
|
||||
}
|
||||
).To<Image>();
|
||||
);
|
||||
}
|
||||
|
||||
void DiagramEditor::MouseWheel(Point, int zdelta, dword keyflags) {
|
||||
|
|
|
|||
|
|
@ -239,8 +239,8 @@ FileList::File DirDiffDlg::MakeFile(int i)
|
|||
int k = list[i].d;
|
||||
if(IsNull(icn))
|
||||
icn = CtrlImg::File();
|
||||
m.icon = decode(k, FAILED_FILE, MakeImage(icn, [] (const Image& m) { return GetOver(m, DiffImg::Failed()); }),
|
||||
PATCHED_FILE, MakeImage(icn, [] (const Image& m) { return GetOver(m, DiffImg::Patched()); }),
|
||||
m.icon = decode(k, FAILED_FILE, AdjustImage(icn, [](const Image& m) { return GetOver(m, DiffImg::Failed()); }),
|
||||
PATCHED_FILE, AdjustImage(icn, [](const Image& m) { return GetOver(m, DiffImg::Patched()); }),
|
||||
icn);
|
||||
m.name = list[i].a;
|
||||
m.font = decode(k, FAILED_FILE, StdFont().Strikeout().Italic(),
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Image OverLtRed(const Image& m)
|
|||
|
||||
Image ImageOverRed(const Image& m)
|
||||
{
|
||||
return MakeImage(m, OverLtRed);
|
||||
return AdjustImage(m, OverLtRed);
|
||||
}
|
||||
|
||||
Font WorkspaceWork::ListFont()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue