1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2016 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef Request_DEFINED 9cb93a386Sopenharmony_ci#define Request_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "include/core/SkTypes.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci#include "tools/gpu/GrContextFactory.h" 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci#include "include/core/SkPicture.h" 16cb93a386Sopenharmony_ci#include "include/core/SkStream.h" 17cb93a386Sopenharmony_ci#include "include/core/SkSurface.h" 18cb93a386Sopenharmony_ci#include "tools/debugger/DebugCanvas.h" 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ci#include "tools/UrlDataManager.h" 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_cinamespace sk_gpu_test { 23cb93a386Sopenharmony_ciclass GrContextFactory; 24cb93a386Sopenharmony_ci} // namespace sk_gpu_test 25cb93a386Sopenharmony_cistruct MHD_Connection; 26cb93a386Sopenharmony_cistruct MHD_PostProcessor; 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_cistruct UploadContext { 29cb93a386Sopenharmony_ci SkDynamicMemoryWStream fStream; 30cb93a386Sopenharmony_ci MHD_PostProcessor* fPostProcessor; 31cb93a386Sopenharmony_ci MHD_Connection* connection; 32cb93a386Sopenharmony_ci}; 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_cistruct Request { 35cb93a386Sopenharmony_ci Request(SkString rootUrl); 36cb93a386Sopenharmony_ci ~Request(); 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ci // draws to canvas operation N, highlighting the Mth GrOp. m = -1 means no highlight. 39cb93a386Sopenharmony_ci sk_sp<SkData> drawToPng(int n, int m = -1); 40cb93a386Sopenharmony_ci sk_sp<SkData> writeOutSkp(); 41cb93a386Sopenharmony_ci SkCanvas* getCanvas(); 42cb93a386Sopenharmony_ci bool enableGPU(bool enable); 43cb93a386Sopenharmony_ci bool setOverdraw(bool enable); 44cb93a386Sopenharmony_ci bool setColorMode(int mode); 45cb93a386Sopenharmony_ci bool hasPicture() const { return SkToBool(fPicture.get()); } 46cb93a386Sopenharmony_ci int getLastOp() const { return fDebugCanvas->getSize() - 1; } 47cb93a386Sopenharmony_ci 48cb93a386Sopenharmony_ci bool initPictureFromStream(SkStream*); 49cb93a386Sopenharmony_ci 50cb93a386Sopenharmony_ci // Returns the json list of ops as an SkData 51cb93a386Sopenharmony_ci sk_sp<SkData> getJsonOps(); 52cb93a386Sopenharmony_ci 53cb93a386Sopenharmony_ci // Returns a json list of ops as an SkData 54cb93a386Sopenharmony_ci sk_sp<SkData> getJsonOpsTask(); 55cb93a386Sopenharmony_ci 56cb93a386Sopenharmony_ci // Returns json with the viewMatrix and clipRect at the given command 57cb93a386Sopenharmony_ci sk_sp<SkData> getJsonInfo(int n); 58cb93a386Sopenharmony_ci 59cb93a386Sopenharmony_ci // returns the color of the pixel at (x,y) in the canvas 60cb93a386Sopenharmony_ci SkColor getPixel(int x, int y); 61cb93a386Sopenharmony_ci 62cb93a386Sopenharmony_ci UploadContext* fUploadContext; 63cb93a386Sopenharmony_ci std::unique_ptr<DebugCanvas> fDebugCanvas; 64cb93a386Sopenharmony_ci UrlDataManager fUrlDataManager; 65cb93a386Sopenharmony_ci 66cb93a386Sopenharmony_ciprivate: 67cb93a386Sopenharmony_ci sk_sp<SkData> writeCanvasToPng(SkCanvas* canvas); 68cb93a386Sopenharmony_ci SkSurface* createCPUSurface(); 69cb93a386Sopenharmony_ci SkSurface* createGPUSurface(); 70cb93a386Sopenharmony_ci SkIRect getBounds(); 71cb93a386Sopenharmony_ci GrDirectContext* directContext(); 72cb93a386Sopenharmony_ci 73cb93a386Sopenharmony_ci sk_sp<SkPicture> fPicture; 74cb93a386Sopenharmony_ci sk_gpu_test::GrContextFactory* fContextFactory; 75cb93a386Sopenharmony_ci sk_sp<SkSurface> fSurface; 76cb93a386Sopenharmony_ci bool fGPUEnabled; 77cb93a386Sopenharmony_ci bool fOverdraw; 78cb93a386Sopenharmony_ci int fColorMode; 79cb93a386Sopenharmony_ci}; 80cb93a386Sopenharmony_ci 81cb93a386Sopenharmony_ci#endif 82