New upstream version 25.0.3+dfsg1

This commit is contained in:
Sebastian Ramacher 2020-03-25 09:07:22 +01:00
parent 04fe0efc67
commit 8b2e5f2130
569 changed files with 62491 additions and 5875 deletions

View file

@ -35,4 +35,5 @@ Transform="Transformació de text"
Transform.None="Cap"
Transform.Uppercase="Majúscula"
Transform.Lowercase="Minúscula"
Transform.Startcase="Primera lletra en majúscula"

View file

@ -35,4 +35,5 @@ Transform="Transformace textu"
Transform.None="Žádná"
Transform.Uppercase="VELKÝMI PÍSMENY"
Transform.Lowercase="malými písmeny"
Transform.Startcase="Počáteční velikost"

View file

@ -35,4 +35,5 @@ Transform="Teksttransformation"
Transform.None="Ingen"
Transform.Uppercase="Versaler"
Transform.Lowercase="Minuskler"
Transform.Startcase="Hvert ords startbogstav med versal"

View file

@ -35,4 +35,5 @@ Transform="Texttransformation"
Transform.None="Keine"
Transform.Uppercase="Großbuchstaben"
Transform.Lowercase="Kleinbuchstaben"
Transform.Startcase="Erster Buchstabe großgeschrieben"

View file

@ -35,3 +35,4 @@ Transform="Text Transform"
Transform.None="None"
Transform.Uppercase="Uppercase"
Transform.Lowercase="Lowercase"
Transform.Startcase="Start Case"

View file

@ -35,4 +35,5 @@ Transform="Transformación de Texto"
Transform.None="Ninguno"
Transform.Uppercase="Mayúscula"
Transform.Lowercase="Minúscula"
Transform.Startcase="Primera letra en mayúscula"

View file

@ -35,4 +35,5 @@ Transform="Testu-eraldaketa"
Transform.None="Gabe"
Transform.Uppercase="Hizki-larriak"
Transform.Lowercase="Hizki-xeheak"
Transform.Startcase="Hitz guztien lehenengo letra maiuskulaz"

View file

@ -35,4 +35,5 @@ Transform="Tekstin muunnos"
Transform.None="Ei mitään"
Transform.Uppercase="Isot kirjaimet"
Transform.Lowercase="Pienet kirjaimet"
Transform.Startcase="Sanan alkukirjain"

View file

@ -35,4 +35,5 @@ Transform="Transformer le texte"
Transform.None="Aucune"
Transform.Uppercase="Majuscules"
Transform.Lowercase="Minuscules"
Transform.Startcase="Capitalisation des mots"

View file

@ -35,4 +35,5 @@ Transform="Transformación do texto"
Transform.None="Ningunha"
Transform.Uppercase="Maiúsculas"
Transform.Lowercase="Minúsculas"
Transform.Startcase="Primeira letra en maiúscula"

View file

@ -35,4 +35,5 @@ Transform="Szöveg alakítása"
Transform.None="Egyik sem"
Transform.Uppercase="Nagybetűs"
Transform.Lowercase="Kisbetűs"
Transform.Startcase="Nagy kezdőbetű"

View file

@ -35,4 +35,5 @@ Transform="Trasformazione del testo"
Transform.None="Nessuna"
Transform.Uppercase="In lettere maiuscole"
Transform.Lowercase="In lettere minuscole"
Transform.Startcase="Avvia Caso"

View file

@ -35,4 +35,5 @@ Transform="テキスト変換"
Transform.None="未設定"
Transform.Uppercase="大文字"
Transform.Lowercase="小文字"
Transform.Startcase="各単語の最初の一文字を大文字にする"

View file

@ -35,4 +35,5 @@ Transform="ტექსტის გარდაქმნა"
Transform.None="არცერთი"
Transform.Uppercase="მთავრული"
Transform.Lowercase="ნუსხური"
Transform.Startcase="პირველი ასოს გამთავრულება"

View file

@ -35,4 +35,5 @@ Transform="글자 변환"
Transform.None="없음"
Transform.Uppercase="대문자"
Transform.Lowercase="소문자"
Transform.Startcase="첫 글자를 대문자로"

View file

@ -35,4 +35,5 @@ Transform="Tekst transformering"
Transform.None="Ingen"
Transform.Uppercase="Store bokstaver"
Transform.Lowercase="Små bokstaver"
Transform.Startcase="Stor forbokstav i alle ord"

View file

@ -35,4 +35,5 @@ Transform="Tekst transformatie"
Transform.None="Geen"
Transform.Uppercase="Hoofdletters"
Transform.Lowercase="Kleine letters"
Transform.Startcase="Beginletters hoofdletter"

View file

@ -35,4 +35,5 @@ Transform="Przekształcanie tekstu"
Transform.None="Brak"
Transform.Uppercase="Wielkie litery"
Transform.Lowercase="Małe litery"
Transform.Startcase="Wielkie Pierwsze Litery"

View file

@ -35,4 +35,5 @@ Transform="Transformação"
Transform.None="Nenhuma"
Transform.Uppercase="Letras Maiúsculas"
Transform.Lowercase="Letras Minúsculas"
Transform.Startcase="Capitular"

View file

@ -1,5 +1,9 @@
TextGDIPlus="Texto (GDI+)"
Font="Fonte"
Text="Texto"
ReadFromFile="Ler de um ficheiro"
TextFile="Ficheiro Texto (UTF-8)"
Filter.TextFiles="Ficheiros Texto"
Filter.AllFiles="Todos os Ficheiros"
Color="Cor"
Opacity="Opacidade"
@ -7,6 +11,8 @@ Gradient="Gradiente"
Gradient.Color="Cor do Gradiente"
Gradient.Opacity="Opacidade do Gradiente"
Gradient.Direction="Direção do Gradiente"
BkColor="Cor de Fundo"
BkOpacity="Opacidade do Fundo"
Alignment="Alinhamento"
Alignment.Left="Esquerda"
Alignment.Center="Centro"
@ -14,6 +20,15 @@ Alignment.Right="Direita"
Vertical="Vertical"
VerticalAlignment="Alinhamento Vertical"
VerticalAlignment.Top="Topo"
VerticalAlignment.Bottom="Fundo"
Outline="Contorno"
Outline.Size="Espessura do Contorno"
Outline.Color="Cor do Contorno"
Outline.Opacity="Opacidade do Contorno"
Width="Largura"
Height="Altura"
Transform="Transformar Texto"
Transform.None="Nenhum"
Transform.Uppercase="Maiúsculas"
Transform.Lowercase="Minúsculas"

View file

@ -33,6 +33,7 @@ Width="Ширина"
Height="Высота"
Transform="Преобразование текста"
Transform.None="Нет"
Transform.Uppercase="Верхний регистр"
Transform.Lowercase="Нижний регистр"
Transform.Uppercase="Заглавные буквы"
Transform.Lowercase="Строчные буквы"
Transform.Startcase="Каждое слово с заглавной"

View file

@ -35,4 +35,5 @@ Transform="Transformácia textu"
Transform.None="Žiadna"
Transform.Uppercase="Veľké písmená"
Transform.Lowercase="Malé písmená"
Transform.Startcase="Veľkosť Začiatočných Písmen"

View file

@ -35,4 +35,5 @@ Transform="Preoblika besedila"
Transform.None="Brez"
Transform.Uppercase="Velike črke"
Transform.Lowercase="Male črke"
Transform.Startcase="Velika začetnica"

View file

@ -35,4 +35,5 @@ Transform="Textomvandling"
Transform.None="Ingen"
Transform.Uppercase="Versaler"
Transform.Lowercase="Gemener"
Transform.Startcase="Första bokstavens skiftläge"

View file

@ -35,4 +35,5 @@ Transform="Metin Dönüşümü"
Transform.None="Yok"
Transform.Uppercase="Büyük harf"
Transform.Lowercase="Küçük harf"
Transform.Startcase="Davayı Başlat"

View file

@ -35,4 +35,5 @@ Transform="Перетворення тексту"
Transform.None="Немає"
Transform.Uppercase="До верхнього регістру"
Transform.Lowercase="До нижнього регістру"
Transform.Startcase="Почати звернення"

View file

@ -35,4 +35,5 @@ Transform="文本转换"
Transform.None="无"
Transform.Uppercase="大写"
Transform.Lowercase="小写"
Transform.Startcase="每词首字母大写"

View file

@ -35,4 +35,5 @@ Transform="文字變型"
Transform.None="無"
Transform.Uppercase="大寫"
Transform.Lowercase="小寫"
Transform.Startcase="起始大小寫"

View file

@ -8,6 +8,7 @@
#include <algorithm>
#include <string>
#include <memory>
#include <locale>
using namespace std;
using namespace Gdiplus;
@ -80,6 +81,7 @@ using namespace Gdiplus;
#define S_TRANSFORM_NONE 0
#define S_TRANSFORM_UPPERCASE 1
#define S_TRANSFORM_LOWERCASE 2
#define S_TRANSFORM_STARTCASE 3
#define T_(v) obs_module_text(v)
#define T_FONT T_("Font")
@ -123,6 +125,7 @@ using namespace Gdiplus;
#define T_TRANSFORM_NONE T_("Transform.None")
#define T_TRANSFORM_UPPERCASE T_("Transform.Uppercase")
#define T_TRANSFORM_LOWERCASE T_("Transform.Lowercase")
#define T_TRANSFORM_STARTCASE T_("Transform.Startcase")
/* clang-format on */
@ -657,10 +660,28 @@ void TextSource::LoadFileText()
void TextSource::TransformText()
{
const locale loc = locale(obs_get_locale());
const ctype<wchar_t> &f = use_facet<ctype<wchar_t>>(loc);
if (text_transform == S_TRANSFORM_UPPERCASE)
transform(text.begin(), text.end(), text.begin(), towupper);
f.toupper(&text[0], &text[0] + text.size());
else if (text_transform == S_TRANSFORM_LOWERCASE)
transform(text.begin(), text.end(), text.begin(), towlower);
f.tolower(&text[0], &text[0] + text.size());
else if (text_transform == S_TRANSFORM_STARTCASE) {
bool upper = true;
for (wstring::iterator it = text.begin(); it != text.end();
++it) {
const wchar_t upper_char = f.toupper(*it);
const wchar_t lower_char = f.tolower(*it);
if (upper && lower_char != upper_char) {
upper = false;
*it = upper_char;
} else if (lower_char != upper_char) {
*it = lower_char;
} else {
upper = iswspace(*it);
}
}
}
}
#define obs_data_get_uint32 (uint32_t) obs_data_get_int
@ -951,6 +972,8 @@ static obs_properties_t *get_properties(void *data)
S_TRANSFORM_UPPERCASE);
obs_property_list_add_int(p, T_TRANSFORM_LOWERCASE,
S_TRANSFORM_LOWERCASE);
obs_property_list_add_int(p, T_TRANSFORM_STARTCASE,
S_TRANSFORM_STARTCASE);
obs_properties_add_bool(props, S_VERTICAL, T_VERTICAL);
obs_properties_add_color(props, S_COLOR, T_COLOR);
@ -1012,13 +1035,43 @@ static obs_properties_t *get_properties(void *data)
return props;
}
static void defaults(obs_data_t *settings, int ver)
{
obs_data_t *font_obj = obs_data_create();
obs_data_set_default_string(font_obj, "face", "Arial");
obs_data_set_default_int(font_obj, "size", ver == 1 ? 36 : 256);
obs_data_set_default_obj(settings, S_FONT, font_obj);
obs_data_set_default_string(settings, S_ALIGN, S_ALIGN_LEFT);
obs_data_set_default_string(settings, S_VALIGN, S_VALIGN_TOP);
obs_data_set_default_int(settings, S_COLOR, 0xFFFFFF);
obs_data_set_default_int(settings, S_OPACITY, 100);
obs_data_set_default_int(settings, S_GRADIENT_COLOR, 0xFFFFFF);
obs_data_set_default_int(settings, S_GRADIENT_OPACITY, 100);
obs_data_set_default_double(settings, S_GRADIENT_DIR, 90.0);
obs_data_set_default_int(settings, S_BKCOLOR, 0x000000);
obs_data_set_default_int(settings, S_BKOPACITY, 0);
obs_data_set_default_int(settings, S_OUTLINE_SIZE, 2);
obs_data_set_default_int(settings, S_OUTLINE_COLOR, 0xFFFFFF);
obs_data_set_default_int(settings, S_OUTLINE_OPACITY, 100);
obs_data_set_default_int(settings, S_CHATLOG_LINES, 6);
obs_data_set_default_bool(settings, S_EXTENTS_WRAP, true);
obs_data_set_default_int(settings, S_EXTENTS_CX, 100);
obs_data_set_default_int(settings, S_EXTENTS_CY, 100);
obs_data_set_default_int(settings, S_TRANSFORM, S_TRANSFORM_NONE);
obs_data_release(font_obj);
};
bool obs_module_load(void)
{
obs_source_info si = {};
si.id = "text_gdiplus";
si.type = OBS_SOURCE_TYPE_INPUT;
si.output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CUSTOM_DRAW;
si.output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CUSTOM_DRAW |
OBS_SOURCE_CAP_OBSOLETE;
si.get_properties = get_properties;
si.icon_type = OBS_ICON_TYPE_TEXT;
si.get_name = [](void *) { return obs_module_text("TextGDIPlus"); };
si.create = [](obs_data_t *settings, obs_source_t *source) {
@ -1033,33 +1086,7 @@ bool obs_module_load(void)
si.get_height = [](void *data) {
return reinterpret_cast<TextSource *>(data)->cy;
};
si.get_defaults = [](obs_data_t *settings) {
obs_data_t *font_obj = obs_data_create();
obs_data_set_default_string(font_obj, "face", "Arial");
obs_data_set_default_int(font_obj, "size", 36);
obs_data_set_default_obj(settings, S_FONT, font_obj);
obs_data_set_default_string(settings, S_ALIGN, S_ALIGN_LEFT);
obs_data_set_default_string(settings, S_VALIGN, S_VALIGN_TOP);
obs_data_set_default_int(settings, S_COLOR, 0xFFFFFF);
obs_data_set_default_int(settings, S_OPACITY, 100);
obs_data_set_default_int(settings, S_GRADIENT_COLOR, 0xFFFFFF);
obs_data_set_default_int(settings, S_GRADIENT_OPACITY, 100);
obs_data_set_default_double(settings, S_GRADIENT_DIR, 90.0);
obs_data_set_default_int(settings, S_BKCOLOR, 0x000000);
obs_data_set_default_int(settings, S_BKOPACITY, 0);
obs_data_set_default_int(settings, S_OUTLINE_SIZE, 2);
obs_data_set_default_int(settings, S_OUTLINE_COLOR, 0xFFFFFF);
obs_data_set_default_int(settings, S_OUTLINE_OPACITY, 100);
obs_data_set_default_int(settings, S_CHATLOG_LINES, 6);
obs_data_set_default_bool(settings, S_EXTENTS_WRAP, true);
obs_data_set_default_int(settings, S_EXTENTS_CX, 100);
obs_data_set_default_int(settings, S_EXTENTS_CY, 100);
obs_data_set_default_int(settings, S_TRANSFORM,
S_TRANSFORM_NONE);
obs_data_release(font_obj);
};
si.get_defaults = [](obs_data_t *settings) { defaults(settings, 1); };
si.update = [](void *data, obs_data_t *settings) {
reinterpret_cast<TextSource *>(data)->Update(settings);
};
@ -1070,7 +1097,15 @@ bool obs_module_load(void)
reinterpret_cast<TextSource *>(data)->Render();
};
obs_source_info si_v2 = si;
si_v2.version = 2;
si_v2.output_flags &= ~OBS_SOURCE_CAP_OBSOLETE;
si_v2.get_defaults = [](obs_data_t *settings) {
defaults(settings, 2);
};
obs_register_source(&si);
obs_register_source(&si_v2);
const GdiplusStartupInput gdip_input;
GdiplusStartup(&gdip_token, &gdip_input, nullptr);