diff options
author | Vincent Sanders <vince@kyllikki.org> | 2016-05-05 22:28:51 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2016-05-15 13:44:34 +0100 |
commit | d21447d096a320a08b3efb2b8768fad0dcdcfd64 (patch) | |
tree | 1a83814b7c9e94b2f13c473261f23dd3a17dee64 /riscos/image.c | |
parent | 2cbb337756d9af5bda4d594964d446439f602551 (diff) | |
download | netsurf-d21447d096a320a08b3efb2b8768fad0dcdcfd64.tar.gz netsurf-d21447d096a320a08b3efb2b8768fad0dcdcfd64.tar.bz2 |
move frontends into sub directory
Diffstat (limited to 'riscos/image.c')
-rw-r--r-- | riscos/image.c | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/riscos/image.c b/riscos/image.c deleted file mode 100644 index acbe62d98..000000000 --- a/riscos/image.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2004 John M Bell <jmb202@ecs.soton.ac.uk> - * - * This file is part of NetSurf, http://www.netsurf-browser.org/ - * - * NetSurf is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * NetSurf 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <stdbool.h> -#include <swis.h> -#include <stdlib.h> -#include <oslib/colourtrans.h> -#include <oslib/osspriteop.h> - -#include "utils/nsoption.h" -#include "utils/log.h" - -#include "riscos/image.h" -#include "riscos/gui.h" -#include "riscos/tinct.h" - -static bool image_redraw_tinct(osspriteop_id header, int x, int y, - int req_width, int req_height, int width, int height, - colour background_colour, bool repeatx, bool repeaty, - bool alpha, unsigned int tinct_options); -static bool image_redraw_os(osspriteop_id header, int x, int y, - int req_width, int req_height, int width, int height); - -/** - * Plot an image at the given coordinates using the method specified - * - * \param area The sprite area containing the sprite - * \param x Left edge of sprite - * \param y Top edge of sprite - * \param req_width The requested width of the sprite - * \param req_height The requested height of the sprite - * \param width The actual width of the sprite - * \param height The actual height of the sprite - * \param background_colour The background colour to blend to - * \param repeatx Repeat the image in the x direction - * \param repeaty Repeat the image in the y direction - * \param background Use background image settings (otherwise foreground) - * \param type The plot method to use - * \return true on success, false otherwise - */ -bool image_redraw(osspriteop_area *area, int x, int y, int req_width, - int req_height, int width, int height, - colour background_colour, - bool repeatx, bool repeaty, bool background, image_type type) -{ - unsigned int tinct_options; - - /* failed decompression/loading can result in no image being present */ - if (!area) - return false; - - osspriteop_id header = (osspriteop_id) - ((char*) area + area->first); - req_width *= 2; - req_height *= 2; - width *= 2; - height *= 2; - tinct_options = background ? nsoption_int(plot_bg_quality) : - nsoption_int(plot_fg_quality); - switch (type) { - case IMAGE_PLOT_TINCT_ALPHA: - return image_redraw_tinct(header, x, y, - req_width, req_height, - width, height, - background_colour, - repeatx, repeaty, true, - tinct_options); - case IMAGE_PLOT_TINCT_OPAQUE: - return image_redraw_tinct(header, x, y, - req_width, req_height, - width, height, - background_colour, - repeatx, repeaty, false, - tinct_options); - case IMAGE_PLOT_OS: - return image_redraw_os(header, x, y, req_width, - req_height, width, height); - default: - break; - } - - return false; -} - -/** - * Plot an image at the given coordinates using tinct - * - * \param header The sprite header - * \param x Left edge of sprite - * \param y Top edge of sprite - * \param req_width The requested width of the sprite - * \param req_height The requested height of the sprite - * \param width The actual width of the sprite - * \param height The actual height of the sprite - * \param background_colour The background colour to blend to - * \param repeatx Repeat the image in the x direction - * \param repeaty Repeat the image in the y direction - * \param alpha Use the alpha channel - * \param tinct_options The base option set to use - * \return true on success, false otherwise - */ -bool image_redraw_tinct(osspriteop_id header, int x, int y, - int req_width, int req_height, int width, int height, - colour background_colour, bool repeatx, bool repeaty, - bool alpha, unsigned int tinct_options) -{ - _kernel_oserror *error; - - /* Set up our flagword - */ - tinct_options |= background_colour << tinct_BACKGROUND_SHIFT; - if (print_active) - tinct_options |= tinct_USE_OS_SPRITE_OP; - if (repeatx) - tinct_options |= tinct_FILL_HORIZONTALLY; - if (repeaty) - tinct_options |= tinct_FILL_VERTICALLY; - - if (alpha) { - error = _swix(Tinct_PlotScaledAlpha, _INR(2,7), - header, x, y - req_height, - req_width, req_height, tinct_options); - } else { - error = _swix(Tinct_PlotScaled, _INR(2,7), - header, x, y - req_height, - req_width, req_height, tinct_options); - } - - if (error) { - LOG("xtinct_plotscaled%s: 0x%x: %s", (alpha ? "alpha" : ""), error->errnum, error->errmess); - return false; - } - - return true; -} - - -/** - * Plot an image at the given coordinates using os_spriteop - * - * \param header The sprite header - * \param x Left edge of sprite - * \param y Top edge of sprite - * \param req_width The requested width of the sprite - * \param req_height The requested height of the sprite - * \param width The actual width of the sprite - * \param height The actual height of the sprite - * \return true on success, false otherwise - */ -bool image_redraw_os(osspriteop_id header, int x, int y, int req_width, - int req_height, int width, int height) -{ - int size; - os_factors f; - osspriteop_trans_tab *table; - os_error *error; - - error = xcolourtrans_generate_table_for_sprite( - (osspriteop_area *)0x100, header, - os_CURRENT_MODE, - colourtrans_CURRENT_PALETTE, - 0, colourtrans_GIVEN_SPRITE, 0, 0, &size); - if (error) { - LOG("xcolourtrans_generate_table_for_sprite: 0x%x: %s", error->errnum, error->errmess); - return false; - } - - table = calloc(size, sizeof(char)); - if (!table) { - LOG("malloc failed"); - ro_warn_user("NoMemory", 0); - return false; - } - - error = xcolourtrans_generate_table_for_sprite( - (osspriteop_area *)0x100, header, - os_CURRENT_MODE, - colourtrans_CURRENT_PALETTE, - table, colourtrans_GIVEN_SPRITE, 0, 0, 0); - if (error) { - LOG("xcolourtrans_generate_table_for_sprite: 0x%x: %s", error->errnum, error->errmess); - free(table); - return false; - } - - f.xmul = req_width; - f.ymul = req_height; - f.xdiv = width; - f.ydiv = height; - - error = xosspriteop_put_sprite_scaled(osspriteop_PTR, - (osspriteop_area *)0x100, header, - x, (int)(y - req_height), - 8, &f, table); - if (error) { - LOG("xosspriteop_put_sprite_scaled: 0x%x: %s", error->errnum, error->errmess); - free(table); - return false; - } - - free(table); - - return true; -} |