diff options
Diffstat (limited to 'backends/platform/PalmOS/Src/init_palmos.cpp')
| -rw-r--r-- | backends/platform/PalmOS/Src/init_palmos.cpp | 171 | 
1 files changed, 171 insertions, 0 deletions
| diff --git a/backends/platform/PalmOS/Src/init_palmos.cpp b/backends/platform/PalmOS/Src/init_palmos.cpp new file mode 100644 index 0000000000..d789580e7a --- /dev/null +++ b/backends/platform/PalmOS/Src/init_palmos.cpp @@ -0,0 +1,171 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2001  Ludvig Strigeus + * Copyright (C) 2001-2006 The ScummVM project + * Copyright (C) 2002-2006 Chris Apers - PalmOS Backend + * + * 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. + * + * $URL$ + * $Id$ + * + */ + +#include <PalmOS.h> + +#include "globals.h" +#include "init_palmos.h" + +static UInt16 autoOffDelay; + +void PalmInit(UInt8 init) { +	// set screen depth +	UInt32 depth = 8; +	WinScreenMode(winScreenModeSet, NULL, NULL, &depth, NULL); + +	if (init & INIT_AUTOOFF) { +		autoOffDelay = SysSetAutoOffTime(0); +		EvtResetAutoOffTimer(); +	} + +} + +void PalmRelease(UInt8 init) { +	if (init & INIT_AUTOOFF) { +		SysSetAutoOffTime(autoOffDelay); +		EvtResetAutoOffTimer(); +	} +} + +Err PalmHRInit(UInt32 depth) { +	Err e; +	UInt32 width = 320; +	UInt32 height = 320; +	Boolean color = true; + +	e = WinScreenMode (winScreenModeSet, &width, &height, &depth, &color); + +	if (!e) { +		UInt32 attr; +		WinScreenGetAttribute(winScreenDensity, &attr); +		e = (attr != kDensityDouble); +	} + +	return e; +} + +void PalmHRRelease() { +	// should i do something here ? +} + +UInt8 PalmScreenSize(Coord *stdw, Coord *stdh, Coord *fullw, Coord *fullh) { +	UInt32 ftr; +	UInt8 mode = 0; + +	Coord sw = 160; +	Coord sh = 160;	 + +	// Hi-Density present ? +	if (!FtrGet(sysFtrCreator, sysFtrNumWinVersion, &ftr)) { +		if (ftr >= 4) { +			sw = 320; +			sh = 320; +		} +	} + +	Coord fw = sw; +	Coord fh = sh; + +	// if feature set, not set on Garmin iQue3600 ??? +	if (!(FtrGet(sysFtrCreator, sysFtrNumInputAreaFlags, &ftr))) { +		if (ftr & grfFtrInputAreaFlagCollapsible) { +			UInt16 curOrientation = SysGetOrientation(); + +			if (curOrientation == sysOrientationLandscape || +				curOrientation == sysOrientationReverseLandscape +					) +				mode = PALM_LANDSCAPE; +			else +				mode = PALM_PORTRAIT; + +			PINSetInputTriggerState(pinInputTriggerEnabled); +			PINSetInputAreaState(pinInputAreaClosed); +			StatHide(); + +			WinGetDisplayExtent(&fw, &fh); +			fw *= 2; +			fh *= 2; + +			StatShow(); +			PINSetInputAreaState(pinInputAreaOpen); +			PINSetInputTriggerState(pinInputTriggerDisabled); +		} +	} + +	if (stdw) *stdw = sw; +	if (stdh) *stdh = sh; +	if (fullw) *fullw = fw; +	if (fullh) *fullh = fh; + +	return mode; +} + +void PalmGetMemory(UInt32* storageMemoryP, UInt32* dynamicMemoryP, UInt32 *storageFreeP, UInt32 *dynamicFreeP) { +	UInt32		free, max; + +	Int16		i; +	Int16		nCards; +	UInt16		cardNo; +	UInt16		heapID; + +	UInt32		storageMemory = 0; +	UInt32		dynamicMemory = 0; +	UInt32		storageFree = 0; +	UInt32		dynamicFree = 0; + +	// Iterate through each card to support devices with multiple cards. +	nCards = MemNumCards();		 + +	for (cardNo = 0; cardNo < nCards; cardNo++) { +		// Iterate through the RAM heaps on a card (excludes ROM). +		for (i=0; i< MemNumRAMHeaps(cardNo); i++) { +			// Obtain the ID of the heap. +			heapID = MemHeapID(cardNo, i); +			// Calculate the total memory and free memory of the heap. +			MemHeapFreeBytes(heapID, &free, &max); + +			// If the heap is dynamic, increment the dynamic memory total. +			if (MemHeapDynamic(heapID)) { +				dynamicMemory += MemHeapSize(heapID); +				dynamicFree += free; + +			// The heap is nondynamic (storage ?). +			} else { +				storageMemory += MemHeapSize(heapID); +				storageFree += free; +			} +		} +	} +	// Reduce the stats to KB.  Round the results. +	dynamicMemory = dynamicMemory / 1024L; +	storageMemory = storageMemory / 1024L; + +	dynamicFree = dynamicFree / 1024L; +	storageFree = storageFree / 1024L; + +	if (dynamicMemoryP) *dynamicMemoryP = dynamicMemory; +	if (storageMemoryP) *storageMemoryP = storageMemory; +	if (dynamicFreeP) *dynamicFreeP = dynamicFree; +	if (storageFreeP) *storageFreeP = storageFree; +} | 
