Add Chromium-only Blender WebEngine parity work
This commit is contained in:
175
blender-5.2.0/source/blender/blenkernel/BKE_vfont.hh
Normal file
175
blender-5.2.0/source/blender/blenkernel/BKE_vfont.hh
Normal file
@@ -0,0 +1,175 @@
|
||||
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "DNA_listBase.h"
|
||||
|
||||
#include "BLI_math_vector_types.hh"
|
||||
#include "BLI_sys_types.h"
|
||||
|
||||
namespace blender {
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
struct CharInfo;
|
||||
struct Curve;
|
||||
struct Main;
|
||||
struct Object;
|
||||
struct ReportList;
|
||||
struct VFont;
|
||||
struct Nurb;
|
||||
|
||||
struct CharTrans {
|
||||
float2 offset;
|
||||
float rotate;
|
||||
short linenr, charnr, wordnr;
|
||||
|
||||
uint do_break : 1;
|
||||
uint is_overflow : 1;
|
||||
uint is_wrap : 1;
|
||||
uint is_smallcaps : 1;
|
||||
};
|
||||
|
||||
struct EditFontSelBox {
|
||||
float x, y, w, h;
|
||||
float rotate;
|
||||
};
|
||||
|
||||
/**
|
||||
* Edit data for #Curve (a text curve, with an #Object::type of `OB_FONT`).
|
||||
*/
|
||||
struct EditFont {
|
||||
/** Array of UTF32 code-points. */
|
||||
char32_t *textbuf;
|
||||
/** Text style info (aligned with `textbuf`). */
|
||||
CharInfo *textbufinfo;
|
||||
|
||||
/** The font size from the last evaluated text layout. */
|
||||
float font_size_eval;
|
||||
|
||||
/** Array of rectangles & rotation. */
|
||||
float2 textcurs[4];
|
||||
EditFontSelBox *selboxes;
|
||||
int selboxes_len;
|
||||
|
||||
/* Positional vars relative to the `textbuf` (not UTF8 bytes)
|
||||
* a copy of these is kept in Curve, but use these in edit-mode. */
|
||||
|
||||
/** Length of `textbuf`. */
|
||||
int len;
|
||||
/** Cursor position of (aligned with `textbuf`). */
|
||||
int pos;
|
||||
/** Text selection start/end, see #BKE_vfont_select_get. */
|
||||
int selstart, selend;
|
||||
|
||||
/**
|
||||
* Combined styles from #CharInfo.flag for the selected range selected
|
||||
* (only including values from #CU_CHINFO_STYLE_ALL).
|
||||
* A flag will be set only if ALL characters in the selected string have it.
|
||||
*/
|
||||
int select_char_info_flag;
|
||||
|
||||
/**
|
||||
* ID data is older than edit-mode data.
|
||||
* Set #Main.is_memfile_undo_flush_needed when enabling.
|
||||
*/
|
||||
char needs_flush_to_id;
|
||||
};
|
||||
|
||||
enum eEditFontMode {
|
||||
FO_EDIT = 0,
|
||||
FO_CURS = 1,
|
||||
FO_CURSUP = 2,
|
||||
FO_CURSDOWN = 3,
|
||||
FO_DUPLI = 4,
|
||||
FO_PAGEUP = 8,
|
||||
FO_PAGEDOWN = 9,
|
||||
FO_LINE_BEGIN = 10,
|
||||
FO_LINE_END = 11,
|
||||
FO_SELCHANGE = 12,
|
||||
};
|
||||
|
||||
/** #BKE_vfont_to_curve will move the cursor in these cases. */
|
||||
#define FO_CURS_IS_MOTION(mode) \
|
||||
(ELEM(mode, FO_CURSUP, FO_CURSDOWN, FO_PAGEUP, FO_PAGEDOWN, FO_LINE_BEGIN, FO_LINE_END))
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name VFont API
|
||||
*
|
||||
* See `vfont.c`.
|
||||
* \{ */
|
||||
|
||||
bool BKE_vfont_is_builtin(const VFont *vfont);
|
||||
void BKE_vfont_builtin_register(const void *mem, int size);
|
||||
/**
|
||||
* Return the built-in #VFont, without adding a user (the user-count may be zero).
|
||||
* The caller is responsible for adding a user.
|
||||
*/
|
||||
VFont *BKE_vfont_builtin_ensure();
|
||||
|
||||
/**
|
||||
* High-level pack function.
|
||||
*
|
||||
* Packs font data from its filepath.
|
||||
* Does nothing if font is already packed.
|
||||
*/
|
||||
void BKE_vfont_packfile_ensure(Main *bmain, VFont *vfont, ReportList *reports);
|
||||
|
||||
void BKE_vfont_data_ensure(VFont *vfont);
|
||||
void BKE_vfont_data_free(VFont *vfont);
|
||||
|
||||
VFont *BKE_vfont_load(Main *bmain, const char *filepath);
|
||||
VFont *BKE_vfont_load_exists_ex(Main *bmain, const char *filepath, bool *r_exists);
|
||||
VFont *BKE_vfont_load_exists(Main *bmain, const char *filepath);
|
||||
|
||||
int BKE_vfont_select_get(const Curve *cu, int *r_start, int *r_end);
|
||||
void BKE_vfont_select_clamp(Curve *cu);
|
||||
|
||||
void BKE_vfont_clipboard_free();
|
||||
void BKE_vfont_clipboard_set(const char32_t *text_buf, const CharInfo *info_buf, size_t len);
|
||||
void BKE_vfont_clipboard_get(char32_t **r_text_buf,
|
||||
CharInfo **r_info_buf,
|
||||
size_t *r_len_utf8,
|
||||
size_t *r_len_utf32);
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name VFont Curve & Text Layout API
|
||||
*
|
||||
* See `vfont_curve.c`.
|
||||
* \{ */
|
||||
|
||||
int BKE_vfont_cursor_to_text_index(Object *ob, const float2 &cursor_location);
|
||||
|
||||
/**
|
||||
* \warning Expects to have access to evaluated data (i.e. passed object should be evaluated one).
|
||||
*/
|
||||
bool BKE_vfont_to_curve(Object *ob, eEditFontMode mode);
|
||||
void BKE_vfont_char_build(const Curve &cu,
|
||||
ListBaseT<Nurb> *nubase,
|
||||
unsigned int charcode,
|
||||
const CharInfo *info,
|
||||
bool is_smallcaps,
|
||||
const float2 &offset,
|
||||
float rotate,
|
||||
int charidx,
|
||||
float fsize);
|
||||
|
||||
bool BKE_vfont_to_curve_ex(Object *ob,
|
||||
const Curve &cu,
|
||||
eEditFontMode mode,
|
||||
ListBaseT<Nurb> *r_nubase,
|
||||
const char32_t **r_text,
|
||||
int *r_text_len,
|
||||
bool *r_text_free,
|
||||
CharTrans **r_chartransdata,
|
||||
float *r_font_size_eval);
|
||||
bool BKE_vfont_to_curve_nubase(Object *ob, eEditFontMode mode, ListBaseT<Nurb> *r_nubase);
|
||||
|
||||
/** \} */
|
||||
|
||||
} // namespace blender
|
||||
Reference in New Issue
Block a user