RotationMgrLib.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:9k
源码类别:

Windows CE

开发平台:

C/C++

  1. /**
  2.  * Public API for the Mobile Stream Rotation extension.
  3.  *
  4.  * Copyright (c) 2005 Mobile Stream (http://www.mobile-stream.com)
  5.  *
  6.  * Applicable:
  7.  *  - Garmin iQue 3600 - will be in v1.2
  8.  *  - Garmin iQue 3600a  - may be TBD (PalmOS 5.4 but apparently no rotation support?)
  9.  *  - Sony CLIE PEG-NX60
  10.  *  - Sony CLIE PEG-NX70V
  11.  *  - Sony CLIE PEG-NX73
  12.  *  - Sony CLIE PEG-NX80
  13.  *  - Sony CLIE PEG-NZ90
  14.  *  - Sony CLIE PEG-TH55
  15.  *  - Sony CLIE PEG-UX40
  16.  *  - Sony CLIE PEG-UX50
  17.  *  - Sony CLIE PEG-VZ90 - may be TBD in v1.3 (missing PenInputMgr API)
  18.  *
  19.  * Last edited: 2 May 2005 (v1.1).
  20.  */
  21. #ifndef __ROTATIONMGRLIB_H__
  22. #define __ROTATIONMGRLIB_H__
  23. #include <PalmTypes.h>
  24. #include <SystemMgr.h>
  25. /************************************************************
  26.  * Library type and creator.
  27.  *************************************************************/
  28. #ifndef sysFileTExtensionARM
  29. #define sysFileTExtensionARM 'aext'
  30. #endif
  31. #define kRotationMgrLibCreator 'RotM'
  32. #define kRotationMgrLibType sysFileTExtensionARM
  33. #define kRotationMgrLibName "RotationMgr"
  34. /* This has nothing to do with PalmSource Pen Input Manager API version. */
  35. #define kRotationMgrLibAPIVersion11 sysMakeROMVersion(1, 1, 0, sysROMStageRelease, 0)
  36. #define kRotationMgrLibAPIVersion12 sysMakeROMVersion(1, 2, 0, sysROMStageRelease, 0)
  37. /* Current API version. */
  38. #define kRotationMgrLibAPIVersion kRotationMgrLibAPIVersion11
  39. /************************************************************
  40.  * ARM entry point numbers.
  41.  *************************************************************/
  42. #define entryNumRotationMgrLibOpen 0x00 /* 0 */
  43. #define entryNumRotationMgrLibClose 0x01 /* 4 */
  44. #define entryNumRotationMgrGetLibAPIVersion 0x02 /* 8 */
  45. #define entryNumRotationMgrAppPrefsSet 0x03 /* 12 */
  46. #define entryNumRotationMgrAppPrefsGet 0x04 /* 16 */
  47. #define entryNumRotationMgrAppPrefsEnumerate 0x05 /* 20 */
  48. #define entryNumRotationMgrAttributeSet 0x06 /* 24 */
  49. #define entryNumRotationMgrAttributeGet 0x07 /* 28 */
  50. /************************************************************
  51.  * 68K library trap numbers.
  52.  *************************************************************/
  53. #define kRotationMgrLibTrapOpen (sysLibTrapOpen)
  54. #define kRotationMgrLibTrapClose (sysLibTrapClose)
  55. #define kRotationMgrLibTrapSleep (sysLibTrapSleep)
  56. #define kRotationMgrLibTrapWake (sysLibTrapWake)
  57. #define kRotationMgrLibTrapGetLibAPIVersion (sysLibTrapCustom + 0)
  58. #define kRotationMgrLibTrapAppPrefsSet (sysLibTrapCustom + 1)
  59. #define kRotationMgrLibTrapAppPrefsGet (sysLibTrapCustom + 2)
  60. #define kRotationMgrLibTrapAppPrefsEnumerate (sysLibTrapCustom + 3)
  61. #define kRotationMgrLibTrapAttributeSet (sysLibTrapCustom + 4)
  62. #define kRotationMgrLibTrapAttributeGet (sysLibTrapCustom + 5)
  63. /************************************************************
  64.  * Notifications. Same as on Tungsten|T3, T|T5 and T|X.
  65.  *************************************************************/
  66. /* This is sent right before rotation change. */
  67. #define kRotationMgrBeforeRotationChangeEvent 'Rchg'
  68. /* This is sent right after rotation change. */
  69. #define kRotationMgrAfterRotationChangeEvent 'RChg'
  70. /*
  71.  * notifyDetailsP of above notifications will point to this structure.
  72.  * All fields are in big-endian format.
  73.  */
  74. typedef struct RotationMgrRotationChangeDetailsType {
  75. UInt16 newRotation;
  76. UInt16 oldRotation;
  77. } RotationMgrRotationChangeDetailsType;
  78. /************************************************************
  79.  * Error codes.
  80.  *************************************************************/
  81. /* FIXME */
  82. #define kRotationMgrErrorClass (oemErrorClass + 0x700)
  83. #define kRotationMgrErrBadParam (kRotationMgrErrorClass + 0)
  84. #define kRotationMgrErrNotAllowed (kRotationMgrErrorClass + 1)
  85. #define kRotationMgrErrNotEnoughSpace (kRotationMgrErrorClass + 2)
  86. #define kRotationMgrErrNotFound (kRotationMgrErrorClass + 3)
  87. /************************************************************
  88.  * Flags for applications.
  89.  *************************************************************/
  90. /* Preferred orientation for the application. */
  91. #define kRotationMgrAppPrefLaunchDefault 0x0000
  92. #define kRotationMgrAppPrefLaunchLandscape 0x0001
  93. #define kRotationMgrAppPrefLaunchPortrait 0x0002
  94. #define kRotationMgrAppPrefLaunchAuto 0x0003
  95. #define kRotationMgrAppPrefLaunchCW0 0x0004
  96. #define kRotationMgrAppPrefLaunchCW90 0x0005
  97. #define kRotationMgrAppPrefLaunchCW180 0x0006
  98. #define kRotationMgrAppPrefLaunchCW270 0x0007
  99. #define kRotationMgrAppPrefLaunchMask 0x0007
  100. /* Disable orientation trigger for the application. */
  101. #define kRotationMgrAppPrefLocked 0x0008
  102. /*
  103.  * Allow Sony Virtual Silkscreen API for the application.
  104.  * Ignored on Garmin handhelds.
  105.  */
  106. #define kRotationMgrAppPrefSonyAPI 0x0010
  107. /*
  108.  * Allow PalmSource Pen Input Manager API for the application.
  109.  * Garmin iQue 3600 is special - TBD.
  110.  */
  111. #define kRotationMgrAppPrefPalmSourceAPI 0x0020
  112. /* Enable WinDrawBitmap optimisation for fullscreen games. */
  113. #define kRotationMgrAppPrefFastFullscreen 0x0040
  114. /* User should not change rotation settings for this application. */
  115. #define kRotationMgrAppPrefDangerous 0x8000
  116. /* Default preferences. */
  117. #define kRotationMgrAppPrefsDefault
  118. (kRotationMgrAppPrefLaunchDefault |
  119.  kRotationMgrAppPrefPalmSourceAPI |
  120.  kRotationMgrAppPrefSonyAPI)
  121. /************************************************************
  122.  * Preferenced applications iterator start and stop constants.
  123.  *************************************************************/
  124. #define kRotationMgrAppPrefsIteratorStart 0
  125. #define kRotationMgrAppPrefsIteratorStop 0xffffffffL
  126. /************************************************************
  127.  * Global attributes of RotationMgr extension.
  128.  *************************************************************/
  129. /* Trigger type. */
  130. #define kRotationMgrAttrTriggerType 0
  131. enum {
  132. kRotationMgrTriggerNone,
  133. kRotationMgrTriggerStatusBar,
  134. /* Not currently implemented and probably never will. */
  135. kRotationMgrTriggerButton
  136. };
  137. /* Trigger will switch between 0 and x degrees. */
  138. #define kRotationMgrAttrTriggerRotation 1
  139. enum {
  140. kRotationMgrTriggerLeft, /* 270 degrees */
  141. kRotationMgrTriggerRight, /* 90 degrees */
  142. kRotationMgrTriggerBoth /* two triggers */
  143. };
  144. /* Real framebuffer base address. Not settable. */
  145. #define kRotationMgrAttrDisplayAddress 0x800
  146. /* Physical display size. Not settable */
  147. #define kRotationMgrAttrDisplayWidth 0x801
  148. #define kRotationMgrAttrDisplayHeight 0x802
  149. #define kRotationMgrAttrDisplayRowBytes 0x803
  150. /* Retrieve the registration ID/pass the registration code. */
  151. #define kRotationMgrAttrRegistration 0x8000
  152. #if CPU_TYPE == CPU_68K
  153. /************************************************************
  154.  * Standard library APIs.
  155.  *************************************************************/
  156. Err RotationMgrLibOpen(UInt16 refNum) SYS_TRAP(kRotationMgrLibTrapOpen);
  157. Err RotationMgrLibClose(UInt16 refNum) SYS_TRAP(kRotationMgrLibTrapClose);
  158. Err RotationMgrLibSleep(UInt16 refNum) SYS_TRAP(kRotationMgrLibTrapSleep);
  159. Err RotationMgrLibWake(UInt16 refNum) SYS_TRAP(kRotationMgrLibTrapWake);
  160. /************************************************************
  161.  * Get Mobile Stream RotationMgr API version.
  162.  *************************************************************/
  163. UInt32 RotationMgrGetLibAPIVersion(UInt16 refNum)
  164. SYS_TRAP(kRotationMgrLibTrapGetLibAPIVersion);
  165. /************************************************************
  166.  * Application preferences API.
  167.  *************************************************************/
  168. /*
  169.  * appType is either sysFileTPanel or sysFileTApplication.
  170.  */
  171. Err RotationMgrAppPrefsSet(UInt16 refNum,
  172. UInt32 appType, UInt32 appCreator, UInt32 prefs)
  173. SYS_TRAP(kRotationMgrLibTrapAppPrefsSet);
  174. Err RotationMgrAppPrefsGet(UInt16 refNum,
  175. UInt32 appType, UInt32 appCreator, UInt32 *prefsP)
  176. SYS_TRAP(kRotationMgrLibTrapAppPrefsGet);
  177. Err RotationMgrAppPrefsEnumerate(UInt16 refNum, UInt32 *appPrefsIteratorP,
  178. UInt32 *appTypeP, UInt32 *appCreatorP, UInt32 *prefsP)
  179. SYS_TRAP(kRotationMgrLibTrapAppPrefsEnumerate);
  180. /************************************************************
  181.  * RotationMgr global attributes API.
  182.  *************************************************************/
  183. Err RotationMgrAttributeSet(UInt16 refNum, UInt32 attribute, UInt32 value)
  184. SYS_TRAP(kRotationMgrLibTrapAttributeSet);
  185. Err RotationMgrAttributeGet(UInt16 refNum, UInt32 attribute, UInt32 *valueP)
  186. SYS_TRAP(kRotationMgrLibTrapAttributeGet);
  187. #else /* CPU_TYPE != CPU_68K */
  188. extern UInt32 RotationMgrGetLibAPIVersion(void);
  189. extern Err RotationMgrAppPrefsSet(UInt32 appType, UInt32 appCreator, UInt32 prefs);
  190. extern Err RotationMgrAppPrefsGet(UInt32 appType, UInt32 appCreator, UInt32 *prefsP);
  191. extern Err RotationMgrAppPrefsEnumerate(Int32 *appPrefsIteratorP,
  192. UInt32 *appTypeP, UInt32 *appCreatorP, UInt32 *prefsP);
  193. extern Err RotationMgrAttributeSet(UInt32 attribute, UInt32 value);
  194. extern Err RotationMgrAttributeGet(UInt32 attribute, UInt32 *valueP);
  195. #endif /* CPU_TYPE == CPU_68K */
  196. #endif