示例#1
0
Event TMGraphView::findEventAt(QPoint pos)
{
    // Converting screen coordinates to real address and time
    unsigned long long address = displayAddressToRealAddress(view_address + pos.x()/address_zoom_factor);
    unsigned long long time = (unsigned long long)(view_time + pos.y()/time_zoom_factor);
    // Looking for the right memory block
    for(QList<MemoryBlock>::iterator block_it = blocks.begin(); block_it != blocks.end(); block_it++)
    {
        if(address < block_it->address)
            break;// We are too far in memory space
        else if(address >= block_it->address && address < block_it->address + block_it->size)
        {
            // Looking for the right event (if it exist)
            for(QList<Event>::iterator event_it = block_it->events.begin(); event_it != block_it->events.end(); event_it++)
            {
                if(time < event_it->time)
                    break; // We are too far in time
                else if(time == event_it->time && address >= event_it->address && address < event_it->address + event_it->size)
                    return *event_it; // Found it!
            }
        }
    }
    Event ev;
    ev.type = EVENT_UFO;
    return ev;
}
示例#2
0
void TMGraphView::zoomToOverview()
{
    view_address = 0;
    view_time = 0;
    address_zoom_factor = width()/(double)total_bytes;
    time_zoom_factor = height()/(double)total_time;
    emit positionChange(displayAddressToRealAddress(view_address), view_time);
    update();
}
示例#3
0
void TMGraphView::addressMove(long long da)
{
    if(da < 0 && -da > view_address)
        view_address = 0;
    else if(da > 0 && da > 0xFFFFFFFFFFFFFFFF - view_address)
        view_address = 0xFFFFFFFFFFFFFFFF;
    else
        view_address += da;
    emit positionChange(displayAddressToRealAddress(view_address), view_time);
}
示例#4
0
void TMGraphView::timeMove(long long dt)
{
    if(dt < 0 && -dt > view_time)
        view_time = 0;
    else if(dt > 0 && dt > 0xFFFFFFFFFFFFFFFF - view_time)
        view_time = 0xFFFFFFFFFFFFFFFF;
    else
        view_time += dt;
    emit positionChange(displayAddressToRealAddress(view_address), view_time);
}
示例#5
0
void TMGraphView::zoomToOverview()
{
    view_address = 0;
    view_time = 0;

    updateZoomFactors();

    emit positionChange(displayAddressToRealAddress(view_address), view_time);
    update();
}
示例#6
0
void TMGraphView::onWindowResize()
{
    // Special behaviour if overview: fit to new window size
    if (view_address == 0 && view_time == 0)
    {
        updateZoomFactors();
    }
    // Otherwise, repaint at the same zoom level, thus showing more stuff if you increase window size, less stuff if you decrease it

    emit positionChange(displayAddressToRealAddress(view_address), view_time);
    update();
}
示例#7
0
void TMGraphView::mouseMoveEvent(QMouseEvent * event)
{
    if(event->buttons() & Qt::LeftButton)
    {
        addressMove((long)((drag_last_pos.x()-event->pos().x())/address_zoom_factor));
        drag_last_pos.setX(event->pos().x());
        timeMove((long)((drag_last_pos.y()-event->pos().y())/time_zoom_factor));
        drag_last_pos.setY(event->pos().y());
        update();
    }
    emit cursorPositionChange(displayAddressToRealAddress(view_address + (long long)(event->pos().x()/address_zoom_factor)),
                              view_time + (long long)(event->pos().y()/time_zoom_factor));
}
示例#8
0
void TMGraphView::setTime(unsigned long long time)
{
    view_time = time;
    emit positionChange(displayAddressToRealAddress(view_address), view_time);
    update();
}