plug leaks, leaker tweaks, lang for effect info, c41 spiffs, wm probe tweaks
[goodguy/history.git] / cinelerra-5.1 / guicast / bcresources.C
index ba67eeffd1da6d7d5ab37a6d34ed3f6038d9d453..e370cbe7f50832e3ce409a728e9f5e359f1cc6d5 100644 (file)
@@ -144,6 +144,34 @@ void BC_Resources::init_font_defs(double scale)
        set_font(large_font_xft2,  default_font_xft2);
        set_font(big_font_xft2,    default_font_xft2);
 }
+void BC_Resources::finit_font_defs()
+{
+       delete [] small_font;
+       delete [] small_font2;
+       delete [] medium_font;
+       delete [] medium_font2;
+       delete [] large_font;
+       delete [] large_font2;
+       delete [] big_font;
+       delete [] big_font2;
+       delete [] small_fontset;
+       delete [] medium_fontset;
+       delete [] large_fontset;
+       delete [] big_fontset;
+       delete [] small_font_xft;
+       delete [] small_b_font_xft;
+       delete [] medium_font_xft;
+       delete [] medium_b_font_xft;
+       delete [] large_font_xft;
+       delete [] large_b_font_xft;
+       delete [] big_font_xft;
+       delete [] big_b_font_xft;
+
+       delete [] small_font_xft2;
+       delete [] medium_font_xft2;
+       delete [] large_font_xft2;
+       delete [] big_font_xft2;
+}
 
 suffix_to_type_t BC_Resources::suffix_to_type[] =
 {
@@ -205,87 +233,50 @@ int BC_Resources::get_machine_cpus()
        return cpus;
 }
 
-BC_Resources::BC_Resources()
-{
-       synchronous = 0;
-       vframe_shm = 0;
-       double default_scale = 1.0; // display_size/1000.;
-       char *env = getenv("BC_FONT_SCALE");
-       font_scale = env ? atof(env) : default_scale;
-       if( font_scale <= 0 ) font_scale = 1;
-       init_font_defs(font_scale);
-       env = getenv("BC_ICON_SCALE");
-       icon_scale = env ? atof(env) : default_scale;
-       if( icon_scale <= 0 ) icon_scale = 1;
-
-       id_lock = new Mutex("BC_Resources::id_lock");
-       create_window_lock = new Mutex("BC_Resources::create_window_lock", 1);
-       id = 0;
-       machine_cpus = get_machine_cpus();
-
-       for(int i = 0; i < FILEBOX_HISTORY_SIZE; i++)
-               filebox_history[i].path[0] = 0;
-
-#ifdef HAVE_XFT
-       XftInitFtLibrary();
-#endif
-
-       little_endian = (*(const u_int32_t*)"\01\0\0\0") & 1;
-       wide_encoding = little_endian ?  "UTF32LE" : "UTF32BE";
-       use_xvideo = 1;
-
 #include "images/file_folder_png.h"
 #include "images/file_unknown_png.h"
 #include "images/file_film_png.h"
 #include "images/file_sound_png.h"
 #include "images/file_label_png.h"
 #include "images/file_column_png.h"
-       static VFrame* default_type_to_icon[] =
-       {
-               new VFramePng(file_folder_png),
-               new VFramePng(file_unknown_png),
-               new VFramePng(file_film_png),
-               new VFramePng(file_sound_png),
-               new VFramePng(file_label_png),
-               new VFramePng(file_column_png)
-       };
-       type_to_icon = default_type_to_icon;
-
+VFrame *BC_Resources::default_type_to_icon[] = {
+       new VFramePng(file_folder_png),
+       new VFramePng(file_unknown_png),
+       new VFramePng(file_film_png),
+       new VFramePng(file_sound_png),
+       new VFramePng(file_label_png),
+       new VFramePng(file_column_png)
+};
 
 #include "images/bar_png.h"
-       static VFrame* default_bar = new VFramePng(bar_png);
-       bar_data = default_bar;
-
+VFrame *BC_Resources::default_bar = new VFramePng(bar_png);
 
 #include "images/cancel_up_png.h"
 #include "images/cancel_hi_png.h"
 #include "images/cancel_dn_png.h"
-       static VFrame* default_cancel_images[] =
-       {
-               new VFramePng(cancel_up_png),
-               new VFramePng(cancel_hi_png),
-               new VFramePng(cancel_dn_png)
-       };
+VFrame *BC_Resources::default_cancel_images[] = {
+       new VFramePng(cancel_up_png),
+       new VFramePng(cancel_hi_png),
+       new VFramePng(cancel_dn_png)
+};
 
 #include "images/ok_up_png.h"
 #include "images/ok_hi_png.h"
 #include "images/ok_dn_png.h"
-       static VFrame* default_ok_images[] =
-       {
-               new VFramePng(ok_up_png),
-               new VFramePng(ok_hi_png),
-               new VFramePng(ok_dn_png)
-       };
+VFrame *BC_Resources::default_ok_images[] = {
+       new VFramePng(ok_up_png),
+       new VFramePng(ok_hi_png),
+       new VFramePng(ok_dn_png)
+};
 
 #include "images/usethis_up_png.h"
 #include "images/usethis_uphi_png.h"
 #include "images/usethis_dn_png.h"
-       static VFrame* default_usethis_images[] =
-       {
-               new VFramePng(usethis_up_png),
-               new VFramePng(usethis_uphi_png),
-               new VFramePng(usethis_dn_png)
-       };
+VFrame *BC_Resources::default_usethis_images[] = {
+       new VFramePng(usethis_up_png),
+       new VFramePng(usethis_uphi_png),
+       new VFramePng(usethis_dn_png)
+};
 
 #if 0
 #include "images/checkbox_checked_png.h"
@@ -293,42 +284,63 @@ BC_Resources::BC_Resources()
 #include "images/checkbox_checkedhi_png.h"
 #include "images/checkbox_up_png.h"
 #include "images/checkbox_hi_png.h"
-       static VFrame* default_checkbox_images[] =
-       {
-               new VFramePng(checkbox_up_png),
-               new VFramePng(checkbox_hi_png),
-               new VFramePng(checkbox_checked_png),
-               new VFramePng(checkbox_dn_png),
-               new VFramePng(checkbox_checkedhi_png)
-       };
+VFrame *BC_Resources::default_checkbox_images[] = {
+       new VFramePng(checkbox_up_png),
+       new VFramePng(checkbox_hi_png),
+       new VFramePng(checkbox_checked_png),
+       new VFramePng(checkbox_dn_png),
+       new VFramePng(checkbox_checkedhi_png)
+};
 
 #include "images/radial_checked_png.h"
 #include "images/radial_dn_png.h"
 #include "images/radial_checkedhi_png.h"
 #include "images/radial_up_png.h"
 #include "images/radial_hi_png.h"
-       static VFrame* default_radial_images[] =
-       {
-               new VFramePng(radial_up_png),
-               new VFramePng(radial_hi_png),
-               new VFramePng(radial_checked_png),
-               new VFramePng(radial_dn_png),
-               new VFramePng(radial_checkedhi_png)
-       };
-
-       static VFrame* default_label_images[] =
-       {
-               new VFramePng(radial_up_png),
-               new VFramePng(radial_hi_png),
-               new VFramePng(radial_checked_png),
-               new VFramePng(radial_dn_png),
-               new VFramePng(radial_checkedhi_png)
-       };
+VFrame *BC_Resources::default_radial_images[] = {
+       new VFramePng(radial_up_png),
+       new VFramePng(radial_hi_png),
+       new VFramePng(radial_checked_png),
+       new VFramePng(radial_dn_png),
+       new VFramePng(radial_checkedhi_png)
+};
+
+VFrame *BC_Resources::default_label_images[] = {
+       new VFramePng(radial_up_png),
+       new VFramePng(radial_hi_png),
+       new VFramePng(radial_checked_png),
+       new VFramePng(radial_dn_png),
+       new VFramePng(radial_checkedhi_png)
+};
 #endif
 
+#include "images/menuitem_up_png.h"
+#include "images/menuitem_hi_png.h"
+#include "images/menuitem_dn_png.h"
+
+VFrame *BC_Resources::default_menuitem_data[] = {
+       new VFramePng(menuitem_up_png),
+       new VFramePng(menuitem_hi_png),
+       new VFramePng(menuitem_dn_png),
+};
+
+#include "images/menubar_up_png.h"
+#include "images/menubar_hi_png.h"
+#include "images/menubar_dn_png.h"
+VFrame *BC_Resources::default_menubar_data[] = {
+       new VFramePng(menubar_up_png),
+       new VFramePng(menubar_hi_png),
+       new VFramePng(menubar_dn_png),
+};
+
+#include "images/menu_popup_bg_png.h"
+VFrame *BC_Resources::default_menu_popup_bg = new VFramePng(menu_popup_bg_png);
+
+#include "images/menubar_bg_png.h"
+VFrame *BC_Resources::default_menu_bar_bg = new VFramePng(menubar_bg_png);
+
 #include "images/check_png.h"
-       static VFrame* default_check_image = new VFramePng(check_png);
-       check = default_check_image;
+VFrame *BC_Resources::default_check_image = new VFramePng(check_png);
 
 #include "images/file_text_up_png.h"
 #include "images/file_text_hi_png.h"
@@ -351,140 +363,105 @@ BC_Resources::BC_Resources()
 #include "images/file_reload_up_png.h"
 #include "images/file_reload_hi_png.h"
 #include "images/file_reload_dn_png.h"
-       static VFrame* default_filebox_text_images[] =
-       {
-               new VFramePng(file_text_up_png),
-               new VFramePng(file_text_hi_png),
-               new VFramePng(file_text_dn_png)
-       };
-
-       static VFrame* default_filebox_icons_images[] =
-       {
-               new VFramePng(file_icons_up_png),
-               new VFramePng(file_icons_hi_png),
-               new VFramePng(file_icons_dn_png)
-       };
+VFrame *BC_Resources::default_filebox_text_images[] = {
+       new VFramePng(file_text_up_png),
+       new VFramePng(file_text_hi_png),
+       new VFramePng(file_text_dn_png)
+};
 
-       static VFrame* default_filebox_updir_images[] =
-       {
-               new VFramePng(file_updir_up_png),
-               new VFramePng(file_updir_hi_png),
-               new VFramePng(file_updir_dn_png)
-       };
+VFrame *BC_Resources::default_filebox_icons_images[] = {
+       new VFramePng(file_icons_up_png),
+       new VFramePng(file_icons_hi_png),
+       new VFramePng(file_icons_dn_png)
+};
 
-       static VFrame* default_filebox_newfolder_images[] =
-       {
-               new VFramePng(file_newfolder_up_png),
-               new VFramePng(file_newfolder_hi_png),
-               new VFramePng(file_newfolder_dn_png)
-       };
+VFrame *BC_Resources::default_filebox_updir_images[] = {
+       new VFramePng(file_updir_up_png),
+       new VFramePng(file_updir_hi_png),
+       new VFramePng(file_updir_dn_png)
+};
 
+VFrame *BC_Resources::default_filebox_newfolder_images[] = {
+       new VFramePng(file_newfolder_up_png),
+       new VFramePng(file_newfolder_hi_png),
+       new VFramePng(file_newfolder_dn_png)
+};
 
-       static VFrame* default_filebox_rename_images[] =
-       {
-               new VFramePng(file_rename_up_png),
-               new VFramePng(file_rename_hi_png),
-               new VFramePng(file_rename_dn_png)
-       };
+VFrame *BC_Resources::default_filebox_rename_images[] = {
+       new VFramePng(file_rename_up_png),
+       new VFramePng(file_rename_hi_png),
+       new VFramePng(file_rename_dn_png)
+};
 
-       static VFrame* default_filebox_delete_images[] =
-       {
-               new VFramePng(file_delete_up_png),
-               new VFramePng(file_delete_hi_png),
-               new VFramePng(file_delete_dn_png)
-       };
+VFrame *BC_Resources::default_filebox_delete_images[] = {
+       new VFramePng(file_delete_up_png),
+       new VFramePng(file_delete_hi_png),
+       new VFramePng(file_delete_dn_png)
+};
 
-       static VFrame* default_filebox_reload_images[] =
-       {
-               new VFramePng(file_reload_up_png),
-               new VFramePng(file_reload_hi_png),
-               new VFramePng(file_reload_dn_png)
-       };
+VFrame *BC_Resources::default_filebox_reload_images[] = {
+       new VFramePng(file_reload_up_png),
+       new VFramePng(file_reload_hi_png),
+       new VFramePng(file_reload_dn_png)
+};
 
 #include "images/listbox_button_dn_png.h"
 #include "images/listbox_button_hi_png.h"
 #include "images/listbox_button_up_png.h"
 #include "images/listbox_button_disabled_png.h"
-       static VFrame* default_listbox_button[] =
-       {
-               new VFramePng(listbox_button_up_png),
-               new VFramePng(listbox_button_hi_png),
-               new VFramePng(listbox_button_dn_png),
-               new VFramePng(listbox_button_disabled_png)
-       };
-       listbox_button = default_listbox_button;
+VFrame *BC_Resources::default_listbox_button[] = {
+       new VFramePng(listbox_button_up_png),
+       new VFramePng(listbox_button_hi_png),
+       new VFramePng(listbox_button_dn_png),
+       new VFramePng(listbox_button_disabled_png)
+};
 
 #include "images/menu_popup_bg_png.h"
-       static VFrame* default_listbox_bg = 0;
-       listbox_bg = default_listbox_bg;
+VFrame *BC_Resources::default_listbox_bg = 0;
 
 #include "images/listbox_expandchecked_png.h"
 #include "images/listbox_expandcheckedhi_png.h"
 #include "images/listbox_expanddn_png.h"
 #include "images/listbox_expandup_png.h"
 #include "images/listbox_expanduphi_png.h"
-       static VFrame* default_listbox_expand[] =
-       {
-               new VFramePng(listbox_expandup_png),
-               new VFramePng(listbox_expanduphi_png),
-               new VFramePng(listbox_expandchecked_png),
-               new VFramePng(listbox_expanddn_png),
-               new VFramePng(listbox_expandcheckedhi_png),
-       };
-       listbox_expand = default_listbox_expand;
+VFrame *BC_Resources::default_listbox_expand[] = {
+       new VFramePng(listbox_expandup_png),
+       new VFramePng(listbox_expanduphi_png),
+       new VFramePng(listbox_expandchecked_png),
+       new VFramePng(listbox_expanddn_png),
+       new VFramePng(listbox_expandcheckedhi_png),
+};
 
 #include "images/listbox_columnup_png.h"
 #include "images/listbox_columnhi_png.h"
 #include "images/listbox_columndn_png.h"
-       static VFrame* default_listbox_column[] =
-       {
-               new VFramePng(listbox_columnup_png),
-               new VFramePng(listbox_columnhi_png),
-               new VFramePng(listbox_columndn_png)
-       };
-       listbox_column = default_listbox_column;
-
+VFrame *BC_Resources::default_listbox_column[] = {
+       new VFramePng(listbox_columnup_png),
+       new VFramePng(listbox_columnhi_png),
+       new VFramePng(listbox_columndn_png)
+};
 
 #include "images/listbox_up_png.h"
-#include "images/listbox_dn_png.h"
-       listbox_up = new VFramePng(listbox_up_png);
-       listbox_dn = new VFramePng(listbox_dn_png);
-       listbox_title_overlap = 0;
-       listbox_title_margin = 0;
-       listbox_title_color = BLACK;
-       listbox_title_hotspot = 5;
+VFrame *BC_Resources::default_listbox_up = new VFramePng(listbox_up_png);
 
-       listbox_border1 = DKGREY;
-       listbox_border2_hi = RED;
-       listbox_border2 = BLACK;
-       listbox_border3_hi = RED;
-       listbox_border3 = MEGREY;
-       listbox_border4 = WHITE;
-       listbox_selected = BLUE;
-       listbox_highlighted = LTGREY;
-       listbox_inactive = WHITE;
-       listbox_text = BLACK;
+#include "images/listbox_dn_png.h"
+VFrame *BC_Resources::default_listbox_dn = new VFramePng(listbox_dn_png);
 
 #include "images/pot_hi_png.h"
 #include "images/pot_up_png.h"
 #include "images/pot_dn_png.h"
-       static VFrame *default_pot_images[] =
-       {
-               new VFramePng(pot_up_png),
-               new VFramePng(pot_hi_png),
-               new VFramePng(pot_dn_png)
-       };
+VFrame *BC_Resources::default_pot_images[] = {
+       new VFramePng(pot_up_png),
+       new VFramePng(pot_hi_png),
+       new VFramePng(pot_dn_png)
+};
 
 #include "images/progress_up_png.h"
 #include "images/progress_hi_png.h"
-       static VFrame* default_progress_images[] =
-       {
-               new VFramePng(progress_up_png),
-               new VFramePng(progress_hi_png)
-       };
-
-       pan_data = 0;
-       pan_text_color = YELLOW;
+VFrame *BC_Resources::default_progress_images[] = {
+       new VFramePng(progress_up_png),
+       new VFramePng(progress_hi_png)
+};
 
 #include "images/7seg_small/0_png.h"
 #include "images/7seg_small/1_png.h"
@@ -506,29 +483,86 @@ BC_Resources::BC_Resources()
 #include "images/7seg_small/f_png.h"
 #include "images/7seg_small/space_png.h"
 #include "images/7seg_small/dash_png.h"
-       static VFrame* default_medium_7segment[] =
-       {
-               new VFramePng(_0_png),
-               new VFramePng(_1_png),
-               new VFramePng(_2_png),
-               new VFramePng(_3_png),
-               new VFramePng(_4_png),
-               new VFramePng(_5_png),
-               new VFramePng(_6_png),
-               new VFramePng(_7_png),
-               new VFramePng(_8_png),
-               new VFramePng(_9_png),
-               new VFramePng(colon_png),
-               new VFramePng(period_png),
-               new VFramePng(a_png),
-               new VFramePng(b_png),
-               new VFramePng(c_png),
-               new VFramePng(d_png),
-               new VFramePng(e_png),
-               new VFramePng(f_png),
-               new VFramePng(space_png),
-               new VFramePng(dash_png)
-       };
+VFrame *BC_Resources::default_medium_7segment[] = {
+       new VFramePng(_0_png),
+       new VFramePng(_1_png),
+       new VFramePng(_2_png),
+       new VFramePng(_3_png),
+       new VFramePng(_4_png),
+       new VFramePng(_5_png),
+       new VFramePng(_6_png),
+       new VFramePng(_7_png),
+       new VFramePng(_8_png),
+       new VFramePng(_9_png),
+       new VFramePng(colon_png),
+       new VFramePng(period_png),
+       new VFramePng(a_png),
+       new VFramePng(b_png),
+       new VFramePng(c_png),
+       new VFramePng(d_png),
+       new VFramePng(e_png),
+       new VFramePng(f_png),
+       new VFramePng(space_png),
+       new VFramePng(dash_png)
+};
+
+
+BC_Resources::BC_Resources()
+{
+       synchronous = 0;
+       vframe_shm = 0;
+       double default_scale = 1.0; // display_size/1000.;
+       char *env = getenv("BC_FONT_SCALE");
+       font_scale = env ? atof(env) : default_scale;
+       if( font_scale <= 0 ) font_scale = 1;
+       init_font_defs(font_scale);
+       env = getenv("BC_ICON_SCALE");
+       icon_scale = env ? atof(env) : default_scale;
+       if( icon_scale <= 0 ) icon_scale = 1;
+
+       id_lock = new Mutex("BC_Resources::id_lock");
+       create_window_lock = new Mutex("BC_Resources::create_window_lock", 1);
+       id = 0;
+       machine_cpus = get_machine_cpus();
+
+       for(int i = 0; i < FILEBOX_HISTORY_SIZE; i++)
+               filebox_history[i].path[0] = 0;
+
+#ifdef HAVE_XFT
+       XftInitFtLibrary();
+#endif
+
+       little_endian = (*(const u_int32_t*)"\01\0\0\0") & 1;
+       wide_encoding = little_endian ?  "UTF32LE" : "UTF32BE";
+       use_xvideo = 1;
+
+       type_to_icon = default_type_to_icon;
+       bar_data = default_bar;
+       check = default_check_image;
+       listbox_button = default_listbox_button;
+       listbox_bg = default_listbox_bg;
+       listbox_expand = default_listbox_expand;
+       listbox_column = default_listbox_column;
+       listbox_up = default_listbox_up;
+       listbox_dn = default_listbox_dn;
+       listbox_title_overlap = 0;
+       listbox_title_margin = 0;
+       listbox_title_color = BLACK;
+       listbox_title_hotspot = 5;
+
+       listbox_border1 = DKGREY;
+       listbox_border2_hi = RED;
+       listbox_border2 = BLACK;
+       listbox_border3_hi = RED;
+       listbox_border3 = MEGREY;
+       listbox_border4 = WHITE;
+       listbox_selected = BLUE;
+       listbox_highlighted = LTGREY;
+       listbox_inactive = WHITE;
+       listbox_text = BLACK;
+
+       pan_data = 0;
+       pan_text_color = YELLOW;
 
        generic_button_margin = 15;
        draw_clock_background=1;
@@ -575,35 +609,9 @@ BC_Resources::BC_Resources()
        menu_up = MECYAN;
        menu_shadow = DKCYAN;
 
-
-#include "images/menuitem_up_png.h"
-#include "images/menuitem_hi_png.h"
-#include "images/menuitem_dn_png.h"
-#include "images/menubar_up_png.h"
-#include "images/menubar_hi_png.h"
-#include "images/menubar_dn_png.h"
-#include "images/menubar_bg_png.h"
-
-       static VFrame *default_menuitem_data[] =
-       {
-               new VFramePng(menuitem_up_png),
-               new VFramePng(menuitem_hi_png),
-               new VFramePng(menuitem_dn_png),
-       };
-       menu_item_bg = default_menuitem_data;
-
-
-       static VFrame *default_menubar_data[] =
-       {
-               new VFramePng(menubar_up_png),
-               new VFramePng(menubar_hi_png),
-               new VFramePng(menubar_dn_png),
-       };
        menu_title_bg = default_menubar_data;
-
-       menu_popup_bg = new VFramePng(menu_popup_bg_png);
-
-       menu_bar_bg = new VFramePng(menubar_bg_png);
+       menu_popup_bg = default_menu_popup_bg;
+       menu_bar_bg = default_menu_bar_bg;
 
        popupmenu_images = 0;
 
@@ -719,8 +727,51 @@ BC_Resources::BC_Resources()
 
 }
 
+static void del_vframes(VFrame **vframes, int n)
+{
+       while( --n >= 0 ) delete vframes[n];
+}
+
 BC_Resources::~BC_Resources()
 {
+       delete id_lock;
+       delete create_window_lock;
+       del_vframes(default_type_to_icon, 6);
+       delete default_bar;
+       del_vframes(default_cancel_images, 3);
+       del_vframes(default_ok_images, 3);
+       del_vframes(default_usethis_images, 3);
+#if 0
+       del_vframes(default_checkbox_images, 5);
+       del_vframes(default_radial_images, 5);
+       del_vframes(default_label_images, 5);
+#endif
+       del_vframes(default_menuitem_data, 3);
+       del_vframes(default_menubar_data, 3);
+       delete default_menu_popup_bg;
+       delete default_menu_bar_bg;
+       delete default_check_image;
+       del_vframes(default_filebox_text_images, 3);
+       del_vframes(default_filebox_icons_images, 3);
+       del_vframes(default_filebox_updir_images, 3);
+       del_vframes(default_filebox_newfolder_images, 3);
+       del_vframes(default_filebox_rename_images, 3);
+       del_vframes(default_filebox_delete_images, 3);
+       del_vframes(default_filebox_reload_images, 3);
+       del_vframes(default_listbox_button, 4);
+       delete default_listbox_bg;
+       del_vframes(default_listbox_expand, 5);
+       del_vframes(default_listbox_column, 3);
+       delete default_listbox_up;
+       delete default_listbox_dn;
+       del_vframes(default_pot_images, 3);
+       del_vframes(default_progress_images, 2);
+       del_vframes(default_medium_7segment, 20);
+       if( fontlist ) {
+               fontlist->remove_all_objects();
+               delete fontlist;
+       }
+       finit_font_defs();
 }
 
 int BC_Resources::initialize_display(BC_WindowBase *window)