chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 1 | #pragma once |
| 2 | |
Peiyong Lin | efefaac | 2018-08-17 12:27:51 -0700 | [diff] [blame] | 3 | #include <gui/ISurfaceComposer.h> |
Peiyong Lin | fd997e0 | 2018-03-28 15:29:00 -0700 | [diff] [blame] | 4 | #include <ui/GraphicTypes.h> |
Peiyong Lin | efefaac | 2018-08-17 12:27:51 -0700 | [diff] [blame] | 5 | #include <ui/Transform.h> |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 6 | |
Robert Carr | 578038f | 2018-03-09 12:25:24 -0800 | [diff] [blame] | 7 | #include <functional> |
| 8 | |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 9 | namespace android { |
| 10 | |
| 11 | class RenderArea { |
chaviw | 50da504 | 2018-04-09 13:49:37 -0700 | [diff] [blame] | 12 | |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 13 | public: |
chaviw | 50da504 | 2018-04-09 13:49:37 -0700 | [diff] [blame] | 14 | enum class CaptureFill {CLEAR, OPAQUE}; |
| 15 | |
| 16 | static float getCaptureFillValue(CaptureFill captureFill); |
| 17 | |
| 18 | RenderArea(uint32_t reqHeight, uint32_t reqWidth, CaptureFill captureFill, |
Peiyong Lin | efefaac | 2018-08-17 12:27:51 -0700 | [diff] [blame] | 19 | ISurfaceComposer::Rotation rotation = ISurfaceComposer::eRotateNone); |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 20 | |
| 21 | virtual ~RenderArea() = default; |
| 22 | |
Peiyong Lin | efefaac | 2018-08-17 12:27:51 -0700 | [diff] [blame] | 23 | virtual const ui::Transform& getTransform() const = 0; |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 24 | virtual Rect getBounds() const = 0; |
| 25 | virtual int getHeight() const = 0; |
| 26 | virtual int getWidth() const = 0; |
| 27 | virtual bool isSecure() const = 0; |
| 28 | virtual bool needsFiltering() const = 0; |
| 29 | virtual Rect getSourceCrop() const = 0; |
| 30 | |
Robert Carr | 578038f | 2018-03-09 12:25:24 -0800 | [diff] [blame] | 31 | virtual void render(std::function<void()> drawLayers) { drawLayers(); } |
| 32 | |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 33 | int getReqHeight() const { return mReqHeight; }; |
| 34 | int getReqWidth() const { return mReqWidth; }; |
Peiyong Lin | efefaac | 2018-08-17 12:27:51 -0700 | [diff] [blame] | 35 | ui::Transform::orientation_flags getRotationFlags() const { return mRotationFlags; }; |
Iris Chang | 7501ed6 | 2018-04-30 14:45:42 +0800 | [diff] [blame] | 36 | status_t updateDimensions(int displayRotation); |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 37 | |
chaviw | 50da504 | 2018-04-09 13:49:37 -0700 | [diff] [blame] | 38 | CaptureFill getCaptureFill() const { return mCaptureFill; }; |
| 39 | |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 40 | private: |
| 41 | uint32_t mReqHeight; |
| 42 | uint32_t mReqWidth; |
Peiyong Lin | efefaac | 2018-08-17 12:27:51 -0700 | [diff] [blame] | 43 | ui::Transform::orientation_flags mRotationFlags; |
chaviw | 50da504 | 2018-04-09 13:49:37 -0700 | [diff] [blame] | 44 | CaptureFill mCaptureFill; |
chaviw | a76b271 | 2017-09-20 12:02:26 -0700 | [diff] [blame] | 45 | }; |
| 46 | |
Chia-I Wu | 83ce7c1 | 2017-10-19 15:18:55 -0700 | [diff] [blame] | 47 | } // namespace android |