Skip to content
Snippets Groups Projects
main.cpp 1.97 KiB
Newer Older
  • Learn to ignore specific revisions
  • gyroninja's avatar
    gyroninja committed
    #include "graphics/opengl/Window.h"
    #include "html/HTMLParser.h"
    
    gyroninja's avatar
    gyroninja committed
    #include <ctime>
    
    gyroninja's avatar
    gyroninja committed
    #include <iostream>
    
    #include "WebResource.h"
    
    #include "CommandLineParams.h"
    
    Nubben's avatar
    Nubben committed
    #include "URL.h"
    
    #include "Log.h"
    
    gyroninja's avatar
    gyroninja committed
    const std::unique_ptr<Window> window = std::make_unique<Window>();
    
    Nubben's avatar
    Nubben committed
    
    bool setWindowContent(URL const& url) {
    
    Odilitime's avatar
    Odilitime committed
        logDebug() << "main::setWindowContent - " << url << std::endl;
    
    Nubben's avatar
    Nubben committed
        WebResource res = getWebResource(url);
        if (res.resourceType == ResourceType::INVALID) {
    
            logError() << "Invalid resource type: " << res.raw << std::endl;
    
    Nubben's avatar
    Nubben committed
            return false;
    
    Nubben's avatar
    Nubben committed
        HTMLParser parser;
        const std::clock_t begin = clock();
        std::shared_ptr<Node> rootNode = parser.parse(res.raw);
        const std::clock_t end = clock();
    
        logDebug() << "Parsed document in: " << std::fixed << ((static_cast<double>(end - begin)) / CLOCKS_PER_SEC) << std::scientific << " seconds" << std::endl;
    
        window->setDOM(rootNode);
    
    Nubben's avatar
    Nubben committed
        return true;
    
    gyroninja's avatar
    gyroninja committed
    int main(int argc, char *argv[]) {
        if (argc == 1) {
    
            std::cout << "./netrunner <url|file.html> [-log <error|warning|notice|info|debug>]" << std::endl;
    
    gyroninja's avatar
    gyroninja committed
            return 1;
        }
    
        std::cout << "/g/ntr - NetRunner build " << __DATE__ << std::endl;
    
        initCLParams(argc, argv);
    
    Nubben's avatar
    Nubben committed
        std::string url = getCLParamByIndex(1);
        if (url[0] == '/') {
            url = "file://" + url;
        }
    
    Odilitime's avatar
    Odilitime committed
        window->currentURL=URL(url);
    
        logDebug() << "loading [" << window->currentURL << "]" << std::endl;
    
        if (!setWindowContent(window->currentURL)) {
    
    gyroninja's avatar
    gyroninja committed
        window->init();
    
        if (!window->window) {
            return 1;
        }
    
    gyroninja's avatar
    gyroninja committed
        while (!glfwWindowShouldClose(window->window)) {
    
    Odilitime's avatar
    Odilitime committed
            //const std::clock_t begin = clock();
    
    gyroninja's avatar
    gyroninja committed
            window->render();
    
            glfwWaitEvents(); // block until something changes
    
    Odilitime's avatar
    Odilitime committed
            //const std::clock_t end = clock();
            //std::cout << '\r' << std::fixed << (((static_cast<double>(end - begin)) / CLOCKS_PER_SEC) * 1000) << std::scientific << " ms/f    " << std::flush;
    
    gyroninja's avatar
    gyroninja committed
        }
        return 0;
    }