本文整理汇总了C++中screen_device::visible_area方法的典型用法代码示例。如果您正苦于以下问题:C++ screen_device::visible_area方法的具体用法?C++ screen_device::visible_area怎么用?C++ screen_device::visible_area使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类screen_device
的用法示例。
在下文中一共展示了screen_device::visible_area方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: screen_update
UINT32 laserdisc_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// handle the overlay if present
screen_bitmap &overbitmap = m_overbitmap[m_overindex];
if (overbitmap.valid() && (!m_overupdate_ind16.isnull() || !m_overupdate_rgb32.isnull()))
{
// scale the cliprect to the overlay size
rectangle clip(m_overclip);
clip.min_y = cliprect.min_y * overbitmap.height() / bitmap.height();
if (cliprect.min_y == screen.visible_area().min_y)
clip.min_y = MIN(clip.min_y, m_overclip.min_y);
clip.max_y = (cliprect.max_y + 1) * overbitmap.height() / bitmap.height() - 1;
// call the update callback
if (!m_overupdate_ind16.isnull())
m_overupdate_ind16(screen, overbitmap.as_ind16(), clip);
else
m_overupdate_rgb32(screen, overbitmap.as_rgb32(), clip);
}
// if this is the last update, do the rendering
if (cliprect.max_y == screen.visible_area().max_y)
{
// update the texture with the overlay contents
if (overbitmap.valid())
m_overtex->set_bitmap(overbitmap, m_overclip, overbitmap.texformat());
// get the laserdisc video
bitmap_yuy16 &vidbitmap = get_video();
m_videotex->set_bitmap(vidbitmap, vidbitmap.cliprect(), TEXFORMAT_YUY16);
// reset the screen contents
screen.container().empty();
// add the video texture
if (m_videoenable)
screen.container().add_quad(0.0f, 0.0f, 1.0f, 1.0f, rgb_t(0xff,0xff,0xff,0xff), m_videotex, PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1));
// add the overlay
if (m_overenable && overbitmap.valid())
{
float x0 = 0.5f - 0.5f * m_overscalex + m_overposx;
float y0 = 0.5f - 0.5f * m_overscaley + m_overposy;
float x1 = x0 + m_overscalex;
float y1 = y0 + m_overscaley;
screen.container().add_quad(x0, y0, x1, y1, rgb_t(0xff,0xff,0xff,0xff), m_overtex, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_SCREENTEX(1));
}
// swap to the next bitmap
m_overindex = (m_overindex + 1) % ARRAY_LENGTH(m_overbitmap);
}
return 0;
}
示例2:
int tc0100scn_device::tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, uint32_t priority )
{
int disable = m_ctrl[6] & 0xf7;
rectangle clip = cliprect;
clip &= screen.visible_area();
#if 0
if (disable != 0 && disable != 3 && disable != 7)
popmessage("layer disable = %x",disable);
#endif
switch (layer)
{
case 0:
if (disable & 0x01)
return 1;
m_tilemap[0][m_dblwidth]->draw(screen, bitmap, clip, flags, priority);
break;
case 1:
if (disable & 0x02)
return 1;
tilemap_draw_fg(screen, bitmap, clip, m_tilemap[1][m_dblwidth], flags, priority);
break;
case 2:
if (disable & 0x04)
return 1;
m_tilemap[2][m_dblwidth]->draw(screen, bitmap, clip, flags, priority);
break;
}
return 0;
}
示例3: screen_update_angelkds
UINT32 angelkds_state::screen_update_angelkds(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const rectangle &visarea = screen.visible_area();
rectangle clip;
bitmap.fill(0x3f, cliprect); /* is there a register controling the colour?, we currently use the last colour of the tx palette */
/* draw top of screen */
clip.set(8*0, 8*16-1, visarea.min_y, visarea.max_y);
if ((m_layer_ctrl & 0x80) == 0x00)
m_bgtop_tilemap->draw(screen, bitmap, clip, 0, 0);
draw_sprites(bitmap, clip, 0x80);
if ((m_layer_ctrl & 0x20) == 0x00)
m_tx_tilemap->draw(screen, bitmap, clip, 0, 0);
/* draw bottom of screen */
clip.set(8*16, 8*32-1, visarea.min_y, visarea.max_y);
if ((m_layer_ctrl & 0x40) == 0x00)
m_bgbot_tilemap->draw(screen, bitmap, clip, 0, 0);
draw_sprites(bitmap, clip, 0x40);
if ((m_layer_ctrl & 0x20) == 0x00)
m_tx_tilemap->draw(screen, bitmap, clip, 0, 0);
return 0;
}
示例4: machine
UINT32 m20_state::screen_update_m20(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int x,y,i;
UINT8 pen;
UINT32 count;
bitmap.fill(get_black_pen(machine()), cliprect);
count = (0);
for(y=0; y<256; y++)
{
for(x=0; x<512; x+=16)
{
for (i = 0; i < 16; i++)
{
pen = (m_p_videoram[count]) >> (15 - i) & 1;
if (screen.visible_area().contains(x + i, y))
bitmap.pix32(y, x + i) = machine().pens[pen];
}
count++;
}
}
return 0;
}
示例5: machine
UINT32 multi16_state::screen_update_multi16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int x,y;
int count;
int xi;
count = 0;
for(y=0;y<mc6845_v_display*8;y++)
{
for(x=0;x<(mc6845_h_display*8)/16;x++)
{
for(xi=0;xi<16;xi++)
{
int dot = (BITSWAP16(m_p_vram[count],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8) >> (15-xi)) & 0x1;
if(screen.visible_area().contains(x*16+xi, y))
bitmap.pix16(y, x*16+xi) = machine().pens[dot];
}
count++;
}
}
return 0;
}
示例6: screen_update
UINT32 vector_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
UINT32 flags = PRIMFLAG_ANTIALIAS(machine().options().antialias() ? 1 : 0) | PRIMFLAG_BLENDMODE(BLENDMODE_ADD) | PRIMFLAG_VECTOR(1);
const rectangle &visarea = screen.visible_area();
float xscale = 1.0f / (65536 * visarea.width());
float yscale = 1.0f / (65536 * visarea.height());
float xoffs = (float)visarea.min_x;
float yoffs = (float)visarea.min_y;
point *curpoint;
int lastx = 0;
int lasty = 0;
curpoint = m_vector_list.get();
screen.container().empty();
screen.container().add_rect(0.0f, 0.0f, 1.0f, 1.0f, rgb_t(0xff,0x00,0x00,0x00), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_VECTORBUF(1));
for (int i = 0; i < m_vector_index; i++)
{
render_bounds coords;
float intensity = (float)curpoint->intensity / 255.0f;
float intensity_weight = normalized_sigmoid(intensity, vector_options::s_beam_intensity_weight);
// check for static intensity
float beam_width = m_min_intensity == m_max_intensity
? vector_options::s_beam_width_min
: vector_options::s_beam_width_min + intensity_weight * (vector_options::s_beam_width_max - vector_options::s_beam_width_min);
// normalize width
beam_width *= 1.0f / (float)VECTOR_WIDTH_DENOM;
coords.x0 = ((float)lastx - xoffs) * xscale;
coords.y0 = ((float)lasty - yoffs) * yscale;
coords.x1 = ((float)curpoint->x - xoffs) * xscale;
coords.y1 = ((float)curpoint->y - yoffs) * yscale;
if (curpoint->intensity != 0)
{
screen.container().add_line(
coords.x0, coords.y0, coords.x1, coords.y1,
beam_width,
(curpoint->intensity << 24) | (curpoint->col & 0xffffff),
flags);
}
lastx = curpoint->x;
lasty = curpoint->y;
curpoint++;
}
return 0;
}
示例7: get_lightgun_pos
static int get_lightgun_pos(screen_device &screen, int player, int *x, int *y)
{
const rectangle &visarea = screen.visible_area();
int xpos = screen.ioport((player == 0) ? "GUN1X" : "GUN2X")->read_safe(0xffffffff);
int ypos = screen.ioport((player == 0) ? "GUN1Y" : "GUN2Y")->read_safe(0xffffffff);
if (xpos == -1 || ypos == -1)
return FALSE;
*x = visarea.min_x + xpos * visarea.width() / 255;
*y = visarea.min_y + ypos * visarea.height() / 255;
return TRUE;
}
示例8: screen_update_rscreen
uint32_t nwktr_state::screen_update_rscreen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(m_palette->pen(0), cliprect);
m_voodoo[1]->voodoo_update(bitmap, cliprect);
const rectangle &visarea = screen.visible_area();
const rectangle tilemap_rect(visarea.min_x, visarea.max_x, visarea.min_y + 16, visarea.max_y);
m_k001604->draw_front_layer(screen, bitmap, tilemap_rect);
draw_7segment_led(bitmap, 3, 3, m_led_reg0);
draw_7segment_led(bitmap, 9, 3, m_led_reg1);
return 0;
}
示例9: screen_update_jackie
UINT32 jackie_state::screen_update_jackie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i,j;
int startclipmin = 0;
const rectangle &visarea = screen.visible_area();
bitmap.fill(get_black_pen(machine()), cliprect);
for (i=0;i < 0x40;i++)
{
m_reel1_tilemap->set_scrolly(i, m_bg_scroll[i+0x000]);
m_reel2_tilemap->set_scrolly(i, m_bg_scroll[i+0x040]);
m_reel3_tilemap->set_scrolly(i, m_bg_scroll[i+0x080]);
}
for (j=0; j < 0x100-1; j++)
{
rectangle clip;
int rowenable = m_bg_scroll2[j];
/* draw top of screen */
clip.set(visarea.min_x, visarea.max_x, startclipmin, startclipmin+1);
if (rowenable==0)
{
m_reel1_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==1)
{
m_reel2_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==2)
{
m_reel3_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==3)
{
}
startclipmin+=1;
}
m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
示例10: screen_update_nwktr
UINT32 nwktr_state::screen_update_nwktr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
device_t *voodoo = machine().device("voodoo");
bitmap.fill(machine().pens[0], cliprect);
voodoo_update(voodoo, bitmap, cliprect);
const rectangle &visarea = screen.visible_area();
const rectangle tilemap_rect(visarea.min_x, visarea.max_x, visarea.min_y+16, visarea.max_y);
k001604_draw_front_layer(m_k001604, bitmap, tilemap_rect);
draw_7segment_led(bitmap, 3, 3, m_led_reg0);
draw_7segment_led(bitmap, 9, 3, m_led_reg1);
return 0;
}
示例11: screen_update_nwktr
UINT32 nwktr_state::screen_update_nwktr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
voodoo_device *voodoo = (voodoo_device*)machine().device("voodoo0");
bitmap.fill(m_palette->pen(0), cliprect);
voodoo->voodoo_update(bitmap, cliprect);
const rectangle &visarea = screen.visible_area();
const rectangle tilemap_rect(visarea.min_x, visarea.max_x, visarea.min_y+16, visarea.max_y);
m_k001604->draw_front_layer(screen, bitmap, tilemap_rect);
draw_7segment_led(bitmap, 3, 3, m_led_reg0);
draw_7segment_led(bitmap, 9, 3, m_led_reg1);
return 0;
}
示例12: screen_update_mogura
UINT32 mogura_state::screen_update_mogura(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const rectangle &visarea = screen.visible_area();
/* tilemap layout is a bit strange ... */
rectangle clip = visarea;
clip.max_x = 256 - 1;
m_tilemap->set_scrollx(0, 256);
m_tilemap->draw(screen, bitmap, clip, 0, 0);
clip.min_x = 256;
clip.max_x = 512 - 1;
m_tilemap->set_scrollx(0, -128);
m_tilemap->draw(screen, bitmap, clip, 0, 0);
return 0;
}
示例13: screen_update_flkatck
UINT32 flkatck_state::screen_update_flkatck(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rectangle clip[2];
const rectangle &visarea = screen.visible_area();
address_space &space = machine().driver_data()->generic_space();
if (m_flipscreen)
{
clip[0] = visarea;
clip[0].max_x -= 40;
clip[1] = visarea;
clip[1].min_x = clip[1].max_x - 40;
m_k007121_tilemap[0]->set_scrollx(0, k007121_ctrlram_r(m_k007121, space, 0) - 56 );
m_k007121_tilemap[0]->set_scrolly(0, k007121_ctrlram_r(m_k007121, space, 2));
m_k007121_tilemap[1]->set_scrollx(0, -16);
}
else
{
clip[0] = visarea;
clip[0].min_x += 40;
clip[1] = visarea;
clip[1].max_x = 39;
clip[1].min_x = 0;
m_k007121_tilemap[0]->set_scrollx(0, k007121_ctrlram_r(m_k007121, space, 0) - 40 );
m_k007121_tilemap[0]->set_scrolly(0, k007121_ctrlram_r(m_k007121, space, 2));
m_k007121_tilemap[1]->set_scrollx(0, 0);
}
/* compute clipping */
clip[0] &= cliprect;
clip[1] &= cliprect;
/* draw the graphics */
m_k007121_tilemap[0]->draw(bitmap, clip[0], 0, 0);
k007121_sprites_draw(m_k007121, bitmap, cliprect, machine().gfx[0], NULL, &m_k007121_ram[0x1000], 0, 40, 0, (UINT32)-1);
m_k007121_tilemap[1]->draw(bitmap, clip[1], 0, 0);
return 0;
}
示例14: screen_update_flkatck
uint32_t flkatck_state::screen_update_flkatck(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rectangle clip[2];
const rectangle &visarea = screen.visible_area();
address_space &space = machine().dummy_space();
if (m_flipscreen)
{
clip[0] = visarea;
clip[0].max_x -= 40;
clip[1] = visarea;
clip[1].min_x = clip[1].max_x - 40;
m_k007121_tilemap[0]->set_scrollx(0, m_k007121->ctrlram_r(space, 0) - 56 );
m_k007121_tilemap[0]->set_scrolly(0, m_k007121->ctrlram_r(space, 2));
m_k007121_tilemap[1]->set_scrollx(0, -16);
}
else
{
clip[0] = visarea;
clip[0].min_x += 40;
clip[1] = visarea;
clip[1].max_x = 39;
clip[1].min_x = 0;
m_k007121_tilemap[0]->set_scrollx(0, m_k007121->ctrlram_r(space, 0) - 40 );
m_k007121_tilemap[0]->set_scrolly(0, m_k007121->ctrlram_r(space, 2));
m_k007121_tilemap[1]->set_scrollx(0, 0);
}
/* compute clipping */
clip[0] &= cliprect;
clip[1] &= cliprect;
/* draw the graphics */
m_k007121_tilemap[0]->draw(screen, bitmap, clip[0], 0, 0);
m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), m_gfxdecode->palette(), &m_k007121_ram[0x1000], 0, 40, 0, screen.priority(), (uint32_t)-1, true);
m_k007121_tilemap[1]->draw(screen, bitmap, clip[1], 0, 0);
return 0;
}
示例15: screen_update_blaster
UINT32 williams_state::screen_update_blaster(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
rgb_t pens[16];
int x, y;
/* precompute the palette */
for (x = 0; x < 16; x++)
pens[x] = m_palette_lookup[m_generic_paletteram_8[x]];
/* if we're blitting from the top, start with a 0 for color 0 */
if (cliprect.min_y == screen.visible_area().min_y || !(m_blaster_video_control & 1))
m_blaster_color0 = m_palette_lookup[m_blaster_palette_0[0] ^ 0xff];
/* loop over rows */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
int erase_behind = m_blaster_video_control & m_blaster_scanline_control[y] & 2;
UINT8 *source = &m_videoram[y];
UINT32 *dest = &bitmap.pix32(y);
/* latch a new color0 pen? */
if (m_blaster_video_control & m_blaster_scanline_control[y] & 1)
m_blaster_color0 = m_palette_lookup[m_blaster_palette_0[y] ^ 0xff];
/* loop over columns */
for (x = cliprect.min_x & ~1; x <= cliprect.max_x; x += 2)
{
int pix = source[(x/2) * 256];
/* clear behind us if requested */
if (erase_behind)
source[(x/2) * 256] = 0;
/* now draw */
dest[x+0] = (pix & 0xf0) ? pens[pix >> 4] : m_blaster_color0 | pens[0];
dest[x+1] = (pix & 0x0f) ? pens[pix & 0x0f] : m_blaster_color0 | pens[0];
}
}
return 0;
}