⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rotationmgrlib.h

📁 大名鼎鼎的CE下播放软件,TCPPMP的源代码!!!2410下可以流畅的解QVGA的H264,MPEG4等格式.
💻 H
字号:
/**
 * Public API for the Mobile Stream Rotation extension.
 *
 * Copyright (c) 2005 Mobile Stream (http://www.mobile-stream.com)
 *
 * Applicable:
 *  - Garmin iQue 3600 - will be in v1.2
 *  - Garmin iQue 3600a  - may be TBD (PalmOS 5.4 but apparently no rotation support?)
 *  - Sony CLIE PEG-NX60
 *  - Sony CLIE PEG-NX70V
 *  - Sony CLIE PEG-NX73
 *  - Sony CLIE PEG-NX80
 *  - Sony CLIE PEG-NZ90
 *  - Sony CLIE PEG-TH55
 *  - Sony CLIE PEG-UX40
 *  - Sony CLIE PEG-UX50
 *  - Sony CLIE PEG-VZ90 - may be TBD in v1.3 (missing PenInputMgr API)
 *
 * Last edited: 2 May 2005 (v1.1).
 */

#ifndef __ROTATIONMGRLIB_H__
#define __ROTATIONMGRLIB_H__

#include <PalmTypes.h>
#include <SystemMgr.h>


/************************************************************
 * Library type and creator.
 *************************************************************/

#ifndef sysFileTExtensionARM
#define sysFileTExtensionARM		'aext'
#endif

#define kRotationMgrLibCreator		'RotM'
#define kRotationMgrLibType		sysFileTExtensionARM
#define kRotationMgrLibName		"RotationMgr"

/* This has nothing to do with PalmSource Pen Input Manager API version. */
#define kRotationMgrLibAPIVersion11	sysMakeROMVersion(1, 1, 0, sysROMStageRelease, 0)
#define kRotationMgrLibAPIVersion12	sysMakeROMVersion(1, 2, 0, sysROMStageRelease, 0)

/* Current API version. */
#define kRotationMgrLibAPIVersion	kRotationMgrLibAPIVersion11


/************************************************************
 * ARM entry point numbers.
 *************************************************************/

#define entryNumRotationMgrLibOpen		0x00	/* 0 */
#define entryNumRotationMgrLibClose		0x01	/* 4 */
#define entryNumRotationMgrGetLibAPIVersion	0x02	/* 8 */
#define entryNumRotationMgrAppPrefsSet		0x03	/* 12 */
#define entryNumRotationMgrAppPrefsGet		0x04	/* 16 */
#define entryNumRotationMgrAppPrefsEnumerate	0x05	/* 20 */
#define entryNumRotationMgrAttributeSet		0x06	/* 24 */
#define entryNumRotationMgrAttributeGet		0x07	/* 28 */


/************************************************************
 * 68K library trap numbers.
 *************************************************************/

#define kRotationMgrLibTrapOpen			(sysLibTrapOpen)
#define kRotationMgrLibTrapClose		(sysLibTrapClose)
#define kRotationMgrLibTrapSleep		(sysLibTrapSleep)
#define kRotationMgrLibTrapWake			(sysLibTrapWake)
#define kRotationMgrLibTrapGetLibAPIVersion	(sysLibTrapCustom + 0)
#define kRotationMgrLibTrapAppPrefsSet		(sysLibTrapCustom + 1)
#define kRotationMgrLibTrapAppPrefsGet		(sysLibTrapCustom + 2)
#define kRotationMgrLibTrapAppPrefsEnumerate	(sysLibTrapCustom + 3)
#define kRotationMgrLibTrapAttributeSet		(sysLibTrapCustom + 4)
#define kRotationMgrLibTrapAttributeGet		(sysLibTrapCustom + 5)


/************************************************************
 * Notifications. Same as on Tungsten|T3, T|T5 and T|X.
 *************************************************************/

/* This is sent right before rotation change. */
#define kRotationMgrBeforeRotationChangeEvent	'Rchg'

/* This is sent right after rotation change. */
#define kRotationMgrAfterRotationChangeEvent	'RChg'

/*
 * notifyDetailsP of above notifications will point to this structure.
 * All fields are in big-endian format.
 */
typedef struct RotationMgrRotationChangeDetailsType {
	UInt16	newRotation;
	UInt16	oldRotation;
} RotationMgrRotationChangeDetailsType;


/************************************************************
 * Error codes.
 *************************************************************/

/* FIXME */
#define kRotationMgrErrorClass		(oemErrorClass + 0x700)

#define kRotationMgrErrBadParam		(kRotationMgrErrorClass + 0)
#define kRotationMgrErrNotAllowed	(kRotationMgrErrorClass + 1)
#define kRotationMgrErrNotEnoughSpace	(kRotationMgrErrorClass + 2)
#define kRotationMgrErrNotFound		(kRotationMgrErrorClass + 3)


/************************************************************
 * Flags for applications.
 *************************************************************/

/* Preferred orientation for the application. */
#define kRotationMgrAppPrefLaunchDefault	0x0000
#define kRotationMgrAppPrefLaunchLandscape	0x0001
#define kRotationMgrAppPrefLaunchPortrait	0x0002
#define kRotationMgrAppPrefLaunchAuto		0x0003
#define kRotationMgrAppPrefLaunchCW0		0x0004
#define kRotationMgrAppPrefLaunchCW90		0x0005
#define kRotationMgrAppPrefLaunchCW180		0x0006
#define kRotationMgrAppPrefLaunchCW270		0x0007
#define kRotationMgrAppPrefLaunchMask		0x0007

/* Disable orientation trigger for the application. */
#define kRotationMgrAppPrefLocked		0x0008

/*
 * Allow Sony Virtual Silkscreen API for the application.
 * Ignored on Garmin handhelds.
 */
#define kRotationMgrAppPrefSonyAPI		0x0010

/*
 * Allow PalmSource Pen Input Manager API for the application.
 * Garmin iQue 3600 is special - TBD.
 */
#define kRotationMgrAppPrefPalmSourceAPI	0x0020

/* Enable WinDrawBitmap optimisation for fullscreen games. */
#define kRotationMgrAppPrefFastFullscreen	0x0040

/* User should not change rotation settings for this application. */
#define kRotationMgrAppPrefDangerous		0x8000

/* Default preferences. */
#define kRotationMgrAppPrefsDefault			\
		(kRotationMgrAppPrefLaunchDefault |	\
		 kRotationMgrAppPrefPalmSourceAPI |	\
		 kRotationMgrAppPrefSonyAPI)


/************************************************************
 * Preferenced applications iterator start and stop constants.
 *************************************************************/

#define kRotationMgrAppPrefsIteratorStart	0
#define kRotationMgrAppPrefsIteratorStop	0xffffffffL


/************************************************************
 * Global attributes of RotationMgr extension.
 *************************************************************/

/* Trigger type. */
#define kRotationMgrAttrTriggerType		0

enum {
	kRotationMgrTriggerNone,
	kRotationMgrTriggerStatusBar,

	/* Not currently implemented and probably never will. */
	kRotationMgrTriggerButton
};

/* Trigger will switch between 0 and x degrees. */
#define kRotationMgrAttrTriggerRotation		1
enum {
	kRotationMgrTriggerLeft,		/* 270 degrees */
	kRotationMgrTriggerRight,		/* 90 degrees */
	kRotationMgrTriggerBoth			/* two triggers */
};

/* Real framebuffer base address. Not settable. */
#define kRotationMgrAttrDisplayAddress		0x800

/* Physical display size. Not settable */
#define kRotationMgrAttrDisplayWidth		0x801
#define kRotationMgrAttrDisplayHeight		0x802
#define kRotationMgrAttrDisplayRowBytes		0x803

/* Retrieve the registration ID/pass the registration code. */
#define kRotationMgrAttrRegistration		0x8000

#if CPU_TYPE == CPU_68K

/************************************************************
 * Standard library APIs.
 *************************************************************/

Err RotationMgrLibOpen(UInt16 refNum)	SYS_TRAP(kRotationMgrLibTrapOpen);
Err RotationMgrLibClose(UInt16 refNum)	SYS_TRAP(kRotationMgrLibTrapClose);
Err RotationMgrLibSleep(UInt16 refNum)	SYS_TRAP(kRotationMgrLibTrapSleep);
Err RotationMgrLibWake(UInt16 refNum)	SYS_TRAP(kRotationMgrLibTrapWake);


/************************************************************
 * Get Mobile Stream RotationMgr API version.
 *************************************************************/

UInt32 RotationMgrGetLibAPIVersion(UInt16 refNum)
					SYS_TRAP(kRotationMgrLibTrapGetLibAPIVersion);


/************************************************************
 * Application preferences API.
 *************************************************************/

/*
 * appType is either sysFileTPanel or sysFileTApplication.
 */
Err RotationMgrAppPrefsSet(UInt16 refNum,
		UInt32 appType, UInt32 appCreator, UInt32 prefs)
					SYS_TRAP(kRotationMgrLibTrapAppPrefsSet);

Err RotationMgrAppPrefsGet(UInt16 refNum,
		UInt32 appType, UInt32 appCreator, UInt32 *prefsP)
					SYS_TRAP(kRotationMgrLibTrapAppPrefsGet);

Err RotationMgrAppPrefsEnumerate(UInt16 refNum, UInt32 *appPrefsIteratorP,
		UInt32 *appTypeP, UInt32 *appCreatorP, UInt32 *prefsP)
					SYS_TRAP(kRotationMgrLibTrapAppPrefsEnumerate);


/************************************************************
 * RotationMgr global attributes API.
 *************************************************************/

Err RotationMgrAttributeSet(UInt16 refNum, UInt32 attribute, UInt32 value)
					SYS_TRAP(kRotationMgrLibTrapAttributeSet);

Err RotationMgrAttributeGet(UInt16 refNum, UInt32 attribute, UInt32 *valueP)
					SYS_TRAP(kRotationMgrLibTrapAttributeGet);

#else /* CPU_TYPE != CPU_68K */

extern UInt32 RotationMgrGetLibAPIVersion(void);
extern Err RotationMgrAppPrefsSet(UInt32 appType, UInt32 appCreator, UInt32 prefs);
extern Err RotationMgrAppPrefsGet(UInt32 appType, UInt32 appCreator, UInt32 *prefsP);
extern Err RotationMgrAppPrefsEnumerate(Int32 *appPrefsIteratorP,
		UInt32 *appTypeP, UInt32 *appCreatorP, UInt32 *prefsP);
extern Err RotationMgrAttributeSet(UInt32 attribute, UInt32 value);
extern Err RotationMgrAttributeGet(UInt32 attribute, UInt32 *valueP);

#endif /* CPU_TYPE == CPU_68K */

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -