diff options
author | Chris Warren-Smith | 2013-06-25 21:08:55 +1000 |
---|---|---|
committer | Chris Warren-Smith | 2013-07-03 07:04:11 +1000 |
commit | be399188c4ec25463c4a777a5e96fd69a4b0b1e3 (patch) | |
tree | 9ddd2345eb54db92ad8d35eaa47545431f7c0d40 /backends/platform/bada | |
parent | 5f3ddae421c473fc7e1a02f9c068900c12147b2a (diff) | |
download | scummvm-rg350-be399188c4ec25463c4a777a5e96fd69a4b0b1e3.tar.gz scummvm-rg350-be399188c4ec25463c4a777a5e96fd69a4b0b1e3.tar.bz2 scummvm-rg350-be399188c4ec25463c4a777a5e96fd69a4b0b1e3.zip |
TIZEN: bada port updated to tizen
Diffstat (limited to 'backends/platform/bada')
-rw-r--r-- | backends/platform/bada/README.TXT | 92 | ||||
-rw-r--r-- | backends/platform/bada/application.cpp | 111 | ||||
-rw-r--r-- | backends/platform/bada/application.h | 54 | ||||
-rw-r--r-- | backends/platform/bada/audio.cpp | 260 | ||||
-rw-r--r-- | backends/platform/bada/audio.h | 73 | ||||
-rw-r--r-- | backends/platform/bada/bada.mk | 5 | ||||
-rw-r--r-- | backends/platform/bada/form.cpp | 464 | ||||
-rw-r--r-- | backends/platform/bada/form.h | 108 | ||||
-rw-r--r-- | backends/platform/bada/fs.cpp | 435 | ||||
-rw-r--r-- | backends/platform/bada/fs.h | 82 | ||||
-rw-r--r-- | backends/platform/bada/graphics.cpp | 261 | ||||
-rw-r--r-- | backends/platform/bada/graphics.h | 72 | ||||
-rw-r--r-- | backends/platform/bada/main.cpp | 67 | ||||
-rw-r--r-- | backends/platform/bada/missing.cpp | 113 | ||||
-rw-r--r-- | backends/platform/bada/portdefs.h | 85 | ||||
-rw-r--r-- | backends/platform/bada/sscanf.cpp | 213 | ||||
-rw-r--r-- | backends/platform/bada/system.cpp | 514 | ||||
-rw-r--r-- | backends/platform/bada/system.h | 102 |
18 files changed, 0 insertions, 3111 deletions
diff --git a/backends/platform/bada/README.TXT b/backends/platform/bada/README.TXT deleted file mode 100644 index c4a04d5450..0000000000 --- a/backends/platform/bada/README.TXT +++ /dev/null @@ -1,92 +0,0 @@ -Build instructions: - -1. Install BADA SDK (requires free registration): - - http://developer.bada.com/apis/index.do - -2. Install Cygwin: - - http://www.cygwin.com/ - - Add the following to your cygwin .bash_profile: - - alias mmake=/cygdrive/c/MinGW/bin/mingw32-make.exe - export BADA_SDK=/cygdrive/c/bada/1.2.1 - export ARM_BIN=c:/bada/1.2.1/Tools/Toolchains/ARM/bin - export CPPFLAGS="-fpic -fshort-wchar -mcpu=cortex-a8 -mfpu=vfpv3 \ - -mfloat-abi=hard -mlittle-endian -mthumb-interwork -Wno-psabi \ - -fno-strict-aliasing -fno-short-enums" - export LDFLAGS="-nostdlib -lc-newlib -lm-newlib -LC:/bada/1.2.1/Model/Wave_LP1/Target" - #export PATH=${BADA_SDK}/Tools/Toolchains/Win32/bin:${PATH} - export PATH=${BADA_SDK}/Tools/Toolchains/ARM/bin:~/utils:${PATH} - alias gcc=${ARM_BIN}/arm-samsung-nucleuseabi-gcc.exe - alias ar=${ARM_BIN}/arm-samsung-nucleuseabi-ar.exe - - The following were added to ~/utils for zlib: - - ar: - #!/bin/sh - ${ARM_BIN}/arm-samsung-nucleuseabi-ar.exe $* - - gcc: - #!/bin/sh - ${ARM_BIN}/arm-samsung-nucleuseabi-gcc.exe $* - -3. Build dependencies - - zlib, libogg, libvorbis, libmad, FLAC - - see: "Building the libraries" under: - http://wiki.scummvm.org/index.php/Compiling_ScummVM/MinGW#Building_the_libraries - for instructions on how to obtain these modules - - 3.1 For Target-Release configure ogg and mad with: - - ./configure --host=arm-samsung-nucleuseabi --disable-shared - - when building vorbis and flac: - - ./configure --host=arm-samsung-nucleuseabi --disable-shared --with-ogg=c:/cygwin/usr/local - - 3.2 for each module, after a successful configure, add the following - to the generated config.h (gzguts.h for zlib) - - #undef __MINGW32__ - #undef _WIN32 - #include "c:/src/scummvm/backends/platform/bada/portdefs.h" - - 3.3 Additional post configure edits: - - - removed -fforce-mem from the libMAD Makefile - - in libvorbis/lib/Makefile comment lines with vorbis_selftests - - edit libFLAC/Makefile ... CFLAGS = $(OGG_CFLAGS) - - Note: you can ignore the ranlib errors when doing make install. - -4. Build the ScummVM base library: - - ./configure --host=bada --enable-release - - To target the Win32 simulator: - - ./configure --host=bada --enable-debug - -5. Build the front end application using BADA-Ide: - - Copy the scummvm/dists/bada folder into a clean directory - outside of the scummvm package. Start the BADA IDE then - choose this folder as the eclipse workspace. Click - Project / Build. - -Links: - -A short turorial on implementing OpenGL ES 1.1 in BADA: - http://forums.badadev.com/viewtopic.php?f=7&t=208 - -HelvB14 font files: - http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html - http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-75dpi100dpi.tar.gz - - Then run the following command: - $ ./ucs2any.pl 100dpi/helvB14.bdf MAPPINGS/8859-1.TXT iso8859-1 \ - MAPPINGS/8859-2.TXT iso8859-2 MAPPINGS/8859-3.TXT iso8859-3 diff --git a/backends/platform/bada/application.cpp b/backends/platform/bada/application.cpp deleted file mode 100644 index e761649245..0000000000 --- a/backends/platform/bada/application.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "engines/engine.h" - -#include "backends/platform/bada/form.h" -#include "backends/platform/bada/system.h" -#include "backends/platform/bada/application.h" - -using namespace Osp::System; -using namespace Osp::Ui::Controls; - -Application *BadaScummVM::createInstance() { - return new BadaScummVM(); -} - -BadaScummVM::BadaScummVM() : _appForm(0) { -} - -BadaScummVM::~BadaScummVM() { - logEntered(); - if (g_system) { - BadaSystem *system = (BadaSystem *)g_system; - system->destroyBackend(); - delete system; - g_system = 0; - } -} - -bool BadaScummVM::OnAppInitializing(AppRegistry &appRegistry) { - _appForm = systemStart(this); - return (_appForm != NULL); -} - -bool BadaScummVM::OnAppTerminating(AppRegistry &appRegistry, - bool forcedTermination) { - logEntered(); - return true; -} - -void BadaScummVM::OnUserEventReceivedN(RequestId requestId, - Osp::Base::Collection::IList *args) { - logEntered(); - - if (requestId == USER_MESSAGE_EXIT) { - // normal program termination - Terminate(); - } else if (requestId == USER_MESSAGE_EXIT_ERR) { - // assertion failure termination - String *message = NULL; - if (args) { - message = (String *)args->GetAt(0); - } - if (!message) { - message = new String("Unknown error"); - } - - MessageBox messageBox; - messageBox.Construct(L"Oops...", *message, MSGBOX_STYLE_OK); - int modalResult; - messageBox.ShowAndWait(modalResult); - Terminate(); - } -} - -void BadaScummVM::OnForeground(void) { - logEntered(); - pauseGame(false); -} - -void BadaScummVM::OnBackground(void) { - logEntered(); - pauseGame(true); -} - -void BadaScummVM::OnBatteryLevelChanged(BatteryLevel batteryLevel) { -} - -void BadaScummVM::OnLowMemory(void) { -} - -void BadaScummVM::pauseGame(bool pause) { - if (_appForm) { - if (pause && g_engine && !g_engine->isPaused()) { - _appForm->pushKey(Common::KEYCODE_SPACE); - } - - if (g_system) { - ((BadaSystem *)g_system)->setMute(pause); - } - } -} diff --git a/backends/platform/bada/application.h b/backends/platform/bada/application.h deleted file mode 100644 index 2b0d37f1ef..0000000000 --- a/backends/platform/bada/application.h +++ /dev/null @@ -1,54 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef BADA_APPLICATION_H -#define BADA_APPLICATION_H - -#include <FBase.h> -#include <FApp.h> -#include <FGraphics.h> -#include <FUi.h> -#include <FSystem.h> - -#include "backends/platform/bada/system.h" - -class BadaScummVM : public Osp::App::Application { -public: - BadaScummVM(); - ~BadaScummVM(); - - static Osp::App::Application *createInstance(void); - - bool OnAppInitializing(Osp::App::AppRegistry &appRegistry); - bool OnAppTerminating(Osp::App::AppRegistry &appRegistry, bool forcedTermination = false); - void OnForeground(void); - void OnBackground(void); - void OnLowMemory(void); - void OnBatteryLevelChanged(Osp::System::BatteryLevel batteryLevel); - void OnUserEventReceivedN(RequestId requestId, Osp::Base::Collection::IList *pArgs); - -private: - void pauseGame(bool pause); - BadaAppForm *_appForm; -}; - -#endif diff --git a/backends/platform/bada/audio.cpp b/backends/platform/bada/audio.cpp deleted file mode 100644 index 65a5a80fa5..0000000000 --- a/backends/platform/bada/audio.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include <FSysSettingInfo.h> -#include <FAppAppRegistry.h> - -#include "backends/platform/bada/audio.h" -#include "backends/platform/bada/system.h" - -#define TIMER_INCREMENT 10 -#define TIMER_INTERVAL 40 -#define MIN_TIMER_INTERVAL 10 -#define MAX_TIMER_INTERVAL 160 -#define INIT_LEVEL 3 -#define CONFIG_KEY L"audiovol" - -// sound level pre-sets -const int levels[] = {0, 1, 10, 45, 70, 99}; - -AudioThread::AudioThread() : - _mixer(0), - _timer(0), - _audioOut(0), - _head(0), - _tail(0), - _ready(0), - _interval(TIMER_INTERVAL), - _playing(-1), - _muted(true) { -} - -Audio::MixerImpl *AudioThread::Construct(OSystem *system) { - logEntered(); - - if (IsFailed(Thread::Construct(THREAD_TYPE_EVENT_DRIVEN, - DEFAULT_STACK_SIZE, - THREAD_PRIORITY_HIGH))) { - AppLog("Failed to create AudioThread"); - return NULL; - } - - _mixer = new Audio::MixerImpl(system, 44100); - return _mixer; -} - -AudioThread::~AudioThread() { - logEntered(); -} - -bool AudioThread::isSilentMode() { - bool silentMode; - String key(L"SilentMode"); - Osp::System::SettingInfo::GetValue(key, silentMode); - return silentMode; -} - -void AudioThread::setMute(bool on) { - if (_audioOut && _timer) { - _muted = on; - if (on) { - _timer->Cancel(); - } else { - _timer->Start(_interval); - } - } -} - -int AudioThread::setVolume(bool up, bool minMax) { - int level = -1; - int numLevels = sizeof(levels) / sizeof(levels[0]); - - if (_audioOut) { - int volume = _audioOut->GetVolume(); - if (minMax) { - level = up ? numLevels - 1 : 0; - volume = levels[level]; - } else { - // adjust volume to be one of the preset values - for (int i = 0; i < numLevels && level == -1; i++) { - if (volume == levels[i]) { - level = i; - if (up) { - if (i + 1 < numLevels) { - level = i + 1; - } - } else if (i > 0) { - level = i - 1; - } - } - } - - // default to INIT_LEVEL when current not preset value - if (level == -1) { - level = INIT_LEVEL; - } - volume = levels[level]; - } - - _audioOut->SetVolume(volume); - - // remember the chosen setting - AppRegistry *registry = Application::GetInstance()->GetAppRegistry(); - if (registry) { - registry->Set(CONFIG_KEY, volume); - } - } - return level; -} - -bool AudioThread::OnStart(void) { - logEntered(); - - _audioOut = new Osp::Media::AudioOut(); - if (!_audioOut || - IsFailed(_audioOut->Construct(*this))) { - AppLog("Failed to create AudioOut"); - return false; - } - - int sampleRate = _mixer->getOutputRate(); - - // ideally we would update _mixer with GetOptimizedSampleRate here - if (_audioOut->GetOptimizedSampleRate() != sampleRate) { - AppLog("Non optimal sample rate %d", _audioOut->GetOptimizedSampleRate()); - } - - if (IsFailed(_audioOut->Prepare(AUDIO_TYPE_PCM_S16_LE, - AUDIO_CHANNEL_TYPE_STEREO, - sampleRate))) { - AppLog("Failed to prepare AudioOut %d", sampleRate); - return false; - } - - int bufferSize = _audioOut->GetMinBufferSize(); - for (int i = 0; i < NUM_AUDIO_BUFFERS; i++) { - if (IsFailed(_audioBuffer[i].Construct(bufferSize))) { - AppLog("Failed to create audio buffer"); - return false; - } - } - - _timer = new Timer(); - if (!_timer || IsFailed(_timer->Construct(*this))) { - AppLog("Failed to create audio timer"); - return false; - } - - if (IsFailed(_timer->Start(_interval))) { - AppLog("failed to start audio timer"); - return false; - } - - // get the volume from the app-registry - int volume = levels[INIT_LEVEL]; - AppRegistry *registry = Application::GetInstance()->GetAppRegistry(); - if (registry) { - if (E_KEY_NOT_FOUND == registry->Get(CONFIG_KEY, volume)) { - registry->Add(CONFIG_KEY, volume); - volume = levels[INIT_LEVEL]; - } else { - AppLog("Setting volume: %d", volume); - } - } - - _muted = false; - _mixer->setReady(true); - _audioOut->SetVolume(isSilentMode() ? 0 : volume); - _audioOut->Start(); - return true; -} - -void AudioThread::OnStop(void) { - logEntered(); - - _mixer->setReady(false); - - if (_timer) { - if (!_muted) { - _timer->Cancel(); - } - delete _timer; - } - - if (_audioOut) { - _audioOut->Reset(); - delete _audioOut; - } -} - -void AudioThread::OnAudioOutErrorOccurred(Osp::Media::AudioOut &src, result r) { - logEntered(); -} - -void AudioThread::OnAudioOutInterrupted(Osp::Media::AudioOut &src) { - logEntered(); -} - -void AudioThread::OnAudioOutReleased(Osp::Media::AudioOut &src) { - logEntered(); - _audioOut->Start(); -} - -void AudioThread::OnAudioOutBufferEndReached(Osp::Media::AudioOut &src) { - if (_ready > 0) { - _playing = _tail; - _audioOut->WriteBuffer(_audioBuffer[_tail]); - _tail = (_tail + 1) % NUM_AUDIO_BUFFERS; - _ready--; - } else { - // audio buffer empty: decrease timer inverval - _playing = -1; - _interval -= TIMER_INCREMENT; - if (_interval < MIN_TIMER_INTERVAL) { - _interval = MIN_TIMER_INTERVAL; - } - } -} - -void AudioThread::OnTimerExpired(Timer &timer) { - if (_ready < NUM_AUDIO_BUFFERS) { - uint len = _audioBuffer[_head].GetCapacity(); - int samples = _mixer->mixCallback((byte *)_audioBuffer[_head].GetPointer(), len); - if (samples) { - _head = (_head + 1) % NUM_AUDIO_BUFFERS; - _ready++; - } - } else { - // audio buffer full: increase timer inverval - _interval += TIMER_INCREMENT; - if (_interval > MAX_TIMER_INTERVAL) { - _interval = MAX_TIMER_INTERVAL; - } - } - - if (_ready && _playing == -1) { - OnAudioOutBufferEndReached(*_audioOut); - } - - _timer->Start(_interval); -} - diff --git a/backends/platform/bada/audio.h b/backends/platform/bada/audio.h deleted file mode 100644 index 72c537a942..0000000000 --- a/backends/platform/bada/audio.h +++ /dev/null @@ -1,73 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef BADA_AUDIO_H -#define BADA_AUDIO_H - -#include <FBase.h> -#include <FMedia.h> -#include <FIo.h> -#include <FBaseByteBuffer.h> - -#include "config.h" -#include "common/scummsys.h" -#include "common/system.h" -#include "audio/mixer_intern.h" - -using namespace Osp::Base; -using namespace Osp::Base::Collection; -using namespace Osp::Base::Runtime; -using namespace Osp::Media; -using namespace Osp::Io; - -#define NUM_AUDIO_BUFFERS 2 - -class AudioThread: public Osp::Media::IAudioOutEventListener, - public Osp::Base::Runtime::ITimerEventListener, - public Osp::Base::Runtime::Thread { -public: - AudioThread(void); - ~AudioThread(void); - - Audio::MixerImpl *Construct(OSystem *system); - bool isSilentMode(); - void setMute(bool on); - int setVolume(bool up, bool minMax); - - bool OnStart(void); - void OnStop(void); - void OnAudioOutErrorOccurred(Osp::Media::AudioOut &src, result r); - void OnAudioOutInterrupted(Osp::Media::AudioOut &src); - void OnAudioOutReleased(Osp::Media::AudioOut &src); - void OnAudioOutBufferEndReached(Osp::Media::AudioOut &src); - void OnTimerExpired(Timer &timer); - -private: - Audio::MixerImpl *_mixer; - Osp::Base::Runtime::Timer *_timer; - Osp::Media::AudioOut *_audioOut; - Osp::Base::ByteBuffer _audioBuffer[NUM_AUDIO_BUFFERS]; - int _head, _tail, _ready, _interval, _playing; - bool _muted; -}; - -#endif diff --git a/backends/platform/bada/bada.mk b/backends/platform/bada/bada.mk deleted file mode 100644 index 7c72d7752b..0000000000 --- a/backends/platform/bada/bada.mk +++ /dev/null @@ -1,5 +0,0 @@ -# Bada specific modules are built under eclipse - -$(EXECUTABLE): $(OBJS) - rm -f $@ - ar Tru $@ $(OBJS) diff --git a/backends/platform/bada/form.cpp b/backends/platform/bada/form.cpp deleted file mode 100644 index dfa72bce08..0000000000 --- a/backends/platform/bada/form.cpp +++ /dev/null @@ -1,464 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include <FAppApplication.h> - -#include "common/translation.h" -#include "base/main.h" - -#include "backends/platform/bada/form.h" -#include "backends/platform/bada/system.h" - -using namespace Osp::Base::Runtime; -using namespace Osp::Ui; -using namespace Osp::Ui::Controls; - -// number of volume levels -#define LEVEL_RANGE 5 - -// round down small Y touch values to 1 to allow the -// cursor to be positioned at the top of the screen -#define MIN_TOUCH_Y 10 - -// block for up to 2.5 seconds during shutdown to -// allow the game thread to exit gracefully. -#define EXIT_SLEEP_STEP 10 -#define EXIT_SLEEP 250 - -// -// BadaAppForm -// -BadaAppForm::BadaAppForm() : - _gameThread(0), - _state(kInitState), - _buttonState(kLeftButton), - _shortcut(kSetVolume) { - _eventQueueLock = new Mutex(); - _eventQueueLock->Create(); -} - -result BadaAppForm::Construct() { - result r = Form::Construct(Controls::FORM_STYLE_NORMAL); - if (IsFailed(r)) { - return r; - } - - BadaSystem *badaSystem = NULL; - _gameThread = NULL; - - badaSystem = new BadaSystem(this); - r = badaSystem != NULL ? E_SUCCESS : E_OUT_OF_MEMORY; - - if (!IsFailed(r)) { - r = badaSystem->Construct(); - } - - if (!IsFailed(r)) { - _gameThread = new Thread(); - r = _gameThread != NULL ? E_SUCCESS : E_OUT_OF_MEMORY; - } - - if (!IsFailed(r)) { - r = _gameThread->Construct(*this); - } - - if (IsFailed(r)) { - if (badaSystem != NULL) { - delete badaSystem; - } - if (_gameThread != NULL) { - delete _gameThread; - _gameThread = NULL; - } - } else { - g_system = badaSystem; - } - - return r; -} - -BadaAppForm::~BadaAppForm() { - logEntered(); - - if (_gameThread && _state != kErrorState) { - terminate(); - - _gameThread->Stop(); - if (_state != kErrorState) { - _gameThread->Join(); - } - - delete _gameThread; - _gameThread = NULL; - } - - if (_eventQueueLock) { - delete _eventQueueLock; - _eventQueueLock = NULL; - } - - logLeaving(); -} - -// -// abort the game thread -// -void BadaAppForm::terminate() { - if (_state == kActiveState) { - ((BadaSystem *)g_system)->setMute(true); - - _eventQueueLock->Acquire(); - - Common::Event e; - e.type = Common::EVENT_QUIT; - _eventQueue.push(e); - _state = kClosingState; - - _eventQueueLock->Release(); - - // block while thread ends - AppLog("waiting for shutdown"); - for (int i = 0; i < EXIT_SLEEP_STEP && _state == kClosingState; i++) { - Thread::Sleep(EXIT_SLEEP); - } - - if (_state == kClosingState) { - // failed to terminate - Join() will freeze - _state = kErrorState; - } - } -} - -void BadaAppForm::exitSystem() { - _state = kErrorState; - - if (_gameThread) { - _gameThread->Stop(); - delete _gameThread; - _gameThread = NULL; - } -} - -result BadaAppForm::OnInitializing(void) { - logEntered(); - - SetOrientation(ORIENTATION_LANDSCAPE); - AddOrientationEventListener(*this); - AddTouchEventListener(*this); - AddKeyEventListener(*this); - - // set focus to enable receiving key events - SetFocusable(true); - SetFocus(); - - return E_SUCCESS; -} - -result BadaAppForm::OnDraw(void) { - logEntered(); - - if (g_system) { - BadaSystem *system = (BadaSystem *)g_system; - BadaGraphicsManager *graphics = system->getGraphics(); - if (graphics && graphics->isReady()) { - g_system->updateScreen(); - } - } - - return E_SUCCESS; -} - -bool BadaAppForm::pollEvent(Common::Event &event) { - bool result = false; - - _eventQueueLock->Acquire(); - if (!_eventQueue.empty()) { - event = _eventQueue.pop(); - result = true; - } - _eventQueueLock->Release(); - - return result; -} - -void BadaAppForm::pushEvent(Common::EventType type, const Point ¤tPosition) { - BadaSystem *system = (BadaSystem *)g_system; - BadaGraphicsManager *graphics = system->getGraphics(); - if (graphics) { - // graphics could be NULL at startup or when - // displaying the system error screen - Common::Event e; - e.type = type; - e.mouse.x = currentPosition.x; - e.mouse.y = currentPosition.y > MIN_TOUCH_Y ? currentPosition.y : 1; - - bool moved = graphics->moveMouse(e.mouse.x, e.mouse.y); - - _eventQueueLock->Acquire(); - - if (moved && type != Common::EVENT_MOUSEMOVE) { - Common::Event moveEvent; - moveEvent.type = Common::EVENT_MOUSEMOVE; - moveEvent.mouse = e.mouse; - _eventQueue.push(moveEvent); - } - - _eventQueue.push(e); - _eventQueueLock->Release(); - } -} - -void BadaAppForm::pushKey(Common::KeyCode keycode) { - Common::Event e; - e.synthetic = false; - e.kbd.keycode = keycode; - e.kbd.ascii = keycode; - e.kbd.flags = 0; - - _eventQueueLock->Acquire(); - - e.type = Common::EVENT_KEYDOWN; - _eventQueue.push(e); - e.type = Common::EVENT_KEYUP; - _eventQueue.push(e); - - _eventQueueLock->Release(); -} - -void BadaAppForm::OnOrientationChanged(const Control &source, - OrientationStatus orientationStatus) { - logEntered(); - if (_state == kInitState) { - _state = kActiveState; - _gameThread->Start(); - } -} - -Object *BadaAppForm::Run(void) { - scummvm_main(0, 0); - - if (_state == kActiveState) { - Application::GetInstance()->SendUserEvent(USER_MESSAGE_EXIT, NULL); - } - _state = kDoneState; - return NULL; -} - -void BadaAppForm::setButtonShortcut() { - switch (_buttonState) { - case kLeftButton: - g_system->displayMessageOnOSD(_("Right Click Once")); - _buttonState = kRightButtonOnce; - break; - case kRightButtonOnce: - g_system->displayMessageOnOSD(_("Right Click")); - _buttonState = kRightButton; - break; - case kRightButton: - g_system->displayMessageOnOSD(_("Move Only")); - _buttonState = kMoveOnly; - break; - case kMoveOnly: - g_system->displayMessageOnOSD(_("Left Click")); - _buttonState = kLeftButton; - break; - } -} - -void BadaAppForm::setShortcut() { - // cycle to the next shortcut - switch (_shortcut) { - case kControlMouse: - g_system->displayMessageOnOSD(_("Escape Key")); - _shortcut = kEscapeKey; - break; - - case kEscapeKey: - g_system->displayMessageOnOSD(_("Game Menu")); - _shortcut = kGameMenu; - break; - - case kGameMenu: - g_system->displayMessageOnOSD(_("Show Keypad")); - _shortcut = kShowKeypad; - break; - - case kSetVolume: - // fallthru - - case kShowKeypad: - g_system->displayMessageOnOSD(_("Control Mouse")); - _shortcut = kControlMouse; - break; - } -} - -void BadaAppForm::setVolume(bool up, bool minMax) { - int level = ((BadaSystem *)g_system)->setVolume(up, minMax); - if (level != -1) { - char message[32]; - char ind[LEVEL_RANGE]; // 1..5 (0=off) - int j = LEVEL_RANGE - 1; // 0..4 - for (int i = 1; i <= LEVEL_RANGE; i++) { - ind[j--] = level >= i ? '|' : ' '; - } - snprintf(message, sizeof(message), "Volume: [ %c%c%c%c%c ]", - ind[0], ind[1], ind[2], ind[3], ind[4]); - g_system->displayMessageOnOSD(message); - } -} - -void BadaAppForm::showKeypad() { - // display the soft keyboard - _buttonState = kLeftButton; - pushKey(Common::KEYCODE_F7); -} - -void BadaAppForm::OnTouchDoublePressed(const Control &source, - const Point ¤tPosition, - const TouchEventInfo &touchInfo) { - if (_buttonState != kMoveOnly) { - pushEvent(_buttonState == kLeftButton ? Common::EVENT_LBUTTONDOWN : Common::EVENT_RBUTTONDOWN, - currentPosition); - pushEvent(_buttonState == kLeftButton ? Common::EVENT_LBUTTONDOWN : Common::EVENT_RBUTTONDOWN, - currentPosition); - } -} - -void BadaAppForm::OnTouchFocusIn(const Control &source, - const Point ¤tPosition, - const TouchEventInfo &touchInfo) { -} - -void BadaAppForm::OnTouchFocusOut(const Control &source, - const Point ¤tPosition, - const TouchEventInfo &touchInfo) { -} - -void BadaAppForm::OnTouchLongPressed(const Control &source, - const Point ¤tPosition, - const TouchEventInfo &touchInfo) { - if (_buttonState != kLeftButton) { - pushKey(Common::KEYCODE_RETURN); - } -} - -void BadaAppForm::OnTouchMoved(const Control &source, - const Point ¤tPosition, - const TouchEventInfo &touchInfo) { - pushEvent(Common::EVENT_MOUSEMOVE, currentPosition); -} - -void BadaAppForm::OnTouchPressed(const Control &source, - const Point ¤tPosition, - const TouchEventInfo &touchInfo) { - if (_buttonState != kMoveOnly) { - pushEvent(_buttonState == kLeftButton ? Common::EVENT_LBUTTONDOWN : Common::EVENT_RBUTTONDOWN, - currentPosition); - } -} - -void BadaAppForm::OnTouchReleased(const Control &source, - const Point ¤tPosition, - const TouchEventInfo &touchInfo) { - if (_buttonState != kMoveOnly) { - pushEvent(_buttonState == kLeftButton ? Common::EVENT_LBUTTONUP : Common::EVENT_RBUTTONUP, - currentPosition); - if (_buttonState == kRightButtonOnce) { - _buttonState = kLeftButton; - } - // flick to skip dialog - if (touchInfo.IsFlicked()) { - pushKey(Common::KEYCODE_PERIOD); - } - } -} - -void BadaAppForm::OnKeyLongPressed(const Control &source, KeyCode keyCode) { - logEntered(); - switch (keyCode) { - case KEY_SIDE_UP: - _shortcut = kSetVolume; - setVolume(true, true); - return; - - case KEY_SIDE_DOWN: - _shortcut = kSetVolume; - setVolume(false, true); - return; - - case KEY_CAMERA: - _shortcut = kShowKeypad; - showKeypad(); - return; - - default: - break; - } -} - -void BadaAppForm::OnKeyPressed(const Control &source, KeyCode keyCode) { - switch (keyCode) { - case KEY_SIDE_UP: - if (_shortcut != kSetVolume) { - _shortcut = kSetVolume; - } else { - setVolume(true, false); - } - return; - - case KEY_SIDE_DOWN: - switch (_shortcut) { - case kControlMouse: - setButtonShortcut(); - break; - - case kEscapeKey: - pushKey(Common::KEYCODE_ESCAPE); - break; - - case kGameMenu: - _buttonState = kLeftButton; - pushKey(Common::KEYCODE_F5); - break; - - case kShowKeypad: - showKeypad(); - break; - - default: - setVolume(false, false); - break; - } - break; - - case KEY_CAMERA: - setShortcut(); - break; - - default: - break; - } -} - -void BadaAppForm::OnKeyReleased(const Control &source, KeyCode keyCode) { -} diff --git a/backends/platform/bada/form.h b/backends/platform/bada/form.h deleted file mode 100644 index 3340e2216b..0000000000 --- a/backends/platform/bada/form.h +++ /dev/null @@ -1,108 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef BADA_FORM_H -#define BADA_FORM_H - -#include <FApp.h> -#include <FUi.h> -#include <FSystem.h> -#include <FBase.h> -#include <FUiITouchEventListener.h> -#include <FUiITextEventListener.h> - -#include "config.h" -#include "common/scummsys.h" -#include "common/events.h" -#include "common/queue.h" -#include "common/mutex.h" - -// -// BadaAppForm -// -class BadaAppForm : public Osp::Ui::Controls::Form, - public Osp::Ui::IOrientationEventListener, - public Osp::Ui::ITouchEventListener, - public Osp::Ui::IKeyEventListener, - public Osp::Base::Runtime::IRunnable { -public: - BadaAppForm(); - ~BadaAppForm(); - - result Construct(); - bool pollEvent(Common::Event &event); - bool isClosing() { return _state == kClosingState; } - void pushKey(Common::KeyCode keycode); - void exitSystem(); - -private: - Object *Run(); - result OnInitializing(void); - result OnDraw(void); - void OnOrientationChanged(const Osp::Ui::Control &source, - Osp::Ui::OrientationStatus orientationStatus); - void OnTouchDoublePressed(const Osp::Ui::Control &source, - const Osp::Graphics::Point ¤tPosition, - const Osp::Ui::TouchEventInfo &touchInfo); - void OnTouchFocusIn(const Osp::Ui::Control &source, - const Osp::Graphics::Point ¤tPosition, - const Osp::Ui::TouchEventInfo &touchInfo); - void OnTouchFocusOut(const Osp::Ui::Control &source, - const Osp::Graphics::Point ¤tPosition, - const Osp::Ui::TouchEventInfo &touchInfo); - void OnTouchLongPressed(const Osp::Ui::Control &source, - const Osp::Graphics::Point ¤tPosition, - const Osp::Ui::TouchEventInfo &touchInfo); - void OnTouchMoved(const Osp::Ui::Control &source, - const Osp::Graphics::Point ¤tPosition, - const Osp::Ui::TouchEventInfo &touchInfo); - void OnTouchPressed(const Osp::Ui::Control &source, - const Osp::Graphics::Point ¤tPosition, - const Osp::Ui::TouchEventInfo &touchInfo); - void OnTouchReleased(const Osp::Ui::Control &source, - const Osp::Graphics::Point ¤tPosition, - const Osp::Ui::TouchEventInfo &touchInfo); - void OnKeyLongPressed(const Osp::Ui::Control &source, - Osp::Ui::KeyCode keyCode); - void OnKeyPressed(const Osp::Ui::Control &source, - Osp::Ui::KeyCode keyCode); - void OnKeyReleased(const Osp::Ui::Control &source, - Osp::Ui::KeyCode keyCode); - - void pushEvent(Common::EventType type, - const Osp::Graphics::Point ¤tPosition); - void terminate(); - void setButtonShortcut(); - void setShortcut(); - void setVolume(bool up, bool minMax); - void showKeypad(); - - // event handling - Osp::Base::Runtime::Thread *_gameThread; - Osp::Base::Runtime::Mutex *_eventQueueLock; - Common::Queue<Common::Event> _eventQueue; - enum { kInitState, kActiveState, kClosingState, kDoneState, kErrorState } _state; - enum { kLeftButton, kRightButtonOnce, kRightButton, kMoveOnly } _buttonState; - enum { kControlMouse, kEscapeKey, kGameMenu, kShowKeypad, kSetVolume } _shortcut; -}; - -#endif diff --git a/backends/platform/bada/fs.cpp b/backends/platform/bada/fs.cpp deleted file mode 100644 index 37ca496d18..0000000000 --- a/backends/platform/bada/fs.cpp +++ /dev/null @@ -1,435 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "config.h" -#include "backends/platform/bada/system.h" -#include "backends/platform/bada/fs.h" - -#define BUFFER_SIZE 1024 - -// internal BADA paths -#define PATH_ROOT "/" -#define PATH_HOME "/Home" -#define PATH_HOME_SHARE "/Home/Share" -#define PATH_HOME_SHARE2 "/Home/Share2" -#define PATH_HOME_X "/Home/" -#define PATH_HOME_EXT "/HomeExt" -#define PATH_MEDIA "/Media" -#define PATH_CARD "/Storagecard" -#define PATH_CARD_MEDIA "/Storagecard/Media" - -// -// BadaFileStream -// -class BadaFileStream : public Common::SeekableReadStream, - public Common::WriteStream, - public Common::NonCopyable { -public: - static BadaFileStream *makeFromPath(const String &path, bool writeMode); - - BadaFileStream(File *file, bool writeMode); - ~BadaFileStream(); - - bool err() const; - void clearErr(); - bool eos() const; - - uint32 write(const void *dataPtr, uint32 dataSize); - bool flush(); - - int32 pos() const; - int32 size() const; - bool seek(int32 offs, int whence = SEEK_SET); - uint32 read(void *dataPtr, uint32 dataSize); - -private: - byte buffer[BUFFER_SIZE]; - uint32 bufferIndex; - uint32 bufferLength; - bool writeMode; - File *file; -}; - -BadaFileStream::BadaFileStream(File *ioFile, bool writeMode) : - bufferIndex(0), - bufferLength(0), - writeMode(writeMode), - file(ioFile) { - AppAssert(ioFile != 0); -} - -BadaFileStream::~BadaFileStream() { - if (file) { - if (writeMode) { - flush(); - } - delete file; - } -} - -bool BadaFileStream::err() const { - result r = GetLastResult(); - return (r != E_SUCCESS && r != E_END_OF_FILE); -} - -void BadaFileStream::clearErr() { - SetLastResult(E_SUCCESS); -} - -bool BadaFileStream::eos() const { - return (bufferLength - bufferIndex == 0) && (GetLastResult() == E_END_OF_FILE); -} - -int32 BadaFileStream::pos() const { - return file->Tell() - (bufferLength - bufferIndex); -} - -int32 BadaFileStream::size() const { - int32 oldPos = file->Tell(); - file->Seek(FILESEEKPOSITION_END, 0); - - int32 length = file->Tell(); - SetLastResult(file->Seek(FILESEEKPOSITION_BEGIN, oldPos)); - - return length; -} - -bool BadaFileStream::seek(int32 offs, int whence) { - bool result = false; - switch (whence) { - case SEEK_SET: - // set from start of file - SetLastResult(file->Seek(FILESEEKPOSITION_BEGIN, offs)); - result = (E_SUCCESS == GetLastResult()); - break; - - case SEEK_CUR: - // set relative to offs - if (bufferIndex < bufferLength && bufferIndex > (uint32)-offs) { - // re-position within the buffer - SetLastResult(E_SUCCESS); - bufferIndex += offs; - return true; - } else { - offs -= (bufferLength - bufferIndex); - if (offs < 0 && file->Tell() + offs < 0) { - // avoid negative positioning - offs = 0; - } - if (offs != 0) { - SetLastResult(file->Seek(FILESEEKPOSITION_CURRENT, offs)); - result = (E_SUCCESS == GetLastResult()); - } else { - result = true; - } - } - break; - - case SEEK_END: - // set relative to end - positive will increase the file size - SetLastResult(file->Seek(FILESEEKPOSITION_END, offs)); - result = (E_SUCCESS == GetLastResult()); - break; - - default: - AppLog("Invalid whence %d", whence); - return false; - } - - if (!result) { - AppLog("seek failed"); - } - - bufferIndex = bufferLength = 0; - return result; -} - -uint32 BadaFileStream::read(void *ptr, uint32 len) { - uint32 result = 0; - if (!eos()) { - if (bufferIndex < bufferLength) { - // use existing buffer - uint32 available = bufferLength - bufferIndex; - if (len <= available) { - // use allocation - memcpy((byte *)ptr, &buffer[bufferIndex], len); - bufferIndex += len; - result = len; - } else { - // use remaining allocation - memcpy((byte *)ptr, &buffer[bufferIndex], available); - uint32 remaining = len - available; - result = available; - - if (remaining) { - result += file->Read(((byte *)ptr) + available, remaining); - } - bufferIndex = bufferLength = 0; - } - } else if (len < BUFFER_SIZE) { - // allocate and use buffer - bufferIndex = 0; - bufferLength = file->Read(buffer, BUFFER_SIZE); - if (bufferLength) { - if (bufferLength < len) { - len = bufferLength; - } - memcpy((byte *)ptr, buffer, len); - result = bufferIndex = len; - } - } else { - result = file->Read((byte *)ptr, len); - bufferIndex = bufferLength = 0; - } - } else { - AppLog("Attempted to read past EOS"); - } - return result; -} - -uint32 BadaFileStream::write(const void *ptr, uint32 len) { - result r = file->Write(ptr, len); - SetLastResult(r); - return (r == E_SUCCESS ? len : 0); -} - -bool BadaFileStream::flush() { - logEntered(); - SetLastResult(file->Flush()); - return (E_SUCCESS == GetLastResult()); -} - -BadaFileStream *BadaFileStream::makeFromPath(const String &path, bool writeMode) { - File *ioFile = new File(); - - String filePath = path; - if (writeMode && (path[0] != '.' && path[0] != '/')) { - filePath.Insert(PATH_HOME_X, 0); - } - - AppLog("Open file %S", filePath.GetPointer()); - - result r = ioFile->Construct(filePath, writeMode ? L"w" : L"r", writeMode); - if (r == E_SUCCESS) { - return new BadaFileStream(ioFile, writeMode); - } - - AppLog("Failed to open file"); - delete ioFile; - return 0; -} - -// -// converts a bada (wchar) String into a scummVM (char) string -// -Common::String fromString(const Osp::Base::String &in) { - ByteBuffer *buf = StringUtil::StringToUtf8N(in); - Common::String result((const char*)buf->GetPointer()); - delete buf; - - return result; -} - -// -// BadaFilesystemNode -// -BadaFilesystemNode::BadaFilesystemNode(const Common::String &nodePath) { - AppAssert(nodePath.size() > 0); - init(nodePath); -} - -BadaFilesystemNode::BadaFilesystemNode(const Common::String &root, - const Common::String &nodePath) { - // Make sure the string contains no slashes - AppAssert(!nodePath.contains('/')); - - // We assume here that path is already normalized (hence don't bother to - // call Common::normalizePath on the final path). - Common::String newPath(root); - if (root.lastChar() != '/') { - newPath += '/'; - } - newPath += nodePath; - - init(newPath); -} - -void BadaFilesystemNode::init(const Common::String &nodePath) { - // Normalize the path (that is, remove unneeded slashes etc.) - _path = Common::normalizePath(nodePath, '/'); - _displayName = Common::lastPathComponent(_path, '/'); - - StringUtil::Utf8ToString(_path.c_str(), _unicodePath); - _isVirtualDir = (_path == PATH_ROOT || - _path == PATH_HOME || - _path == PATH_HOME_SHARE || - _path == PATH_HOME_SHARE2 || - _path == PATH_CARD); - _isValid = _isVirtualDir || !IsFailed(File::GetAttributes(_unicodePath, _attr)); -} - -bool BadaFilesystemNode::exists() const { - return _isValid; -} - -bool BadaFilesystemNode::isReadable() const { - return _isVirtualDir || _isValid; -} - -bool BadaFilesystemNode::isDirectory() const { - return _isVirtualDir || (_isValid && _attr.IsDirectory()); -} - -bool BadaFilesystemNode::isWritable() const { - bool result = (_isValid && !_isVirtualDir && !_attr.IsDirectory() && !_attr.IsReadOnly()); - if (_path == PATH_HOME || - _path == PATH_HOME_EXT || - _path == PATH_HOME_SHARE || - _path == PATH_HOME_SHARE2) { - result = true; - } - return result; -} - -AbstractFSNode *BadaFilesystemNode::getChild(const Common::String &n) const { - AppAssert(!_path.empty()); - AppAssert(isDirectory()); - return new BadaFilesystemNode(_path, n); -} - -bool BadaFilesystemNode::getChildren(AbstractFSList &myList, - ListMode mode, bool hidden) const { - AppAssert(isDirectory()); - - bool result = false; - - if (_isVirtualDir && mode != Common::FSNode::kListFilesOnly) { - // present well known BADA file system areas - if (_path == PATH_ROOT) { - myList.push_back(new BadaFilesystemNode(PATH_HOME)); - myList.push_back(new BadaFilesystemNode(PATH_HOME_EXT)); - myList.push_back(new BadaFilesystemNode(PATH_MEDIA)); - myList.push_back(new BadaFilesystemNode(PATH_CARD)); - result = true; // no more entries - } else if (_path == PATH_CARD) { - myList.push_back(new BadaFilesystemNode(PATH_CARD_MEDIA)); - result = true; // no more entries - } else if (_path == PATH_HOME) { - // ensure share path is always included - myList.push_back(new BadaFilesystemNode(PATH_HOME_SHARE)); - myList.push_back(new BadaFilesystemNode(PATH_HOME_SHARE2)); - } - } - - if (!result) { - DirEnumerator *pDirEnum = 0; - Directory *pDir = new Directory(); - - // open directory - if (IsFailed(pDir->Construct(_unicodePath))) { - AppLog("Failed to open directory: %S", _unicodePath.GetPointer()); - } else { - // read all directory entries - pDirEnum = pDir->ReadN(); - if (pDirEnum) { - result = true; - } - - // loop through all directory entries - while (pDirEnum && pDirEnum->MoveNext() == E_SUCCESS) { - DirEntry dirEntry = pDirEnum->GetCurrentDirEntry(); - - // skip 'invisible' files if necessary - Osp::Base::String fileName = dirEntry.GetName(); - - if (fileName[0] == '.' && !hidden) { - continue; - } - - // skip '.' and '..' to avoid cycles - if (fileName == L"." || fileName == L"..") { - continue; - } - - // Honor the chosen mode - if ((mode == Common::FSNode::kListFilesOnly && dirEntry.IsDirectory()) || - (mode == Common::FSNode::kListDirectoriesOnly && !dirEntry.IsDirectory())) { - continue; - } - myList.push_back(new BadaFilesystemNode(_path, fromString(fileName))); - } - } - - // cleanup - if (pDirEnum) { - delete pDirEnum; - } - - // close the opened directory - if (pDir) { - delete pDir; - } - } - - return result; -} - -AbstractFSNode *BadaFilesystemNode::getParent() const { - logEntered(); - if (_path == PATH_ROOT) { - return 0; // The filesystem root has no parent - } - - const char *start = _path.c_str(); - const char *end = start + _path.size(); - - // Strip of the last component. We make use of the fact that at this - // point, path is guaranteed to be normalized - while (end > start && *(end-1) != '/') { - end--; - } - - if (end == start) { - // This only happens if we were called with a relative path, for which - // there simply is no parent. - // TODO: We could also resolve this by assuming that the parent is the - // current working directory, and returning a node referring to that. - return 0; - } - - return new BadaFilesystemNode(Common::String(start, end)); -} - -Common::SeekableReadStream *BadaFilesystemNode::createReadStream() { - Common::SeekableReadStream *result = BadaFileStream::makeFromPath(_unicodePath, false); - if (result != NULL) { - _isValid = !IsFailed(File::GetAttributes(_unicodePath, _attr)); - } - return result; -} - -Common::WriteStream *BadaFilesystemNode::createWriteStream() { - Common::WriteStream *result = BadaFileStream::makeFromPath(_unicodePath, true); - if (result != NULL) { - _isValid = !IsFailed(File::GetAttributes(_unicodePath, _attr)); - } - return result; -} diff --git a/backends/platform/bada/fs.h b/backends/platform/bada/fs.h deleted file mode 100644 index d7d368ac20..0000000000 --- a/backends/platform/bada/fs.h +++ /dev/null @@ -1,82 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef BADA_FILESYSTEM_H -#define BADA_FILESYSTEM_H - -#include <FBaseString.h> -#include <FBaseUtilStringUtil.h> -#include <FIoDirectory.h> -#include <FIoFile.h> - -#include "config.h" -#include "common/scummsys.h" -#include "common/stream.h" -#include "backends/fs/abstract-fs.h" - -using namespace Osp::Io; -using namespace Osp::Base; -using namespace Osp::Base::Utility; - -/** - * Implementation of the ScummVM file system API based on BADA. - * - * Parts of this class are documented in the base interface class, AbstractFSNode. - */ -class BadaFilesystemNode : public AbstractFSNode { -public: - /** - * Creates a BadaFilesystemNode for a given path. - * - * @param path the path the new node should point to. - */ - BadaFilesystemNode(const Common::String &path); - - Common::String getDisplayName() const { return _displayName; } - Common::String getName() const { return _displayName; } - Common::String getPath() const { return _path; } - - bool exists() const; - bool isDirectory() const; - bool isReadable() const; - bool isWritable() const; - - AbstractFSNode *getChild(const Common::String &n) const; - bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const; - AbstractFSNode *getParent() const; - - Common::SeekableReadStream *createReadStream(); - Common::WriteStream *createWriteStream(); - -protected: - BadaFilesystemNode(const Common::String &root, - const Common::String &p); - void init(const Common::String &nodePath); - - Common::String _displayName; - Common::String _path; - String _unicodePath; - bool _isValid; - bool _isVirtualDir; - FileAttributes _attr; -}; - -#endif diff --git a/backends/platform/bada/graphics.cpp b/backends/platform/bada/graphics.cpp deleted file mode 100644 index bd65c597c6..0000000000 --- a/backends/platform/bada/graphics.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "graphics/fontman.h" - -#include "backends/platform/bada/form.h" -#include "backends/platform/bada/system.h" -#include "backends/platform/bada/graphics.h" - -// -// BadaGraphicsManager -// -BadaGraphicsManager::BadaGraphicsManager(BadaAppForm *appForm) : - _appForm(appForm), - _eglDisplay(EGL_DEFAULT_DISPLAY), - _eglSurface(EGL_NO_SURFACE), - _eglConfig(0), - _eglContext(EGL_NO_CONTEXT), - _initState(true) { - assert(appForm != NULL); - _videoMode.fullscreen = true; -} - -const Graphics::Font *BadaGraphicsManager::getFontOSD() { - return FontMan.getFontByUsage(Graphics::FontManager::kBigGUIFont); -} - -bool BadaGraphicsManager::moveMouse(int16 &x, int16 &y) { - int16 currentX = _cursorState.x; - int16 currentY = _cursorState.y; - - // save the current hardware coordinates - _cursorState.x = x; - _cursorState.y = y; - - // return x/y as game coordinates - adjustMousePosition(x, y); - - // convert current x/y to game coordinates - adjustMousePosition(currentX, currentY); - - // return whether game coordinates have changed - return (currentX != x || currentY != y); -} - -Common::List<Graphics::PixelFormat> BadaGraphicsManager::getSupportedFormats() const { - logEntered(); - - Common::List<Graphics::PixelFormat> res; - res.push_back(Graphics::PixelFormat(2, 4, 4, 4, 4, 12, 8, 4, 0)); - res.push_back(Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); - res.push_back(Graphics::PixelFormat(2, 5, 5, 5, 1, 11, 6, 1, 0)); - res.push_back(Graphics::PixelFormat::createFormatCLUT8()); - return res; -} - -bool BadaGraphicsManager::hasFeature(OSystem::Feature f) { - bool result = (f == OSystem::kFeatureFullscreenMode || - f == OSystem::kFeatureVirtualKeyboard || - OpenGLGraphicsManager::hasFeature(f)); - return result; -} - -void BadaGraphicsManager::setFeatureState(OSystem::Feature f, bool enable) { - OpenGLGraphicsManager::setFeatureState(f, enable); -} - -void BadaGraphicsManager::setReady() { - _initState = false; -} - -void BadaGraphicsManager::updateScreen() { - if (_transactionMode == kTransactionNone) { - internUpdateScreen(); - } -} - -bool BadaGraphicsManager::loadEgl() { - logEntered(); - - EGLint numConfigs = 1; - EGLint eglConfigList[] = { - EGL_RED_SIZE, 5, - EGL_GREEN_SIZE, 6, - EGL_BLUE_SIZE, 5, - EGL_ALPHA_SIZE, 0, - EGL_DEPTH_SIZE, 8, - EGL_SURFACE_TYPE, EGL_WINDOW_BIT, - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT, - EGL_NONE - }; - - EGLint eglContextList[] = { - EGL_CONTEXT_CLIENT_VERSION, 1, - EGL_NONE - }; - - eglBindAPI(EGL_OPENGL_ES_API); - - if (_eglDisplay) { - unloadGFXMode(); - } - - _eglDisplay = eglGetDisplay((EGLNativeDisplayType) EGL_DEFAULT_DISPLAY); - if (EGL_NO_DISPLAY == _eglDisplay) { - systemError("eglGetDisplay() failed"); - return false; - } - - if (EGL_FALSE == eglInitialize(_eglDisplay, NULL, NULL) || - EGL_SUCCESS != eglGetError()) { - systemError("eglInitialize() failed"); - return false; - } - - if (EGL_FALSE == eglChooseConfig(_eglDisplay, eglConfigList, - &_eglConfig, 1, &numConfigs) || - EGL_SUCCESS != eglGetError()) { - systemError("eglChooseConfig() failed"); - return false; - } - - if (!numConfigs) { - systemError("eglChooseConfig() failed. Matching config does not exist \n"); - return false; - } - - _eglSurface = eglCreateWindowSurface(_eglDisplay, _eglConfig, - (EGLNativeWindowType)_appForm, NULL); - if (EGL_NO_SURFACE == _eglSurface || EGL_SUCCESS != eglGetError()) { - systemError("eglCreateWindowSurface() failed. EGL_NO_SURFACE"); - return false; - } - - _eglContext = eglCreateContext(_eglDisplay, _eglConfig, - EGL_NO_CONTEXT, eglContextList); - if (EGL_NO_CONTEXT == _eglContext || - EGL_SUCCESS != eglGetError()) { - systemError("eglCreateContext() failed"); - return false; - } - - if (false == eglMakeCurrent(_eglDisplay, _eglSurface, _eglSurface, _eglContext) || - EGL_SUCCESS != eglGetError()) { - systemError("eglMakeCurrent() failed"); - return false; - } - - logLeaving(); - return true; -} - -bool BadaGraphicsManager::loadGFXMode() { - logEntered(); - - if (!loadEgl()) { - unloadGFXMode(); - return false; - } - - int x, y, width, height; - _appForm->GetBounds(x, y, width, height); - _videoMode.overlayWidth = _videoMode.hardwareWidth = width; - _videoMode.overlayHeight = _videoMode.hardwareHeight = height; - _videoMode.scaleFactor = 3; // for proportional sized cursor in the launcher - - AppLog("screen size: %dx%d", _videoMode.hardwareWidth, _videoMode.hardwareHeight); - return OpenGLGraphicsManager::loadGFXMode(); -} - -void BadaGraphicsManager::loadTextures() { - logEntered(); - - OpenGLGraphicsManager::loadTextures(); - - // prevent image skew in some games, see: - // http://www.opengl.org/resources/features/KilgardTechniques/oglpitfall - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); -} - -void BadaGraphicsManager::internUpdateScreen() { - if (!_initState) { - OpenGLGraphicsManager::internUpdateScreen(); - eglSwapBuffers(_eglDisplay, _eglSurface); - } else { - showSplash(); - } -} - -void BadaGraphicsManager::unloadGFXMode() { - logEntered(); - - if (EGL_NO_DISPLAY != _eglDisplay) { - eglMakeCurrent(_eglDisplay, NULL, NULL, NULL); - - if (_eglContext != EGL_NO_CONTEXT) { - eglDestroyContext(_eglDisplay, _eglContext); - _eglContext = EGL_NO_CONTEXT; - } - - if (_eglSurface != EGL_NO_SURFACE) { - eglDestroySurface(_eglDisplay, _eglSurface); - _eglSurface = EGL_NO_SURFACE; - } - - eglTerminate(_eglDisplay); - _eglDisplay = EGL_NO_DISPLAY; - } - - _eglConfig = NULL; - - OpenGLGraphicsManager::unloadGFXMode(); - logLeaving(); -} - -// display a simple splash screen until launcher is ready -void BadaGraphicsManager::showSplash() { - Canvas canvas; - canvas.Construct(); - canvas.SetBackgroundColor(Color::COLOR_BLACK); - canvas.Clear(); - - int x = _videoMode.hardwareWidth / 3; - int y = _videoMode.hardwareHeight / 3; - - Font *pFont = new Font(); - pFont->Construct(FONT_STYLE_ITALIC | FONT_STYLE_BOLD, 55); - canvas.SetFont(*pFont); - canvas.SetForegroundColor(Color::COLOR_GREEN); - canvas.DrawText(Point(x, y), L"ScummVM"); - delete pFont; - - pFont = new Font(); - pFont->Construct(FONT_STYLE_ITALIC | FONT_STYLE_BOLD, 35); - canvas.SetFont(*pFont); - canvas.SetForegroundColor(Color::COLOR_WHITE); - canvas.DrawText(Point(x + 70, y + 50), L"Loading ..."); - delete pFont; - - canvas.Show(); - -} diff --git a/backends/platform/bada/graphics.h b/backends/platform/bada/graphics.h deleted file mode 100644 index b2aaca43bc..0000000000 --- a/backends/platform/bada/graphics.h +++ /dev/null @@ -1,72 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef BADA_GRAPHICS_H -#define BADA_GRAPHICS_H - -#include <FBase.h> -#include <FGraphics.h> -#include <FApp.h> -#include <FGraphicsOpengl.h> -#include <FSystem.h> -#include <FUi.h> - -#include "config.h" -#include "backends/graphics/opengl/opengl-graphics.h" -#include "graphics/font.h" -#include "backends/platform/bada/form.h" - -using namespace Osp::Graphics; -using namespace Osp::Graphics::Opengl; -using namespace Osp::App; - -class BadaGraphicsManager : public OpenGLGraphicsManager { -public: - BadaGraphicsManager(BadaAppForm *appForm); - - Common::List<Graphics::PixelFormat> getSupportedFormats() const; - bool hasFeature(OSystem::Feature f); - void updateScreen(); - void setFeatureState(OSystem::Feature f, bool enable); - void setReady(); - bool isReady() { return !_initState; } - const Graphics::Font *getFontOSD(); - bool moveMouse(int16 &x, int16 &y); - -private: - void internUpdateScreen(); - bool loadGFXMode(); - void loadTextures(); - void unloadGFXMode(); - void setInternalMousePosition(int x, int y) {} - void showSplash(); - - bool loadEgl(); - BadaAppForm *_appForm; - EGLDisplay _eglDisplay; - EGLSurface _eglSurface; - EGLConfig _eglConfig; - EGLContext _eglContext; - bool _initState; -}; - -#endif diff --git a/backends/platform/bada/main.cpp b/backends/platform/bada/main.cpp deleted file mode 100644 index 8c40f24dd1..0000000000 --- a/backends/platform/bada/main.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include <FBase.h> -#include <FApp.h> -#include <FSystem.h> - -#include "backends/platform/bada/portdefs.h" -#include "backends/platform/bada/form.h" -#include "backends/platform/bada/system.h" -#include "backends/platform/bada/application.h" - -using namespace Osp::Base; -using namespace Osp::Base::Collection; - -C_LINKAGE_BEGIN - -_EXPORT_ int OspMain(int argc, char *pArgv[]); - -/** - * The entry function of bada application called by the operating system. - */ -int OspMain(int argc, char *pArgv[]) { - result r = E_SUCCESS; - - AppLog("Application started."); - ArrayList *pArgs = new ArrayList(); - pArgs->Construct(); - - for (int i = 0; i < argc; i++) { - pArgs->Add(*(new String(pArgv[i]))); - } - - r = Osp::App::Application::Execute(BadaScummVM::createInstance, pArgs); - if (IsFailed(r)) { - r &= 0x0000FFFF; - } - - pArgs->RemoveAll(true); - delete pArgs; - AppLog("Application finished."); - - return static_cast<int>(r); -} - -C_LINKAGE_END - - diff --git a/backends/platform/bada/missing.cpp b/backends/platform/bada/missing.cpp deleted file mode 100644 index 10d45ca4b5..0000000000 --- a/backends/platform/bada/missing.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include <FApp.h> -#include <FGraphics.h> -#include <FUi.h> -#include <FSystem.h> -#include <FBase.h> - -#include "backends/platform/bada/portdefs.h" - -#include <stdio.h> -#include <string.h> -#include <stdarg.h> -#include <ctype.h> - -#define BUF_SIZE 255 - -void systemError(const char *message); - -C_LINKAGE_BEGIN - -int __errno; // for overridden method in saves/default/default-saves.cpp - -void __assert_func(const char *file, int line, - const char *func, const char *err) { - char buffer[BUF_SIZE]; - snprintf(buffer, sizeof(buffer), "%s %d %s %s", file, line, func, err); - systemError(buffer); -} - -void stderr_fprintf(void*, const char *format, ...) { - va_list ap; - char buffer[BUF_SIZE]; - - va_start(ap, format); - vsnprintf(buffer, sizeof(buffer), format, ap); - va_end(ap); - - AppLog(buffer); -} - -void stderr_vfprintf(void*, const char *format, va_list ap) { - char buffer[BUF_SIZE]; - vsnprintf(buffer, sizeof(buffer), format, ap); - AppLog(buffer); -} - -int printf(const char *format, ...) { - int result = 0; - va_list ap; - char buffer[BUF_SIZE]; - - va_start(ap, format); - result = vsnprintf(buffer, sizeof(buffer), format, ap); - va_end(ap); - - AppLog(buffer); - - return result; -} - -int sprintf(char *str, const char *format, ...) { - va_list ap; - int result; - char buffer[BUF_SIZE]; - - va_start(ap, format); - result = vsnprintf(buffer, sizeof(buffer), format, ap); - va_end(ap); - - strcpy(str, buffer); - - return result; -} - -char *strdup(const char *strSource) { - char *buffer; - int len = strlen(strSource) + 1; - buffer = (char *)malloc(len); - if (buffer) { - memcpy(buffer, strSource, len); - } - return buffer; -} - -int vsprintf(char *str, const char *format, va_list ap) { - char buffer[BUF_SIZE]; - int result = vsnprintf(buffer, sizeof(buffer), format, ap); - strcpy(str, buffer); - return result; -} - -C_LINKAGE_END diff --git a/backends/platform/bada/portdefs.h b/backends/platform/bada/portdefs.h deleted file mode 100644 index 813c5acde3..0000000000 --- a/backends/platform/bada/portdefs.h +++ /dev/null @@ -1,85 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef PORT_DEFS_H -#define PORT_DEFS_H - -#include <assert.h> -#include <stdarg.h> -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <unistd.h> -#include <math.h> -#include <new> - -#define M_PI 3.14159265358979323846 - -#ifdef __cplusplus - #include <ctype.h> // causes a link error when building c programs - #define C_LINKAGE_BEGIN extern "C" { - #define C_LINKAGE_END } -#else - #define C_LINKAGE_BEGIN - #define C_LINKAGE_END -#endif - -C_LINKAGE_BEGIN - -// for libFLAC -#undef fseeko -#undef ftello -#define fseeko fseek -#define ftello ftell - -// overcome use of fprintf since bada/newlib (1.2) does not -// support stderr/stdout (undefined reference to `_impure_ptr'). - -void stderr_fprintf(void*, const char *format, ...); -void stderr_vfprintf(void*, const char *format, va_list ap); - -#undef fprintf -#undef vfprintf -#undef stderr -#undef stdout -#undef stdin -#undef fputs -#undef fflush - -#define stderr (void *)0 -#define stdout (void *)1 -#define stdin (void *)2 -#define fputs(str, file) -#define fflush(file) -#define sscanf simple_sscanf -#define fprintf stderr_fprintf -#define vfprintf stderr_vfprintf - -int printf(const char *format, ...); -int sprintf(char *str, const char *format, ...); -int simple_sscanf(const char *buffer, const char *format, ...); -char *strdup(const char *s1); -int vsprintf(char *str, const char *format, va_list ap); - -C_LINKAGE_END - -#endif diff --git a/backends/platform/bada/sscanf.cpp b/backends/platform/bada/sscanf.cpp deleted file mode 100644 index aa846698f6..0000000000 --- a/backends/platform/bada/sscanf.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include <stdlib.h> -#include <stdio.h> -#include <stdarg.h> -#include <string.h> -#include <ctype.h> - -// -// simple sscanf replacement to match scummvm usage patterns -// - -bool scanInt(const char **in, va_list *ap, int max) { - // skip leading space characters - while (**in && **in == ' ') { - (*in)++; - } - - // number optionally preceeded with a + or - sign. - bool negate = false; - if (**in == '-') { - (*in)++; - negate = true; - } - - if (**in == '+') { - (*in)++; - } - - int *arg = va_arg(*ap, int*); - char *end; - long n = strtol(*in, &end, 10); - if (negate) { - n = -n; - } - - bool err = false; - if (end == *in || (max > 0 && (end - *in) > max)) { - err = true; - } else { - *arg = (int)n; - *in = end; - } - return err; -} - -bool scanHex(const char **in, va_list *ap) { - unsigned *arg = va_arg(*ap, unsigned*); - char *end; - long n = strtol(*in, &end, 16); - if (end == *in) { - return true; - } - - *in = end; - *arg = (unsigned) n; - return false; -} - -bool scanString(const char **in, va_list *ap) { - char *arg = va_arg(*ap, char*); - while (**in && **in != ' ' && **in != '\n' && **in != '\t') { - *arg = **in; - arg++; - (*in)++; - } - *arg = '\0'; - (*in)++; - return false; -} - -bool scanStringUntil(const char **in, va_list *ap, char c_end) { - char *arg = va_arg(*ap, char*); - while (**in && **in != c_end) { - *arg = **in; - *arg++; - (*in)++; - } - *arg = 0; - (*in)++; - return false; -} - -bool scanChar(const char **in, va_list *ap) { - char *arg = va_arg(*ap, char*); - if (**in) { - *arg = **in; - (*in)++; - } - return false; -} - -extern "C" int simple_sscanf(const char *input, const char *format, ...) { - va_list ap; - int result = 0; - const char *next = input; - - va_start(ap, format); - - while (*format) { - if (*format == '%') { - format++; - int max = 0; - while (isdigit(*format)) { - max = (max * 10) + (*format - '0'); - format++; - } - - bool err = false; - switch (*format++) { - case 'c': - err = scanChar(&next, &ap); - break; - case 'd': - case 'u': - err = scanInt(&next, &ap, max); - break; - case 'x': - err = scanHex(&next, &ap); - break; - case 's': - err = scanString(&next, &ap); - break; - case '[': - // assume %[^c] - if ('^' != *format) { - err = true; - } else { - format++; - if (*format && *(format+1) == ']') { - err = scanStringUntil(&next, &ap, *format); - format += 2; - } else { - err = true; - } - } - break; - default: - err = true; - break; - } - - if (err) { - break; - } else { - result++; - } - } else if (*format++ != *next++) { - // match input - break; - } - } - - va_end(ap); - return result; -} - -#if defined(TEST) -int main(int argc, char *pArgv[]) { - int x,y,xx,yy,h; - char buffer[100]; - unsigned u; - char c; - strcpy(buffer, "hello"); - char *b = buffer; - - if (simple_sscanf("BBX 00009 -1 +10 000", - "BBX %d %d %d %d", - &x, &y, &xx, &yy) != 4) { - printf("Failed\n"); - } else { - printf("Success %d %d %d %d\n", x, y, xx, yy); - } - - if (simple_sscanf("CAT 123x-10 0x100h 123456.AUD $ ", - "CAT %dx%d %xh %06u.AUD %c", - &x, &y, &h, &u, &c) != 5) { - printf("Failed\n"); - } else { - printf("Success %d %d %d %d '%c' \n", x, y, h, u, c); - } - - if (simple_sscanf("COPYRIGHT \"Copyright (c) 1984, 1987 Foo Systems Incorporated", - "COPYRIGHT \"%[^\"]", - b) != 1) { - printf("Failed\n"); - } else { - printf("Success %s\n", buffer); - } - - return 0; -} -#endif diff --git a/backends/platform/bada/system.cpp b/backends/platform/bada/system.cpp deleted file mode 100644 index 3f862c2571..0000000000 --- a/backends/platform/bada/system.cpp +++ /dev/null @@ -1,514 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include <FUiCtrlMessageBox.h> -#include <FLocales.h> - -#include "common/config-manager.h" -#include "common/file.h" -#include "engines/engine.h" -#include "graphics/font.h" -#include "graphics/fontman.h" -#include "graphics/fonts/bdf.h" -#include "backends/saves/default/default-saves.h" -#include "backends/events/default/default-events.h" -#include "backends/audiocd/default/default-audiocd.h" -#include "backends/mutex/mutex.h" -#include "backends/fs/fs-factory.h" -#include "backends/timer/bada/timer.h" - -#include "backends/platform/bada/form.h" -#include "backends/platform/bada/system.h" -#include "backends/platform/bada/graphics.h" -#include "backends/platform/bada/audio.h" - -using namespace Osp::Base; -using namespace Osp::Base::Runtime; -using namespace Osp::Locales; -using namespace Osp::Ui::Controls; -using namespace Osp::System; - -#define DEFAULT_CONFIG_FILE "/Home/scummvm.ini" -#define RESOURCE_PATH "/Res" -#define MUTEX_BUFFER_SIZE 5 - -// -// BadaFilesystemFactory -// -class BadaFilesystemFactory : public FilesystemFactory { - AbstractFSNode *makeRootFileNode() const; - AbstractFSNode *makeCurrentDirectoryFileNode() const; - AbstractFSNode *makeFileNodePath(const Common::String &path) const; -}; - -AbstractFSNode *BadaFilesystemFactory::makeRootFileNode() const { - return new BadaFilesystemNode("/"); -} - -AbstractFSNode *BadaFilesystemFactory::makeCurrentDirectoryFileNode() const { - return new BadaFilesystemNode("/Home"); -} - -AbstractFSNode *BadaFilesystemFactory::makeFileNodePath(const Common::String &path) const { - AppAssert(!path.empty()); - return new BadaFilesystemNode(path); -} - -// -// BadaSaveFileManager -// -struct BadaSaveFileManager : public DefaultSaveFileManager { - bool removeSavefile(const Common::String &filename); -}; - -bool BadaSaveFileManager::removeSavefile(const Common::String &filename) { - Common::String savePathName = getSavePath(); - - checkPath(Common::FSNode(savePathName)); - if (getError().getCode() != Common::kNoError) { - return false; - } - - // recreate FSNode since checkPath may have changed/created the directory - Common::FSNode savePath(savePathName); - Common::FSNode file = savePath.getChild(filename); - - String unicodeFileName; - StringUtil::Utf8ToString(file.getPath().c_str(), unicodeFileName); - - switch (Osp::Io::File::Remove(unicodeFileName)) { - case E_SUCCESS: - return true; - - case E_ILLEGAL_ACCESS: - setError(Common::kWritePermissionDenied, "Search or write permission denied: " + - file.getName()); - break; - - default: - setError(Common::kPathDoesNotExist, "removeSavefile: '" + file.getName() + - "' does not exist or path is invalid"); - break; - } - - return false; -} - -// -// BadaMutexManager -// -struct BadaMutexManager : public MutexManager { - BadaMutexManager(); - ~BadaMutexManager(); - OSystem::MutexRef createMutex(); - void lockMutex(OSystem::MutexRef mutex); - void unlockMutex(OSystem::MutexRef mutex); - void deleteMutex(OSystem::MutexRef mutex); -private: - Mutex *buffer[MUTEX_BUFFER_SIZE]; -}; - -BadaMutexManager::BadaMutexManager() { - for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) { - buffer[i] = NULL; - } -} - -BadaMutexManager::~BadaMutexManager() { - for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) { - if (buffer[i] != NULL) { - delete buffer[i]; - } - } -} - -OSystem::MutexRef BadaMutexManager::createMutex() { - Mutex *mutex = new Mutex(); - mutex->Create(); - - for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) { - if (buffer[i] == NULL) { - buffer[i] = mutex; - break; - } - } - - return (OSystem::MutexRef) mutex; -} - -void BadaMutexManager::lockMutex(OSystem::MutexRef mutex) { - Mutex *m = (Mutex *)mutex; - m->Acquire(); -} - -void BadaMutexManager::unlockMutex(OSystem::MutexRef mutex) { - Mutex *m = (Mutex *)mutex; - m->Release(); -} - -void BadaMutexManager::deleteMutex(OSystem::MutexRef mutex) { - Mutex *m = (Mutex *)mutex; - - for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) { - if (buffer[i] == m) { - buffer[i] = NULL; - } - } - - delete m; -} - -// -// BadaEventManager -// -struct BadaEventManager : public DefaultEventManager { - BadaEventManager(Common::EventSource *boss); - void init(); - int shouldQuit() const; -}; - -BadaEventManager::BadaEventManager(Common::EventSource *boss) : - DefaultEventManager(boss) { -} - -void BadaEventManager::init() { - DefaultEventManager::init(); - - // theme and vkbd should have now loaded - clear the splash screen - BadaSystem *system = (BadaSystem *)g_system; - BadaGraphicsManager *graphics = system->getGraphics(); - if (graphics) { - graphics->setReady(); - graphics->updateScreen(); - } -} - -int BadaEventManager::shouldQuit() const { - BadaSystem *system = (BadaSystem *)g_system; - return DefaultEventManager::shouldQuit() || system->isClosing(); -} - -// -// BadaSystem -// -BadaSystem::BadaSystem(BadaAppForm *appForm) : - _appForm(appForm), - _audioThread(0), - _epoch(0) { -} - -result BadaSystem::Construct(void) { - logEntered(); - - _fsFactory = new BadaFilesystemFactory(); - if (!_fsFactory) { - return E_OUT_OF_MEMORY; - } - - return E_SUCCESS; -} - -BadaSystem::~BadaSystem() { - logEntered(); -} - -result BadaSystem::initModules() { - logEntered(); - - _mutexManager = new BadaMutexManager(); - if (!_mutexManager) { - return E_OUT_OF_MEMORY; - } - - _timerManager = new BadaTimerManager(); - if (!_timerManager) { - return E_OUT_OF_MEMORY; - } - - _savefileManager = new BadaSaveFileManager(); - if (!_savefileManager) { - return E_OUT_OF_MEMORY; - } - - _graphicsManager = (GraphicsManager *)new BadaGraphicsManager(_appForm); - if (!_graphicsManager) { - return E_OUT_OF_MEMORY; - } - - // depends on _graphicsManager when ENABLE_VKEYBD enabled - _eventManager = new BadaEventManager(this); - if (!_eventManager) { - return E_OUT_OF_MEMORY; - } - - _audioThread = new AudioThread(); - if (!_audioThread) { - return E_OUT_OF_MEMORY; - } - - _mixer = _audioThread->Construct(this); - if (!_mixer) { - return E_OUT_OF_MEMORY; - } - - _audiocdManager = (AudioCDManager *)new DefaultAudioCDManager(); - if (!_audiocdManager) { - return E_OUT_OF_MEMORY; - } - - if (IsFailed(_audioThread->Start())) { - AppLog("Failed to start audio thread"); - return E_OUT_OF_MEMORY; - } - - logLeaving(); - return E_SUCCESS; -} - -void BadaSystem::initBackend() { - logEntered(); - - // use the mobile device theme - ConfMan.set("gui_theme", "/Res/scummmobile"); - - // allow bada virtual keypad pack to be found - ConfMan.set("vkeybdpath", "/Res/vkeybd_bada"); - ConfMan.set("vkeybd_pack_name", "vkeybd_bada"); - - // set default save path to writable area - if (!ConfMan.hasKey("savepath")) { - ConfMan.set("savepath", "/Home/Share"); - } - - // default to no auto-save - if (!ConfMan.hasKey("autosave_period")) { - ConfMan.setInt("autosave_period", 0); - } - - ConfMan.registerDefault("fullscreen", true); - ConfMan.registerDefault("aspect_ratio", false); - ConfMan.setBool("confirm_exit", false); - - SystemTime::GetTicks(_epoch); - - if (E_SUCCESS != initModules()) { - AppLog("initModules failed"); - } else { - OSystem::initBackend(); - } - - // replace kBigGUIFont using the large font from the scummmobile theme - Common::File fontFile; - Common::String fileName = "/Res/scummmobile/helvB14-iso-8859-1.fcc"; - BadaFilesystemNode file(fileName); - if (file.exists()) { - Common::SeekableReadStream *stream = file.createReadStream(); - if (stream) { - if (fontFile.open(stream, fileName)) { - Graphics::BdfFont *font = Graphics::BdfFont::loadFromCache(fontFile); - if (font) { - // use this font for the vkbd and on-screen messages - FontMan.setFont(Graphics::FontManager::kBigGUIFont, font); - } - } - } - } - - logLeaving(); -} - -void BadaSystem::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) { - // allow translations.dat and game .DAT files to be found - s.addDirectory(RESOURCE_PATH, RESOURCE_PATH, priority); -} - -void BadaSystem::destroyBackend() { - closeAudio(); - - delete _graphicsManager; - _graphicsManager = 0; - - delete _savefileManager; - _savefileManager = 0; - - delete _fsFactory; - _fsFactory = 0; - - delete _mixer; - _mixer = 0; - - delete _audiocdManager; - _audiocdManager = 0; - - delete _timerManager; - _timerManager = 0; - - delete _eventManager; - _eventManager = 0; - - delete _mutexManager; - _mutexManager = 0; -} - -bool BadaSystem::pollEvent(Common::Event &event) { - return _appForm->pollEvent(event); -} - -uint32 BadaSystem::getMillis() { - long long result, ticks = 0; - SystemTime::GetTicks(ticks); - result = ticks - _epoch; - return result; -} - -void BadaSystem::delayMillis(uint msecs) { - if (!_appForm->isClosing()) { - Thread::Sleep(msecs); - } -} - -void BadaSystem::updateScreen() { - if (_graphicsManager != NULL) { - _graphicsManager->updateScreen(); - } -} - -void BadaSystem::getTimeAndDate(TimeDate &td) const { - DateTime currentTime; - - if (E_SUCCESS == SystemTime::GetCurrentTime(WALL_TIME, currentTime)) { - td.tm_sec = currentTime.GetSecond(); - td.tm_min = currentTime.GetMinute(); - td.tm_hour = currentTime.GetHour(); - td.tm_mday = currentTime.GetDay(); - td.tm_mon = currentTime.GetMonth(); - td.tm_year = currentTime.GetYear(); - - Calendar *calendar = Calendar::CreateInstanceN(CALENDAR_GREGORIAN); - calendar->SetTime(currentTime); - td.tm_wday = calendar->GetTimeField(TIME_FIELD_DAY_OF_WEEK) - 1; - delete calendar; - } -} - -void BadaSystem::fatalError() { - systemError("ScummVM: Fatal internal error."); -} - -void BadaSystem::exitSystem() { - if (_appForm) { - closeAudio(); - closeGraphics(); - _appForm->exitSystem(); - } -} - -void BadaSystem::logMessage(LogMessageType::Type type, const char *message) { - if (type == LogMessageType::kError) { - systemError(message); - } else { - AppLog(message); - } -} - -Common::SeekableReadStream *BadaSystem::createConfigReadStream() { - BadaFilesystemNode file(DEFAULT_CONFIG_FILE); - return file.createReadStream(); -} - -Common::WriteStream *BadaSystem::createConfigWriteStream() { - BadaFilesystemNode file(DEFAULT_CONFIG_FILE); - return file.createWriteStream(); -} - -void BadaSystem::closeAudio() { - if (_audioThread) { - _audioThread->Stop(); - _audioThread->Join(); - delete _audioThread; - _audioThread = 0; - } -} - -void BadaSystem::closeGraphics() { - if (_graphicsManager) { - delete _graphicsManager; - _graphicsManager = 0; - } -} - -void BadaSystem::setMute(bool on) { - // only change mute after eventManager init() has completed - if (_audioThread) { - BadaGraphicsManager *graphics = getGraphics(); - if (graphics && graphics->isReady()) { - _audioThread->setMute(on); - } - } -} - -int BadaSystem::setVolume(bool up, bool minMax) { - int level = -1; - if (_audioThread) { - level = _audioThread->setVolume(up, minMax); - } - return level; -} - -// -// create the ScummVM system -// -BadaAppForm *systemStart(Osp::App::Application *app) { - logEntered(); - - BadaAppForm *appForm = new BadaAppForm(); - if (!appForm) { - AppLog("Failed to create appForm"); - return NULL; - } - - if (E_SUCCESS != appForm->Construct() || - E_SUCCESS != app->GetAppFrame()->GetFrame()->AddControl(*appForm)) { - delete appForm; - AppLog("Failed to construct appForm"); - return NULL; - } - - return appForm; -} - -// -// display a fatal error notification -// -void systemError(const char *message) { - AppLog("Fatal system error: %s", message); - - ArrayList *args = new ArrayList(); - args->Construct(); - args->Add(*(new String(message))); - Application::GetInstance()->SendUserEvent(USER_MESSAGE_EXIT_ERR, args); - - if (g_system) { - BadaSystem *system = (BadaSystem *)g_system; - system->exitSystem(); - } -} diff --git a/backends/platform/bada/system.h b/backends/platform/bada/system.h deleted file mode 100644 index c28686cb3d..0000000000 --- a/backends/platform/bada/system.h +++ /dev/null @@ -1,102 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef BADA_SYSTEM_H -#define BADA_SYSTEM_H - -#include <FApp.h> -#include <FGraphics.h> -#include <FUi.h> -#include <FSystem.h> -#include <FBase.h> -#include <FIoFile.h> - -#include "config.h" -#include "common/scummsys.h" -#include "backends/modular-backend.h" - -#include "backends/platform/bada/fs.h" -#include "backends/platform/bada/form.h" -#include "backends/platform/bada/audio.h" -#include "backends/platform/bada/graphics.h" - -#if defined(_DEBUG) -#define logEntered() AppLog("%s entered (%s %d)", \ - __FUNCTION__, __FILE__, __LINE__); -#define logLeaving() AppLog("%s leaving (%s %d)", \ - __FUNCTION__, __FILE__, __LINE__); -#else -#define logEntered() -#define logLeaving() -#endif - -BadaAppForm *systemStart(Osp::App::Application *app); -void systemError(const char *message); - -#define USER_MESSAGE_EXIT 1000 -#define USER_MESSAGE_EXIT_ERR 1001 - -// -// BadaSystem -// -class BadaSystem : public ModularBackend, - Common::EventSource { -public: - BadaSystem(BadaAppForm *appForm); - ~BadaSystem(); - - result Construct(); - void closeAudio(); - void closeGraphics(); - void destroyBackend(); - void setMute(bool on); - int setVolume(bool up, bool minMax); - void exitSystem(); - bool isClosing() { return _appForm->isClosing(); } - - BadaGraphicsManager *getGraphics() { - return (BadaGraphicsManager *)_graphicsManager; - } - -private: - void initBackend(); - result initModules(); - - void updateScreen(); - bool pollEvent(Common::Event &event); - uint32 getMillis(); - void delayMillis(uint msecs); - void getTimeAndDate(TimeDate &t) const; - void fatalError(); - void logMessage(LogMessageType::Type type, const char *message); - void addSysArchivesToSearchSet(Common::SearchSet &s, int priority); - - Common::EventSource *getDefaultEventSource() { return this; } - Common::SeekableReadStream *createConfigReadStream(); - Common::WriteStream *createConfigWriteStream(); - - BadaAppForm *_appForm; - AudioThread *_audioThread; - long long _epoch; -}; - -#endif |