/* * 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 UrlHandler_DEFINED #define UrlHandler_DEFINED #include "SkColor.h" struct MHD_Connection; struct Request; class UrlHandler { public: virtual ~UrlHandler() {} virtual bool canHandle(const char* method, const char* url) = 0; virtual int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) = 0; }; class CmdHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; class ImgHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; class BreakHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; /** Updates the clip visualization alpha. On all subsequent /img requests, the clip will be drawn in black with the specified alpha. 0 = no visible clip, 255 = fully opaque clip. */ class ClipAlphaHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; /** Controls whether GPU rendering is enabled. Posting to /enableGPU/1 turns GPU on, /enableGPU/0 disables it. */ class EnableGPUHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; /** Controls whether overdraw rendering is enabled. Posting to /overdraw/1 turns overdraw on, /overdraw/0 disables it. */ class OverdrawHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; class PostHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; class DownloadHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; class InfoHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; class DataHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; /* * Returns a json descripton of all the GPU ops in the image */ class OpsHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; /* * Enables drawing of gpu op bounds */ class OpBoundsHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; class RootHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; /** * Controls how rendering is performed (L32, S32, F16). * Posting to /colorMode/0 turns on L32, /colorMode/1 turns on sRGB, * /colorMode/2 turns on FP16. */ class ColorModeHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; class QuitHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override; int handle(Request* request, MHD_Connection* connection, const char* url, const char* method, const char* upload_data, size_t* upload_data_size) override; }; #endif // UrlHandler_DEFINED