Add SkCanvasStack and update the Canvas utilities to use it.
BUG=
R=reed@google.com
Review URL: https://codereview.chromium.org/23865004
git-svn-id: http://skia.googlecode.com/svn/trunk@11081 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/utils/SkCanvasStateUtils.cpp b/src/utils/SkCanvasStateUtils.cpp
index c4232c2..cd79a44 100644
--- a/src/utils/SkCanvasStateUtils.cpp
+++ b/src/utils/SkCanvasStateUtils.cpp
@@ -9,7 +9,7 @@
#include "SkBitmapDevice.h"
#include "SkCanvas.h"
-#include "SkNWayCanvas.h"
+#include "SkCanvasStack.h"
#include "SkWriter32.h"
#define CANVAS_STATE_VERSION 1
@@ -316,18 +316,19 @@
return NULL;
}
- SkAutoTUnref<SkNWayCanvas> canvas(SkNEW_ARGS(SkNWayCanvas, (state->width, state->height)));
+ SkAutoTUnref<SkCanvasStack> canvas(SkNEW_ARGS(SkCanvasStack, (state->width, state->height)));
// setup the matrix and clip on the n-way canvas
setup_canvas_from_MC_state(state->mcState, canvas);
// Iterate over the layers and add them to the n-way canvas
- for (int i = 0; i < state->layerCount; ++i) {
+ for (int i = state->layerCount - 1; i >= 0; --i) {
SkAutoTUnref<SkCanvas> canvasLayer(create_canvas_from_canvas_layer(state->layers[i]));
if (!canvasLayer.get()) {
return NULL;
}
- canvas->addCanvas(canvasLayer.get());
+ canvas->pushCanvas(canvasLayer.get(), SkIPoint::Make(state->layers[i].x,
+ state->layers[i].y));
}
return canvas.detach();