/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef Request_DEFINED #define Request_DEFINED #include "include/core/SkTypes.h" #include "tools/gpu/GrContextFactory.h" #include "include/core/SkPicture.h" #include "include/core/SkStream.h" #include "include/core/SkSurface.h" #include "tools/debugger/DebugCanvas.h" #include "tools/UrlDataManager.h" namespace sk_gpu_test { class GrContextFactory; } // namespace sk_gpu_test struct MHD_Connection; struct MHD_PostProcessor; struct UploadContext { SkDynamicMemoryWStream fStream; MHD_PostProcessor* fPostProcessor; MHD_Connection* connection; }; struct Request { Request(SkString rootUrl); ~Request(); // draws to canvas operation N, highlighting the Mth GrOp. m = -1 means no highlight. sk_sp drawToPng(int n, int m = -1); sk_sp writeOutSkp(); SkCanvas* getCanvas(); bool enableGPU(bool enable); bool setOverdraw(bool enable); bool setColorMode(int mode); bool hasPicture() const { return SkToBool(fPicture.get()); } int getLastOp() const { return fDebugCanvas->getSize() - 1; } bool initPictureFromStream(SkStream*); // Returns the json list of ops as an SkData sk_sp getJsonOps(); // Returns a json list of ops as an SkData sk_sp getJsonOpsTask(); // Returns json with the viewMatrix and clipRect at the given command sk_sp getJsonInfo(int n); // returns the color of the pixel at (x,y) in the canvas SkColor getPixel(int x, int y); UploadContext* fUploadContext; std::unique_ptr fDebugCanvas; UrlDataManager fUrlDataManager; private: sk_sp writeCanvasToPng(SkCanvas* canvas); SkSurface* createCPUSurface(); SkSurface* createGPUSurface(); SkIRect getBounds(); GrDirectContext* directContext(); sk_sp fPicture; sk_gpu_test::GrContextFactory* fContextFactory; sk_sp fSurface; bool fGPUEnabled; bool fOverdraw; int fColorMode; }; #endif