From eb9a5451048da64d42b4ffc3bf3744c72f1b257f Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 12 Jul 2016 14:04:30 +0200 Subject: [PATCH] Move common functions declarations into header --- renderdoccmd/renderdoccmd.h | 60 +++++++++++++++++++++++ renderdoccmd/renderdoccmd.vcxproj | 4 +- renderdoccmd/renderdoccmd.vcxproj.filters | 4 ++ renderdoccmd/renderdoccmd_android.cpp | 13 ++--- renderdoccmd/renderdoccmd_apple.cpp | 14 ++---- renderdoccmd/renderdoccmd_linux.cpp | 5 +- renderdoccmd/renderdoccmd_win32.cpp | 7 +-- 7 files changed, 81 insertions(+), 26 deletions(-) create mode 100644 renderdoccmd/renderdoccmd.h diff --git a/renderdoccmd/renderdoccmd.h b/renderdoccmd/renderdoccmd.h new file mode 100644 index 000000000..c542c7345 --- /dev/null +++ b/renderdoccmd/renderdoccmd.h @@ -0,0 +1,60 @@ +/****************************************************************************** + * The MIT License (MIT) + * + * Copyright (c) 2016 Baldur Karlsson + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + ******************************************************************************/ + +#pragma once + +#include "3rdparty/cmdline/cmdline.h" + +struct Command +{ + virtual ~Command() {} + virtual void AddOptions(cmdline::parser &parser) = 0; + virtual int Execute(cmdline::parser &parser) = 0; + virtual const char *Description() = 0; + + virtual bool IsInternalOnly() = 0; + virtual bool IsCaptureCommand() = 0; +}; + +void add_command(const std::string &name, Command *cmd); +void add_alias(const std::string &alias, const std::string &command); + +int renderdoccmd(int argc, char **argv); +int renderdoccmd(std::vector &argv); + +struct CaptureOptions; +struct TextureDisplay; + +#ifdef __cplusplus +struct IReplayRenderer; +typedef IReplayRenderer ReplayRenderer; +#else +struct ReplayRenderer +#endif + +void readCapOpts(const std::string &str, CaptureOptions *opts); + +// these must be defined in platform .cpps +void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay &displayCfg); +std::wstring GetUsername(); diff --git a/renderdoccmd/renderdoccmd.vcxproj b/renderdoccmd/renderdoccmd.vcxproj index f9a2c4749..31a3c0b33 100644 --- a/renderdoccmd/renderdoccmd.vcxproj +++ b/renderdoccmd/renderdoccmd.vcxproj @@ -179,6 +179,8 @@ + + @@ -198,4 +200,4 @@ - + \ No newline at end of file diff --git a/renderdoccmd/renderdoccmd.vcxproj.filters b/renderdoccmd/renderdoccmd.vcxproj.filters index 4d9cd79c3..e0601464b 100644 --- a/renderdoccmd/renderdoccmd.vcxproj.filters +++ b/renderdoccmd/renderdoccmd.vcxproj.filters @@ -20,6 +20,10 @@ 3rdparty + + + 3rdparty + diff --git a/renderdoccmd/renderdoccmd_android.cpp b/renderdoccmd/renderdoccmd_android.cpp index f8e3bd57d..185f69eaa 100644 --- a/renderdoccmd/renderdoccmd_android.cpp +++ b/renderdoccmd/renderdoccmd_android.cpp @@ -22,14 +22,12 @@ * THE SOFTWARE. ******************************************************************************/ -#include - +#include "renderdoccmd.h" #include -#include - -#include - #include +#include +#include +#include #include #define ANativeActivity_onCreate __attribute__((visibility("default"))) ANativeActivity_onCreate @@ -49,7 +47,7 @@ string GetUsername() return string("Username"); } -void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay displayCfg) +void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay &displayCfg) { ANativeWindow *connectionScreenWindow = android_state->window; @@ -72,7 +70,6 @@ void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay displayCfg) } } -int renderdoccmd(int argc, char **argv); void handle_cmd(android_app *app, int32_t cmd) { switch(cmd) diff --git a/renderdoccmd/renderdoccmd_apple.cpp b/renderdoccmd/renderdoccmd_apple.cpp index 93a0718bc..dbaf1c41b 100644 --- a/renderdoccmd/renderdoccmd_apple.cpp +++ b/renderdoccmd/renderdoccmd_apple.cpp @@ -22,14 +22,12 @@ * THE SOFTWARE. ******************************************************************************/ -#include - +#include "renderdoccmd.h" #include -#include - -#include - #include +#include +#include +#include using std::string; @@ -41,12 +39,10 @@ string GetUsername() return string(buf, buf + strlen(buf)); } -void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay displayCfg) +void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay &displayCfg) { } -int renderdoccmd(int argc, char **argv); - int main(int argc, char *argv[]) { setlocale(LC_CTYPE, ""); diff --git a/renderdoccmd/renderdoccmd_linux.cpp b/renderdoccmd/renderdoccmd_linux.cpp index 40020ebc4..eaaef9ebb 100644 --- a/renderdoccmd/renderdoccmd_linux.cpp +++ b/renderdoccmd/renderdoccmd_linux.cpp @@ -23,6 +23,7 @@ * THE SOFTWARE. ******************************************************************************/ +#include "renderdoccmd.h" #include #include #include @@ -41,7 +42,7 @@ string GetUsername() return string(buf, buf + strlen(buf)); } -void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay displayCfg) +void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay &displayCfg) { int scr; @@ -140,8 +141,6 @@ void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay displayCfg) // be resolved and libGL wouldn't link, meaning dlsym(RTLD_NEXT) would fai extern "C" void glXWaitGL(); -int renderdoccmd(int argc, char **argv); - int main(int argc, char *argv[]) { std::setlocale(LC_CTYPE, ""); diff --git a/renderdoccmd/renderdoccmd_win32.cpp b/renderdoccmd/renderdoccmd_win32.cpp index cf2e53a87..16535f0ee 100644 --- a/renderdoccmd/renderdoccmd_win32.cpp +++ b/renderdoccmd/renderdoccmd_win32.cpp @@ -23,6 +23,7 @@ * THE SOFTWARE. ******************************************************************************/ +#include "renderdoccmd.h" #include #include #include @@ -221,7 +222,7 @@ wstring GetUsername() return username; } -void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay displayCfg) +void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay &displayCfg) { HWND wnd = CreateWindowEx(WS_EX_CLIENTEDGE, L"renderdoccmd", L"renderdoccmd", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 1280, 720, NULL, NULL, hInstance, NULL); @@ -265,10 +266,6 @@ void DisplayRendererPreview(ReplayRenderer *renderer, TextureDisplay displayCfg) DestroyWindow(wnd); } -int renderdoccmd(const std::vector &argv); -bool argequal(const std::string &a, const std::string &b); -void readCapOpts(const std::string &str, CaptureOptions *opts); - int WINAPI wWinMain(_In_ HINSTANCE hInst, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nShowCmd) {