Skip to content
Snippets Groups Projects
pview_funcs.cc 2.47 KiB
Newer Older
  • Learn to ignore specific revisions
  • #include "pview_funcs.h"
    
    int pp_parse_args( struct stuff **, int argc, char *argv[], char *fromfname, void * );
    void pp_clk_init();
    void readrc( struct stuff **stp );
    
    GLuint pviewPickbuffer[16384];
    
    #if defined(_MSC_VER) && defined(_DEBUG)
    void plugin_init();
    #else //_MSC_VER
    extern "C" {
    void plugin_init();
    };
    #endif //_MSC_VER
    
    char _pickmsg[1024] = "";
    
    #ifdef EMBEDHACK
    std::string _pviewmsg;
    #endif //EMBEDHACK
    
    void pviewInit(const char *_filename)
    {
        pp_clk_init();
    
        ppui.view = new Fl_Gview(0,0,100,100,"Pview");
    
        static Point black = {0,0,0};
        ppui.view->bgcolor(&black);
    
        parti_add_commands(pp_parse_args,"partiview",NULL);
    //    parti_add_reader( pp_read, "partiview", NULL );
        plugin_init();
    //    pp_ui_init();
    //  ppui.view->add_drawer( drawjunk, NULL, NULL, NULL, 0 );
        ppui.view->pickbuffer(COUNT(pviewPickbuffer),pviewPickbuffer);
    
        ppui.view->zspeed = 5;
        ppui.view->farclip(2500);
        ppui.censize = 1.0;
        ppui.pickrange = 3.5;
    
        ppui.view->movingtarget(0);
        ppui.view->msg = msg;
    
        ppui.playspeed = 1;
    //  ppui.playframe->lstep(10);
    
        parti_object("g1",NULL,1);
        readrc(&ppui.st);
    
        if (_filename)
            specks_read(&ppui.st,findfile(NULL,(char *)_filename));
    
    //  parti_set_timebase( ppui.st, 0.0 );
    //  parti_set_timestep( ppui.st, 0.0 );
    //  parti_set_running( ppui.st, 0 );
    //  parti_set_fwd( ppui.st, 1 );
    
    //  ppui.view->set_swap_func(swap);
    
    //    ppui.view->notifier( pp_viewchanged, ppui.st );
    //    ppui_refresh( ppui.st );
    }
    
    void pviewEval(const char *_command)
    {
        char command[1024];
        char *start;
        char *end;
        strcpy(command,_command);
        start = command;
    
        do
        {
            end = strchr(start,';');
            if (end) {
                *end = '\0';
                end++;
            }
    
            if (strlen(start) <= 0) break;
    
            #define MAXARGS 128
            char *av[MAXARGS];
            int  ac;
            char *s = start;
            for (ac = 0; ac < MAXARGS-1; ac++) {
                av[ac] = strtok(s, " \t\n");
                if (av[ac] == NULL) break;
                s = NULL;
            }
            av[ac] = NULL;
            specks_parse_args(&ppui.st,ac,av);
    
            start = end;
    
        } while (end);
    
        return;
    }
    
    void _pview_pickmsg(const char *_fmt, ... )
    {
        va_list args;
        va_start(args,_fmt);
        vsprintf(_pickmsg,_fmt,args);
        va_end(args);
    }
    
    bool pviewPicked(void)
    {
        if (strlen(_pickmsg)>0)
            return true;
    
        return false;
    }
    
    #ifdef EMBEDHACK
    bool pviewMessage(void)
    {
        return !_pviewmsg.empty();
    }
    #endif //EMBEDHACK