#ifndef PROANIMATE_H #define PROANIMATE_H #include <ProToolkit.h> #include <ProObjects.h> #include <ProSelection.h> #define PRO_AT_STOP 1 #define PRO_AT_PLAY 2 #define PRO_AT_PAUSE 3 #define PRO_AT_BUTTON_PLAY 1 #define PRO_AT_BUTTON_PLAY_REV 2 #define PRO_AT_BUTTON_STOP 3 #define PRO_AT_BUTTON_SKIP_TO_END 4 #define PRO_AT_BUTTON_SKIP_TO_BEGINING 5 #define PRO_AT_BUTTON_FRAME_FOR 6 #define PRO_AT_BUTTON_FRAME_REV 7 #define PRO_AT_BUTTON_SLIDER_MOVE 8 PRO_BEGIN_C_DECLS typedef int (*ProAnimButtonCb)(void *window, int curr_frame, int anim_button, int play_state); /* Purpose: Signature of notification callback function performed when a button in the animation dialog is picked. <p> <b>NOTE:</b> The callback is registered using the generic Creo Parametric TOOLKIT notification method, and is called whenever a button is pressed on the animation dialog. </p> Input Arguments: window - The window that is animating curr_frame - The frame that is currently displayed in the window anim_button - The button that was pressed to cause this callback play_state - The play state of the animation: either playing or stopped Output Arguments: none Return Values: Return values are not interpreted by Creo Parametric */ typedef struct Pro_Animobj *ProAnimObj; /* opaque handle for animation */ /* object pointer */ typedef struct Pro_Animframe *ProAnimFrame; /* opaque handle for animation */ /* frame pointer containing */ /* several animation objects */ typedef struct Pro_Animmovie *ProAnimMovie; /* opaque handle for animation */ /* movie containing several */ /* animation frames */ typedef struct Pro_Animquality *ProAnimQuality; /* opaque handle to specify */ /* quality for animation */ /* to be detailed (CK/KMR) */ typedef struct Pro_SingleAnim *ProSingleAnim; /* definition of animation objects */ extern ProError ProAnimobjectCreate(ProSelection p_select, ProMatrix position, ProAnimObj *anim_obj); /* Purpose: Prepares an animation object. <p> <b>NOTE:</b> This function does not support external objects. Input Arguments: p_select - The item to be animated. Currently, this can be a part or an assembly only. position - Indicates the location of the animation item with respect to its immediate parent. Output Arguments: anim_obj - The handle to the newly created object for animation. Return Values: PRO_TK_NO_ERROR - The function successfully created the object. PRO_TK_BAD_INPUTS - The specified object type is not supported. */ extern ProError ProAnimobjectDelete (ProAnimObj anim_obj); /* Purpose: Deletes the specified animation object. Input Arguments: anim_obj - The handle to the animation object to be deleted Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully deleted the object. */ /* definition of an animation frame */ extern ProError ProAnimframeCreate (ProMatrix frame_view, ProAnimFrame *anim_frame); /* Purpose: Creates an animation frame. Input Arguments: frame_view - This is the transformation from the root assembly; therefore, it is an absolute location in the top model coordinate system. Output Arguments: anim_frame - The handle to the newly created animation frame. Return Values: PRO_TK_NO_ERROR - The function successfully created the frame. */ extern ProError ProAnimframeDelete (ProAnimFrame anim_frame); /* Purpose: Deletes the specified animation frame. Input Arguments: anim_frame - The handle to the animation frame to be deleted Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully deleted the animation frame. */ extern ProError ProAnimframeObjAdd (ProAnimFrame anim_frame, ProAnimObj anim_obj); /* Purpose: Adds the specified animation object to the animation frame. Input Arguments: anim_frame - The handle to the animation frame anim_obj - The handle to the animation object to be added Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully added the object. */ extern ProError ProAnimframeObjRemove(ProAnimFrame anim_frame, ProAnimObj anim_obj); /* Purpose: Removes the specified animation object from the animation frame. Input Arguments: anim_frame - The handle to the animation frame anim_obj - The handle to the animation object to be removed Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully removed the object. PRO_TK_E_NOT_FOUND - amin_obj is not in the frame. */ typedef ProError (*ProAnimObjAct)(ProAnimObj anim_obj, ProAppData app_data); /* Purpose: This is the generic function for visiting animation objects. Input Arguments: anim_obj - The handle to the animation object app_data - The application data passed to the function <b>ProAnimframeObjVisit()</b> Output Arguments: none Return Values: PRO_TK_NO_ERROR - If this is the filter function, proceed to the visit action. Any other value - If this is the filter function, skip this item. If this is the visit action, return values are not interpreted by Creo Parametric */ extern ProError ProAnimframeObjVisit(ProAnimFrame anim_frame, ProAnimObjAct visit_action, ProAnimObjAct filter_action, ProAppData app_data); /* Purpose: Visits the animation objects in an animation frame. Input Arguments: anim_frame - The handle to the animation frame visit_action - The application-supplied function to be invoked for each animation object filter_action - The application-supplied function to be invoked for each animation object that decides whether the animation object should be visited. If NULL, all animation objects are visited using the action function. app_data - The application-supplied data to be passed to the visit and filter functions Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully visited all the objects. */ /* Animation at frame level. Here the intention is that the user does not have all the frames set up (it may depend on future user interaction, for example). Termed as Single Animation. */ extern ProError ProSingleAnimationInit(ProMdl top_model, ProAnimFrame anim_frame, ProSingleAnim *single_anim_obj); /* Purpose: Initializes an animation in single mode. Input Arguments: top_model - The top-level model being animated anim_frame - The first animation frame Output Arguments: single_anim_obj - The handle for single mode animation Return Values: PRO_TK_NO_ERROR - The function successfully initialized the animation. */ extern ProError ProSingleAnimationPlay (ProSingleAnim single_anim_obj, ProAnimFrame anim_frame); /* Purpose: Performs a single mode animation. Input Arguments: single_anim_obj - The handle for single mode animation anim_frame - The animation frame to be played Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully drew the frame. PRO_TK_GENERAL_ERROR - The function could not draw the frame. */ extern ProError ProSingleAnimationClear(ProSingleAnim single_anim_obj); /* Purpose: Clears the data generated for single mode animation. Input Arguments: single_anim_obj - The handle for single mode animation Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully cleared the data. */ /* definition of an animation movie */ extern ProError ProAnimmovieCreate (ProMdl top_model, ProAnimMovie *anim_movie); /* Purpose: Creates an animation movie. Input Arguments: top_model - The top-level model being animated Output Arguments: anim_movie - The handle to the newly created animation movie Return Values: PRO_TK_NO_ERROR - The function successfully created the animation movie. PRO_TK_BAD_INPUTS - The input argument is invalid. */ extern ProError ProAnimmovieDelete (ProAnimMovie anim_movie); /* Purpose: Deletes the specified animation movie. Input Arguments: anim_movie - The handle to the animation movie to be deleted Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully deleted the animation movie. */ extern ProError ProAnimmovieFrameAdd (ProAnimMovie anim_movie, ProAnimFrame anim_frame); /* Purpose: Adds the specified animation frame to a movie. Input Arguments: anim_movie - The handle to the animation movie anim_frame - The handle to the animation frame to be added Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully added the frame. */ extern ProError ProAnimmovieFrameRemove(ProAnimMovie anim_movie, ProAnimFrame anim_frame); /* Purpose: Removes the specified animation frame from a movie. Input Arguments: anim_movie - The handle to the animation movie anim_frame - The handle to the animation frame to be removed Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully removed the frame. PRO_TK_E_NOT_FOUND - The function did not remove the frame because the specified frame was not set in the animation movie. */ typedef ProError (*ProAnimFrameAct)(ProAnimFrame anim_frame, ProAppData app_data); /* Purpose: This is the generic function definition for visiting animation frames. Input Arguments: anim_frame - The handle to the animation frame being visited app_data - The application data passed to the function <b>ProAnimmovieFrameVisit()</b> Output Arguments: none Return Values: PRO_TK_NO_ERROR - If this is the filter function, proceed to the visit action. Any other value - If this is the filter function, skip this item. If this is the visit action, return values are not interpreted by Creo Parametric. */ extern ProError ProAnimmovieFrameVisit (ProAnimMovie anim_movie, ProAnimFrameAct visit_action, ProAnimFrameAct filter_action, ProAppData app_data); /* Purpose: Visits animation frames in an animation movie. Input Arguments: anim_movie - The handle to the animation movie visit_action - The application-supplied function to be invoked for each animation frame filter_action - The application-supplied function to be invoked for each animation frame that decides whether the animation frame should be visited. If NULL, all frames are visited using the action function. app_data - The application-supplied data passed to the visit and filter functions Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully visited all the animation frames. */ /* Animation at movie level. Here the animation frames are known prior to animation. Termed as Batch Animation. */ typedef ProError (*ProBatchAnimAct) (ProAnimFrame anim_frame, int frame_no, ProAppData app_data); /* Purpose: This is the generic function for callbacks in the middle of a batch animation. Input Arguments: anim_frame - The handle to the animation frame about to be displayed frame_no - The frame number being displayed app_data - The application data passed to the function <b>ProBatchAnimationStart()</b> Output Arguments: none Return Values: PRO_TK_NO_ERROR - Continue with batch animation. Other - Stop batch animation. */ extern ProError ProBatchAnimationStart (ProAnimMovie anim_movie, ProBatchAnimAct callback, ProAppData app_data); /* Purpose: Starts a batch animation process. Input Arguments: anim_movie - The handle to the animation movie callback - The callback function called before each frame is displayed app_data - The application data to be passed to the callback when it is invoked Output Arguments: none Return Values: PRO_TK_NO_ERROR - The batch animation was successful. PRO_TK_GENERAL_ERROR - There was an error starting the animation. */ extern ProError ProAnimmovieSpinflagSet (ProAnimMovie animMovie, ProBoolean spinFlag); /* Purpose: To set spin flag for a batch animation process. When the animation includes view modifications, the flag should be set false, otherwise true. Input Arguments: animMovie - Handle to the animation movie. spinFlag - Flag for allowing spin. Output Arguments: none Return Values: PRO_TK_NO_ERROR - Flag setting successful. PRO_TK_GENERAL_ERROR - There was an error setting the flag. PRO_TK_BAD_INPUTS - One or more input arguments was invalid. */ PRO_END_C_DECLS #endif /* PRO_ANIMATE_H */