|  | #pragma once | 
|  |  | 
|  | #include <ui/GraphicTypes.h> | 
|  |  | 
|  | #include "Transform.h" | 
|  |  | 
|  | #include <functional> | 
|  |  | 
|  | namespace android { | 
|  |  | 
|  | class RenderArea { | 
|  |  | 
|  | public: | 
|  | enum class CaptureFill {CLEAR, OPAQUE}; | 
|  |  | 
|  | static float getCaptureFillValue(CaptureFill captureFill); | 
|  |  | 
|  | RenderArea(uint32_t reqHeight, uint32_t reqWidth, CaptureFill captureFill, | 
|  | ISurfaceComposer::Rotation rotation = ISurfaceComposer::eRotateNone) | 
|  | : mReqHeight(reqHeight), mReqWidth(reqWidth), mCaptureFill(captureFill) { | 
|  | mRotationFlags = Transform::fromRotation(rotation); | 
|  | } | 
|  |  | 
|  | virtual ~RenderArea() = default; | 
|  |  | 
|  | virtual const Transform& getTransform() const = 0; | 
|  | virtual Rect getBounds() const = 0; | 
|  | virtual int getHeight() const = 0; | 
|  | virtual int getWidth() const = 0; | 
|  | virtual bool isSecure() const = 0; | 
|  | virtual bool needsFiltering() const = 0; | 
|  | virtual Rect getSourceCrop() const = 0; | 
|  |  | 
|  | virtual void render(std::function<void()> drawLayers) { drawLayers(); } | 
|  |  | 
|  | int getReqHeight() const { return mReqHeight; }; | 
|  | int getReqWidth() const { return mReqWidth; }; | 
|  | Transform::orientation_flags getRotationFlags() const { return mRotationFlags; }; | 
|  | status_t updateDimensions(int displayRotation); | 
|  |  | 
|  | CaptureFill getCaptureFill() const { return mCaptureFill; }; | 
|  |  | 
|  | private: | 
|  | uint32_t mReqHeight; | 
|  | uint32_t mReqWidth; | 
|  | Transform::orientation_flags mRotationFlags; | 
|  | CaptureFill mCaptureFill; | 
|  | }; | 
|  |  | 
|  | } // namespace android |