From ecf64bd5720bef40bb23ea5ee3ad03467dc489f1 Mon Sep 17 00:00:00 2001 From: cxl Date: Mon, 16 Apr 2018 12:34:10 +0000 Subject: [PATCH] Draw: New Copy(Image, Rect) variant git-svn-id: svn://ultimatepp.org/upp/trunk@11894 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Draw/ImageOp.cpp | 7 +++++++ uppsrc/Draw/ImageOp.h | 2 ++ uppsrc/Draw/src.tpp/Image_en-us.tpp | 8 +++++++- 3 files changed, 16 insertions(+), 1 deletion(-) 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],