1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2015 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef GrCopySurfaceOp_DEFINED 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define GrCopySurfaceOp_DEFINED 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrOp.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrOpFlushState.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass GrCopySurfaceOp final : public GrOp { 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot DEFINE_OP_CLASS_ID 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot static std::unique_ptr<GrOp> Make(GrSurfaceProxy* dst, GrSurfaceProxy* src, 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkIRect& srcRect, 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkIPoint& dstPoint); 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const char* name() const override { return "CopySurface"; } 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void visitProxies(const VisitProxyFunc& func) const override { 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot func(fSrc.get()); 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkString dumpInfo() const override { 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkString string; 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot string.append(INHERITED::dumpInfo()); 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot string.printf("srcProxyID: %d,\n" 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot "srcRect: [ L: %d, T: %d, R: %d, B: %d ], dstPt: [ X: %d, Y: %d ]\n", 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fSrc.get()->uniqueID().asUInt(), 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fSrcRect.fLeft, fSrcRect.fTop, fSrcRect.fRight, fSrcRect.fBottom, 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDstPoint.fX, fDstPoint.fY); 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return string; 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrCopySurfaceOp(GrSurfaceProxy* dst, GrSurfaceProxy* src, 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkIRect& srcRect, const SkIPoint& dstPoint) 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot : INHERITED(ClassID()) 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fSrc(src) 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fSrcRect(srcRect) 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fDstPoint(dstPoint) { 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRect bounds = 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRect::MakeXYWH(SkIntToScalar(dstPoint.fX), SkIntToScalar(dstPoint.fY), 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkIntToScalar(srcRect.width()), SkIntToScalar(srcRect.height())); 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot this->setBounds(bounds, HasAABloat::kNo, IsZeroArea::kNo); 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool onCombineIfPossible(GrOp* that, const GrCaps& caps) override { return false; } 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onPrepare(GrOpFlushState*) override {} 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onExecute(GrOpFlushState* state) override; 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrPendingIOResource<GrSurfaceProxy, kRead_GrIOType> fSrc; 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkIRect fSrcRect; 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkIPoint fDstPoint; 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typedef GrOp INHERITED; 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 66