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