device_status mock_depth_stream::on_initialize()
    {
        // Populate modes
        add_available_mode(stream_mode(320, 240, 30, ASTRA_PIXEL_FORMAT_DEPTH_MM));
        add_available_mode(stream_mode(320, 240, 60, ASTRA_PIXEL_FORMAT_DEPTH_MM));

        add_available_mode(stream_mode(640, 480, 30, ASTRA_PIXEL_FORMAT_DEPTH_MM));
        add_available_mode(stream_mode(640, 480, 60, ASTRA_PIXEL_FORMAT_DEPTH_MM));

        set_active_mode(*modes_begin());

        generator_ = std::make_unique<depth_generator>(active_mode().width(), active_mode().height());

        return device_status_value::ok;
    }
예제 #2
0
    device_status mock_ir_stream::on_initialize()
    {
        // Populate modes
        add_available_mode(stream_mode(320, 240, 30, ASTRA_PIXEL_FORMAT_RGB888));
        add_available_mode(stream_mode(320, 240, 60, ASTRA_PIXEL_FORMAT_RGB888));

        add_available_mode(stream_mode(640, 480, 30, ASTRA_PIXEL_FORMAT_RGB888));
        add_available_mode(stream_mode(640, 480, 60, ASTRA_PIXEL_FORMAT_RGB888));

        set_active_mode(*modes_begin());

        generator_ = astra::make_unique<infrared_generator>(active_mode().width(), active_mode().height());

        return device_status_value::ok;
    }
    device_status mock_depth_stream::on_read_into(void* dest, std::size_t size, std::int32_t timeout)
    {
        int width = active_mode().width();
        int height = active_mode().height();

        std::stringstream ss;
        ss << "depth" << std::endl << active_mode() << std::endl;

        if (flags().has_flags())
        {
            ss << "(" << flags() << ")";
        }

        generator_->set_size(width, height);
        generator_->set_overlayText(ss.str());
        generator_->set_overlayColor(255, 0, 0, 255);
        generator_->generate();

        const std::uint8_t* src = generator_->pixels();
        std::uint16_t* pixelDest = static_cast<std::uint16_t*>(dest);

        for(int y = 0; y < height; y++)
        {
            for(int x = 0; x < width ; x++)
            {
                std::size_t offset = (y * width + x) * 4;
                float r = src[offset];

                std::uint16_t mm = r > 128 ? 2000 : 50000;

                pixelDest[y * width + x] = mm;
            }
        }

        return device_status_value::ok;
    }
예제 #4
0
    device_status mock_ir_stream::on_read_into(void* dest, std::size_t size, std::int32_t timeout)
    {
        int width = active_mode().width();
        int height = active_mode().height();

        std::stringstream ss;
        ss << "infrared" << std::endl << active_mode() << std::endl;

        if (flags().has_flags())
        {
            ss << "(" << flags() << ")";
        }

        generator_->set_size(width, height);
        generator_->set_overlayText(ss.str());
        generator_->set_overlayColor(0, 255, 255, 255);
        generator_->generate();

        const std::uint8_t* src = reinterpret_cast<const std::uint8_t*>(generator_->pixels());

        orbbec::copy_rgba_to_rgb(reinterpret_cast<std::uint8_t*>(dest), src, width * height);

        return device_status_value::ok;
    }
예제 #5
0
void BeyeContext::main_loop()
{
    __filesize_t OldCurrFilePos; /** means previous File position */
    int ch;
    __filesize_t savep = 0,cfp,nfp,flen;
    unsigned long lwidth;
    plugin_position rc;
    Search& s = search();
    bm_file().seek(LastOffset,binary_stream::Seek_Set);
    drawPrompt();
    rc.textshift=0;
    rc = active_mode().paint(KE_SUPERKEY,rc.textshift);
    bm_file().seek(LastOffset,binary_stream::Seek_Set);
    draw_title(rc.lastbyte);
    while(1) {
        unsigned che;
        ch = GetEvent(drawPrompt,MainActionFromMenu,NULL);
        nfp = cfp = OldCurrFilePos = tell();
        flen = flength();
        lwidth = active_mode().curr_line_width();
        che = ch & 0x00FF;
        if(((che >= '0' && che <= '9') ||
                (che >= 'A' && che <= 'Z') ||
                (che >= 'a' && che <= 'z') ||
                ch == KE_BKSPACE) &&
                (active_mode().flags() & Plugin::UseCodeGuide) == Plugin::UseCodeGuide) {
            nfp = codeguider().get_go_address(ch);
            goto GO;
        }
        switch(ch) {
        case KE_CTL_F(1):
            if(active_mode().action_F1()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(2):
            if(active_mode().action_F2()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(3):
            if(active_mode().action_F3()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(4):
            if(active_mode().action_F4()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(5):
            if(active_mode().action_F5()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(6):
            if(active_mode().action_F6()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(7):
            if(active_mode().action_F7()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(8):
            if(active_mode().action_F8()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(9):
            if(active_mode().action_F9()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_CTL_F(10):
            if(active_mode().action_F10()) {
                ch = KE_SUPERKEY;
                drawPrompt();
            }
            break;
        case KE_ALT_F(1):
            nfp=bin_format().action_F1();
            break;
        case KE_ALT_F(2):
            nfp=bin_format().action_F2();
            break;
        case KE_ALT_F(3):
            nfp=bin_format().action_F3();
            break;
        case KE_ALT_F(4):
            nfp=bin_format().action_F4();
            break;
        case KE_ALT_F(5):
            nfp=bin_format().action_F5();
            break;
        case KE_ALT_F(6):
            nfp=bin_format().action_F6();
            break;
        case KE_ALT_F(7):
            nfp=bin_format().action_F7();
            break;
        case KE_ALT_F(8):
            nfp=bin_format().action_F8();
            break;
        case KE_ALT_F(9):
            nfp=bin_format().action_F9();
            break;
        case KE_ALT_F(10):
            nfp=bin_format().action_F10();
            break;
        case KE_SUPERKEY:
            goto DRAW;
        case KE_F(1) :
            About();
            continue;
        default :
            continue;
        case KE_SHIFT_F(1):
            active_mode().help();
            break;
        case KE_F(10):
        case KE_ESCAPE :
            return;
        case KE_ENTER:
            quick_select_mode();
            drawPrompt();
            ch = KE_SUPERKEY;
            break;
        case KE_F(2):
            if(select_mode()) ch = KE_SUPERKEY;
            break;
        case KE_F(3):
            if(new_source()) {
                ch = KE_SUPERKEY;
                s.reset();
                PaintTitle();
            }
            break;
        case KE_F(4):
            __filesize_t sfp;
            sfp = tell();
            active_mode().misckey_action();
            ch = KE_SUPERKEY;
            PaintTitle();
            drawPrompt();
            bm_file().seek(sfp,binary_stream::Seek_Set);
            break;
        case KE_F(5):
        {
            static __filesize_t shift = 0;
            static unsigned long flags = GJDLG_FILE_TOP;
            if(GetJumpDlg(&shift,&flags)) {
                switch(flags&0xFF) {
                default:
                case GJDLG_PERCENTS:
                    shift=shift>100?100:shift;
                    nfp = flength()*shift/100;
                    break;
                case GJDLG_FILE_TOP:
                    nfp = shift;
                    break;
                case GJDLG_RELATIVE:
                    nfp += (long)shift;
                    break;
                case GJDLG_REL_EOF:
                    nfp = flength()+(long)shift;
                    break;
                case GJDLG_VIRTUAL:
                    __filesize_t temp_fp;
                    nfp = shift;
                    temp_fp = bin_format().va2pa(shift);
                    if(temp_fp==Plugin::Bad_Address) ErrMessageBox(NOT_ENTRY,"");
                    else nfp = temp_fp;
                    break;
                }
                if((active_mode().flags() & Plugin::UseCodeGuide) == Plugin::UseCodeGuide)
                    codeguider().add_back_address();
                ch = KE_SUPERKEY;
            }
        }
        break;
        case KE_SHIFT_F(5): {
            WhereAMI wami(beye_context());
            nfp = wami.run(nfp);
        }
        break;
        case KE_F(6):
            bm_file().reread();
            s.reset();
            ch = KE_SUPERKEY;
            PaintTitle();
            break;
        case KE_SHIFT_F(6):
            select_sysinfo();
            break;
        case KE_F(7):
            nfp = s.run(false);
            ch = KE_JUSTFIND;
            break;
        case KE_SHIFT_F(7):
            nfp = s.run(true);
            ch = KE_JUSTFIND;
            break;
        case KE_F(8):
            nfp = bin_format().show_header();
            break;
        case KE_SHIFT_F(8):
            select_tool();
            break;
        case KE_F(9): {
            class Setup* setup = new class Setup(*this);
            setup->run();
            delete setup;
        }
        break;
        case KE_SHIFT_F(10):
            if(FileUtils()) {
                s.reset();
                ch = KE_SUPERKEY;
                PaintTitle();
            }
            break;
        case KE_HOME:
            rc.textshift = 0;
            break;
        case KE_END:
            rc.textshift = active_mode().get_max_line_length() - tconsole().vio_width()/2;
            break;
        case KE_UPARROW:
            nfp = cfp - active_mode().prev_line_width();
            break;
        case KE_DOWNARROW:
            nfp = cfp + active_mode().curr_line_width();
            break;
        case KE_RIGHTARROW:
            if((active_mode().flags() & Plugin::Text) == Plugin::Text)
                rc.textshift+=active_mode().get_symbol_size();
            else nfp = cfp + active_mode().get_symbol_size();
            break;
        case KE_LEFTARROW:
            if((active_mode().flags() & Plugin::Text) == Plugin::Text)
                rc.textshift-=active_mode().get_symbol_size();
            else nfp = cfp - active_mode().get_symbol_size();
            if(rc.textshift < 0) rc.textshift = 0;
            break;
        case KE_CTL_RIGHTARROW:
            if((active_mode().flags() & Plugin::Text) == Plugin::Text)
                rc.textshift+=8*active_mode().get_symbol_size();
            else nfp = cfp + 8*active_mode().get_symbol_size();
            break;
        case KE_CTL_LEFTARROW:
            if((active_mode().flags() & Plugin::Text) == Plugin::Text)
                rc.textshift-=8*active_mode().get_symbol_size();
            else nfp = cfp - 8*active_mode().get_symbol_size();
            if(rc.textshift < 0) rc.textshift = 0;
            break;
        case KE_PGUP:
            nfp = cfp - active_mode().prev_page_size();
            break;
        case KE_PGDN:
            nfp = cfp + active_mode().curr_page_size();
            break;
        case KE_CTL_PGUP:
            nfp = 0;
            break;
        case KE_CTL_PGDN:
            nfp = flen;
            break;
        case KE_CTL_(O): /** User screen */
        {
            unsigned evt;
            main_wnd().hide();
            title_wnd().hide();
            do {
                evt = GetEvent(drawEmptyPrompt,NULL,NULL);
            }
            while(!(evt == KE_ESCAPE || evt == KE_F(10) || evt == KE_CTL_(O)));
            main_wnd().show();
            title_wnd().show();
        }
        continue;
        }
GO:
        if(cfp != nfp && nfp != Plugin::Bad_Address) {
            unsigned long twidth = ( active_mode().flags() & Plugin::Text ) == Plugin::Text ?
                                   active_mode().get_symbol_size() :
                                   ( active_mode().flags() & Plugin::Disasm ) == Plugin::Disasm ?
                                   1 : lwidth;
            __filesize_t p = flen - twidth;
            if((__fileoff_t)nfp < 0) nfp = 0;
            if(nfp > 0) if(nfp > p) nfp = p;
        }
        bm_file().seek(nfp,binary_stream::Seek_Set);
DRAW:
        if((active_mode().flags() & Plugin::Text) != Plugin::Text) savep = tell();
        rc = active_mode().paint(ch,rc.textshift);
        if((active_mode().flags() & Plugin::Text) != Plugin::Text) bm_file().seek(savep,binary_stream::Seek_Set);
        draw_title(rc.lastbyte);
    }
}
 void mock_depth_stream::refresh_conversion_cache()
 {
     populate_conversion_cache(hFov(), vFov(), active_mode().width(), active_mode().height(), conversionCache_);
 }