Exemplo n.º 1
0
    //------------------------------------------------------------------------
    bool scale_ctrl_impl::on_mouse_button_down(double x, double y)
    {
        inverse_transform_xy(&x, &y);

        double xp1 = m_xs1 + (m_xs2 - m_xs1) * m_value1;
        double xp2 = m_xs1 + (m_xs2 - m_xs1) * m_value2;
        double ys1 = m_y1  - m_border_extra / 2.0;
        double ys2 = m_y2  + m_border_extra / 2.0;
        double yp = (m_ys1 + m_ys2) / 2.0;

        if(x > xp1 && y > ys1 && x < xp2 && y < ys2)
        {
            m_pdx = xp1 - x;
            m_move_what = move_slider;
            return true;
        }

        if(x < xp1 && calc_distance(x, y, xp1, yp) <= m_y2 - m_y1)
        {
            m_pdx = xp1 - x;
            m_move_what = move_value1;
            return true;
        }

        if(x > xp2 && calc_distance(x, y, xp2, yp) <= m_y2 - m_y1)
        {
            m_pdx = xp2 - x;
            m_move_what = move_value2;
            return true;
        }


        return false;
    }
Exemplo n.º 2
0
    //------------------------------------------------------------------------
    bool gamma_ctrl_impl::on_mouse_button_down(double x, double y)
    {
        inverse_transform_xy(&x, &y);
        calc_points();

        if(calc_distance(x, y, m_xp1, m_yp1) <= m_point_size + 1)
        {
            m_mouse_point = 1;
            m_pdx = m_xp1 - x;
            m_pdy = m_yp1 - y;
            m_p1_active = true;
            return true;
        }

        if(calc_distance(x, y, m_xp2, m_yp2) <= m_point_size + 1)
        {
            m_mouse_point = 2;
            m_pdx = m_xp2 - x;
            m_pdy = m_yp2 - y;
            m_p1_active = false;
            return true;
        }

        return false;
    }
Exemplo n.º 3
0
 //------------------------------------------------------------------------
 bool cbox_ctrl_impl::on_mouse_button_down(real x, real y)
 {
     inverse_transform_xy(&x, &y);
     if(x >= m_x1 && y >= m_y1 && x <= m_x2 && y <= m_y2)
     {
         m_status = !m_status;
         return true;
     }
     return false;
 }
Exemplo n.º 4
0
    //------------------------------------------------------------------------
    bool slider_ctrl_impl::on_mouse_button_down(double x, double y)
    {
        inverse_transform_xy(&x, &y);

        double xp = m_xs1 + (m_xs2 - m_xs1) * m_value;
        double yp = (m_ys1 + m_ys2) / 2.0;

        if(calc_distance(x, y, xp, yp) <= m_y2 - m_y1)
        {
            m_pdx = xp - x;
            m_mouse_move = true;
            return true;
        }
        return false;
    }
Exemplo n.º 5
0
 bool polygon_ctrl_impl::on_mouse_move(double x, double y, bool button_flag)
 {
     bool ret = false;
     double dx;
     double dy;
     inverse_transform_xy(&x, &y);
     if(m_node == int(m_num_points))
     {
         dx = x - m_dx;
         dy = y - m_dy;
         unsigned i;
         for(i = 0; i < m_num_points; i++)
         {
             xn(i) += dx;
             yn(i) += dy;
         }
         m_dx = x;
         m_dy = y;
         ret = true;
     }
     else
     {
         if(m_edge >= 0)
         {
             unsigned n1 = m_edge;
             unsigned n2 = (n1 + m_num_points - 1) % m_num_points;
             dx = x - m_dx;
             dy = y - m_dy;
             xn(n1) += dx;
             yn(n1) += dy;
             xn(n2) += dx;
             yn(n2) += dy;
             m_dx = x;
             m_dy = y;
             ret = true;
         }
         else
         {
             if(m_node >= 0)
             {
                 xn(m_node) = x - m_dx;
                 yn(m_node) = y - m_dy;
                 ret = true;
             }
         }
     }
     return ret;
 }
Exemplo n.º 6
0
 //------------------------------------------------------------------------
 bool rbox_ctrl_impl::on_mouse_button_down(real x, real y)
 {
     inverse_transform_xy(&x, &y);
     unsigned i;
     for(i = 0; i < m_num_items; i++)  
     {
         real xp = m_xs1 + m_dy / 1.3;
         real yp = m_ys1 + m_dy * i + m_dy / 1.3;
         if(calc_distance(x, y, xp, yp) <= m_text_height / 1.5)
         {
             m_cur_item = int(i);
             return true;
         }
     }
     return false;
 }
Exemplo n.º 7
0
    bool polygon_ctrl_impl::on_mouse_button_down(double x, double y)
    {
        unsigned i;
        bool ret = false;
        m_node = -1;
        m_edge = -1;
        inverse_transform_xy(&x, &y);
        for (i = 0; i < m_num_points; i++)
        {
            if(sqrt( (x-xn(i)) * (x-xn(i)) + (y-yn(i)) * (y-yn(i)) ) < m_point_radius)
            {
                m_dx = x - xn(i);
                m_dy = y - yn(i);
                m_node = int(i);
                ret = true;
                break;
            }
        }

        if(!ret)
        {
            for (i = 0; i < m_num_points; i++)
            {
                if(check_edge(i, x, y))
                {
                    m_dx = x;
                    m_dy = y;
                    m_edge = int(i);
                    ret = true;
                    break;
                }
            }
        }

        if(!ret)
        {
            if(point_in_polygon(x, y))
            {
                m_dx = x;
                m_dy = y;
                m_node = int(m_num_points);
                ret = true;
            }
        }
        return ret;
    }
Exemplo n.º 8
0
    //------------------------------------------------------------------------
    bool scale_ctrl_impl::on_mouse_move(double x, double y, bool button_flag)
    {
        inverse_transform_xy(&x, &y);
        if(!button_flag)
        {
            return on_mouse_button_up(x, y);
        }

        double xp = x + m_pdx;
        double dv;

        switch(m_move_what)
        {
        case move_value1:
            m_value1 = (xp - m_xs1) / (m_xs2 - m_xs1);
            if(m_value1 < 0.0)      m_value1 = 0.0;
            if(m_value1 > m_value2 - m_min_d) m_value1 = m_value2 - m_min_d;
            return true;

        case move_value2:
            m_value2 = (xp - m_xs1) / (m_xs2 - m_xs1);
            if(m_value2 > 1.0)      m_value2 = 1.0;
            if(m_value2 < m_value1 + m_min_d) m_value2 = m_value1 + m_min_d;
            return true;

        case move_slider:
            dv = m_value2 - m_value1;
            m_value1 = (xp - m_xs1) / (m_xs2 - m_xs1);
            m_value2 = m_value1 + dv;
            if(m_value1 < 0.0)
            {
                dv = m_value2 - m_value1;
                m_value1 = 0.0;
                m_value2 = m_value1 + dv;
            }
            if(m_value2 > 1.0)
            {
                dv = m_value2 - m_value1;
                m_value2 = 1.0;
                m_value1 = m_value2 - dv;
            }
            return true;
        }

        return false;
    }
Exemplo n.º 9
0
 //------------------------------------------------------------------------
 bool spline_ctrl_impl::on_mouse_button_down(double x, double y)
 {
     inverse_transform_xy(&x, &y);
     unsigned i;
     for(i = 0; i < m_num_pnt; i++)  
     {
         double xp = calc_xp(i);
         double yp = calc_yp(i);
         if(calc_distance(x, y, xp, yp) <= m_point_size + 1)
         {
             m_pdx = xp - x;
             m_pdy = yp - y;
             m_active_pnt = m_move_pnt = int(i);
             return true;
         }
     }
     return false;
 }
Exemplo n.º 10
0
 //------------------------------------------------------------------------
 bool rbox_ctrl_impl::on_mouse_button_down(double x, double y)
 {
     inverse_transform_xy(&x, &y);
     unsigned i;
     for(i = 0; i < m_num_items; i++)  
     {
         double xp = m_xs1 + m_dy / 1.3;
         //double yp = m_ys1 + m_dy * i + m_dy / 1.3;
         double yp1 = m_ys1 + m_dy * i;
         double yp2 = m_ys1 + m_dy * i + m_dy;
         //if (calc_distance(x, y, xp, yp) <= m_text_height / 1.5)
         if (m_x1 <x && x < m_x2 && yp1 < y && y < yp2)
         {
             m_cur_item = int(i);
             return true;
         }
     }
     return false;
 }
Exemplo n.º 11
0
    //------------------------------------------------------------------------
    bool slider_ctrl_impl::on_mouse_move(double x, double y, bool button_flag)
    {
        inverse_transform_xy(&x, &y);
        if(!button_flag)
        {
            on_mouse_button_up(x, y);
            return false;
        }

        if(m_mouse_move)
        {
            double xp = x + m_pdx;
            m_preview_value = (xp - m_xs1) / (m_xs2 - m_xs1);
            if(m_preview_value < 0.0) m_preview_value = 0.0;
            if(m_preview_value > 1.0) m_preview_value = 1.0;
            return true;
        }
        return false;
    }
Exemplo n.º 12
0
//------------------------------------------------------------------------
bool gamma_ctrl_impl::on_mouse_move(double x, double y, bool button_flag) {
  inverse_transform_xy(&x, &y);
  if (!button_flag) {
    return on_mouse_button_up(x, y);
  }

  if (m_mouse_point == 1) {
    m_xp1 = x + m_pdx;
    m_yp1 = y + m_pdy;
    calc_values();
    return true;
  }
  if (m_mouse_point == 2) {
    m_xp2 = x + m_pdx;
    m_yp2 = y + m_pdy;
    calc_values();
    return true;
  }
  return false;
}
Exemplo n.º 13
0
    //------------------------------------------------------------------------
    bool spline_ctrl_impl::on_mouse_move(double x, double y, bool button_flag)
    {
        inverse_transform_xy(&x, &y);
        if(!button_flag)
        {
            return on_mouse_button_up(x, y);
        }

        if(m_move_pnt >= 0)
        {
            double xp = x + m_pdx;
            double yp = y + m_pdy;

            set_xp(m_move_pnt, (xp - m_xs1) / (m_xs2 - m_xs1));
            set_yp(m_move_pnt, (yp - m_ys1) / (m_ys2 - m_ys1));

            update_spline();
            return true;
        }
        return false;
    }
Exemplo n.º 14
0
 //------------------------------------------------------------------------
 bool slider_ctrl_impl::in_rect(double x, double y) const
 {
     inverse_transform_xy(&x, &y);
     return x >= m_x1 && x <= m_x2 && y >= m_y1 && y <= m_y2;
 }
Exemplo n.º 15
0
    //------------------------------------------------------------------------
    bool scale_ctrl_impl::on_mouse_button_down(double x, double y)
    {
        inverse_transform_xy(&x, &y);

        double xp1;
        double xp2;
        double ys1;
        double ys2;
        double xp;
        double yp;

        if(fabs(m_x2 - m_x1) > fabs(m_y2 - m_y1))
        {
            xp1 = m_xs1 + (m_xs2 - m_xs1) * m_value1;
            xp2 = m_xs1 + (m_xs2 - m_xs1) * m_value2;
            ys1 = m_y1  - m_border_extra / 2.0;
            ys2 = m_y2  + m_border_extra / 2.0;
            yp = (m_ys1 + m_ys2) / 2.0;

            if(x > xp1 && y > ys1 && x < xp2 && y < ys2)
            {
                m_pdx = xp1 - x;
                m_move_what = move_slider;
                return true;
            }

            //if(x < xp1 && calc_distance(x, y, xp1, yp) <= m_y2 - m_y1)
            if(calc_distance(x, y, xp1, yp) <= m_y2 - m_y1)
            {
                m_pdx = xp1 - x;
                m_move_what = move_value1;
                return true;
            }

            //if(x > xp2 && calc_distance(x, y, xp2, yp) <= m_y2 - m_y1)
            if(calc_distance(x, y, xp2, yp) <= m_y2 - m_y1)
            {
                m_pdx = xp2 - x;
                m_move_what = move_value2;
                return true;
            }
        }
        else
        {
            xp1 = m_x1  - m_border_extra / 2.0;
            xp2 = m_x2  + m_border_extra / 2.0;
            ys1 = m_ys1 + (m_ys2 - m_ys1) * m_value1;
            ys2 = m_ys1 + (m_ys2 - m_ys1) * m_value2;
            xp = (m_xs1 + m_xs2) / 2.0;

            if(x > xp1 && y > ys1 && x < xp2 && y < ys2)
            {
                m_pdy = ys1 - y;
                m_move_what = move_slider;
                return true;
            }

            //if(y < ys1 && calc_distance(x, y, xp, ys1) <= m_x2 - m_x1)
            if(calc_distance(x, y, xp, ys1) <= m_x2 - m_x1)
            {
                m_pdy = ys1 - y;
                m_move_what = move_value1;
                return true;
            }

            //if(y > ys2 && calc_distance(x, y, xp, ys2) <= m_x2 - m_x1)
            if(calc_distance(x, y, xp, ys2) <= m_x2 - m_x1)
            {
                m_pdy = ys2 - y;
                m_move_what = move_value2;
                return true;
            }
        }

        return false;
    }
Exemplo n.º 16
0
 //------------------------------------------------------------------------
 bool curve3_ctrl_impl::on_mouse_move(double x, double y, bool button_flag)
 {
     inverse_transform_xy(&x, &y);
     return m_poly.on_mouse_move(x, y, button_flag);
 }
Exemplo n.º 17
0
 //------------------------------------------------------------------------
 bool curve3_ctrl_impl::on_mouse_button_down(double x, double y)
 {
     inverse_transform_xy(&x, &y);
     return m_poly.on_mouse_button_down(x, y);
 }
Exemplo n.º 18
0
 //------------------------------------------------------------------------
 bool rbox_ctrl_impl::in_rect(real x, real y) const
 {
     inverse_transform_xy(&x, &y);
     return x >= m_x1 && x <= m_x2 && y >= m_y1 && y <= m_y2;
 }