tornavis/source/blender/makesdna/DNA_movieclip_types.h

168 lines
5.8 KiB
C

/*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* The Original Code is Copyright (C) 2011 Blender Foundation.
* All rights reserved.
*
* The Original Code is: all of this file.
*
* Contributor(s): Blender Foundation,
* Sergey Sharybin
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file DNA_movieclip_types.h
* \ingroup DNA
* \since may-2011
* \author Sergey Sharybin
*/
#ifndef __DNA_MOVIECLIP_TYPES_H__
#define __DNA_MOVIECLIP_TYPES_H__
#include "DNA_ID.h"
#include "DNA_tracking_types.h"
#include "DNA_color_types.h" /* for color management */
struct anim;
struct AnimData;
struct bGPdata;
struct ImBuf;
struct MovieClipProxy;
struct MovieTrackingTrack;
struct MovieTrackingMarker;
typedef struct MovieClipUser {
int framenr; /* current frame number */
short render_size, render_flag; /* proxy render size */
} MovieClipUser;
typedef struct MovieClipProxy {
char dir[768]; /* 768=FILE_MAXDIR custom directory for index and proxy files (defaults to BL_proxy) */
short tc; /* time code in use */
short quality; /* proxy build quality */
short build_size_flag; /* size flags (see below) of all proxies to build */
short build_tc_flag; /* time code flags (see below) of all tc indices to build */
} MovieClipProxy;
typedef struct MovieClip {
ID id;
struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */
char name[1024]; /* file path, 1024 = FILE_MAX */
int source; /* sequence or movie */
int lastframe; /* last accessed frame number */
int lastsize[2]; /* size of last accessed frame */
float aspx, aspy; /* display aspect */
struct anim *anim; /* movie source data */
struct MovieClipCache *cache; /* cache for different stuff, not in file */
struct bGPdata *gpd; /* grease pencil data */
struct MovieTracking tracking; /* data for SfM tracking */
void *tracking_context; /* context of tracking job
* used to synchronize data like framenumber
* in SpaceClip clip user */
struct MovieClipProxy proxy; /* proxy to clip data */
int flag;
int len; /* length of movie */
int start_frame; /* scene frame number footage starts playing at */
/* affects all data which is associated with a clip */
/* such as motion tracking, camera reconstruciton and so */
int frame_offset; /* offset which is adding to a file number when reading frame */
/* from a file. affects only a way how scene frame is mapping */
/* to a file name and not touches other data associated with */
/* a clip */
/* color management */
ColorManagedColorspaceSettings colorspace_settings;
} MovieClip;
typedef struct MovieClipScopes {
short ok; /* 1 means scopes are ok and recalculation is unneeded */
short use_track_mask; /* whether track's mask should be applied on preview */
int track_preview_height; /* height of track preview widget */
int frame_width, frame_height; /* width and height of frame for which scopes are calculated */
struct MovieTrackingMarker undist_marker; /* undistorted position of marker used for pattern sampling */
struct ImBuf *track_search; /* search area of a track */
struct ImBuf *track_preview; /* ImBuf displayed in track preview */
float track_pos[2]; /* sub-pizel position of marker in track ImBuf */
short track_disabled; /* active track is disabled, special notifier should be drawn */
short track_locked; /* active track is locked, no transformation should be allowed */
int framenr; /* frame number scopes are created for */
struct MovieTrackingTrack *track; /* track scopes are created for */
struct MovieTrackingMarker *marker; /* marker scopes are created for */
float slide_scale[2]; /* scale used for sliding from previewe area */
} MovieClipScopes;
/* MovieClipProxy->build_size_flag */
enum {
MCLIP_PROXY_SIZE_25 = (1 << 0),
MCLIP_PROXY_SIZE_50 = (1 << 1),
MCLIP_PROXY_SIZE_75 = (1 << 2),
MCLIP_PROXY_SIZE_100 = (1 << 3),
MCLIP_PROXY_UNDISTORTED_SIZE_25 = (1 << 4),
MCLIP_PROXY_UNDISTORTED_SIZE_50 = (1 << 5),
MCLIP_PROXY_UNDISTORTED_SIZE_75 = (1 << 6),
MCLIP_PROXY_UNDISTORTED_SIZE_100 = (1 << 7)
};
/* MovieClip->source */
enum {
MCLIP_SRC_SEQUENCE = 1,
MCLIP_SRC_MOVIE = 2
};
/* MovieClip->selection types */
enum {
MCLIP_SEL_NONE = 0,
MCLIP_SEL_TRACK = 1
};
/* MovieClip->flag */
enum {
MCLIP_USE_PROXY = (1 << 0),
MCLIP_USE_PROXY_CUSTOM_DIR = (1 << 1),
/* MCLIP_CUSTOM_START_FRAME = (1<<2), */ /* UNUSED */
MCLIP_TIMECODE_FLAGS = (MCLIP_USE_PROXY | MCLIP_USE_PROXY_CUSTOM_DIR)
};
/* MovieClip->render_size */
enum {
MCLIP_PROXY_RENDER_SIZE_FULL = 0,
MCLIP_PROXY_RENDER_SIZE_25 = 1,
MCLIP_PROXY_RENDER_SIZE_50 = 2,
MCLIP_PROXY_RENDER_SIZE_75 = 3,
MCLIP_PROXY_RENDER_SIZE_100 = 4
};
/* MovieClip->render_flag */
enum {
MCLIP_PROXY_RENDER_UNDISTORT = 1
};
#endif