From a66adbbfefcc61f4f577b80398a9a0d8941b8441 Mon Sep 17 00:00:00 2001 From: François Revel Date: Thu, 22 Mar 2012 21:48:24 +0000 Subject: Rename BeOS frontend files to strip the useless beos_ prefix. Fix includes and the rest so it builds. svn path=/trunk/netsurf/; revision=13554 --- beos/throbber.cpp | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 beos/throbber.cpp (limited to 'beos/throbber.cpp') diff --git a/beos/throbber.cpp b/beos/throbber.cpp new file mode 100644 index 000000000..f7fb35306 --- /dev/null +++ b/beos/throbber.cpp @@ -0,0 +1,119 @@ +/* + * Copyright 2008 François Revol + * + * 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 . + */ + +#define __STDBOOL_H__ 1 +#include +#include +#include +extern "C" { +#include "utils/log.h" +} +#include "beos/throbber.h" +#include "beos/bitmap.h" +#include "beos/fetch_rsrc.h" + +#include +#include +#include + +struct nsbeos_throbber *nsbeos_throbber = NULL; + +/** + * Creates the throbber using a PNG for each frame. The number of frames must + * be at least two. The first frame is the inactive frame, others are the + * active frames. + * + * \param frames The number of frames. Must be at least two. + * \param ... Filenames of PNGs containing frames. + * \return true on success. + */ +bool nsbeos_throbber_initialise_from_png(const int frames, ...) +{ + va_list filenames; + struct nsbeos_throbber *throb; /**< structure we generate */ + bool errors_when_loading = false; /**< true if a frame failed */ + + if (frames < 2) { + /* we need at least two frames - one for idle, one for active */ + LOG(("Insufficent number of frames in throbber animation!")); + LOG(("(called with %d frames, where 2 is a minimum.)", + frames)); + return false; + } + + BResources *res = get_app_resources(); + if (res == NULL) { + LOG(("Can't find resources for throbber!")); + return false; + } + + throb = (struct nsbeos_throbber *)malloc(sizeof(throb)); + throb->nframes = frames; + throb->framedata = (BBitmap **)malloc(sizeof(BBitmap *) * throb->nframes); + + va_start(filenames, frames); + + for (int i = 0; i < frames; i++) { + const char *fn = va_arg(filenames, const char *); + const void *data; + size_t size; + data = res->LoadResource('data', fn, &size); + throb->framedata[i] = NULL; + if (!data) { + LOG(("Error when loading resource %s", fn)); + errors_when_loading = true; + continue; + } + BMemoryIO mem(data, size); + throb->framedata[i] = BTranslationUtils::GetBitmap(&mem); + if (throb->framedata[i] == NULL) { + LOG(("Error when loading %s: GetBitmap() returned NULL", fn)); + errors_when_loading = true; + } + } + + va_end(filenames); + + if (errors_when_loading == true) { + for (int i = 0; i < frames; i++) { + delete throb->framedata[i]; + } + + free(throb->framedata); + free(throb); + + return false; + } + + nsbeos_throbber = throb; + + return true; +} + +void nsbeos_throbber_finalise(void) +{ + int i; + + for (i = 0; i < nsbeos_throbber->nframes; i++) + delete nsbeos_throbber->framedata[i]; + + free(nsbeos_throbber->framedata); + free(nsbeos_throbber); + + nsbeos_throbber = NULL; +} -- cgit v1.2.3