コード例 #1
0
ファイル: svga.c プロジェクト: Pa0l0ne/Amiga360
static void init_colors (void)
{
    int i;
    if (need_dither) {
	setup_dither (bitdepth, get_color);
    } else {
	int rw = 5, gw = 5, bw = 5;
	colors_allocated = 0;
	if (currprefs.color_mode == 2) gw = 6;

	switch (gfxvidinfo.pixbytes) {
	 case 4:
	    alloc_colors64k (8, 8, 8, 16, 8, 0, 0, 0, 0, 0);
	    break;
	 case 2:
	    alloc_colors64k (rw, gw, bw, gw+bw, bw, 0, 0, 0, 0, 0);
	    break;
	 case 1:
	    alloc_colors256 (get_color);
	    break;
	 default:
	    abort();
	}
    }
}
コード例 #2
0
ファイル: gfx-pepper.c プロジェクト: Yamakuzure/PUAE
static int32_t init_colors (void)
{
    if (gfxvidinfo.pixbytes > 1) {
        int32_t red_bits    = bitsInMask(Rmask);
        int32_t green_bits  = bitsInMask(Gmask);
        int32_t blue_bits   = bitsInMask(Bmask);
        int32_t red_shift   = maskShift(Rmask);
        int32_t green_shift = maskShift(Gmask);
        int32_t blue_shift  = maskShift(Bmask);
        if (Amask == 0) {
            alloc_colors64k (red_bits, green_bits, blue_bits,
                    red_shift, green_shift, blue_shift,
                    0, 0, 0, 0);
        } else {
            int32_t alpha_shift = maskShift(Amask);
            int32_t alpha_bits  = bitsInMask(Amask);
            alloc_colors64k (red_bits, green_bits, blue_bits,
                    red_shift, green_shift, blue_shift,
                    alpha_bits, alpha_shift, /* alpha = */ 0xffffffff, 0);
        }
    } else {
        DEBUG_LOG ("init_colors: only 256 colors\n");
        return 0;
    }
    return 1;
}
コード例 #3
0
ファイル: video.cpp プロジェクト: eehrich/fs-uae
static int init_colors (void)
{
    write_log("init_colors\n");
    alloc_colors64k(g_red_bits, g_green_bits, g_blue_bits, g_red_shift,
            g_green_shift, g_blue_shift, 0, 0, 0, 0);
    return 1;
}
コード例 #4
0
ファイル: svga.c プロジェクト: bernds/UAE
static void init_colors (void)
{
    int i;
    if (need_dither) {
	setup_dither (bitdepth, get_color);
    } else {
	int rw = 5, gw = 5, bw = 5;
	colors_allocated = 0;
	if (currprefs.color_mode == 2) gw = 6;

	switch (gfxvidinfo.pixbytes) {
	 case 4:
	    alloc_colors64k (8, 8, 8, 16, 8, 0);
	    break;
	 case 2:
	    alloc_colors64k (rw, gw, bw, gw+bw, bw, 0);
	    break;
	 case 1:
	    alloc_colors256 (get_color);
	    break;
	 default:
	    abort();
	}
    }
    switch (gfxvidinfo.pixbytes) {
     case 2:
	for (i = 0; i < 4096; i++)
	    xcolors[i] = xcolors[i] * 0x00010001;
	gfxvidinfo.can_double = 1;
	break;
     case 1:
	for (i = 0; i < 4096; i++)
	    xcolors[i] = xcolors[i] * 0x01010101;
	gfxvidinfo.can_double = 1;
	break;
     default:
	gfxvidinfo.can_double = 0;
	break;
    }
}
コード例 #5
0
ファイル: xwin.c プロジェクト: CrashSerious/PiUAE
static int init_colors (void)
{
    if (visualInfo.VI_CLASS == TrueColor) {
	red_bits = bitsInMask (visualInfo.red_mask);
	green_bits = bitsInMask (visualInfo.green_mask);
	blue_bits = bitsInMask (visualInfo.blue_mask);
	red_shift = maskShift (visualInfo.red_mask);
	green_shift = maskShift (visualInfo.green_mask);
	blue_shift = maskShift (visualInfo.blue_mask);
    }

    if (need_dither) {
	if (bitdepth == 1)
	    setup_greydither (1, get_color);
	else
	    setup_dither (bitdepth, get_color);
    } else {
	if (bitdepth != 8 && bitdepth != 12 && bitdepth != 15
	    && bitdepth != 16 && bitdepth != 24) {
	    write_log ("Unsupported bit depth (%d)\n", bitdepth);
	    return 0;
	}

	switch (visualInfo.VI_CLASS) {
	 case TrueColor:
	    alloc_colors64k (red_bits, green_bits, blue_bits, red_shift,
			     green_shift, blue_shift, 0, 0, 0,
			     inverse_byte_order);

	    XParseColor (display, cmap, "#000000", &black);
	    if (! XAllocColor (display, cmap, &black))
		write_log ("Whoops??\n");
	    XParseColor (display, cmap, "#ffffff", &white);
	    if (! XAllocColor (display, cmap, &white))
		write_log ("Whoops??\n");
	    break;

	 case GrayScale:
	 case PseudoColor:
	    alloc_colors256 (get_color);
	    break;

	 default:
	    write_log ("Unsupported visual class (%d)\n", visualInfo.VI_CLASS);
	    return 0;
	}
    }
    return 1;
}
コード例 #6
0
ファイル: raspi_gfx.cpp プロジェクト: lubomyr/uae4arm
static int init_colors(void)
{
	int red_bits, green_bits, blue_bits;
	int red_shift, green_shift, blue_shift;

	/* Truecolor: */
	red_bits = bits_in_mask(prSDLScreen->format->Rmask);
	green_bits = bits_in_mask(prSDLScreen->format->Gmask);
	blue_bits = bits_in_mask(prSDLScreen->format->Bmask);
	red_shift = mask_shift(prSDLScreen->format->Rmask);
	green_shift = mask_shift(prSDLScreen->format->Gmask);
	blue_shift = mask_shift(prSDLScreen->format->Bmask);
	alloc_colors64k(red_bits, green_bits, blue_bits, red_shift, green_shift, blue_shift);
	notice_new_xcolors();

	return 1;
}
コード例 #7
0
ファイル: pandora_gfx.cpp プロジェクト: abrugsch/uae4arm-rpi
static int init_colors (void)
{
	int i;
  int red_bits, green_bits, blue_bits;
  int red_shift, green_shift, blue_shift;

	/* Truecolor: */
	red_bits = bitsInMask(prSDLScreen->format->Rmask);
	green_bits = bitsInMask(prSDLScreen->format->Gmask);
	blue_bits = bitsInMask(prSDLScreen->format->Bmask);
	red_shift = maskShift(prSDLScreen->format->Rmask);
	green_shift = maskShift(prSDLScreen->format->Gmask);
	blue_shift = maskShift(prSDLScreen->format->Bmask);
	alloc_colors64k (red_bits, green_bits, blue_bits, red_shift, green_shift, blue_shift, 0);
	notice_new_xcolors();
	for (i = 0; i < 4096; i++)
		xcolors[i] = xcolors[i] * 0x00010001;

	return 1;
}
コード例 #8
0
ファイル: sdlgfx.cpp プロジェクト: JoJoBond/J-UAE4ALL
static int init_colors (void)
{
	int i;

#ifdef DEBUG_GFX
	dbg("Function: init_colors");
#endif

		/* Truecolor: */
		red_bits = bitsInMask(prSDLScreen->format->Rmask);
		green_bits = bitsInMask(prSDLScreen->format->Gmask);
		blue_bits = bitsInMask(prSDLScreen->format->Bmask);
		red_shift = maskShift(prSDLScreen->format->Rmask);
		green_shift = maskShift(prSDLScreen->format->Gmask);
		blue_shift = maskShift(prSDLScreen->format->Bmask);
		alloc_colors64k (red_bits, green_bits, blue_bits, red_shift, green_shift, blue_shift);
		for (i = 0; i < 4096; i++)
			xcolors[i] = xcolors[i] * 0x00010001;

	return 1;
}
コード例 #9
0
ファイル: glgfx.c プロジェクト: BackupTheBerlios/arp2-svn
static int viewport_setup(void) {
  intptr_t width, height, format, rowbytes, pixbytes;
  intptr_t rb = 0, gb = 0, bb = 0, ab = 0;
  intptr_t rs = 0, gs = 0, bs = 0, as = 0;

  printf("creating bitmap\n");

  bitmap = glgfx_bitmap_create(glgfx_bitmap_attr_width,  bm_width,
			       glgfx_bitmap_attr_height, bm_height,
			       glgfx_bitmap_attr_format, bm_format,
			       glgfx_tag_end);

  if (bitmap == NULL) {
    return 0;
  }

  printf("created bitmap %d %d format %08lx\n", bm_width, bm_height, bm_format);

  uint32_t* buffer;
  
  if ((buffer = glgfx_bitmap_lock(bitmap, false, true, glgfx_tag_end)) != NULL) {
    int x, y;

    for (y = 0; y < bm_height; y += 1) {
      for (x = 0; x < bm_width; x += 1) {
	buffer[x+y*bm_width] = glgfx_pixel_create_a8b8g8r8(y*255/bm_height, 0, x*255/bm_width, 128);
      }
    }

    if (glgfx_bitmap_unlock(bitmap, glgfx_tag_end)) {
      printf("updated bitmap\n");
    }
  }


  glgfx_bitmap_getattr(bitmap, glgfx_bitmap_attr_width,       &width);
  glgfx_bitmap_getattr(bitmap, glgfx_bitmap_attr_height,      &height);
  glgfx_bitmap_getattr(bitmap, glgfx_bitmap_attr_format,      &format);
  glgfx_bitmap_getattr(bitmap, glgfx_bitmap_attr_bytesperrow, &rowbytes);

  glgfx_pixel_getattr(format, glgfx_pixel_attr_bytesperpixel, &pixbytes);
  
  glgfx_pixel_getattr(format, glgfx_pixel_attr_redbits,       &rb);
  glgfx_pixel_getattr(format, glgfx_pixel_attr_greenbits,     &gb);
  glgfx_pixel_getattr(format, glgfx_pixel_attr_bluebits,      &bb);
  glgfx_pixel_getattr(format, glgfx_pixel_attr_alphabits,     &ab);
  glgfx_pixel_getattr(format, glgfx_pixel_attr_redshift,      &rs);
  glgfx_pixel_getattr(format, glgfx_pixel_attr_greenshift,    &gs);
  glgfx_pixel_getattr(format, glgfx_pixel_attr_blueshift,     &bs);
  glgfx_pixel_getattr(format, glgfx_pixel_attr_alphashift,    &as);
  
  alloc_colors64k(rb, gb, bb, rs, gs, bs, ab, as, ((1 << ab) - 1), 0 /* byte swap? */ );

  // Set up callback functions
  gfxvidinfo.flush_line         = _flush_line;
  gfxvidinfo.flush_block        = _flush_block;
  gfxvidinfo.flush_screen       = _flush_screen;
  gfxvidinfo.flush_clear_screen = _flush_clear_screen;
  gfxvidinfo.lockscr            = _lockscr;
  gfxvidinfo.unlockscr          = _unlockscr;

#ifdef PICASSO96
  if (!screen_is_picasso) {
#endif
    gfxvidinfo.width         = width;
    gfxvidinfo.height        = height;
    gfxvidinfo.pixbytes      = pixbytes;
    gfxvidinfo.rowbytes      = rowbytes;

    gfxvidinfo.bufmem        = NULL;
    gfxvidinfo.emergmem      = malloc(rowbytes);
    gfxvidinfo.maxblocklines = height;
//    gfxvidinfo.maxblocklines = 0;
    gfxvidinfo.linemem       = NULL;

    reset_drawing ();
    
#ifdef PICASSO96
  }
  else {
    picasso_has_invalid_lines	= 0;
    picasso_invalid_start	= height + 1;
    picasso_invalid_stop	= -1;
    
    picasso_vidinfo.width       = width;
    picasso_vidinfo.height      = height;
    picasso_vidinfo.depth       = rb + gb + bb + ab;
    picasso_vidinfo.pixbytes    = pixbytes;
    picasso_vidinfo.rowbytes    = rowbytes;
    picasso_vidinfo.extra_mem	= 1;

    p96_buffer = malloc(width*height*pixbytes);
    p96_bytes_per_row = width*pixbytes;
    
    memset (picasso_invalid_lines, 0, sizeof picasso_invalid_lines);
  }
#endif

  if (fullscreen) {
    rasinfo = glgfx_viewport_addbitmap(viewport, bitmap, 
				       glgfx_rasinfo_attr_x,      0,
				       glgfx_rasinfo_attr_y,      0,
				       glgfx_rasinfo_attr_width,  real_width, 
				       glgfx_rasinfo_attr_height, real_height, 
				       glgfx_tag_end);
  }
  else {
    rasinfo = glgfx_viewport_addbitmap(viewport, bitmap, 
				       glgfx_rasinfo_attr_x,      (real_width - bm_width) / 2,
				       glgfx_rasinfo_attr_y,      (real_height - bm_height) / 2,
				       glgfx_rasinfo_attr_width,  width,
				       glgfx_rasinfo_attr_height, height,
				       glgfx_tag_end);
  }

  if (rasinfo == NULL) {
    return 0;
  }
  
  inputdevice_release_all_keys();
  reset_hotkeys();

  printf("viewport_setup -> 1\n");
  return 1;
}