1 #pragma once 2 3 #include <ui/GraphicTypes.h> 4 5 #include "Transform.h" 6 7 #include <functional> 8 9 namespace android { 10 11 class RenderArea { 12 13 public: 14 enum class CaptureFill {CLEAR, OPAQUE}; 15 16 static float getCaptureFillValue(CaptureFill captureFill); 17 18 RenderArea(uint32_t reqHeight, uint32_t reqWidth, CaptureFill captureFill, 19 ISurfaceComposer::Rotation rotation = ISurfaceComposer::eRotateNone) mReqHeight(reqHeight)20 : mReqHeight(reqHeight), mReqWidth(reqWidth), mCaptureFill(captureFill) { 21 mRotationFlags = Transform::fromRotation(rotation); 22 } 23 24 virtual ~RenderArea() = default; 25 26 virtual const Transform& getTransform() const = 0; 27 virtual Rect getBounds() const = 0; 28 virtual int getHeight() const = 0; 29 virtual int getWidth() const = 0; 30 virtual bool isSecure() const = 0; 31 virtual bool needsFiltering() const = 0; 32 virtual Rect getSourceCrop() const = 0; 33 render(std::function<void ()> drawLayers)34 virtual void render(std::function<void()> drawLayers) { drawLayers(); } 35 getReqHeight()36 int getReqHeight() const { return mReqHeight; }; getReqWidth()37 int getReqWidth() const { return mReqWidth; }; getRotationFlags()38 Transform::orientation_flags getRotationFlags() const { return mRotationFlags; }; 39 status_t updateDimensions(int displayRotation); 40 getCaptureFill()41 CaptureFill getCaptureFill() const { return mCaptureFill; }; 42 43 private: 44 uint32_t mReqHeight; 45 uint32_t mReqWidth; 46 Transform::orientation_flags mRotationFlags; 47 CaptureFill mCaptureFill; 48 }; 49 50 } // namespace android 51