Files
workinf_Blender_Wasm/blender-5.2.0/source/blender/sequencer/SEQ_effects.hh
2026-08-12 04:47:48 -04:00

78 lines
1.9 KiB
C++

/* SPDX-FileCopyrightText: 2004 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "DNA_sequence_types.h"
#include "DNA_vec_types.h"
#include "BLI_math_vector_types.hh"
#include "BLI_vector.hh"
#include <mutex>
namespace blender {
/** \file
* \ingroup sequencer
*/
struct Strip;
struct VFont;
namespace seq {
struct RenderData;
void effect_ensure_initialized(Strip *strip);
void effect_free(Strip *strip);
/* Returns the minimum number of inputs needed by the effect type.
* Note: some effects (compositor) will return zero; they can
* take variable number of inputs. */
int effect_type_get_min_num_inputs(StripType type);
bool strip_type_is_effect(StripType type);
bool effect_is_transition(StripType type);
void effect_text_font_set(Strip *strip, VFont *font);
bool effects_can_render_text(const Strip *strip);
void text_effect_update_runtime(const RenderData *context, TextVars &text, const int2 image_size);
std::recursive_mutex &text_runtime_mutex_get();
struct CharInfo {
/** Character offset within text buffer. */
int index = 0;
/** Byte offset within text buffer. */
int offset = 0;
/** Size of the character in bytes. */
int byte_length = 0;
/** Pixel offset of character origin. */
float2 position{0.0f, 0.0f};
/** FreeType pixel offset for drawing next character after this one. */
int advance_x = 0;
/** Indicate that the next character after this one should be on a new line. */
bool do_wrap = false;
};
struct LineInfo {
Vector<CharInfo> characters;
/** Pixel width. */
int width;
};
struct TextVarsRuntime {
Vector<LineInfo> lines;
int2 image_size;
rcti text_boundbox; /* Bound-box used for box drawing and selection. */
int line_height;
int font_descender;
int character_count;
int font;
bool editing_is_active; /* UI uses this to differentiate behavior. */
};
} // namespace seq
} // namespace blender