Loading core/jni/android_view_DisplayListCanvas.cpp +12 −17 Original line number Diff line number Diff line Loading @@ -27,13 +27,8 @@ #include <SkBitmap.h> #include <SkRegion.h> #if HWUI_NEW_OPS #include <RecordingCanvas.h> typedef android::uirenderer::RecordingCanvas canvas_t; #else #include <DisplayListCanvas.h> typedef android::uirenderer::DisplayListCanvas canvas_t; #endif #include <Canvas.h> #include <Rect.h> #include <RenderNode.h> #include <CanvasProperty.h> Loading @@ -52,7 +47,7 @@ using namespace uirenderer; static void android_view_DisplayListCanvas_insertReorderBarrier(JNIEnv* env, jobject clazz, jlong canvasPtr, jboolean reorderEnable) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); canvas->insertReorderBarrier(reorderEnable); } Loading @@ -62,7 +57,7 @@ static void android_view_DisplayListCanvas_insertReorderBarrier(JNIEnv* env, job static void android_view_DisplayListCanvas_callDrawGLFunction(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong functorPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); Functor* functor = reinterpret_cast<Functor*>(functorPtr); canvas->callDrawGLFunction(functor); } Loading Loading @@ -92,7 +87,7 @@ static jint android_view_DisplayListCanvas_getMaxTextureHeight(JNIEnv* env, jobj static void android_view_DisplayListCanvas_drawRoundRectProps(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong leftPropPtr, jlong topPropPtr, jlong rightPropPtr, jlong bottomPropPtr, jlong rxPropPtr, jlong ryPropPtr, jlong paintPropPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); CanvasPropertyPrimitive* leftProp = reinterpret_cast<CanvasPropertyPrimitive*>(leftPropPtr); CanvasPropertyPrimitive* topProp = reinterpret_cast<CanvasPropertyPrimitive*>(topPropPtr); CanvasPropertyPrimitive* rightProp = reinterpret_cast<CanvasPropertyPrimitive*>(rightPropPtr); Loading @@ -105,7 +100,7 @@ static void android_view_DisplayListCanvas_drawRoundRectProps(JNIEnv* env, jobje static void android_view_DisplayListCanvas_drawCircleProps(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong xPropPtr, jlong yPropPtr, jlong radiusPropPtr, jlong paintPropPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); CanvasPropertyPrimitive* xProp = reinterpret_cast<CanvasPropertyPrimitive*>(xPropPtr); CanvasPropertyPrimitive* yProp = reinterpret_cast<CanvasPropertyPrimitive*>(yPropPtr); CanvasPropertyPrimitive* radiusProp = reinterpret_cast<CanvasPropertyPrimitive*>(radiusPropPtr); Loading @@ -119,25 +114,25 @@ static void android_view_DisplayListCanvas_drawCircleProps(JNIEnv* env, jobject static jlong android_view_DisplayListCanvas_finishRecording(JNIEnv* env, jobject clazz, jlong canvasPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); return reinterpret_cast<jlong>(canvas->finishRecording()); } static jlong android_view_DisplayListCanvas_createDisplayListCanvas(JNIEnv* env, jobject clazz, jint width, jint height) { return reinterpret_cast<jlong>(new canvas_t(width, height)); return reinterpret_cast<jlong>(Canvas::create_recording_canvas(width, height)); } static void android_view_DisplayListCanvas_resetDisplayListCanvas(JNIEnv* env, jobject clazz, jlong canvasPtr, jint width, jint height) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); canvas->reset(width, height); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); canvas->resetRecording(width, height); } static void android_view_DisplayListCanvas_drawRenderNode(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong renderNodePtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); RenderNode* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr); canvas->drawRenderNode(renderNode); } Loading @@ -148,7 +143,7 @@ static void android_view_DisplayListCanvas_drawRenderNode(JNIEnv* env, static void android_view_DisplayListCanvas_drawLayer(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong layerPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(layerPtr); canvas->drawLayer(layer); } Loading libs/hwui/Canvas.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,20 @@ #include "Canvas.h" #include "DisplayListCanvas.h" #include "RecordingCanvas.h" #include <SkDrawFilter.h> namespace android { Canvas* Canvas::create_recording_canvas(int width, int height) { #if HWUI_NEW_OPS return new uirenderer::RecordingCanvas(width, height); #else return new uirenderer::DisplayListCanvas(width, height); #endif } void Canvas::drawTextDecorations(float x, float y, float length, const SkPaint& paint) { uint32_t flags; SkDrawFilter* drawFilter = getDrawFilter(); Loading libs/hwui/Canvas.h +32 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define ANDROID_GRAPHICS_CANVAS_H #include <cutils/compiler.h> #include <utils/Functor.h> #include "utils/NinePatch.h" Loading @@ -27,6 +28,14 @@ namespace android { namespace uirenderer { class CanvasPropertyPaint; class CanvasPropertyPrimitive; class DeferredLayerUpdater; class DisplayList; class RenderNode; } namespace SaveFlags { // These must match the corresponding Canvas API constants. Loading Loading @@ -56,6 +65,8 @@ public: static Canvas* create_canvas(const SkBitmap& bitmap); static Canvas* create_recording_canvas(int width, int height); /** * Create a new Canvas object which delegates to an SkCanvas. * Loading @@ -81,15 +92,36 @@ public: */ virtual SkCanvas* asSkCanvas() = 0; virtual void setBitmap(const SkBitmap& bitmap) = 0; virtual bool isOpaque() = 0; virtual int width() = 0; virtual int height() = 0; // ---------------------------------------------------------------------------- // View System operations (not exposed in public Canvas API) // ---------------------------------------------------------------------------- virtual void resetRecording(int width, int height) = 0; virtual uirenderer::DisplayList* finishRecording() = 0; virtual void insertReorderBarrier(bool enableReorder) = 0; virtual void setHighContrastText(bool highContrastText) = 0; virtual bool isHighContrastText() = 0; virtual void drawRoundRect(uirenderer::CanvasPropertyPrimitive* left, uirenderer::CanvasPropertyPrimitive* top, uirenderer::CanvasPropertyPrimitive* right, uirenderer::CanvasPropertyPrimitive* bottom, uirenderer::CanvasPropertyPrimitive* rx, uirenderer::CanvasPropertyPrimitive* ry, uirenderer::CanvasPropertyPaint* paint) = 0; virtual void drawCircle(uirenderer::CanvasPropertyPrimitive* x, uirenderer::CanvasPropertyPrimitive* y, uirenderer::CanvasPropertyPrimitive* radius, uirenderer::CanvasPropertyPaint* paint) = 0; virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) = 0; virtual void drawRenderNode(uirenderer::RenderNode* renderNode) = 0; virtual void callDrawGLFunction(Functor* functor) = 0; // ---------------------------------------------------------------------------- // Canvas state operations // ---------------------------------------------------------------------------- Loading libs/hwui/DisplayListCanvas.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ DisplayListCanvas::DisplayListCanvas(int width, int height) , mDeferredBarrierType(kBarrier_None) , mHighContrastText(false) , mRestoreSaveCount(-1) { reset(width, height); resetRecording(width, height); } DisplayListCanvas::~DisplayListCanvas() { Loading @@ -50,7 +50,7 @@ DisplayListCanvas::~DisplayListCanvas() { "Destroyed a DisplayListCanvas during a record!"); } void DisplayListCanvas::reset(int width, int height) { void DisplayListCanvas::resetRecording(int width, int height) { LOG_ALWAYS_FATAL_IF(mDisplayList, "prepareDirty called a second time during a recording!"); mDisplayList = new DisplayList(); Loading libs/hwui/DisplayListCanvas.h +10 −13 Original line number Diff line number Diff line Loading @@ -67,36 +67,33 @@ public: DisplayListCanvas(int width, int height); virtual ~DisplayListCanvas(); void reset(int width, int height); WARN_UNUSED_RESULT DisplayList* finishRecording(); virtual void resetRecording(int width, int height) override; virtual WARN_UNUSED_RESULT DisplayList* finishRecording() override; // ---------------------------------------------------------------------------- // HWUI Canvas state operations // ---------------------------------------------------------------------------- void insertReorderBarrier(bool enableReorder); virtual void insertReorderBarrier(bool enableReorder) override; // ---------------------------------------------------------------------------- // HWUI Canvas draw operations // ---------------------------------------------------------------------------- // Shapes void drawRoundRect(CanvasPropertyPrimitive* left, CanvasPropertyPrimitive* top, virtual void drawRoundRect(CanvasPropertyPrimitive* left, CanvasPropertyPrimitive* top, CanvasPropertyPrimitive* right, CanvasPropertyPrimitive* bottom, CanvasPropertyPrimitive* rx, CanvasPropertyPrimitive* ry, CanvasPropertyPaint* paint); void drawCircle(CanvasPropertyPrimitive* x, CanvasPropertyPrimitive* y, CanvasPropertyPrimitive* radius, CanvasPropertyPaint* paint); CanvasPropertyPaint* paint) override; virtual void drawCircle(CanvasPropertyPrimitive* x, CanvasPropertyPrimitive* y, CanvasPropertyPrimitive* radius, CanvasPropertyPaint* paint) override; // ---------------------------------------------------------------------------- // HWUI Canvas draw operations - special // ---------------------------------------------------------------------------- void drawLayer(DeferredLayerUpdater* layerHandle); void drawRenderNode(RenderNode* renderNode); // TODO: rename for consistency void callDrawGLFunction(Functor* functor); virtual void drawLayer(DeferredLayerUpdater* layerHandle) override; virtual void drawRenderNode(RenderNode* renderNode) override; virtual void callDrawGLFunction(Functor* functor) override; // ---------------------------------------------------------------------------- // CanvasStateClient interface Loading Loading
core/jni/android_view_DisplayListCanvas.cpp +12 −17 Original line number Diff line number Diff line Loading @@ -27,13 +27,8 @@ #include <SkBitmap.h> #include <SkRegion.h> #if HWUI_NEW_OPS #include <RecordingCanvas.h> typedef android::uirenderer::RecordingCanvas canvas_t; #else #include <DisplayListCanvas.h> typedef android::uirenderer::DisplayListCanvas canvas_t; #endif #include <Canvas.h> #include <Rect.h> #include <RenderNode.h> #include <CanvasProperty.h> Loading @@ -52,7 +47,7 @@ using namespace uirenderer; static void android_view_DisplayListCanvas_insertReorderBarrier(JNIEnv* env, jobject clazz, jlong canvasPtr, jboolean reorderEnable) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); canvas->insertReorderBarrier(reorderEnable); } Loading @@ -62,7 +57,7 @@ static void android_view_DisplayListCanvas_insertReorderBarrier(JNIEnv* env, job static void android_view_DisplayListCanvas_callDrawGLFunction(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong functorPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); Functor* functor = reinterpret_cast<Functor*>(functorPtr); canvas->callDrawGLFunction(functor); } Loading Loading @@ -92,7 +87,7 @@ static jint android_view_DisplayListCanvas_getMaxTextureHeight(JNIEnv* env, jobj static void android_view_DisplayListCanvas_drawRoundRectProps(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong leftPropPtr, jlong topPropPtr, jlong rightPropPtr, jlong bottomPropPtr, jlong rxPropPtr, jlong ryPropPtr, jlong paintPropPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); CanvasPropertyPrimitive* leftProp = reinterpret_cast<CanvasPropertyPrimitive*>(leftPropPtr); CanvasPropertyPrimitive* topProp = reinterpret_cast<CanvasPropertyPrimitive*>(topPropPtr); CanvasPropertyPrimitive* rightProp = reinterpret_cast<CanvasPropertyPrimitive*>(rightPropPtr); Loading @@ -105,7 +100,7 @@ static void android_view_DisplayListCanvas_drawRoundRectProps(JNIEnv* env, jobje static void android_view_DisplayListCanvas_drawCircleProps(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong xPropPtr, jlong yPropPtr, jlong radiusPropPtr, jlong paintPropPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); CanvasPropertyPrimitive* xProp = reinterpret_cast<CanvasPropertyPrimitive*>(xPropPtr); CanvasPropertyPrimitive* yProp = reinterpret_cast<CanvasPropertyPrimitive*>(yPropPtr); CanvasPropertyPrimitive* radiusProp = reinterpret_cast<CanvasPropertyPrimitive*>(radiusPropPtr); Loading @@ -119,25 +114,25 @@ static void android_view_DisplayListCanvas_drawCircleProps(JNIEnv* env, jobject static jlong android_view_DisplayListCanvas_finishRecording(JNIEnv* env, jobject clazz, jlong canvasPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); return reinterpret_cast<jlong>(canvas->finishRecording()); } static jlong android_view_DisplayListCanvas_createDisplayListCanvas(JNIEnv* env, jobject clazz, jint width, jint height) { return reinterpret_cast<jlong>(new canvas_t(width, height)); return reinterpret_cast<jlong>(Canvas::create_recording_canvas(width, height)); } static void android_view_DisplayListCanvas_resetDisplayListCanvas(JNIEnv* env, jobject clazz, jlong canvasPtr, jint width, jint height) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); canvas->reset(width, height); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); canvas->resetRecording(width, height); } static void android_view_DisplayListCanvas_drawRenderNode(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong renderNodePtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); RenderNode* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr); canvas->drawRenderNode(renderNode); } Loading @@ -148,7 +143,7 @@ static void android_view_DisplayListCanvas_drawRenderNode(JNIEnv* env, static void android_view_DisplayListCanvas_drawLayer(JNIEnv* env, jobject clazz, jlong canvasPtr, jlong layerPtr) { canvas_t* canvas = reinterpret_cast<canvas_t*>(canvasPtr); Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(layerPtr); canvas->drawLayer(layer); } Loading
libs/hwui/Canvas.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,20 @@ #include "Canvas.h" #include "DisplayListCanvas.h" #include "RecordingCanvas.h" #include <SkDrawFilter.h> namespace android { Canvas* Canvas::create_recording_canvas(int width, int height) { #if HWUI_NEW_OPS return new uirenderer::RecordingCanvas(width, height); #else return new uirenderer::DisplayListCanvas(width, height); #endif } void Canvas::drawTextDecorations(float x, float y, float length, const SkPaint& paint) { uint32_t flags; SkDrawFilter* drawFilter = getDrawFilter(); Loading
libs/hwui/Canvas.h +32 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define ANDROID_GRAPHICS_CANVAS_H #include <cutils/compiler.h> #include <utils/Functor.h> #include "utils/NinePatch.h" Loading @@ -27,6 +28,14 @@ namespace android { namespace uirenderer { class CanvasPropertyPaint; class CanvasPropertyPrimitive; class DeferredLayerUpdater; class DisplayList; class RenderNode; } namespace SaveFlags { // These must match the corresponding Canvas API constants. Loading Loading @@ -56,6 +65,8 @@ public: static Canvas* create_canvas(const SkBitmap& bitmap); static Canvas* create_recording_canvas(int width, int height); /** * Create a new Canvas object which delegates to an SkCanvas. * Loading @@ -81,15 +92,36 @@ public: */ virtual SkCanvas* asSkCanvas() = 0; virtual void setBitmap(const SkBitmap& bitmap) = 0; virtual bool isOpaque() = 0; virtual int width() = 0; virtual int height() = 0; // ---------------------------------------------------------------------------- // View System operations (not exposed in public Canvas API) // ---------------------------------------------------------------------------- virtual void resetRecording(int width, int height) = 0; virtual uirenderer::DisplayList* finishRecording() = 0; virtual void insertReorderBarrier(bool enableReorder) = 0; virtual void setHighContrastText(bool highContrastText) = 0; virtual bool isHighContrastText() = 0; virtual void drawRoundRect(uirenderer::CanvasPropertyPrimitive* left, uirenderer::CanvasPropertyPrimitive* top, uirenderer::CanvasPropertyPrimitive* right, uirenderer::CanvasPropertyPrimitive* bottom, uirenderer::CanvasPropertyPrimitive* rx, uirenderer::CanvasPropertyPrimitive* ry, uirenderer::CanvasPropertyPaint* paint) = 0; virtual void drawCircle(uirenderer::CanvasPropertyPrimitive* x, uirenderer::CanvasPropertyPrimitive* y, uirenderer::CanvasPropertyPrimitive* radius, uirenderer::CanvasPropertyPaint* paint) = 0; virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) = 0; virtual void drawRenderNode(uirenderer::RenderNode* renderNode) = 0; virtual void callDrawGLFunction(Functor* functor) = 0; // ---------------------------------------------------------------------------- // Canvas state operations // ---------------------------------------------------------------------------- Loading
libs/hwui/DisplayListCanvas.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ DisplayListCanvas::DisplayListCanvas(int width, int height) , mDeferredBarrierType(kBarrier_None) , mHighContrastText(false) , mRestoreSaveCount(-1) { reset(width, height); resetRecording(width, height); } DisplayListCanvas::~DisplayListCanvas() { Loading @@ -50,7 +50,7 @@ DisplayListCanvas::~DisplayListCanvas() { "Destroyed a DisplayListCanvas during a record!"); } void DisplayListCanvas::reset(int width, int height) { void DisplayListCanvas::resetRecording(int width, int height) { LOG_ALWAYS_FATAL_IF(mDisplayList, "prepareDirty called a second time during a recording!"); mDisplayList = new DisplayList(); Loading
libs/hwui/DisplayListCanvas.h +10 −13 Original line number Diff line number Diff line Loading @@ -67,36 +67,33 @@ public: DisplayListCanvas(int width, int height); virtual ~DisplayListCanvas(); void reset(int width, int height); WARN_UNUSED_RESULT DisplayList* finishRecording(); virtual void resetRecording(int width, int height) override; virtual WARN_UNUSED_RESULT DisplayList* finishRecording() override; // ---------------------------------------------------------------------------- // HWUI Canvas state operations // ---------------------------------------------------------------------------- void insertReorderBarrier(bool enableReorder); virtual void insertReorderBarrier(bool enableReorder) override; // ---------------------------------------------------------------------------- // HWUI Canvas draw operations // ---------------------------------------------------------------------------- // Shapes void drawRoundRect(CanvasPropertyPrimitive* left, CanvasPropertyPrimitive* top, virtual void drawRoundRect(CanvasPropertyPrimitive* left, CanvasPropertyPrimitive* top, CanvasPropertyPrimitive* right, CanvasPropertyPrimitive* bottom, CanvasPropertyPrimitive* rx, CanvasPropertyPrimitive* ry, CanvasPropertyPaint* paint); void drawCircle(CanvasPropertyPrimitive* x, CanvasPropertyPrimitive* y, CanvasPropertyPrimitive* radius, CanvasPropertyPaint* paint); CanvasPropertyPaint* paint) override; virtual void drawCircle(CanvasPropertyPrimitive* x, CanvasPropertyPrimitive* y, CanvasPropertyPrimitive* radius, CanvasPropertyPaint* paint) override; // ---------------------------------------------------------------------------- // HWUI Canvas draw operations - special // ---------------------------------------------------------------------------- void drawLayer(DeferredLayerUpdater* layerHandle); void drawRenderNode(RenderNode* renderNode); // TODO: rename for consistency void callDrawGLFunction(Functor* functor); virtual void drawLayer(DeferredLayerUpdater* layerHandle) override; virtual void drawRenderNode(RenderNode* renderNode) override; virtual void callDrawGLFunction(Functor* functor) override; // ---------------------------------------------------------------------------- // CanvasStateClient interface Loading