Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ED_screen_types.h « include « editors « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 51f3eea74faa327e77c623747fab9ee9b57b0841 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*
 * 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) 2008 Blender Foundation.
 * All rights reserved.
 */

/** \file
 * \ingroup editors
 */

#ifndef __ED_SCREEN_TYPES_H__
#define __ED_SCREEN_TYPES_H__

#ifdef __cplusplus
extern "C" {
#endif

/* ----------------------------------------------------- */

/* for animplayer */
typedef struct ScreenAnimData {
  ARegion *region; /* do not read from this, only for comparing if region exists */
  short redraws;
  short flag;                 /* flags for playback */
  int sfra;                   /* frame that playback was started from */
  int nextfra;                /* next frame to go to (when ANIMPLAY_FLAG_USE_NEXT_FRAME is set) */
  double lagging_frame_count; /* used for frame dropping */
  bool from_anim_edit;        /* playback was invoked from animation editor */
} ScreenAnimData;

/* for animplayer */
enum {
  /* user-setting - frame range is played backwards */
  ANIMPLAY_FLAG_REVERSE = (1 << 0),
  /* temporary - playback just jumped to the start/end */
  ANIMPLAY_FLAG_JUMPED = (1 << 1),
  /* drop frames as needed to maintain framerate */
  ANIMPLAY_FLAG_SYNC = (1 << 2),
  /* don't drop frames (and ignore SCE_FRAME_DROP flag) */
  ANIMPLAY_FLAG_NO_SYNC = (1 << 3),
  /* use nextfra at next timer update */
  ANIMPLAY_FLAG_USE_NEXT_FRAME = (1 << 4),
};

/* ----------------------------------------------------- */

#define REDRAW_FRAME_AVERAGE 8

/* for playback framerate info
 * stored during runtime as scene->fps_info
 */
typedef struct ScreenFrameRateInfo {
  double redrawtime;
  double lredrawtime;
  float redrawtimes_fps[REDRAW_FRAME_AVERAGE];
  short redrawtime_index;
} ScreenFrameRateInfo;

/* ----------------------------------------------------- */

/* Enum for Action Zone Edges. Which edge of area is action zone. */
typedef enum {
  /** Region located on the left, _right_ edge is action zone.
   * Region minimized to the top left */
  AE_RIGHT_TO_TOPLEFT,
  /** Region located on the right, _left_ edge is action zone.
   * Region minimized to the top right */
  AE_LEFT_TO_TOPRIGHT,
  /** Region located at the bottom, _top_ edge is action zone.
   * Region minimized to the bottom right */
  AE_TOP_TO_BOTTOMRIGHT,
  /** Region located at the top, _bottom_ edge is action zone.
   * Region minimized to the top left */
  AE_BOTTOM_TO_TOPLEFT,
} AZEdge;

typedef enum {
  AZ_SCROLL_VERT,
  AZ_SCROLL_HOR,
} AZScrollDirection;

/* for editing areas/regions */
typedef struct AZone {
  struct AZone *next, *prev;
  ARegion *region;
  int type;

  union {
    /* region-azone, which of the edges (only for AZONE_REGION) */
    AZEdge edge;
    AZScrollDirection direction;
  };
  /* for draw */
  short x1, y1, x2, y2;
  /* for clip */
  rcti rect;
  /* for fade in/out */
  float alpha;
} AZone;

/** Action-Zone Type: #AZone.type */
enum {
  /**
   * Corner widgets for:
   * - Splitting areas.
   * - Swapping areas (Ctrl).
   * - Copying the area into a new window (Shift).
   */
  AZONE_AREA = 1,
  /**
   * Use for region show/hide state:
   * - When a region is collapsed, draw a handle to expose.
   * - When a region is expanded, use the action zone to resize the region.
   */
  AZONE_REGION,
  /**
   * Used when in editor fullscreen draw a corner to return to normal mode.
   */
  AZONE_FULLSCREEN,
  /**
   * Hotspot azone around scroll-bars to show/hide them.
   * Only show the scroll-bars when the cursor is close.
   */
  AZONE_REGION_SCROLL,
};

#ifdef __cplusplus
}
#endif

#endif /* __ED_SCREEN_TYPES_H__ */