GRASS GIS 7 Programmer's Manual  7.5.svn(2017)-r71790
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gk2.c File Reference

OGSF library - setting and manipulating keyframes animation. More...

#include <stdlib.h>
#include <grass/gis.h>
#include <grass/glocale.h>
#include <grass/ogsf.h>
Include dependency graph for gk2.c:

Go to the source code of this file.

Functions

int GK_set_interpmode (int mode)
 Set interpolation mode. More...
 
void GK_set_tension (float tens)
 Set value for tension when interpmode is KF_SPLINE. More...
 
void GK_showtension_start (void)
 
void GK_showtension_stop (void)
 Show tension stop ? More...
 
void GK_update_tension (void)
 Update tension. More...
 
void GK_print_keys (const char *name)
 Print keyframe info. More...
 
void GK_update_frames (void)
 Recalculate path using the current number of frames requested. More...
 
void GK_set_numsteps (int newsteps)
 Set the number of frames to be interpolated from keyframes. More...
 
void GK_clear_keys (void)
 Deletes all keyframes, resets field masks. More...
 
int GK_move_key (float oldpos, float precis, float newpos)
 Move keyframe. More...
 
int GK_delete_key (float pos, float precis, int justone)
 
int GK_add_key (float pos, unsigned long fmask, int force_replace, float precis)
 Add keyframe. More...
 
void GK_do_framestep (int step, int render)
 Moves the animation to frame number "step". More...
 
void GK_show_path (int flag)
 Draw the current path. More...
 
void GK_show_vect (int flag)
 Show vector sets. More...
 
void GK_show_site (int flag)
 Show point sets. More...
 
void GK_show_vol (int flag)
 Show volumes. More...
 
void GK_show_list (int flag)
 Show list. More...
 

Detailed Description

OGSF library - setting and manipulating keyframes animation.

GRASS OpenGL gsurf OGSF Library

(C) 1999-2008 by the GRASS Development Team

This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Author
Bill Brown USACERL, GMSL/University of Illinois
Doxygenized by Martin Landa <landa.martin gmail.com> (May 2008)

Definition in file gk2.c.

Function Documentation

int GK_add_key ( float  pos,
unsigned long  fmask,
int  force_replace,
float  precis 
)

Add keyframe.

The pos value is the relative position in the animation for this particular keyframe - used to compare relative distance to neighboring keyframes, it can be any floating point value.

The fmask value can be any of the following or'd together:

  • KF_FROMX_MASK
  • KF_FROMY_MASK
  • KF_FROMZ_MASK
  • KF_FROM_MASK (KF_FROMX_MASK | KF_FROMY_MASK | KF_FROMZ_MASK)
  • KF_DIRX_MASK
  • KF_DIRY_MASK
  • KF_DIRZ_MASK
  • KF_DIR_MASK (KF_DIRX_MASK | KF_DIRY_MASK | KF_DIRZ_MASK)
  • KF_FOV_MASK
  • KF_TWIST_MASK
  • KF_ALL_MASK (KF_FROM_MASK | KF_DIR_MASK | KF_FOV_MASK | KF_TWIST_MASK)

Other fields will be added later.

The value precis and the boolean force_replace are used to determine if a keyframe should be considered to be at the same position as a pre-existing keyframe. e.g., if anykey.pos - newkey.pos <= precis, GK_add_key() will fail unless force_replace is TRUE.

Parameters
pospostion
fmaks
force_replace
precisprecision value
Returns
1 if key is added
-1 key not added

Definition at line 429 of file gk2.c.

References key_node::fieldmask, key_node::fields, G_debug(), GK_update_frames(), GS_get_fov(), GS_get_from(), GS_get_twist(), GS_get_viewdir(), KF_DIRX, KF_DIRY, KF_DIRZ, KF_FOV, KF_FROMX, KF_FROMY, KF_FROMZ, KF_TWIST, malloc(), key_node::next, NULL, key_node::pos, key_node::prior, X, Y, and Z.

void GK_clear_keys ( void  )

Deletes all keyframes, resets field masks.

Doesn't change number of frames requested.

Definition at line 310 of file gk2.c.

References free(), gk_free_key(), and NULL.

int GK_delete_key ( float  pos,
float  precis,
int  justone 
)

Delete keyframe

The values pos and precis are used to determine which keyframes to delete. Any keyframes with their position within precis of pos will be deleted if justone is zero. If justone is non-zero, only the first (lowest pos) keyframe in the range will be deleted.

Parameters
posposition
precisprecision
justonedelete only one keyframe
Returns
number of keys deleted.

Definition at line 367 of file gk2.c.

References free(), GK_update_frames(), key_node::next, and key_node::pos.

void GK_do_framestep ( int  step,
int  render 
)

Moves the animation to frame number "step".

Step should be a value between 1 and the number of frames. If render is non-zero, calls draw_all.

Parameters
stepstep value
render

Definition at line 486 of file gk2.c.

References gk_follow_frames().

int GK_move_key ( float  oldpos,
float  precis,
float  newpos 
)

Move keyframe.

Precis works as in other functions - to identify keyframe to move. Only the first keyframe in the precis range will be moved.

Parameters
oldposold position
precisprecision value
newposnew position
Returns
number of keys moved (1 or 0)

Definition at line 336 of file gk2.c.

References GK_update_frames(), key_node::next, and key_node::pos.

void GK_print_keys ( const char *  name)

Print keyframe info.

Parameters
namefilename

Definition at line 209 of file gk2.c.

References _, fclose(), key_node::fields, G_fatal_error(), KF_DIRX, KF_DIRY, KF_DIRZ, KF_FOV, KF_FROMX, KF_FROMY, KF_FROMZ, KF_TWIST, key_node::next, NULL, and key_node::pos.

int GK_set_interpmode ( int  mode)

Set interpolation mode.

Parameters
modeinterpolation mode (KF_LINEAR or KF_SPLINE)
Returns
1 on success
-1 on error (invalid interpolation mode)

Definition at line 140 of file gk2.c.

References KF_LEGAL_MODE.

void GK_set_numsteps ( int  newsteps)

Set the number of frames to be interpolated from keyframes.

Parameters
newstepsnumber of frames

Definition at line 297 of file gk2.c.

References GK_update_frames().

void GK_set_tension ( float  tens)

Set value for tension when interpmode is KF_SPLINE.

Parameters
tensvalue tens should be between 0.0; 1.0.

Definition at line 155 of file gk2.c.

References gk_draw_path(), GK_update_frames(), GS_alldraw_wire(), GS_background_color(), GS_clear(), GS_done_draw(), GS_ready_draw(), GS_set_draw(), and GSD_BACK.

void GK_show_list ( int  flag)

Show list.

Parameters
flag

Definition at line 611 of file gk2.c.

References FM_LABEL, and GS_draw_all_list().

void GK_show_path ( int  flag)

Draw the current path.

Parameters
flag

Definition at line 502 of file gk2.c.

References FM_PATH, gk_draw_path(), GS_done_draw(), GS_ready_draw(), GS_set_draw(), and GSD_FRONT.

void GK_show_site ( int  flag)

Show point sets.

Parameters
flag

Definition at line 555 of file gk2.c.

References FM_SITE, GP_alldraw_site(), GS_done_draw(), GS_ready_draw(), GS_set_draw(), and GSD_FRONT.

void GK_show_vect ( int  flag)

Show vector sets.

Parameters
flag

Definition at line 529 of file gk2.c.

References FM_VECT, GS_done_draw(), GS_ready_draw(), GS_set_draw(), GSD_FRONT, and GV_alldraw_vect().

void GK_show_vol ( int  flag)

Show volumes.

Parameters
flag

Definition at line 583 of file gk2.c.

References FM_VOL, GS_done_draw(), GS_ready_draw(), GS_set_draw(), GSD_FRONT, and GVL_alldraw_vol().

void GK_showtension_start ( void  )

Definition at line 175 of file gk2.c.

void GK_showtension_stop ( void  )

Show tension stop ?

Use GK_showtension_start/GK_update_tension/GK_showtension_stop to initialize and stop multi-view display of path when changing tension.

Definition at line 187 of file gk2.c.

void GK_update_frames ( void  )

Recalculate path using the current number of frames requested.

Call after changing number of frames or when Keyframes change.

Definition at line 243 of file gk2.c.

References _, key_node::fields, free(), G_warning(), gk_make_framesfromkeys(), gk_make_linear_framesfromkeys(), KF_FROMX, KF_FROMY, KF_FROMZ, KF_LINEAR, NULL, and key_node::pos.

Referenced by GK_add_key(), GK_delete_key(), GK_move_key(), GK_set_numsteps(), GK_set_tension(), and GK_update_tension().

void GK_update_tension ( void  )

Update tension.

Definition at line 195 of file gk2.c.

References GK_update_frames().