diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-09-25 21:56:51 +0200 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2015-11-23 13:50:44 +0000 |
commit | 029b4beb735ccde680ff2599d750f1b3d61e07b8 (patch) | |
tree | 66f12a323047de87427c10d698321dcf733ad7a1 /server/utils.c | |
parent | cfa022c656c35fe56643ce51b3b54e649cfe2159 (diff) | |
download | spice-029b4beb735ccde680ff2599d750f1b3d61e07b8.tar.gz spice-029b4beb735ccde680ff2599d750f1b3d61e07b8.tar.xz spice-029b4beb735ccde680ff2599d750f1b3d61e07b8.zip |
worker: move dcc_add_surface_area_image
Author: Marc-André Lureau <marcandre.lureau@gmail.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
Diffstat (limited to 'server/utils.c')
-rw-r--r-- | server/utils.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/server/utils.c b/server/utils.c new file mode 100644 index 00000000..66df86ff --- /dev/null +++ b/server/utils.c @@ -0,0 +1,50 @@ +/* + Copyright (C) 2009-2015 Red Hat, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see <http://www.gnu.org/licenses/>. +*/ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <glib.h> +#include "utils.h" + +int rgb32_data_has_alpha(int width, int height, size_t stride, + uint8_t *data, int *all_set_out) +{ + uint32_t *line, *end, alpha; + int has_alpha; + + has_alpha = FALSE; + while (height-- > 0) { + line = (uint32_t *)data; + end = line + width; + data += stride; + while (line != end) { + alpha = *line & 0xff000000U; + if (alpha != 0) { + has_alpha = TRUE; + if (alpha != 0xff000000U) { + *all_set_out = FALSE; + return TRUE; + } + } + line++; + } + } + + *all_set_out = has_alpha; + return has_alpha; +} |