示例#1
0
void wxChartPanel::RedrawBackBitmap()
{
    if (m_chart != NULL) {
        wxMemoryDC mdc;
        mdc.SelectObject(m_backBitmap);

        const wxRect &rc = GetClientRect();

        // Using graphics context instead of normal DC
        // allows antialiasing and other features,
        // i tested it on Linux-wxGTK-2.8.8 and on Windows(tm)-wxWidgets-2.8.8
        // there is bug with wxSHORT_DASH pen style, it drawing hungs,
        // when wxGCDC used
#if wxUSE_GRAPHICS_CONTEXT
        if (m_antialias) {
            wxGCDC gdc(mdc);
            m_chart->Draw((wxDC&) gdc, (wxRect&) rc);
        }
        else {
            m_chart->Draw(mdc, (wxRect&) rc);
        }
#else
        m_chart->Draw(mdc, (wxRect&) rc);
#endif
    }
}
示例#2
0
文件: v550.cpp 项目: MASHinfo/mame
void v550_state::v550(machine_config &config)
{
	Z80(config, m_maincpu, 34.846_MHz_XTAL / 16); // NEC D780C (2.177875 MHz verified)
	m_maincpu->set_addrmap(AS_PROGRAM, &v550_state::mem_map);
	m_maincpu->set_addrmap(AS_IO, &v550_state::io_map);

	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // NEC D444C-2 + battery

	upd7220_device &gdc(UPD7220(config, "gdc", 34.846_MHz_XTAL / 16)); // NEC D7220D (2.177875 MHz verified)
	gdc.set_screen("screen");

	I8255(config, "ppi"); // NEC D8255AC-5

	I8251(config, m_usart, 34.846_MHz_XTAL / 16); // NEC D8251AC
	m_usart->rxrdy_handler().set("mainint", FUNC(input_merger_device::in_w<1>));

	upd7201_new_device& mpsc(UPD7201_NEW(config, "mpsc", 34.846_MHz_XTAL / 16)); // NEC D7201C
	mpsc.out_int_callback().set("mainint", FUNC(input_merger_device::in_w<0>));

	INPUT_MERGER_ANY_HIGH(config, "mainint").output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);

	com8116_device &brg1(COM8116(config, "brg1", 5068800)); // actually SMC COM8116T-020 (unknown clock)
	brg1.ft_handler().set("mpsc", FUNC(upd7201_new_device::txca_w));
	brg1.fr_handler().set("mpsc", FUNC(upd7201_new_device::rxca_w));

	com8116_device &brg2(COM8116(config, "brg2", 5068800)); // actually SMC COM8116T-020
	brg2.ft_handler().set("mpsc", FUNC(upd7201_new_device::txcb_w));
	brg2.ft_handler().append("mpsc", FUNC(upd7201_new_device::rxcb_w));
	brg2.fr_handler().set("usart", FUNC(i8251_device::write_txc));
	brg2.fr_handler().append("usart", FUNC(i8251_device::write_rxc));

	mcs48_cpu_device &kbdmcu(I8035(config, "kbdmcu", 4'608'000));
	kbdmcu.set_addrmap(AS_PROGRAM, &v550_state::kbd_map);

	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
	m_screen->set_raw(34.846_MHz_XTAL, 19 * 102, 0, 19 * 80, 295, 0, 272);
	m_screen->set_screen_update(FUNC(v550_state::screen_update));

	scn2672_device &pvtc(SCN2672(config, "pvtc", 34.846_MHz_XTAL / 19));
	pvtc.set_addrmap(0, &v550_state::pvtc_char_map);
	pvtc.set_addrmap(1, &v550_state::pvtc_attr_map);
	pvtc.set_character_width(19);
	pvtc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
	pvtc.set_screen("screen");
	// SCB2673 clock verified at 17.423 MHz
}
示例#3
0
void wxGenericColourDialog::DoPreviewBitmap(wxBitmap& bmp, const wxColour& colour)
{
    if ( bmp.HasAlpha() && colour.Alpha() != wxALPHA_OPAQUE )
    {
        // For real ARGB draw a chessboard grid
        // with actual ARGB fields and reference RGB fields.
        const int w = bmp.GetWidth();
        const int h = bmp.GetHeight();

        // Calculate field size: 4 fields per row/column,
        // with size in range [2..10]
        int dx = wxMax(wxMin(w / 4, 10), 2);
        int dy = wxMax(wxMin(h / 4, 10), 2);
        // We want a square field
        dx = wxMax(dx, dy);
        dy = dx;

        // Prepare opaque colour
        wxColour colourRGB(colour.Red(), colour.Green(), colour.Blue(), wxALPHA_OPAQUE);

        {
            wxBrush brushARGB(colour);
            wxBrush brushRGB(colourRGB);

            wxMemoryDC mdc(bmp);
            {
                wxGCDC gdc(mdc);

                gdc.SetPen(*wxTRANSPARENT_PEN);

                for (int x = 0, ix = 0; x < w; x += dx, ix++)
                {
                    for (int y = 0, iy = 0; y < h; y += dy, iy++)
                    {
                        if ( (ix+iy) % 2 == 0 )
                        {
                            gdc.SetBrush(brushARGB);
                        }
                        else
                        {
                            gdc.SetBrush(brushRGB);
                        }
                        gdc.DrawRectangle(x, y, dx, dy);
                    }
                }

                // Draw a frame
                gdc.SetPen(*wxBLACK_PEN);
                gdc.SetBrush(*wxTRANSPARENT_BRUSH);
                gdc.DrawRectangle(0, 0, w, h);
            }
        }
    }
    else
    {
        wxMemoryDC mdc(bmp);
        // Fill with custom colour
        wxBrush brush(colour);
        mdc.SetPen(*wxBLACK_PEN);
        mdc.SetBrush(brush);
        mdc.DrawRectangle(wxPoint(0, 0), bmp.GetSize());
    }
}