void Sliderule :: draw_cursor (wxDC & dc) {
	int cursor_left = x + (int) ((double) scale_length * (marginal_factor + cursor_location - cursor_factor * 0.5));
	int cursor_right = cursor_left + (int) ((double) scale_length * cursor_factor);
	dc . SetBrush (wxBrush (wxColour (cursor_colour . red, cursor_colour . green, cursor_colour . blue, cursor_colour . alpha)));
	if (draw_cursor_window) {
		dc . DrawRoundedRectangle (cursor_left, y - 2, cursor_right - cursor_left, rule_y - y + 4, 4);
	}
	dc . SetPen (wxPen (wxColour (cursor_colour . red, cursor_colour . green, cursor_colour . blue)));
	dc . SetBrush (wxBrush (wxColour (0, 0,  0), wxTRANSPARENT));
	dc . DrawRoundedRectangle (cursor_left, y - 2, cursor_right - cursor_left, rule_y - y + 4, 4);
	dc . DrawRoundedRectangle (cursor_left - 1, y - 3, cursor_right - cursor_left + 2, rule_y - y + 6, 4);
//	drawed_hairline = x + (double) scale_length * (cursor_location + marginal_factor);
	drawed_hairline = x + (int) ((double) scale_length * marginal_factor);
	drawed_hairline += (double) scale_length * cursor_location;
	double S = (double) scale_length * C;
	drawed_d = drawed_hairline + S;
	drawed_s = drawed_hairline - S;
	drawed_mechanical_kw = drawed_d + (double) scale_length * mechanical_hp;
	drawed_metric_kw = drawed_d + (double) scale_length * metric_hp;
	drawed_mechanical_hp = drawed_hairline - 0.5 * (double) scale_length * mechanical_hp;
	drawed_metric_hp = drawed_hairline - 0.5 * (double) scale_length * metric_hp;
	double shift_360 = (double) scale_length * location_360;
	drawed_360 = drawed_hairline + shift_360;
	drawed_36010 = drawed_hairline + (double) scale_length * location_36010;
	drawed_360st = drawed_hairline - shift_360;
//	if (process_cursor_hairline) draw_alpha_line (dc, hairline_lp, x + scale_length * (cursor_location + marginal_factor), y, rule_y);
	if (draw_cursor_2_hairlines) {
		draw_thin_line (dc, hairline_lp, drawed_hairline, y, rule_y);
		d_hairline . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
		if (display_metric_hp) {
			metric_hp_hairline . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
			metric_kw_hairline . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
		}
		if (display_mechanical_hp) {
			mechanical_hp_hairline . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
			mechanical_kw_hairline . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
		}
		s_hairline . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
		hairline_360 . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
		hairline_36010 . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
		hairline_360st . draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
		for (int ind = 0; ind < number_of_extra_hairlines; ind++) extra_hairlines [ind] -> draw (dc, other_hairlines_lp, drawed_hairline, (double) scale_length);
	}
	if (draw_cursor_hairline) draw_line (dc, hairline_lp, (double) x + (double) scale_length * (cursor_location + marginal_factor), y, rule_y);
}
void Hairline :: draw (wxDC & dc, lanczos_colour * lcp, double x, double scale_length) {
	if (from < 0) return;
	last_drawn = x + location * scale_length;
	draw_thin_line (dc, lcp, last_drawn, from, to);
}
示例#3
0
//---------------------------------------------------------------------------------------
void GmoShapeBarline::on_draw(Drawer* pDrawer, RenderOptions& opt)
{
    Color color =  determine_color_to_use(opt) ;
    LUnits uxPos = m_uxLeft;
    LUnits uyTop = m_origin.y;
    LUnits uyBottom = m_origin.y + m_size.height;

    switch(m_nBarlineType)
    {
        case k_barline_double:
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            uxPos += m_uThinLineWidth + m_uSpacing;
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            break;

        case k_barline_end_repetition:
            //uxPos += m_uRadius;
            uxPos += m_uRadius * 2.7;   //BUG-BYPASS: Need to shift right the drawing
            draw_two_dots(pDrawer, uxPos, uyTop);
            uxPos += m_uRadius + m_uSpacing;
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            uxPos += m_uThinLineWidth + m_uSpacing;
            draw_thick_line(pDrawer, uxPos, uyTop, m_uThickLineWidth, uyBottom-uyTop, color);
            break;

        case k_barline_start_repetition:
            draw_thick_line(pDrawer, uxPos, uyTop, m_uThickLineWidth, uyBottom-uyTop, color);
            uxPos += m_uThickLineWidth + m_uSpacing;
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            uxPos += m_uThinLineWidth + m_uSpacing + m_uRadius;
            draw_two_dots(pDrawer, uxPos, uyTop);
            break;

        case k_barline_double_repetition:
            uxPos += m_uRadius;
            draw_two_dots(pDrawer, uxPos, uyTop);
            uxPos += m_uSpacing + m_uRadius;
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            uxPos += m_uThinLineWidth + m_uSpacing;
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            uxPos += m_uThinLineWidth + m_uSpacing + m_uRadius;
            draw_two_dots(pDrawer, uxPos, uyTop);
            break;

        case k_barline_start:
            draw_thick_line(pDrawer, uxPos, uyTop, m_uThickLineWidth, uyBottom-uyTop, color);
            uxPos += m_uThickLineWidth + m_uSpacing;
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            break;

        case k_barline_end:
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            uxPos += m_uThinLineWidth + m_uSpacing;
            draw_thick_line(pDrawer, uxPos, uyTop, m_uThickLineWidth, uyBottom-uyTop, color);
            break;

        case k_barline_simple:
            draw_thin_line(pDrawer, uxPos, uyTop, uyBottom, color);
            break;
    }
    pDrawer->render();

    GmoSimpleShape::on_draw(pDrawer, opt);
}