/* * 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 "GrContextFactory.h" #include "SkDebugCanvas.h" #include "SkPicture.h" #include "SkStream.h" #include "SkSurface.h" #include "UrlDataManager.h" struct MHD_Connection; struct MHD_PostProcessor; struct UploadContext { SkDynamicMemoryWStream fStream; MHD_PostProcessor* fPostProcessor; MHD_Connection* connection; }; struct Request { Request(SkString rootUrl); // draws to skia draw op N, highlighting the Mth batch(-1 means no highlight) SkData* drawToPng(int n, int m = -1); SkCanvas* getCanvas(); SkBitmap* getBitmapFromCanvas(SkCanvas* canvas); bool enableGPU(bool enable); 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 SkData* getJsonOps(int n); // Returns a json list of batches as an SkData SkData* getJsonBatchList(int n); // Returns json with the viewMatrix and clipRect SkData* getJsonInfo(int n); // TODO probably want to make this configurable static const int kImageWidth; static const int kImageHeight; UploadContext* fUploadContext; SkAutoTUnref fDebugCanvas; UrlDataManager fUrlDataManager; private: SkData* writeCanvasToPng(SkCanvas* canvas); void drawToCanvas(int n, int m = -1); SkSurface* createCPUSurface(); SkSurface* createGPUSurface(); GrAuditTrail* getAuditTrail(SkCanvas*); void cleanupAuditTrail(SkCanvas*); SkAutoTUnref fPicture; SkAutoTDelete fContextFactory; SkAutoTUnref fSurface; bool fGPUEnabled; }; #endif