summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-04-21 12:03:06 +0200
committerAlexander Larsson <alexl@redhat.com>2010-04-23 16:36:35 +0200
commit2d6fbde89b08b7dd4a2050c71fe6663ea8e9c2d9 (patch)
tree7a21036fa2fe975dac3462a075ee968eb3ec267f
parent98d91203c5d2f6f7249f38941466857b6a566f5d (diff)
downloadspice-2d6fbde89b08b7dd4a2050c71fe6663ea8e9c2d9.tar.gz
spice-2d6fbde89b08b7dd4a2050c71fe6663ea8e9c2d9.tar.xz
spice-2d6fbde89b08b7dd4a2050c71fe6663ea8e9c2d9.zip
Move RedPixmap::Format to RedDrawable::Format
We need to know the format for other drawables too (like for instance the native format of a window), so we're pushing this down. This changes a bunch of references to be RedDrawable::, but not all. The the old RedPixmap:: references still work, but will be phased out.
-rw-r--r--client/gui/gui.cpp2
-rw-r--r--client/red_drawable.h52
-rw-r--r--client/red_gdi_canvas.cpp2
-rw-r--r--client/red_gl_canvas.cpp2
-rw-r--r--client/red_pixmap.h51
-rw-r--r--client/windows/red_pixmap.cpp4
-rw-r--r--client/windows/red_pixmap_cairo.cpp6
-rw-r--r--client/windows/red_pixmap_gdi.cpp8
-rw-r--r--client/x11/red_pixmap_gl.cpp4
9 files changed, 66 insertions, 65 deletions
diff --git a/client/gui/gui.cpp b/client/gui/gui.cpp
index 6debdd1b..30b864d3 100644
--- a/client/gui/gui.cpp
+++ b/client/gui/gui.cpp
@@ -888,7 +888,7 @@ GUI::GUI(Application& app, Application::State state)
: ScreenLayer (SCREEN_LAYER_GUI, false)
, _app (app)
, _state (state)
- , _pixmap (new RedPixmapCairo(MAIN_GUI_WIDTH, MAIN_GUI_HEIGHT, RedPixmap::RGB32, true, NULL))
+ , _pixmap (new RedPixmapCairo(MAIN_GUI_WIDTH, MAIN_GUI_HEIGHT, RedDrawable::RGB32, true, NULL))
, _renderer (new CEGUI::SoftRenderer(_pixmap->get_data(), MAIN_GUI_WIDTH, MAIN_GUI_HEIGHT,
_pixmap->get_stride()))
, _gui_system (new CEGUI::System(_renderer, new CEGUIResourceProvider()))
diff --git a/client/red_drawable.h b/client/red_drawable.h
index b6538f11..5cea85e8 100644
--- a/client/red_drawable.h
+++ b/client/red_drawable.h
@@ -18,7 +18,9 @@
#ifndef _H_RED_DRAWABLE
#define _H_RED_DRAWABLE
+#include <pixman_utils.h>
#include "pixels_source.h"
+#include "utils.h"
typedef uint32_t rgb32_t;
@@ -47,6 +49,56 @@ public:
RedDrawable() {}
virtual ~RedDrawable() {}
+ enum Format {
+ ARGB32,
+ RGB32,
+ RGB16_555,
+ RGB16_565,
+ A1,
+ };
+
+ static int format_to_bpp(Format format) {
+ if (format == RedDrawable::A1) {
+ return 1;
+ } else if (format == RGB16_555 || format == RGB16_565) {
+ return 16;
+ } else {
+ return 32;
+ }
+ }
+
+ static pixman_format_code_t format_to_pixman(Format format) {
+ switch (format) {
+ case RedDrawable::ARGB32:
+ return PIXMAN_a8r8g8b8;
+ case RedDrawable::RGB32:
+ return PIXMAN_x8r8g8b8;
+ case RedDrawable::RGB16_555:
+ return PIXMAN_x1r5g5b5;
+ case RedDrawable::RGB16_565:
+ return PIXMAN_r5g6b5;
+ case RedDrawable::A1:
+ return PIXMAN_a1;
+ default:
+ THROW("unsupported format %d", format);
+ }
+ }
+
+ static Format format_from_surface(uint32_t format) {
+ switch (format) {
+ case SPICE_SURFACE_FMT_16_555:
+ return RedDrawable::RGB16_555;
+ case SPICE_SURFACE_FMT_16_565:
+ return RedDrawable::RGB16_565;
+ case SPICE_SURFACE_FMT_32_xRGB:
+ return RedDrawable::RGB32;
+ case SPICE_SURFACE_FMT_32_ARGB:
+ return RedDrawable::ARGB32;
+ default:
+ THROW("Unsupported RedPixman format");
+ }
+ }
+
enum CombineOP {
OP_COPY,
OP_AND,
diff --git a/client/red_gdi_canvas.cpp b/client/red_gdi_canvas.cpp
index ae73ea2c..0ea53ed4 100644
--- a/client/red_gdi_canvas.cpp
+++ b/client/red_gdi_canvas.cpp
@@ -30,7 +30,7 @@ GDICanvas::GDICanvas(int width, int height, uint32_t format,
, _pixmap (0)
{
_pixmap = new RedPixmapGdi(width, height,
- RedPixmap::format_from_surface(format),
+ RedDrawable::format_from_surface(format),
true, NULL);
if (!(_canvas = gdi_canvas_create(width, height, _pixmap->get_dc(),
&_pixmap->get_mutex(),
diff --git a/client/red_gl_canvas.cpp b/client/red_gl_canvas.cpp
index dc743cfb..13e47234 100644
--- a/client/red_gl_canvas.cpp
+++ b/client/red_gl_canvas.cpp
@@ -33,7 +33,7 @@ GCanvas::GCanvas(int width, int height, uint32_t format, RedWindow *win,
, _textures_lost (false)
{
_pixmap = new RedPixmapGL(width, height,
- RedPixmap::format_from_surface(format),
+ RedDrawable::format_from_surface(format),
true, win, rendertype);
if (!(_canvas = gl_canvas_create(width, height,
SPICE_SURFACE_FMT_DEPTH(format),
diff --git a/client/red_pixmap.h b/client/red_pixmap.h
index c81c2f77..a07c59cf 100644
--- a/client/red_pixmap.h
+++ b/client/red_pixmap.h
@@ -21,60 +21,9 @@
#include "red_drawable.h"
#include "utils.h"
-#include <pixman_utils.h>
class RedPixmap: public RedDrawable {
public:
- enum Format {
- ARGB32,
- RGB32,
- RGB16_555,
- RGB16_565,
- A1,
- };
-
- static int format_to_bpp(Format format) {
- if (format == RedPixmap::A1) {
- return 1;
- } else if (format == RGB16_555 || format == RGB16_565) {
- return 16;
- } else {
- return 32;
- }
- }
-
- static pixman_format_code_t format_to_pixman(Format format) {
- switch (format) {
- case RedPixmap::ARGB32:
- return PIXMAN_a8r8g8b8;
- case RedPixmap::RGB32:
- return PIXMAN_x8r8g8b8;
- case RedPixmap::RGB16_555:
- return PIXMAN_x1r5g5b5;
- case RedPixmap::RGB16_565:
- return PIXMAN_r5g6b5;
- case RedPixmap::A1:
- return PIXMAN_a1;
- default:
- THROW("unsupported format %d", format);
- }
- }
-
- static Format format_from_surface(uint32_t format) {
- switch (format) {
- case SPICE_SURFACE_FMT_16_555:
- return RedPixmap::RGB16_555;
- case SPICE_SURFACE_FMT_16_565:
- return RedPixmap::RGB16_565;
- case SPICE_SURFACE_FMT_32_xRGB:
- return RedPixmap::RGB32;
- case SPICE_SURFACE_FMT_32_ARGB:
- return RedPixmap::ARGB32;
- default:
- THROW("Unsupported RedPixman format");
- }
- }
-
RedPixmap(int width, int height, Format format, bool top_bottom);
virtual ~RedPixmap();
diff --git a/client/windows/red_pixmap.cpp b/client/windows/red_pixmap.cpp
index 574d2851..2f8655c4 100644
--- a/client/windows/red_pixmap.cpp
+++ b/client/windows/red_pixmap.cpp
@@ -20,7 +20,7 @@
#include "debug.h"
#include "utils.h"
-RedPixmap::RedPixmap(int width, int height, RedPixmap::Format format,
+RedPixmap::RedPixmap(int width, int height, RedDrawable::Format format,
bool top_bottom)
: _format (format)
, _width (width)
@@ -37,6 +37,6 @@ RedPixmap::~RedPixmap()
bool RedPixmap::is_big_endian_bits()
{
- return _format == RedPixmap::A1;
+ return _format == RedDrawable::A1;
}
diff --git a/client/windows/red_pixmap_cairo.cpp b/client/windows/red_pixmap_cairo.cpp
index 793d21ed..35fe89b8 100644
--- a/client/windows/red_pixmap_cairo.cpp
+++ b/client/windows/red_pixmap_cairo.cpp
@@ -33,7 +33,7 @@ RedPixmapCairo::RedPixmapCairo(int width, int height, RedPixmap::Format format,
bool top_bottom, RedWindow *win)
: RedPixmap(width, height, format, top_bottom)
{
- ASSERT(format == RedPixmap::ARGB32 || format == RedPixmap::RGB32 || format == RedPixmap::A1);
+ ASSERT(format == RedDrawable::ARGB32 || format == RedDrawable::RGB32 || format == RedDrawable::A1);
ASSERT(sizeof(RedPixmap_p) <= PIXELES_SOURCE_OPAQUE_SIZE);
struct {
@@ -60,10 +60,10 @@ RedPixmapCairo::RedPixmapCairo(int width, int height, RedPixmap::Format format,
#endif*/
bitmap_info.inf.bmiHeader.biPlanes = 1;
- bitmap_info.inf.bmiHeader.biBitCount = RedPixmap::format_to_bpp(format);
+ bitmap_info.inf.bmiHeader.biBitCount = RedDrawable::format_to_bpp(format);
bitmap_info.inf.bmiHeader.biCompression = BI_RGB;
switch (format) {
- case RedPixmap::A1:
+ case RedDrawable::A1:
bitmap_info.inf.bmiColors[0].rgbRed = 0;
bitmap_info.inf.bmiColors[0].rgbGreen = 0;
bitmap_info.inf.bmiColors[0].rgbBlue = 0;
diff --git a/client/windows/red_pixmap_gdi.cpp b/client/windows/red_pixmap_gdi.cpp
index 1c90f3d5..322d0209 100644
--- a/client/windows/red_pixmap_gdi.cpp
+++ b/client/windows/red_pixmap_gdi.cpp
@@ -29,10 +29,10 @@ struct RedPixmap_p {
HBITMAP prev_bitmap;
};
-RedPixmapGdi::RedPixmapGdi(int width, int height, RedPixmap::Format format, bool top_bottom)
+RedPixmapGdi::RedPixmapGdi(int width, int height, RedDrawable::Format format, bool top_bottom)
: RedPixmap(width, height, format, top_bottom, pallet)
{
- ASSERT(format == RedPixmap::ARGB32 || format == RedPixmap::RGB32 || format == RedPixmap::A1);
+ ASSERT(format == RedDrawable::ARGB32 || format == RedDrawable::RGB32 || format == RedDrawable::A1);
ASSERT(sizeof(RedPixmap_p) <= PIXELES_SOURCE_OPAQUE_SIZE);
struct {
@@ -46,10 +46,10 @@ RedPixmapGdi::RedPixmapGdi(int width, int height, RedPixmap::Format format, bool
bitmap_info.inf.bmiHeader.biHeight = top_bottom ? -_height : _height;
bitmap_info.inf.bmiHeader.biPlanes = 1;
- bitmap_info.inf.bmiHeader.biBitCount = RedPixmap::format_to_bpp(format);
+ bitmap_info.inf.bmiHeader.biBitCount = RedDrawable::format_to_bpp(format);
bitmap_info.inf.bmiHeader.biCompression = BI_RGB;
switch (format) {
- case RedPixmap::A1:
+ case RedDrawable::A1:
bitmap_info.inf.bmiColors[0].rgbRed = 0;
bitmap_info.inf.bmiColors[0].rgbGreen = 0;
bitmap_info.inf.bmiColors[0].rgbBlue = 0;
diff --git a/client/x11/red_pixmap_gl.cpp b/client/x11/red_pixmap_gl.cpp
index a3096517..7c859665 100644
--- a/client/x11/red_pixmap_gl.cpp
+++ b/client/x11/red_pixmap_gl.cpp
@@ -30,7 +30,7 @@
#include "red_window_p.h"
-RedPixmapGL::RedPixmapGL(int width, int height, RedPixmap::Format format,
+RedPixmapGL::RedPixmapGL(int width, int height, RedDrawable::Format format,
bool top_bottom, RedWindow *win,
RenderType rendertype)
: RedPixmap(width, height, format, top_bottom)
@@ -41,7 +41,7 @@ RedPixmapGL::RedPixmapGL(int width, int height, RedPixmap::Format format,
Win xwin;
//GLint max_texture_size;
- ASSERT(format == RedPixmap::ARGB32 || format == RedPixmap::RGB32 || format == RedPixmap::A1);
+ ASSERT(format == RedDrawable::ARGB32 || format == RedDrawable::RGB32 || format == RedDrawable::A1);
ASSERT(sizeof(RedDrawable_p) <= PIXELES_SOURCE_OPAQUE_SIZE);
((PixelsSource_p*)get_opaque())->type = PIXELS_SOURCE_TYPE_GL_TEXTURE;