Blender  V3.3
Classes | Macros | Typedefs | Functions | Variables
ed_draw.c File Reference
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_path_util.h"
#include "BLI_rect.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "BKE_context.h"
#include "BKE_image.h"
#include "BLF_api.h"
#include "IMB_imbuf_types.h"
#include "IMB_metadata.h"
#include "ED_screen.h"
#include "ED_space_api.h"
#include "ED_util.h"
#include "GPU_immediate.h"
#include "GPU_matrix.h"
#include "GPU_state.h"
#include "UI_interface.h"
#include "UI_resources.h"
#include "RNA_access.h"
#include "WM_api.h"
#include "WM_types.h"

Go to the source code of this file.

Classes

struct  tSlider
 
struct  MetadataCustomDrawContext
 
struct  MetadataCustomCountContext
 

Macros

#define MAX_METADATA_STR   1024
 

Typedefs

typedef struct MetadataCustomDrawContext MetadataCustomDrawContext
 
typedef struct MetadataCustomCountContext MetadataCustomCountContext
 

Functions

void ED_region_draw_mouse_line_cb (const bContext *C, ARegion *region, void *arg_info)
 
BLI_INLINE bool metadata_is_valid (ImBuf *ibuf, char *r_str, short index, int offset)
 
BLI_INLINE bool metadata_is_custom_drawable (const char *field)
 
static void metadata_custom_draw_fields (const char *field, const char *value, void *ctx_v)
 
static void metadata_draw_imbuf (ImBuf *ibuf, const rctf *rect, int fontid, const bool is_top)
 
static void metadata_custom_count_fields (const char *field, const char *UNUSED(value), void *ctx_v)
 
static float metadata_box_height_get (ImBuf *ibuf, int fontid, const bool is_top)
 
void ED_region_image_metadata_draw (int x, int y, ImBuf *ibuf, const rctf *frame, float zoomx, float zoomy)
 

Variables

static const char * meta_data_list []
 

Generic Slider

The generic slider is supposed to be called during modal operations. It calculates a factor value based on mouse position and draws a visual representation. In order to use it, you need to store a reference to a tSlider in your operator which you get by calling ED_slider_create. Then you need to update it during modal operations by calling ED_slider_modal", which will update tSlider.factor for you to use. To remove drawing and free the memory, call ED_slider_destroy.

#define SLIDE_PIXEL_DISTANCE   (300.0f * U.dpi_fac)
 
#define OVERSHOOT_RANGE_DELTA   0.2f
 
typedef struct tSlider tSlider
 
static void draw_overshoot_triangle (const uint8_t color[4], const bool facing_right, const float x, const float y)
 
static void draw_ticks (const float start_factor, const float end_factor, const float line_start[2], const float base_tick_height, const float line_width, const uint8_t color_overshoot[4], const uint8_t color_line[4])
 
static void draw_main_line (const rctf *main_line_rect, const float factor, const bool overshoot, const uint8_t color_overshoot[4], const uint8_t color_line[4])
 
static void draw_backdrop (const int fontid, const rctf *main_line_rect, const uint8_t color_bg[4], const short region_y_size, const float base_tick_height)
 
static void slider_draw (const struct bContext *UNUSED(C), ARegion *region, void *arg)
 
static void slider_update_factor (tSlider *slider, const wmEvent *event)
 
tSliderED_slider_create (struct bContext *C)
 
void ED_slider_init (struct tSlider *slider, const wmEvent *event)
 
bool ED_slider_modal (tSlider *slider, const wmEvent *event)
 
void ED_slider_status_string_get (const struct tSlider *slider, char *status_string, const size_t size_of_status_string)
 
void ED_slider_destroy (struct bContext *C, tSlider *slider)
 
float ED_slider_factor_get (struct tSlider *slider)
 
void ED_slider_factor_set (struct tSlider *slider, const float factor)
 
bool ED_slider_allow_overshoot_get (struct tSlider *slider)
 
void ED_slider_allow_overshoot_set (struct tSlider *slider, const bool value)
 

Macro Definition Documentation

◆ MAX_METADATA_STR

#define MAX_METADATA_STR   1024

Definition at line 538 of file ed_draw.c.

◆ OVERSHOOT_RANGE_DELTA

#define OVERSHOOT_RANGE_DELTA   0.2f

Definition at line 57 of file ed_draw.c.

◆ SLIDE_PIXEL_DISTANCE

#define SLIDE_PIXEL_DISTANCE   (300.0f * U.dpi_fac)

Definition at line 56 of file ed_draw.c.

Typedef Documentation

◆ MetadataCustomCountContext

◆ MetadataCustomDrawContext

◆ tSlider

typedef struct tSlider tSlider

Function Documentation

◆ draw_backdrop()

static void draw_backdrop ( const int  fontid,
const rctf main_line_rect,
const uint8_t  color_bg[4],
const short  region_y_size,
const float  base_tick_height 
)
static

◆ draw_main_line()

static void draw_main_line ( const rctf main_line_rect,
const float  factor,
const bool  overshoot,
const uint8_t  color_overshoot[4],
const uint8_t  color_line[4] 
)
static

◆ draw_overshoot_triangle()

static void draw_overshoot_triangle ( const uint8_t  color[4],
const bool  facing_right,
const float  x,
const float  y 
)
static

◆ draw_ticks()

static void draw_ticks ( const float  start_factor,
const float  end_factor,
const float  line_start[2],
const float  base_tick_height,
const float  line_width,
const uint8_t  color_overshoot[4],
const uint8_t  color_line[4] 
)
static

Definition at line 116 of file ed_draw.c.

References ceil(), float(), SLIDE_PIXEL_DISTANCE, UI_draw_roundbox_3ub_alpha(), x, and rctf::xmin.

Referenced by slider_draw().

◆ ED_region_draw_mouse_line_cb()

void ED_region_draw_mouse_line_cb ( const bContext C,
ARegion region,
void arg_info 
)

◆ ED_region_image_metadata_draw()

void ED_region_image_metadata_draw ( int  x,
int  y,
struct ImBuf ibuf,
const rctf frame,
float  zoomx,
float  zoomy 
)

◆ ED_slider_allow_overshoot_get()

bool ED_slider_allow_overshoot_get ( struct tSlider slider)

Definition at line 493 of file ed_draw.c.

References tSlider::allow_overshoot.

◆ ED_slider_allow_overshoot_set()

void ED_slider_allow_overshoot_set ( struct tSlider slider,
const bool  value 
)

Definition at line 498 of file ed_draw.c.

References tSlider::allow_overshoot.

Referenced by decimate_invoke().

◆ ED_slider_create()

tSlider* ED_slider_create ( struct bContext C)

◆ ED_slider_destroy()

void ED_slider_destroy ( struct bContext C,
tSlider slider 
)

◆ ED_slider_factor_get()

float ED_slider_factor_get ( struct tSlider slider)

◆ ED_slider_factor_set()

void ED_slider_factor_set ( struct tSlider slider,
const float  factor 
)

Definition at line 485 of file ed_draw.c.

References clamp_f(), tSlider::factor, and tSlider::overshoot.

Referenced by graph_slider_modal(), pose_slide_init(), and pose_slide_modal().

◆ ED_slider_init()

void ED_slider_init ( struct tSlider slider,
const wmEvent event 
)

Definition at line 386 of file ed_draw.c.

References copy_v2fl_v2i(), tSlider::last_cursor, and wmEvent::xy.

◆ ED_slider_modal()

bool ED_slider_modal ( tSlider slider,
const wmEvent event 
)

◆ ED_slider_status_string_get()

void ED_slider_status_string_get ( const struct tSlider slider,
char *  status_string,
size_t  size_of_status_string 
)

◆ metadata_box_height_get()

static float metadata_box_height_get ( ImBuf ibuf,
int  fontid,
const bool  is_top 
)
static

◆ metadata_custom_count_fields()

static void metadata_custom_count_fields ( const char *  field,
const char *  UNUSEDvalue,
void ctx_v 
)
static

Definition at line 693 of file ed_draw.c.

References MetadataCustomCountContext::count, and metadata_is_custom_drawable().

Referenced by metadata_box_height_get().

◆ metadata_custom_draw_fields()

static void metadata_custom_draw_fields ( const char *  field,
const char *  value,
void ctx_v 
)
static

◆ metadata_draw_imbuf()

static void metadata_draw_imbuf ( ImBuf ibuf,
const rctf rect,
int  fontid,
const bool  is_top 
)
static

◆ metadata_is_custom_drawable()

BLI_INLINE bool metadata_is_custom_drawable ( const char *  field)

Definition at line 560 of file ed_draw.c.

References BKE_stamp_is_known_field(), and STREQ.

Referenced by metadata_custom_count_fields(), and metadata_custom_draw_fields().

◆ metadata_is_valid()

BLI_INLINE bool metadata_is_valid ( ImBuf ibuf,
char *  r_str,
short  index,
int  offset 
)

◆ slider_draw()

static void slider_draw ( const struct bContext UNUSEDC,
ARegion region,
void arg 
)
static

◆ slider_update_factor()

static void slider_update_factor ( tSlider slider,
const wmEvent event 
)
static

Variable Documentation

◆ meta_data_list

const char* meta_data_list[]
static
Initial value:
= {
"File",
"Strip",
"Date",
"RenderTime",
"Note",
"Marker",
"Time",
"Frame",
"Camera",
"Scene",
}

Definition at line 540 of file ed_draw.c.

Referenced by metadata_draw_imbuf(), and metadata_is_valid().