Theme "bright" color inconsistence?
Hi, all! User asked me how to make new themes for CinelerraGG. While I was unable to answer this question, I at least tried few themes more, and found theme "Bright" to have too-coloriful (IMO, for mostly-b/w theme) icon for 'locklablels'. I tried to GIMP them into something acceptable, but I literally can't make straight line (checkmark for activated icon) even with automatic line drawing! Attached are png files I de-colorized. I uncheked all of 'exif' stuff in GIMP"s png export dialog - this made files smaller, and I also run 'optipng' over them, and compile-tested them: root@slax:/dev/shm/tmp/cinelerra-goodguy-20200905/cinelerra-5.1/plugins/theme_bright# make clean && make cp ../../bin/plugins/themes/theme_bright.plugin /usr/lib/cin/plugins/themes/ cin launched without libpng's CRC errors (I had some if I left GIMP to write exif to png, as it did by default). And those icons kinda ..less-coloriful now. I think artistic user can start from copying existing theme and just modifying icons one by one, but what to do with hypothetical mytheme_theme.c and h files? They can remain the same if line colors not changed?
A Theme is a base class object that is created and customized as ThemeName. It is constructed during program initialization in a theme plugin PluginTClient, defined in a plugins/theme_name source directory. theme_name.C and theme_name.h are derived "Theme" class object constructors. A Theme is constructed during initialization in init_theme (mwindow.C). The theme plugin is accessed using the "name" from preferences, and that theme plugin is loaded, and it contains the code to construct that theme. A Theme object has functions and data that cinelerra uses to do a variety of customizations, such as default_window_positions, and it can modify gui defaults, like default_text_color, when it is initialized. The theme plugin contains a "new_theme" function, that allocates and constructs a ThemeName object, with a base classes of BC_Theme (gui setup), Theme (cin defaults), and ThemeName, with definitions and overrides that create the custom theme. To create a new theme, a new plugin is needed: ==== Code: #include "header files.h" PluginClient* new_plugin(PluginServer *server) { return new NameMain(server); } NameMain::NameMain(PluginServer *server) : PluginTClient(server) { } NameMain::~NameMain() { } const char* NameMain::plugin_title() { return N_("Name"); } Theme* NameMain::new_theme() { theme = new ThemeName; extern unsigned char _binary_theme_name_data_start[]; theme->set_data(_binary_theme_name_data_start); return theme; } Name::Name() : Theme() { } Name::~Name() { delete stuff; } When a theme is constructed by NameMain::new_theme(), it sets a pointer to a block of data created in the plugin build that contains all of the png data files in the plugins/theme_name/data directory. These images may define or override the appearance of gui images, such as "ok.png" (the ok button). There are usually a large number of images that need to be defined. The theme plugin adds them to the theme image data in the theme->initialize() function. The best list of theme image setup is probably in SUV (plugins/theme_suv/suv.[Ch]). The easy way to create a new theme is to copy an existing theme and change its name to ThemeName, and be sure to change plugin_title() to the new name, then tweak the definitions until you are happy with the results. The file names and Makefile also need to be updated to the new theme "name". The source can by manually re/built by invoking make in the plugins/theme_name directory. Once it is built into the plugin library, it will be discovered by the plugin probe, and it will become an available theme in the preferences. If you are ready to add it to the main build, then theme_name should be included in the DIRS targets of the plugins/Makefile, and the plugin_defs needs theme_name in the themes list. Themes usually require considerable time to create from scratch. For example, the SUV theme has over 800 lines in the initialize function, and has over 500 png images in the data directory. Most of these images and data values are required to be initialized by the custom theme constructor; very tedious and time consuming work. Creating a new theme is usually a lot of work. gg On Thu, Sep 10, 2020 at 11:06 AM Andrew Randrianasulu via Cin < [email protected]> wrote:
Hi, all!
User asked me how to make new themes for CinelerraGG. While I was unable to answer this question, I at least tried few themes more, and found theme "Bright" to have too-coloriful (IMO, for mostly-b/w theme) icon for 'locklablels'. I tried to GIMP them into something acceptable, but I literally can't make straight line (checkmark for activated icon) even with automatic line drawing!
Attached are png files I de-colorized. I uncheked all of 'exif' stuff in GIMP"s png export dialog - this made files smaller, and I also run 'optipng' over them, and compile-tested them:
root@slax:/dev/shm/tmp/cinelerra-goodguy-20200905/cinelerra-5.1/plugins/theme_bright# make clean && make
cp ../../bin/plugins/themes/theme_bright.plugin /usr/lib/cin/plugins/themes/
cin launched without libpng's CRC errors (I had some if I left GIMP to write exif to png, as it did by default). And those icons kinda ..less-coloriful now.
I think artistic user can start from copying existing theme and just modifying icons one by one, but what to do with hypothetical mytheme_theme.c and h files? They can remain the same if line colors not changed? -- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin
participants (2)
-
Andrew Randrianasulu -
Good Guy