API Guide Home
(Online version only)

palmOnePhoto.h

Go to the documentation of this file.
00001 /******************************************************************************
00002  * Copyright (c) 2004 palmOne, Inc. or its subsidiaries.
00003  * All rights reserved.
00004  *****************************************************************************/
00005 /**
00006  * @ingroup Imaging
00007  */
00008 
00009 /**
00010  * @file    palmOnePhoto.h
00011  * @version 3.0
00012  *
00013  * @brief Palm Photos API: This API is used to access Palm Photos database and manipulate images.
00014  *
00015  * The database API provides users with the ability to:
00016  *  - Get the list of albums.
00017  *  - Create, delete and rename albums.
00018  *  - Get the list of photos in each album.
00019  *  - Add photos to albums.
00020  *
00021  * The image manipulation API provides users with the ability to:
00022  *  - Create and capture images and video clips.
00023  *  - Read and write image data.
00024  *  - Convert images to different formats.
00025  *  - Display images.
00026  *  - Scale, rotate and crop images.
00027  *
00028  * Update to be compliant with DCF
00029  *  - The notion of Unfiled folder has been removed
00030  *  - In PalmPhotoDeleteAlbum() setting the parameter moveToUnfiled
00031  *    moves the photos in the deleted album to DCIM/Palm instead of 
00032  *    the Unfiled folder which was DCIM. 
00033  */
00034 
00035 #ifndef PALMONE_PHOTO_H_
00036 #define PALMONE_PHOTO_H_
00037 
00038 /* Include the common define */
00039 #include <Common/Libraries/Imaging/palmOnePhotoCommon.h>
00040 
00041 /* Palm OS common definitions */
00042 #include <SystemMgr.h>
00043 
00044 
00045 
00046 /******************************************************************
00047  * Callback functions
00048  ******************************************************************/
00049 
00050 /**
00051  * File streaming callback.
00052  * During read operations, *sizeP contains the size of the buffer
00053  * passed to the callback. Setting sizeP before returning in this
00054  * case is simply ingored. If the user doesn't read all the data
00055  * in the buffer, the data left will be lost.
00056  * During write operations, *sizeP contains the max size of the
00057  * buffer used for writing. sizeP is set to the amount of data to
00058  * write before the callback returns. Setting sizeP to 0 means
00059  * no more data to write and the write process should stop.
00060  * The read/write calllback can be stopped at any time by the
00061  * callback returning the error code palmPhotoLibErrAbortReadWrite.
00062  *
00063  * @param bufferP:      IN: Pointer to the buffer containing image data.
00064  * @param sizeP:        IN: Size of the buffer.
00065  * @param userDataP:    IN: Pointer to user data set in PalmPhotoReadWriteParam.
00066  * @retval Err Error code.
00067  */
00068 typedef Err (*PalmPhotoReadWriteCallback) (
00069     void    *bufferP,
00070     UInt32  *sizeP,
00071     void    *userDataP
00072 );
00073 
00074 /**
00075  * Selection filter callback.
00076  * This function is called during a selection if provided as a
00077  * parameter. Given an image handle, the filter decides whether
00078  * or not and image should be selected. For example, a user might
00079  * want to select only JPEG images.
00080  *
00081  * @param imageH:       IN: Handle of the image to filter.
00082  * @param userDataP:    IN: Pointer to user data set in PalmPhotoSelectionParam.
00083  * @retval Boolean True if ok to select image, false otherwise.
00084  */
00085 typedef Boolean (*PalmPhotoFilterCallback) (
00086     PalmPhotoHandle imageH,
00087     void            *userDataP
00088 );
00089 
00090 /**
00091  * Display callback.
00092  * This function is called during display image if provided as a
00093  * parameter. If the function returns false, the display process
00094  * will be canceled.
00095  *
00096  * @param userDataP:    IN: Pointer to user data set in PalmPhotoDisplayParam.
00097  * @retval Boolean True if the display process should continue, false otherwise.
00098  */
00099 typedef Boolean (*PalmPhotoDisplayCallback) (
00100     void            *userDataP
00101 );
00102 
00103 /**
00104  * Capture callback.
00105  * This function is called during capture image if provided as a
00106  * parameter. If the function returns false, the capture process
00107  * will be canceled.
00108  * New in v2.0.
00109  *
00110  * @param userDataP:    IN: Pointer to user data set in PalmPhotoCaptureParamV2.
00111  * @retval Boolean True if the capture process should continue, false otherwise.
00112  */
00113 typedef Boolean (*PalmPhotoCaptureCallbackV2) (
00114     void            *userDataP
00115 );
00116 
00117 
00118 /******************************************************************
00119  * Callback function parameters
00120  ******************************************************************/
00121 
00122 /**
00123  * @brief Photo selection dialog parameters.
00124  *
00125  * This structure is used for the selection dialog and direct image selection.
00126  * When using the PMPSelectImages API, selectionCount contains the maximum
00127  * number of images that can be selected.  If selectionCount is set to
00128  * PALM_PHOTO_SELECT_ALL, the range would be [offset, end]. If albumID is set
00129  * to PALM_PHOTO_ALBUM_ALL, all images can be selected.
00130  *
00131  * NOTE: The API allocates memory inside of selectedImages. It is the caller's
00132  * responsibility to free that memory via PalmPhotoFreeSelections().
00133  */
00134 typedef struct _PalmPhotoSelectionParam
00135 {
00136     UInt16                  albumID;        /**< IN: Album ID for selection.                    */
00137     UInt16                  reserved;       /**< reserved for future use                        */
00138     UInt32                  offset;         /**< IN: Range start.                               */
00139     Int32                   selectionCount; /**< IN: Number of images to select.                */
00140     PalmPhotoFilterCallback filterCallback; /**< IN: Callback to filter the selections.         */
00141     void                    *userDataP;     /**< IN: User data to be passed during callback.    */
00142     PalmPhotoSelections     selectedImages; /**< OUT: Struct containing handle array.           */
00143 } PalmPhotoSelectionParam;
00144 
00145 
00146 /**
00147  * @brief Photo image manipulation param.
00148  *
00149  * This parameter is used to set the callback for reading and writing
00150  * data of an image. The imageFormat provides the user a way to convert
00151  * images. For example, reading a JPEG image and setting imageFormat to
00152  * RGB565 should convert the JPEG to RGB565.
00153  */
00154 typedef struct _PalmPhotoReadWriteParam
00155 {
00156     PalmPhotoFileFormat         imageFormat;    /**< IN: Memory file image format.  */
00157     UInt16                      reserved;       /**< reserved for future use        */
00158     PalmPhotoReadWriteCallback  rwCallback;     /**< IN: Read/Write callback.       */
00159     void                        *userDataP;     /**< IN: User data.                 */
00160 } PalmPhotoReadWriteParam;
00161 
00162 
00163 /**
00164  * @brief Photo image display parameters.
00165  *
00166  * The bounds might be ignored by the application.
00167  * New in v2.0: If playing a video, winH and rect are ignored.
00168  */
00169 typedef struct _PalmPhotoDisplayParam
00170 {
00171     WinHandle                   winH;               /**< IN: WinHandle.             */
00172     RectangleType               rect;               /**< IN: Display rectangle.     */
00173     PalmPhotoDisplayCallback    displayCallback;    /**< IN: display callback.      */
00174     void                        *userDataP;         /**< IN: User data.             */
00175 } PalmPhotoDisplayParam;
00176 
00177 /**
00178  * @brief Photo image create parameters.
00179  *
00180  * Set imageInfo can determines the type of the file.  To create a
00181  * JPEG image, set imageInfo.fileFormat to palmPhotoJPEGFileFormat.
00182  */
00183 
00184 typedef struct _PalmPhotoCreateParam
00185 {
00186     PalmPhotoFileLocation   fileLocation;   /**< IN: file location of new file.     */
00187     PalmPhotoImageInfo      imageInfo;      /**< IN: file information.              */
00188 } PalmPhotoCreateParam;
00189 
00190 /**
00191  * @brief Photo/video image capture parameters.
00192  *
00193  * The callback function allows the calling application to cancel the image
00194  * capture operation.  The user may cancel the operation by interacting with
00195  * the capture application.
00196  * New in v2.0.
00197  */
00198 
00199 typedef struct _PalmPhotoCaptureParamV2
00200 {
00201     PalmPhotoFileLocation       fileLocation;       /**< IN: file location of new file. */
00202                                                     /**     (Note: only VFSFile         */
00203                                                     /**     supported for video)        */
00204     PalmPhotoImageInfo          imageInfo;          /**< IN: file information.          */
00205     PalmPhotoCaptureCallbackV2  captureCallback;    /**< IN: capture callback.          */
00206     void                        *userDataP;         /**< IN: User data.                 */
00207 
00208 } PalmPhotoCaptureParamV2;
00209 
00210 
00211 /*********************************************************************
00212  * API Prototypes
00213  *********************************************************************/
00214 
00215 #ifdef __cplusplus
00216 extern "C" {
00217 #endif
00218 
00219 /******************************************************************
00220  * Standard library open, close, sleep and wake functions
00221  ******************************************************************/
00222 
00223 /// Standard library open function
00224 /// @param refNum: IN: library reference number
00225 /// @retval Err Error code.
00226 extern Err PalmPhotoLibOpen(UInt16 refNum)
00227     PMP_LIB_TRAP(sysLibTrapOpen);
00228 
00229 /// Standard library close function
00230 /// @param refNum: IN: library reference number
00231 /// @retval Err Error code.
00232 extern Err PalmPhotoLibClose(UInt16 refNum)
00233     PMP_LIB_TRAP(sysLibTrapClose);
00234 
00235 /// Standard library sleep function
00236 /// @param refNum: IN: library reference number
00237 /// @retval Err Error code.
00238 extern Err PalmPhotoLibSleep(UInt16 refNum)
00239     PMP_LIB_TRAP(sysLibTrapSleep);
00240 
00241 /// Standard library wake function
00242 /// @param refNum: IN: library reference number
00243 /// @retval Err Error code.
00244 extern Err PalmPhotoLibWake(UInt16 refNum)
00245     PMP_LIB_TRAP(sysLibTrapWake);
00246 
00247 
00248 /******************************************************************
00249  * Custom library API functions
00250  ******************************************************************/
00251 
00252 /******************************************************************
00253  * Photo API v1.0 functions
00254  ******************************************************************/
00255 
00256 /**
00257  * Get the number of albums in Palm Photos.
00258  * For compatibility only; new development should use the V2 version.
00259  *
00260  * @param refNum:   IN: Library reference number.
00261  * @retval          UInt16 Album count.
00262  */
00263 extern UInt16  PalmPhotoAlbumCount(UInt16 refNum)
00264     PMP_LIB_TRAP(sysLibTrapBase + 5);
00265 
00266 /**
00267  * Get an album ID given the album index.
00268  * For compatibility only; new development should use the V2 version.
00269  *
00270  * @param refNum:   IN: Library reference number.
00271  * @param index:    IN: Album index.
00272  * @retval          UInt16 Album ID. If album doesn't exist, return PALM_PHOTO_ALBUM_ALL.
00273  */
00274 extern UInt16 PalmPhotoGetAlbumID(UInt16 refNum, UInt16 index)
00275     PMP_LIB_TRAP(sysLibTrapBase + 6);
00276 
00277 /**
00278  * Get an album name given the album ID.
00279  * The buffer that will hold the album name is allocated by the user.
00280  *
00281  * @param refNum:   IN:  Library reference number.
00282  * @param albumID:  IN:  Album ID
00283  * @param nameP:    OUT: Buffer that will contain the name of the album.
00284  * @param bufSize:  IN:  Size of the buffer pointed by nameP.
00285  * @retval          Err Error code.
00286  */
00287 extern Err PalmPhotoGetAlbumName(UInt16 refNum, UInt16 albumID, Char *nameP, UInt16 bufSize)
00288     PMP_LIB_TRAP(sysLibTrapBase + 7);
00289 
00290 /**
00291  * Create a new album.
00292  * For compatibility only; new development should use the V2 version.
00293  *
00294  * @param refNum:   IN:  Library reference number.
00295  * @param nameP:    IN:  String that contains the name of the new album.
00296  * @param errP:     OUT: Error code.
00297  * @retval          UInt16 If successful, returns the ID of the newly created album.
00298  *                  Otherwise, returns PALM_PHOTO_ALBUM_ALL.
00299  */
00300 extern UInt16 PalmPhotoNewAlbum(UInt16 refNum, const Char *nameP, Err *errP)
00301     PMP_LIB_TRAP(sysLibTrapBase + 8);
00302 
00303 /**
00304  * Delete an album by album ID.
00305  *
00306  * @param refNum:           IN: Library reference number.
00307  * @param albumID:          IN: ID of the Album to delete.
00308  * @param moveToUnfiled:    IN: If true, photos from the deleted album are moved to /DCIM/Palm
00309  *                              folder. Otherwise, they are deleted. In previous versions
00310  *                              the Unfiled album was mapped to the /DCIM folder.
00311  * @retval                  Err Error code.
00312  */
00313 extern Err PalmPhotoDeleteAlbum(UInt16 refNum, UInt16 albumID, Boolean moveToUnfiled)
00314     PMP_LIB_TRAP(sysLibTrapBase + 9);
00315 
00316 /**
00317  * Rename an album.
00318  * If Photos has "Camera" album, it also can't be renamed.
00319  *
00320  * @param refNum:   IN: Library reference number.
00321  * @param albumID:  IN: ID of the Album to delete.
00322  * @param nameP:    IN: New album name.
00323  * @retval          Err Error code.
00324  */
00325 extern Err PalmPhotoRenameAlbum(UInt16 refNum, UInt16 albumID, const Char *nameP)
00326     PMP_LIB_TRAP(sysLibTrapBase + 10);
00327 
00328 /**
00329  * Get image count for an album.
00330  *
00331  * @param refNum:   IN: Library reference number.
00332  * @param albumID:  IN: ID of the Album to retrieve information from.
00333  * @retval          Err Error code.
00334  */
00335 extern UInt16 PalmPhotoImageCount(UInt16 refNum, UInt16 albumID)
00336     PMP_LIB_TRAP(sysLibTrapBase + 11);
00337 
00338 /**
00339  * Select images within a specific range.
00340  * The selected images are passed in the selection parameter.
00341  * To free the memory allocated, use the PalmPhotoFreeSelections() function.
00342  *
00343  * @param refNum:           IN: Library reference number.
00344  * @param photoSelectionP:  IN,OUT: Palm Photo selection parameter. Contains array of selections on return.
00345  * @retval                  Err Error code.
00346  */
00347 extern Err PalmPhotoSelectImages(UInt16 refNum, PalmPhotoSelectionParam *photoSelectionP)
00348     PMP_LIB_TRAP(sysLibTrapBase + 12);
00349 
00350 /**
00351  * Select images using the Media Selection/Deletion dialog.
00352  * The selected images are passed in the selection parameter.
00353  * To free the memory allocated, use the PalmPhotoFreeSelections() function.
00354  *
00355  * @param refNum:           IN: Library reference number.
00356  * @param photoSelectionP:  IN,OUT: Palm Photo selection parameter. Contains array of selections on return.
00357  * @param dlgType:          IN: Selection dialog type (eg palmPhotoDlgSelection...)
00358  * @param handleCard:       IN: If true, the dialog with intercept card notifications.
00359  * @retval                  Err Error code.
00360  */
00361 extern Err PalmPhotoSelectDlg(UInt16 refNum, PalmPhotoSelectionParam *photoSelectionP, PalmPhotoDlgType dlgType, Boolean handleCard)
00362     PMP_LIB_TRAP(sysLibTrapBase + 13);
00363 
00364 /**
00365  * Free memory allocated during the photos selection.
00366  * For compatibility only; new development should use the V2 version.
00367  *
00368  * @param refNum:           IN: Library reference number.
00369  * @param photoSelectionP:  IN,OUT: Palm Photo selection parameter.
00370  */
00371 extern void PalmPhotoFreeSelections(UInt16 refNum, PalmPhotoSelectionParam *photoSelectionP)
00372     PMP_LIB_TRAP(sysLibTrapBase + 14);
00373 
00374 /**
00375  * Create a new image.
00376  * For compatibility only; new development should use the V2 version.
00377  *
00378  * @param refNum:       IN:  Library reference number.
00379  * @param createParamP: IN:  Palm Photo create parameter.
00380  * @param errP:         OUT: Error code.
00381  * @retval              PalmPhotoHandle The newly created photo handle or NULL if unsuccessful.
00382  */
00383 extern PalmPhotoHandle PalmPhotoCreateImage(UInt16 refNum, const PalmPhotoCreateParam *createParamP, Err *errP)
00384     PMP_LIB_TRAP(sysLibTrapBase + 15);
00385 
00386 /**
00387  * Open an existing image.
00388  * For compatibility only; new development should use the V2 version.
00389  *
00390  * @param refNum:       IN:  Library reference number.
00391  * @param photoFileP:   IN:  Palm Photo file location.
00392  * @param errP:         OUT: Error code.
00393  * @retval              PalmPhotoHandle The opened photo handle or NULL if unsuccessful.
00394  */
00395 extern PalmPhotoHandle PalmPhotoOpenImage(UInt16 refNum, const PalmPhotoFileLocation *photoFileP, Err *errP)
00396     PMP_LIB_TRAP(sysLibTrapBase + 16);
00397 
00398 /**
00399  * Close an image.
00400  * For compatibility only; new development should use the V2 version.
00401  *
00402  * @param refNum:   IN: Library reference number.
00403  * @param imageH:   IN: Image handle.
00404  */
00405 extern void PalmPhotoCloseImage(UInt16 refNum, PalmPhotoHandle imageH)
00406     PMP_LIB_TRAP(sysLibTrapBase + 17);
00407 
00408 /**
00409  * Get an image information.
00410  *
00411  * @param refNum:   IN:  Library reference number.
00412  * @param imageH:   IN:  Image handle.
00413  * @param infoP:    OUT: Image info structure.
00414  * @retval          Err Error code.
00415  */
00416 extern Err PalmPhotoGetImageInfo(UInt16 refNum, PalmPhotoHandle imageH, PalmPhotoImageInfo *infoP)
00417     PMP_LIB_TRAP(sysLibTrapBase + 18);
00418 
00419 /**
00420  * Get an image extra information size.
00421  *
00422  * @param refNum:   IN: Library reference number.
00423  * @param imageH:   IN: Image handle.
00424  * @param infoType: IN: Extra info type to retrieve the size from.
00425  * @retval          UInt32 The size of the extra information of the specified type.
00426  */
00427 extern UInt32 PalmPhotoGetImageExtraInfoSize (UInt16 refNum, PalmPhotoHandle imageH, PalmPhotoExtraInfoType infoType)
00428     PMP_LIB_TRAP(sysLibTrapBase + 19);
00429 
00430 /**
00431  * Get an image extra information.
00432  *
00433  * Note: new info types (palmPhotoExtraInfoSound and palmPhotoExtraInfoUID) added in 3.0.
00434  *
00435  * @param refNum:       IN:  Library reference number.
00436  * @param imageH:       IN:  Image handle.
00437  * @param extraInfoP:   OUT: Structure that will hold the extra info requested.
00438  * @retval              Err Error code.
00439  */
00440 extern Err PalmPhotoGetImageExtraInfo(UInt16 refNum, PalmPhotoHandle imageH, PalmPhotoExtraInfoParam *extraInfoP)
00441     PMP_LIB_TRAP(sysLibTrapBase + 20);
00442 
00443 /**
00444  * Set an image extra information.
00445  * When user set palmPhotoExtraInfoLocation, if the file name contains illegal
00446  * characters, the function will remove them. If the file name has an incorrect
00447  * file extension, the function will add the correct one.
00448  * For example, if the format is Jpeg, "*22.j" will be converted to "22.jpg".
00449  *
00450  * @param refNum:       IN: Library reference number.
00451  * @param imageH:       IN: Image handle.
00452  * @param extraInfoP:   IN: Structure that the extra info the extra info to set.
00453  * @retval              Err Error code.
00454  */
00455 extern Err PalmPhotoSetImageExtraInfo(UInt16 refNum, PalmPhotoHandle imageH, const PalmPhotoExtraInfoParam *extraInfoP)
00456     PMP_LIB_TRAP(sysLibTrapBase + 21);
00457 
00458 /**
00459  * Add an image to a Palm Photos album.
00460  * A new image is created and added to the Photos database, in the specified album.
00461  * The image will be re-encoded in JPEG format at the specified quality.
00462  * If album doesn't exist, the image will be added to the album named "Palm". In the previous
00463  * versions if the album did not exist, the image was added to the "Unfiled" album. 
00464  * Passing albumID of PALM_PHOTO_ALBUM_ALL results in the image being added
00465  * to the "Palm" album. In the previous versions passing albumID of 
00466  * PALM_PHOTO_ALBUM_ALL resulted in the image being added to the "Unfiled" album.
00467  * For compatibility only; new development should use the V2 version.
00468  *
00469  * @param refNum:       IN:  Library reference number.
00470  * @param albumID:      IN:  Album ID for the image.
00471  * @param imageH:       IN:  Image handle.
00472  * @param addedImageH:  OUT: The new image added to the album.
00473  * @param imageQuality: IN:  Image quality.
00474  * @retval              Err Error code.
00475  */
00476 extern Err PalmPhotoAddImage(UInt16 refNum, UInt16 albumID, PalmPhotoHandle imageH, PalmPhotoHandle* addedImageH, PalmPhotoQualityType imageQuality)
00477     PMP_LIB_TRAP(sysLibTrapBase + 22);
00478 
00479 /**
00480  * Delete an image.
00481  *
00482  * @param refNum:       IN: Library reference number.
00483  * @param imageH:       IN: Image handle.
00484  * @retval              Err Error code.
00485  */
00486 extern Err PalmPhotoDeleteImage(UInt16 refNum, PalmPhotoHandle imageH)
00487     PMP_LIB_TRAP(sysLibTrapBase + 23);
00488 
00489 /**
00490  * Read image data given an image handle.
00491  * The image format specifies what type of buffer the user expects to copy
00492  * read data into. For example, to convert a JPEG image to RBG565 data, open
00493  * a JPEG image, and set readParamP->imageFormat to palmPhotoRGB565FileFormat.
00494  * The callback function should copy the image data from *bufferP into a buffer
00495  * referenced within readParamP->userDataP.
00496  *
00497  * @param refNum:       IN: Library reference number.
00498  * @param imageH:       IN: Image handle.
00499  * @param readParamP:   IN,OUT: Read parameters.
00500  * @retval              Err Error code.
00501  */
00502 extern Err PalmPhotoReadImage(UInt16 refNum, PalmPhotoHandle imageH, const PalmPhotoReadWriteParam *readParamP)
00503     PMP_LIB_TRAP(sysLibTrapBase + 24);
00504 
00505 /**
00506  * Write image data given an image handle.
00507  * The writeParamP->imageFormat parameter specifies the source format the calling
00508  * application is providing to the API to write into storage.  The only valid source
00509  * formats are RGB565 and RGB888.  For example, to convert an RGB565 image to a JPEG,
00510  * you would create a JPEG image and pass its handle in imageH; then you would set
00511  * writeParamP->imageFormat to palmPhotoRGB565FileFormat.  The actual RGB image data
00512  * would be referenced by a pointer inside writeParamP->userDataP.  The callback
00513  * function will pass the RGB data to the API by copying it into *bufferP.
00514  *
00515  * @param refNum:       IN: Library reference number.
00516  * @param imageH:       IN,OUT: Image handle.
00517  * @param writeParamP:  IN: Write parameters.
00518  * @retval              Err Error code.
00519  */
00520 extern Err PalmPhotoWriteImage(UInt16 refNum, PalmPhotoHandle imageH, const PalmPhotoReadWriteParam *writeParamP)
00521     PMP_LIB_TRAP(sysLibTrapBase + 25);
00522 
00523 /**
00524  * Display an image or play a video.
00525  * A still image referenced by imageH will be drawn in the window and
00526  * rectangle specified within *displayParamP.  If the window handle is NULL, the
00527  * current draw window is used.  A video referenced by imageH will be played in
00528  * the video player, and the window and rectangle will be ignored.
00529  *
00530  * The image is displayed "shrink to fit" mode, where 100% of the image
00531  * is represented on the handheld display. (See also PalmPhotoDisplayImageToSizeV3
00532  * for "best fit" scaling.)
00533  *
00534  * If the callback function returns false, the Photo API will halt
00535  * the draw or play operation.
00536  *
00537  * @param refNum:           IN: Library reference number.
00538  * @param imageH:           IN: Image handle.
00539  * @param displayParamP:    IN: Display parameter.
00540  * @retval                  Err Error code.
00541  */
00542 extern Err PalmPhotoDisplayImage(UInt16 refNum, PalmPhotoHandle imageH, const PalmPhotoDisplayParam *displayParamP)
00543     PMP_LIB_TRAP(sysLibTrapBase + 26);
00544 
00545 /**
00546  * Get an image thumbnail size.
00547  *
00548  * @param refNum:   IN:  Library reference number.
00549  * @param imageH:   IN:  Image handle.
00550  * @param widthP:   OUT: Width of the thumbnail.
00551  * @param heightP:  OUT: Height of the thumbnail.
00552  * @retval          Err Error code.
00553  */
00554 extern Err PalmPhotoGetThumbSize(UInt16 refNum, PalmPhotoHandle imageH, UInt16 *widthP, UInt16 *heightP)
00555     PMP_LIB_TRAP(sysLibTrapBase + 27);
00556 
00557 /**
00558  * Checks the version of the Palm Photo Library.
00559  *
00560  * @param refNum:       IN:  Library reference number.
00561  * @param sdkVersion:   IN:  The version the application expects.
00562  * @param libVersionP:  OUT: The actual version of the library.
00563  * @retval              Err Error code.
00564  */
00565 extern Err PalmPhotoLibGetVersion(UInt16 refNum, UInt32 sdkVersion, UInt32* libVersionP)
00566     PMP_LIB_TRAP(sysLibTrapBase + 29);
00567 
00568 
00569 /******************************************************************
00570  * Photo API v2.0 functions
00571  ******************************************************************/
00572 
00573 /**
00574  * Return a scaled image.
00575  * New in v2.0.
00576  *
00577  * @param refNum:           IN:  Library reference number.
00578  * @param imageH:           IN:  Image handle.
00579  * @param scaledImageHP:    OUT: The new image scaled.
00580  * @param width:            IN:  New image width (must be <= existing width).
00581  * @param height:           IN:  New image height (must be <= existing height).
00582  * @retval                  Err Error code.
00583  */
00584 extern Err PalmPhotoScaleImageV2(UInt16 refNum, PalmPhotoHandle imageH, PalmPhotoHandle *scaledImageHP, UInt32 width, UInt32 height)
00585     PMP_LIB_TRAP(sysLibTrapBase + 30);
00586 
00587 /**
00588  * Return a rotated image.
00589  * New in v2.0.
00590  *
00591  * @param refNum:           IN:  Library reference number.
00592  * @param imageH:           IN:  Image handle.
00593  * @param rotatedImageHP:   OUT: The new image rotated.
00594  * @param rotation:         IN:  Rotation angle (rotation is counter-clockwise).
00595  * @retval                  Err Error code.
00596  */
00597 extern Err PalmPhotoRotateImageV2(UInt16 refNum, PalmPhotoHandle imageH, PalmPhotoHandle *rotatedImageHP, Int16 rotation)
00598     PMP_LIB_TRAP(sysLibTrapBase + 31);
00599 
00600 /**
00601  * Return a cropped image.
00602  * New in v2.0.
00603  *
00604  * @param refNum:           IN:  Library reference number.
00605  * @param imageH:           IN:  Image handle.
00606  * @param croppedImageHP:   OUT: The new image cropped.
00607  * @param cropRectP:        IN:  Cropping rectangle.
00608  * @retval                  Err  Error code.
00609  */
00610 extern Err PalmPhotoCropImageV2(UInt16 refNum, PalmPhotoHandle imageH, PalmPhotoHandle *croppedImageHP, RectangleType *cropRectP)
00611     PMP_LIB_TRAP(sysLibTrapBase + 32);
00612 
00613 /**
00614  * Convert an image.
00615  * New in v2.0.
00616  *
00617  * @param refNum:           IN:  Library reference number.
00618  * @param imageH:           IN:  Image handle.
00619  * @param convertedImageHP: OUT: The new image converted.
00620  * @param createParamP:     IN:  File information and location for the new image.
00621  * @retval                  Err  Error code.
00622  */
00623 extern Err PalmPhotoConvertImageV2(UInt16 refNum, PalmPhotoHandle imageH, PalmPhotoHandle *convertedImageHP, const PalmPhotoCreateParam *createParamP)
00624     PMP_LIB_TRAP(sysLibTrapBase + 33);
00625 
00626 /**
00627  * Get the error code from the last Photo API function that executed.
00628  * Sets the Photo API error code to errNone, if the library is open.
00629  * If the library is not open, it does not set the error code and
00630  * returns palmPhotoLibErrNotOpen.
00631  * New in v2.0.
00632  *
00633  * @param refNum:   IN: Library reference number.
00634  * @retval          Err Error code.
00635  */
00636 extern Err  PalmPhotoGetLastErrV2( UInt16 refNum )
00637     PMP_LIB_TRAP(sysLibTrapBase + 34);
00638 
00639 /**
00640  * Get the number of albums in Palm Photos residing on the specified volume.
00641  * If volumeRef is 0, then the location is on the handheld.
00642  * Otherwise, it is in VFS.
00643  *
00644  * @param refNum:       IN: Library reference number.
00645  * @param volumeRef:    IN: Volume to search for photo albums.
00646  * @retval              UInt16 Album count.
00647  */
00648 extern UInt16  PalmPhotoAlbumCountV2(UInt16 refNum, UInt16 volumeRef)
00649     PMP_LIB_TRAP(sysLibTrapBase + 35);
00650 
00651 /**
00652  * Get an album ID given the album index and volume.
00653  * If volumeRef is 0, then the location is on the handheld.
00654  * Otherwise, it is in VFS.
00655  *
00656  * @param refNum:       IN: Library reference number.
00657  * @param volumeRef:    IN: Volume to search for photo album.
00658  * @param index:        IN: Album index.
00659  * @retval              UInt16 Album ID. If album doesn't exist, return PALM_PHOTO_ALBUM_ALL.
00660  */
00661 extern UInt16 PalmPhotoGetAlbumIDV2(UInt16 refNum, UInt16 volumeRef, UInt16 index)
00662     PMP_LIB_TRAP(sysLibTrapBase + 36);
00663 
00664 /**
00665  * Create a new album in the selected volume.
00666  * If volumeRef is 0, then the location is on the handheld.
00667  * Otherwise, it is in VFS.
00668  *
00669  * @param refNum:       IN: Library reference number.
00670  * @param volumeRef:    IN: Volume to search for photo album.
00671  * @param nameP:        IN: String that contains the name of the new album.
00672  * @retval              UInt16 If successful, returns the ID of the newly created album.
00673  *                             Otherwise, returns PALM_PHOTO_ALBUM_ALL.
00674  */
00675 extern UInt16 PalmPhotoNewAlbumV2(UInt16 refNum, UInt16 volumeRef, const Char *nameP)
00676     PMP_LIB_TRAP(sysLibTrapBase + 37);
00677 
00678 /**
00679  * Free memory allocated during the photos selection.
00680  *
00681  * @param refNum:           IN: Library reference number.
00682  * @param photoSelectionP:  IN,OUT: Palm Photo selection parameter.
00683  * @retval                  Err Error code.
00684  */
00685 extern Err PalmPhotoFreeSelectionsV2(UInt16 refNum, PalmPhotoSelectionParam *photoSelectionP)
00686     PMP_LIB_TRAP(sysLibTrapBase + 38);
00687 
00688 /**
00689  * Create a new image.
00690  *
00691  * @param refNum:       IN: Library reference number.
00692  * @param createParamP: IN: Palm Photo create parameter.
00693  * @retval              PalmPhotoHandle The newly created photo handle or NULL if unsuccessful.
00694  */
00695 extern PalmPhotoHandle PalmPhotoCreateImageV2(UInt16 refNum, const PalmPhotoCreateParam *createParamP)
00696     PMP_LIB_TRAP(sysLibTrapBase + 39);
00697 
00698 /**
00699  * Capture a new still image or video clip using the built-in camera.
00700  *
00701  * New functionality added in 3.0:
00702  * Can capture video as well as still images.
00703  *     (For video, height and width in captureParam.imageInfo
00704  *     must match a supported resolution as returned by
00705  *     PalmPhotoGetSupportedCaptureResolutionsV3. Location
00706  *     in captureParam.fileLocation must be a VFSFile.)
00707  * Can limit size (in bytes) of captured media.
00708  *    (Set captureParam.imageInfo.fileSize to the desired
00709  *    limit. If fileSize = 0, no constraint s placed on
00710  *    ithe file size.)
00711  *
00712  * @param refNum:           IN: Library reference number.
00713  * @param captureParamP:    IN: Palm Photo capture parameter.
00714  * @retval                  PalmPhotoHandle The newly created photo handle or NULL if unsuccessful.
00715  */
00716 extern PalmPhotoHandle PalmPhotoCaptureImageV2(UInt16 refNum, const PalmPhotoCaptureParamV2 *captureParamP)
00717     PMP_LIB_TRAP(sysLibTrapBase + 40);
00718 
00719 /**
00720  * Open an existing image.
00721  *
00722  * @param refNum:       IN: Library reference number.
00723  * @param photoFileP:   IN: Palm Photo file location.
00724  * @retval              PalmPhotoHandle The opened photo handle or NULL if unsuccessful.
00725  */
00726 extern PalmPhotoHandle PalmPhotoOpenImageV2(UInt16 refNum, const PalmPhotoFileLocation *photoFileP)
00727     PMP_LIB_TRAP(sysLibTrapBase + 41);
00728 
00729 /**
00730  * Close an image.
00731  *
00732  * @param refNum:   IN: Library reference number.
00733  * @param imageH:   IN: Image handle.
00734  * @retval          Err Error code.
00735  */
00736 extern Err PalmPhotoCloseImageV2(UInt16 refNum, PalmPhotoHandle imageH)
00737     PMP_LIB_TRAP(sysLibTrapBase + 42);
00738 
00739 /**
00740  * Add an image to a Palm Photos album.
00741  * The image is added to the indicated Photos album.  If the album
00742  * resides on a different volume than imageH, then the image is copied
00743  * into the new volume.  A handle to the image in the designated album is
00744  * returned in addedImageH.
00745  * No image conversion takes place.  The content of the image in the album is
00746  * identical to that of the original image.
00747  * If album doesn't exist, the image will be added to the "Unfiled" album.
00748  * Passing albumID of PALM_PHOTO_ALBUM_ALL results in the image being added
00749  * to the "Unfiled" album.
00750  *
00751  * @param refNum:       IN:  Library reference number.
00752  * @param albumID:      IN:  Album ID for the image.
00753  * @param imageH:       IN:  Image handle.
00754  * @param addedImageH:  OUT: The new image added to the album.
00755  * @retval              Err Error code.
00756  */
00757 extern Err PalmPhotoAddImageV2(UInt16 refNum, UInt16 albumID, PalmPhotoHandle imageH, PalmPhotoHandle* addedImageH)
00758     PMP_LIB_TRAP(sysLibTrapBase + 43);
00759 
00760 /******************************************************************
00761  * Photo API v3 .0 functions
00762  ******************************************************************/
00763 
00764 /**
00765  * Check for presence of an enabled camera.
00766  *
00767  * @param refNum:           IN: Library reference number.
00768  * @retval                  Boolean false if no camera or camera is disabled.
00769  *
00770  */
00771 extern Boolean PalmPhotoIsCameraAvailableV3(UInt16 refNum)
00772     PMP_LIB_TRAP(sysLibTrapBase + 44);
00773 
00774 /**
00775  * Returns resolutions that are supported by the still or video camera.
00776  * Returns zero (palmPhotoCaptureResNone) if no camera, or camera disabled.
00777  *
00778  * @param refNum:           IN: Library reference number.
00779  * @param mediaType:        IN: palmPhotoMediaTypePhoto or palmPhotoMediaTypeVideo
00780  * @retval                  PalmPhotoCaptureResolution Flags (bit is set for each resolution that camera supports).
00781  *
00782  */
00783 extern PalmPhotoCaptureResolution PalmPhotoGetSupportedCaptureResolutionsV3(UInt16 refNum, PalmPhotoMediaType mediaType)
00784     PMP_LIB_TRAP(sysLibTrapBase + 45);
00785 
00786 /**
00787  * Select images using the Photo Selection/Deletion dialog, with
00788  * optional camera support.
00789  * The selected images are passed in the selection parameter.
00790  * To free the memory allocated, use the PalmPhotoFreeSelections() function.
00791  *
00792  * @param refNum:           IN:Library reference number.
00793  * @param photoSelectionP:  IN,OUT: Palm Photo selection parameter. Contains array of selections on return.
00794  * @param captureParamP:    IN: Palm Photo capture parameter. Set to null to suppress the camera.
00795  *                              Camera only supported for single select dialog type.
00796  *                              Camera only supported when media type is photo OR video (not all)
00797  * @param dlgType:          IN: Selection dialog type (eg palmPhotoDlgSelection...)
00798  * @param mediaType:        IN: Dialog displays only photos, only videos, or all media types.
00799  * @param handleCard:       IN: If true, the dialog with intercept card notifications.
00800  * @retval                  Err Error code.
00801  */
00802 extern Err PalmPhotoSelectDlgV3(UInt16 refNum, PalmPhotoSelectionParam *photoSelectionP, const PalmPhotoCaptureParamV2 *captureParamP,
00803             PalmPhotoDlgType dlgType, PalmPhotoMediaType mediaType, Boolean handleCard)
00804     PMP_LIB_TRAP(sysLibTrapBase + 46);
00805 
00806 
00807 /**
00808  * Display an image or play a video.
00809  * A still image referenced by imageH will be drawn in the window and
00810  * rectangle specified within *displayParamP.  If the window handle is NULL, the
00811  * current draw window is used.  A video referenced by imageH will be played in
00812  * the video player, and the window and rectangle will be ignored.
00813  *
00814  * The image is displayed in "best fit" mode, scaled exactly so that the
00815  * rectangle is completely filled, then cropping anything outside the
00816  * rectangle. (See also PalmPhotoDisplayImage for shrink-to-fit scaling.)
00817  *
00818  * If the callback function returns false, the Photo API will halt
00819  * the draw or play operation.
00820  *
00821  * New in v3.0.
00822  *
00823  * @param refNum:           IN: Library reference number.
00824  * @param imageH:           IN: Image handle.
00825  * @param displayParamP:    IN: Display parameter.
00826  * @retval                  Err Error code.
00827  */
00828 extern Err PalmPhotoDisplayImageToSizeV3(UInt16 refNum, PalmPhotoHandle imageH, const PalmPhotoDisplayParam *displayParamP)
00829     PMP_LIB_TRAP(sysLibTrapBase + 47);
00830 
00831 /**
00832  * Display thumbnail for still image or video.
00833  *
00834  * Thumbnail for the image or video referenced by imageH will be drawn
00835  * in the window and rectangle specified within *displayParamP. (In the
00836  * case of video, displays the first frame.) Use PalmPhotoGetThumbSize()
00837  * first to get the thumbnail size. If the window handle is NULL,
00838  * the current draw window is used.
00839  *
00840  * If the callback function returns false, the Photo API will halt
00841  * the draw or play operation.
00842  *
00843  * New in v3.0.
00844  *
00845  * @param refNum:           IN: Library reference number.
00846  * @param imageH:           IN: Image handle.
00847  * @param displayParamP:    IN: Display parameter.
00848  * @retval                  Err Error code.
00849  */
00850 extern Err PalmPhotoDisplayThumbnailV3(UInt16 refNum, PalmPhotoHandle imageH, const PalmPhotoDisplayParam *displayParamP)
00851     PMP_LIB_TRAP(sysLibTrapBase + 53);
00852 
00853 
00854 
00855 #ifdef __cplusplus
00856 }
00857 #endif
00858 
00859 #endif /* PALMONE_PHOTO_H_ */

Top Palm Developer Network
© 2004-2008, Palm, Inc. All rights reserved.
Generated on Fri Jun 13 10:06:54 2008 for Palm API Guide