Oh, I was stupid, object must be pitch-> , not pitch_line-> !

Now it works, hopefully ....

diff --git a/cinelerra-5.1/plugins/titler/titler.C b/cinelerra-5.1/plugins/titler/titler.C
index fcab4401..95218e4c 100644
--- a/cinelerra-5.1/plugins/titler/titler.C
+++ b/cinelerra-5.1/plugins/titler/titler.C
@@ -76,7 +76,7 @@ REGISTER_PLUGIN(TitleMain)
 #else
 #define DEFAULT_ENCODING "ISO8859-1"
 #endif
-#define DEFAULT_TIMECODEFORMAT TIME_HMS
+#define DEFAULT_TIMECODEFORMAT TIME_HMSF
 
 static inline int kw_strcmp(const char *ap, const char *bp) {
 	return !strcmp(ap, bp) ? 0 : strcmp(ap,_(bp));
@@ -88,10 +88,10 @@ TitleConfig::TitleConfig()
 	strcpy(encoding, DEFAULT_ENCODING);
 	style = FONT_ALIAS;
 	size = 48;
-	color = BLACK;
+	color = WHITE;
 	alpha = 0xff;
 	outline_size = 0.;
-	outline_color = WHITE;
+	outline_color = RED;
 	outline_alpha = 0xff;
 	color_stroke = 0xff0000;
 	stroke_width = 0.0;
diff --git a/cinelerra-5.1/plugins/titler/titlerwindow.C b/cinelerra-5.1/plugins/titler/titlerwindow.C
index f8705dfd..13a084a6 100644
--- a/cinelerra-5.1/plugins/titler/titlerwindow.C
+++ b/cinelerra-5.1/plugins/titler/titlerwindow.C
@@ -44,6 +44,8 @@
 #include "titlerwindow.h"
 #include "bcfontentry.h"
 
+#define DEFAULT_TIMECODEFORMAT TIME_HMSF
+
 static const int timeunit_formats[] =
 {
 	TIME_HMS,
@@ -371,6 +373,12 @@ void TitleWindow::create_objects()
 	stroker->create_objects();
 	x += stroker->get_w() + margin;
 #endif
+	// my reset button
+	//
+	add_tool(reset_button = new TitleResetButton(client, this, x3, y1+yS(30)));
+	reset_button->create_objects();
+
+
 	add_tool(timecode = new TitleTimecode(client, this, x, y));
 	y += timecode->get_h() + margin;
 	int tw = 0;
@@ -446,6 +454,7 @@ int TitleWindow::resize_event(int w, int h)
 	pitch_title->reposition_window(pitch_title->get_x(), pitch_title->get_y());
 	pitch->reposition_window(pitch->get_x(), pitch->get_y());
 
+	reset_button->reposition_window(reset_button->get_x(), reset_button->get_y());
 	color_button_title->reposition_window(color_button_title->get_x(), color_button_title->get_y());
 	color_button->reposition_window(color_button->get_x(), color_button->get_y());
 	outline_button_title->reposition_window(outline_button_title->get_x(), outline_button_title->get_y());
@@ -582,6 +591,7 @@ void TitleWindow::update_gui()
 	bold->update(client->config.style & BC_FONT_BOLD);
 	alias->update(client->config.style & FONT_ALIAS);
 	size->update(client->config.size);
+	pitch->update((int64_t)client->config.line_pitch);
 	motion->update(TitleMain::motion_to_text(client->config.motion_strategy));
 	loop->update(client->config.loop);
 	dropshadow->update((int64_t)client->config.dropshadow);
@@ -781,6 +791,62 @@ int TitlePitch::handle_event()
 	return 1;
 }
 
+
+
+TitleResetButton::TitleResetButton(TitleMain *client, TitleWindow *window, int x, int y)
+ : BC_GenericButton (x, y, _("Reset All"))
+{
+	this->client = client;
+	this->window = window;
+	set_tooltip("Reset Titler params to their default values \n");
+}
+
+TitleResetButton::
+~TitleResetButton()
+{
+}
+
+int TitleResetButton::handle_event()
+{
+	strcpy(client->config.font, "fixed");
+	client->config.title_x = 0;
+	client->config.title_y = 0;
+	client->config.title_w = 0;
+	client->config.title_h = 0;
+	client->config.hjustification = JUSTIFY_CENTER;
+	client->config.vjustification = JUSTIFY_MID;
+	client->config.style = FONT_ALIAS;
+	client->config.motion_strategy = NO_MOTION;
+	client->config.timecode_format = DEFAULT_TIMECODEFORMAT;
+	client->config.loop = 0;
+	client->config.dropshadow = 0;
+	client->config.fade_in = 0;
+	client->config.fade_out = 0;
+	client->config.pixels_per_second = 100;
+	client->config.outline_size = 0;
+	client->config.outline_color =  RED;
+	client->config.outline_alpha = 0xff;
+	client->config.color_stroke = 0xff0000;
+	client->config.size = 48;
+	client->config.line_pitch = 0;
+	client->config.color = WHITE;
+	client->config.alpha = 0xff;
+	client->config.timecode = 0;
+	client->config.background = 0;
+	strcpy(client->config.background_path, "");
+#ifdef USE_STROKER
+	client->config.stroke_width = 0;
+#endif
+	client->config.loop_playback = 0;
+	client->config.wlen = 0;
+	wchr_t wz = { 0 };
+	client->config.wtext[0] = wz;
+	window->send_configure_change();
+	window->update_gui();
+	window->flush();
+	return 1;
+}
+
 TitleColorButton::TitleColorButton(TitleMain *client, TitleWindow *window, int x, int y)
  : ColorCircleButton(_("Text Color"), x, y, COLOR_W, COLOR_H,
 		client->config.color, client->config.alpha, 1)
@@ -1447,11 +1513,75 @@ TitleCurSubMenuItem::TitleCurSubMenuItem(TitleCurSubMenu *submenu, const char *t
 TitleCurSubMenuItem::~TitleCurSubMenuItem()
 {
 }
+
+// from https://stackoverflow.com/questions/779875/what-function-is-to-replace-a-substring-from-a-string-in-c
+void strreplace(char *src, char *str, char *rep)
+{
+	    char *p = strstr(src, str);
+	    if (p)
+	    {
+	        int len = strlen(src)+strlen(rep)-strlen(str);
+	        char r[len];
+	        memset(r, 0, len);
+	        if ( p >= src ){
+	            strncpy(r, src, p-src);
+	            r[p-src]='\0';
+	            strncat(r, rep, strlen(rep));
+	            strncat(r, p+strlen(str), p+strlen(str)-src+strlen(src));
+	            strcpy(src, r);
+	            strreplace(p+strlen(rep), str, rep);
+	        }
+	    }
+}
+
+
 int TitleCurSubMenuItem::handle_event()
 {
 	TitleCurPopup *popup = submenu->cur_item->popup;
 	TitleWindow *window = popup->window;
-	const char *item_text = get_text();
+	char *item_text = N_(get_text());
+
+	if (strstr(item_text, _(KW_NUDGE))) {
+		strreplace(item_text, _(KW_NUDGE), (char*)N_(KW_NUDGE));
+		}
+	else if (strstr(item_text, _(KW_COLOR))) {
+		strreplace(item_text, _(KW_COLOR), (char*)N_(KW_COLOR));
+		}
+	else if (strstr(item_text, _(KW_ALPHA))) {
+		strreplace(item_text, _(KW_ALPHA), (char*)N_(KW_ALPHA));
+		}
+	else if (strstr(item_text, _(KW_FONT))) {
+		strreplace(item_text, _(KW_FONT), (char*)N_(KW_FONT));
+		}
+	else if (strstr(item_text, _(KW_SIZE))) {
+		strreplace(item_text, _(KW_SIZE), (char*)N_(KW_SIZE));
+		}
+	else if (strstr(item_text, _(KW_BOLD))) {
+		strreplace(item_text, _(KW_BOLD), (char*)N_(KW_BOLD));
+		}
+	else if (strstr(item_text, _(KW_ITALIC))) {
+		strreplace(item_text, _(KW_ITALIC), (char*)N_(KW_ITALIC));
+		}
+	else if (strstr(item_text, _(KW_CAPS))) {
+		strreplace(item_text, _(KW_CAPS), (char*)N_(KW_CAPS));
+		}
+	else if (strstr(item_text, _(KW_UL))) {
+		strreplace(item_text, _(KW_UL), (char*)N_(KW_UL));
+		}
+	else if (strstr(item_text, _(KW_BLINK))) {
+		strreplace(item_text, _(KW_BLINK), (char*)N_(KW_BLINK));
+		}
+	else if (strstr(item_text, _(KW_FIXED))) {
+		strreplace(item_text, _(KW_FIXED), (char*)N_(KW_FIXED));
+		}
+	else if (strstr(item_text, _(KW_ALIAS))) {
+		strreplace(item_text, _(KW_ALIAS), (char*)N_(KW_ALIAS));
+		}
+	else if (strstr(item_text, _(KW_SUP))) {
+		strreplace(item_text, _(KW_SUP), (char*)N_(KW_SUP));
+		}
+
+
 	int ofs = *item_text == '/' ? 0 : -1;
 	switch( popup_type ) {
 	case POPUP_FONT: {
@@ -1470,8 +1600,51 @@ int TitleCurSubMenuItem::handle_event()
 		break;
 	}
 	char txt[BCSTRLEN];
-	sprintf(txt, "<%s>", item_text);
-	return window->insert_ibeam(txt, ofs);
+	sprintf(txt, "<%s>", N_(item_text));
+	//printf("Item text: %s \n", N_(item_text));
+
+	if (strstr(item_text, N_(KW_NUDGE))) {
+		strreplace(item_text, (char*)N_(KW_NUDGE), _(KW_NUDGE));
+		}
+	else if (strstr(item_text, N_(KW_COLOR))) {
+		strreplace(item_text, (char*)N_(KW_COLOR), _(KW_COLOR));
+		}
+	else if (strstr(item_text, N_(KW_ALPHA))) {
+		strreplace(item_text, (char*)N_(KW_ALPHA), _(KW_ALPHA));
+		}
+	else if (strstr(item_text, N_(KW_FONT))) {
+		strreplace(item_text, (char*)N_(KW_FONT), _(KW_FONT));
+		}
+	else if (strstr(item_text, N_(KW_SIZE))) {
+		strreplace(item_text, (char*)N_(KW_SIZE), _(KW_SIZE));
+		}
+	else if (strstr(item_text, N_(KW_BOLD))) {
+		strreplace(item_text, (char*)N_(KW_BOLD), _(KW_BOLD));
+		}
+	else if (strstr(item_text, N_(KW_ITALIC))) {
+		strreplace(item_text, (char*)N_(KW_ITALIC), _(KW_ITALIC));
+		}
+	else if (strstr(item_text, N_(KW_CAPS))) {
+		strreplace(item_text, (char*)N_(KW_CAPS), _(KW_CAPS));
+		}
+	else if (strstr(item_text, N_(KW_UL))) {
+		strreplace(item_text, (char*)N_(KW_UL), _(KW_UL));
+		}
+	else if (strstr(item_text, N_(KW_BLINK))) {
+		strreplace(item_text, (char*)N_(KW_BLINK), _(KW_BLINK));
+		}
+	else if (strstr(item_text, N_(KW_FIXED))) {
+		strreplace(item_text, (char*)N_(KW_FIXED), _(KW_FIXED));
+		}
+	else if (strstr(item_text, N_(KW_ALIAS))) {
+		strreplace(item_text, (char*)N_(KW_ALIAS), _(KW_ALIAS));
+		}
+	else if (strstr(item_text, N_(KW_SUP))) {
+		strreplace(item_text, (char*)N_(KW_SUP), _(KW_SUP));
+		}
+
+
+	return window->insert_ibeam(N_(txt), ofs);
 }
 
 TitleFontsPopup::TitleFontsPopup(TitleMain *client, TitleWindow *window)
@@ -1505,7 +1678,7 @@ int TitleFontsPopup::handle_event()
 	BC_ListBoxItem *item = get_selection(0, 0);
 	if( !item ) return 1;
 	const char *item_text = item->get_text();
-	char txt[BCTEXTLEN];  sprintf(txt, "<%s %s>", _(KW_FONT), item_text);
+	char txt[BCTEXTLEN];  sprintf(txt, "<%s %s>", N_(KW_FONT), item_text);
 	return window->insert_ibeam(txt);
 }
 
diff --git a/cinelerra-5.1/plugins/titler/titlerwindow.h b/cinelerra-5.1/plugins/titler/titlerwindow.h
index f290d7db..202b9d19 100644
--- a/cinelerra-5.1/plugins/titler/titlerwindow.h
+++ b/cinelerra-5.1/plugins/titler/titlerwindow.h
@@ -43,6 +43,7 @@ class TitleDrag;
 class TitleSize;
 class TitlePitch;
 class TitleEncoding;
+class TitleResetButton;
 class TitleColorButton;
 class TitleOutlineColorButton;
 class TitleDropShadow;
@@ -140,6 +141,7 @@ public:
 	TitlePitch *pitch;
 	BC_Title *encoding_title;
 	TitleEncoding *encoding;
+	TitleResetButton *reset_button;
 	BC_Title *color_button_title;
 	TitleColorButton *color_button;
 	BC_Title *outline_button_title;
@@ -179,6 +181,19 @@ public:
 };
 
 
+class TitleResetButton : public BC_GenericButton
+{
+public:
+	TitleResetButton(TitleMain *client, TitleWindow *window, int x, int y);
+	~TitleResetButton();
+
+	int handle_event();
+
+	TitleMain *client;
+	TitleWindow *window;
+};
+
+
 class TitleFontTumble : public BC_Tumbler
 {
 public:
-- 
Cin mailing list
Cin@lists.cinelerra-gg.org
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to