diff --git a/uppsrc/Draw/ImageOp.cpp b/uppsrc/Draw/ImageOp.cpp index bb7bab446..7bea3750d 100644 --- a/uppsrc/Draw/ImageOp.cpp +++ b/uppsrc/Draw/ImageOp.cpp @@ -75,6 +75,13 @@ Image GetOver(const Image& dest, const Image& src) return r; } +Image Copy(const Image& src, const Rect& srect) +{ + ImageBuffer ib(srect.GetSize()); + Copy(ib, Point(0, 0), src, srect); + return ib; +} + void Fill(ImageBuffer& dest, const Rect& rect, RGBA color) { Rect r = dest.GetSize() & rect; diff --git a/uppsrc/Draw/ImageOp.h b/uppsrc/Draw/ImageOp.h index 54d357df0..98d6780ed 100644 --- a/uppsrc/Draw/ImageOp.h +++ b/uppsrc/Draw/ImageOp.h @@ -15,6 +15,8 @@ void Over(Image& dest, Point p, const Image& src, const Rect& srect); Image GetOver(const Image& dest, const Image& src); void Fill(Image& dest, const Rect& rect, RGBA color); +Image Copy(const Image& src, const Rect& srect); + void OverStraightOpaque(ImageBuffer& dest, Point p, const Image& src, const Rect& srect); void OverStraightOpaque(Image& dest, Point p, const Image& _src, const Rect& srect); diff --git a/uppsrc/Draw/src.tpp/Image_en-us.tpp b/uppsrc/Draw/src.tpp/Image_en-us.tpp index cb355d213..2f3003deb 100644 --- a/uppsrc/Draw/src.tpp/Image_en-us.tpp +++ b/uppsrc/Draw/src.tpp/Image_en-us.tpp @@ -1,5 +1,4 @@ topic "Image and ImageBuffer"; -[2 $$0,0#00000000000000000000000000000000:Default] [i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class] [l288;2 $$2,2#27521748481378242620020725143825:desc] [0 $$3,0#96390100711032703541132217272105:end] @@ -9,6 +8,7 @@ topic "Image and ImageBuffer"; [l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param] [i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam] [b42;2 $$9,9#13035079074754324216151401829390:normal] +[2 $$0,0#00000000000000000000000000000000:Default] [{_} [ {{10000@(113.42.0) [s0;%% [*@7;4 Image]]}}&] [s3; &] @@ -312,6 +312,12 @@ mage][@(0.0.255) `&]_[*@3 dest], [@(0.0.255) const]_[_^Upp`:`:Image^ Image][@(0. [s2;%% Fills rectangular are [%-*@3 rect] with [%-*@3 color].&] [s3;%% &] [s4; &] +[s5;:Upp`:`:Copy`(const Upp`:`:Image`&`,const Upp`:`:Rect`&`): [_^Upp`:`:Image^ Image]_ +[* Copy]([@(0.0.255) const]_[_^Upp`:`:Image^ Image][@(0.0.255) `&]_[*@3 src], +[@(0.0.255) const]_[_^Upp`:`:Rect^ Rect][@(0.0.255) `&]_[*@3 srect])&] +[s2;%% Returns [%-*@3 srect] area of [%-*@3 src].&] +[s3;%% &] +[s4; &] [s5;:OverStraightOpaque`(ImageBuffer`&`,Point`,const Image`&`,const Rect`&`): [@(0.0.255) v oid]_[* OverStraightOpaque]([_^ImageBuffer^ ImageBuffer][@(0.0.255) `&]_[*@3 dest], [_^Point^ Point]_[*@3 p], [@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 src],