Beispiel #1
0
void
seqroll::convert_tn_box_to_rect
(
    long a_tick_s, long a_tick_f, int a_note_h, int a_note_l,
    int * a_x, int * a_y, int * a_w, int * a_h
)
{
    int x1, y1, x2, y2;
    convert_tn(a_tick_s, a_note_h, &x1, &y1);   /* convert box to X,Y values */
    convert_tn(a_tick_f, a_note_l, &x2, &y2);
    xy_to_rect(x1, y1, x2, y2, a_x, a_y, a_w, a_h);
    *a_h += c_key_y;
}
Beispiel #2
0
void
seqdata::draw_line_on_window ()
{
    m_gc->set_foreground(black_paint());
    set_line(Gdk::LINE_SOLID);
    draw_drawable                                   /* replace old */
    (
        m_old.x, m_old.y, m_old.x, m_old.y, m_old.width + 1, m_old.height + 1
    );

    int x, y, w, h;
    xy_to_rect(m_drop_x, m_drop_y, m_current_x, m_current_y, x, y, w, h);
    x -= m_scroll_offset_x;
    m_old.x = x;
    m_old.y = y;
    m_old.width = w;
    m_old.height = h;
    draw_line
    (
        black_paint(), m_current_x - m_scroll_offset_x, m_current_y,
        m_drop_x - m_scroll_offset_x, m_drop_y
    );
}
void EditEventValues::paintEvent(QPaintEvent *)
{
    mPainter = new QPainter(this);
    mPen = new QPen(Qt::black);
    mBrush = new QBrush(Qt::lightGray, Qt::SolidPattern);
    mFont.setPointSize(6);
    mPainter->setPen(*mPen);
    mPainter->setBrush(*mBrush);
    mPainter->setFont(mFont);

    //this is perhaps the background?

    long tick;

    unsigned char d0,d1;

    int event_x;
    int event_height;

    bool selected;

    int start_tick = 0 ;
    int end_tick = (width() * m_zoom);

    mPainter->drawRect(0,
                       0,
                       width() - 1,
                       height() - 1);

    m_seq->reset_draw_marker();
    while ( m_seq->get_next_event( m_status,
                                   m_cc,
                                   &tick, &d0, &d1,
                                   &selected ) == true )
    {

        if ( tick >= start_tick && tick <= end_tick )
        {

            /* turn into screen corrids */

            event_x = tick / m_zoom + c_keyboard_padding_x;

            /* generate the value */
            event_height = d1;

            if ( m_status == EVENT_PROGRAM_CHANGE ||
                 m_status == EVENT_CHANNEL_PRESSURE  ){

                event_height = d0;
            }

            /* draw vert lines */
            mPen->setWidth(2);
            mPainter->setPen(*mPen);
            mPainter->drawLine(event_x + 1,
                               height() - event_height,
                               event_x + 1,
                               height());

            //draw numbers
            QString val = QString::number(d1);

            mPen->setColor(Qt::black);
            mPen->setWidth(1);
            mPainter->setPen(*mPen);
            if (val.length() >= 1)
                mPainter->drawText(event_x + 3,
                                   c_dataarea_y - 25,
                                   val.at(0));
            if (val.length() >= 2)
                mPainter->drawText(event_x + 3,
                                   c_dataarea_y - 25 + 8,\
                                   val.at(1));
            if (val.length() >= 3)
                mPainter->drawText(event_x + 3,
                                   c_dataarea_y - 25 + 16,
                                   val.at(2));
        }
    }

    //draw edit line

    if (mLineAdjust)
    {
        int x,y,w,h;
        mPen->setColor(Qt::black);
        mPen->setStyle(Qt::DashLine);
        mPainter->setPen(*mPen);

        xy_to_rect ( mDropX,
                     mDropY,
                     mCurrentX,
                     mCurrentY,
                     &x, &y,
                     &w, &h );

        mOld->setX(x);
        mOld->setY(y);
        mOld->setWidth(w);
        mOld->setHeight(h);

        mPainter->drawLine(mCurrentX + c_keyboard_padding_x,
                           mCurrentY,
                           mDropX + c_keyboard_padding_x,
                           mDropY );
    }

    delete mPainter;
    delete mBrush;
    delete mPen;
}
Beispiel #4
0
void
seqroll::draw_selection_on_window ()
{
    int x, y, w, h;
    if (m_selecting  ||  m_moving || m_paste ||  m_growing)
    {
        m_gc->set_line_attributes
        (
            1, Gdk::LINE_SOLID, Gdk::CAP_NOT_LAST, Gdk::JOIN_MITER
        );

        m_window->draw_drawable                         /* replace old */
        (
            m_gc, m_pixmap, m_old.x, m_old.y, m_old.x, m_old.y,
            m_old.width + 1, m_old.height + 1
        );
    }
    if (m_selecting)
    {
        xy_to_rect(m_drop_x, m_drop_y, m_current_x, m_current_y, &x, &y, &w, &h);
        x -= m_scroll_offset_x;
        y -= m_scroll_offset_y;

        m_old.x = x;
        m_old.y = y;
        m_old.width = w;
        m_old.height = h + c_key_y;

        m_gc->set_foreground(m_black);
        m_window->draw_rectangle(m_gc, false, x, y, w, h + c_key_y);
    }
    if (m_moving || m_paste)
    {
        int delta_x = m_current_x - m_drop_x;
        int delta_y = m_current_y - m_drop_y;
        x = m_selected.x + delta_x;
        y = m_selected.y + delta_y;
        x -= m_scroll_offset_x;
        y -= m_scroll_offset_y;
        m_gc->set_foreground(m_black);
        m_window->draw_rectangle
        (
            m_gc, false, x, y, m_selected.width, m_selected.height
        );
        m_old.x = x;
        m_old.y = y;
        m_old.width = m_selected.width;
        m_old.height = m_selected.height;
    }
    if (m_growing)
    {
        int delta_x = m_current_x - m_drop_x;
        int width = delta_x + m_selected.width;
        if (width < 1)
            width = 1;

        x = m_selected.x;
        y = m_selected.y;
        x -= m_scroll_offset_x;
        y -= m_scroll_offset_y;
        m_gc->set_foreground(m_black);
        m_window->draw_rectangle(m_gc, false, x, y, width, m_selected.height);

        m_old.x = x;
        m_old.y = y;
        m_old.width = width;
        m_old.height = m_selected.height;
    }
}