From: Good Guy Date: Sat, 12 Dec 2015 17:10:56 +0000 (-0700) Subject: add adams 4.6->4.6.1 (mostly) X-Git-Url: https://cinelerra-gg.org/git/?a=commitdiff_plain;h=e919ce8a71cdc99bb7344cc192e13a2c2db9e1c0;p=goodguy%2Fhistory.git add adams 4.6->4.6.1 (mostly) --- diff --git a/cinelerra-5.0/cinelerra/Makefile b/cinelerra-5.0/cinelerra/Makefile index e976f4a6..2d26cedc 100644 --- a/cinelerra-5.0/cinelerra/Makefile +++ b/cinelerra-5.0/cinelerra/Makefile @@ -449,7 +449,7 @@ $(CUTADS): $(CUTOBJS) $(CUTLIBS) @echo g++ -o $@ $(CUTOBJS) @g++ $(CFLAGS) -pthread -o $@ $(CUTOBJS) $(CUTLIBS) -$(BDWRITE): $(BDWOBJS) +$(BDWRITE): $(BDWOBJS) $(LIBRARIES) @echo g++ -o $@ $(BDWOBJS) @g++ $(CFLAGS) -pthread -o $@ $(BDWOBJS) $(LIBS) diff --git a/cinelerra-5.0/cinelerra/affine.C b/cinelerra-5.0/cinelerra/affine.C index a0a6859c..697371c3 100644 --- a/cinelerra-5.0/cinelerra/affine.C +++ b/cinelerra-5.0/cinelerra/affine.C @@ -351,7 +351,8 @@ void AffineUnit::process_package(LoadPackage *package) float out_x1, out_y1, out_x2, out_y2, out_x3, out_y3, out_x4, out_y4; if(server->mode == AffineEngine::STRETCH || server->mode == AffineEngine::PERSPECTIVE || - server->mode == AffineEngine::ROTATE) + server->mode == AffineEngine::ROTATE || + server->mode == AffineEngine::TRANSFORM) { out_x1 = (float)server->in_x + (float)server->x1 * server->in_w / 100; out_y1 = (float)server->in_y + (float)server->y1 * server->in_h / 100; @@ -422,7 +423,8 @@ void AffineUnit::process_package(LoadPackage *package) else if(server->mode == AffineEngine::PERSPECTIVE || server->mode == AffineEngine::SHEER || - server->mode == AffineEngine::ROTATE) + server->mode == AffineEngine::ROTATE || + server->mode == AffineEngine::TRANSFORM) { AffineMatrix matrix; float temp; @@ -438,31 +440,39 @@ void AffineUnit::process_package(LoadPackage *package) + if(server->mode != AffineEngine::TRANSFORM) + { + calculate_matrix( + server->in_x, + server->in_y, + server->in_x + server->in_w, + server->in_y + server->in_h, + out_x1, + out_y1, + out_x2, + out_y2, + out_x3, + out_y3, + out_x4, + out_y4, + &matrix); + } + else + { + matrix.copy_from(&server->matrix); + } - calculate_matrix( - server->in_x, - server->in_y, - server->in_x + server->in_w, - server->in_y + server->in_h, - out_x1, - out_y1, - out_x2, - out_y2, - out_x3, - out_y3, - out_x4, - out_y4, - &matrix); - -// printf("AffineUnit::process_package 10 %f %f %f %f %f %f %f %f\n", -// out_x1, -// out_y1, -// out_x2, -// out_y2, -// out_x3, -// out_y3, -// out_x4, -// out_y4); +// printf("AffineUnit::process_package %d\n%f %f %f\n%f %f %f\n%f %f %f\n", +// __LINE__, +// matrix.values[0][0], +// matrix.values[0][1], +// matrix.values[0][2], +// matrix.values[1][0], +// matrix.values[1][1], +// matrix.values[1][2], +// matrix.values[2][0], +// matrix.values[2][1], +// matrix.values[2][2]); int interpolate = 1; int reverse = !server->forward; float tx, ty, tw; @@ -1454,6 +1464,17 @@ void AffineEngine::rotate(VFrame *output, } } +void AffineEngine::set_matrix(AffineMatrix *matrix) +{ + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 3; j++) + { + this->matrix.values[i][j] = matrix->values[i][j]; + } + } +} + void AffineEngine::set_in_viewport(int x, int y, int w, int h) { this->in_x = x; diff --git a/cinelerra-5.0/cinelerra/affine.h b/cinelerra-5.0/cinelerra/affine.h index 2eaf4856..ee312063 100644 --- a/cinelerra-5.0/cinelerra/affine.h +++ b/cinelerra-5.0/cinelerra/affine.h @@ -1,7 +1,7 @@ /* * CINELERRA - * Copyright (C) 2008 Adam Williams + * Copyright (C) 2008-2014 Adam Williams * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -108,6 +108,7 @@ public: void rotate(VFrame *output, VFrame *input, float angle); + void set_matrix(AffineMatrix *matrix); // Set the viewport to transform. The transform is based on the input viewport. // The output viewport clips the transformed output. void set_in_viewport(int x, int y, int w, int h); @@ -126,6 +127,8 @@ public: void init_packages(); LoadClient* new_client(); LoadPackage* new_package(); + + VFrame *input, *output, *temp; int mode; enum @@ -133,9 +136,13 @@ public: PERSPECTIVE, SHEER, STRETCH, - ROTATE + ROTATE, +// multiply directly by a matrix. + TRANSFORM }; +// arbitrary matrix + AffineMatrix matrix; // Transformation coordinates float x1, y1, x2, y2, x3, y3, x4, y4; // Viewport coordinates diff --git a/cinelerra-5.0/cinelerra/apluginarray.C b/cinelerra-5.0/cinelerra/apluginarray.C index 45898d96..b265d12c 100644 --- a/cinelerra-5.0/cinelerra/apluginarray.C +++ b/cinelerra-5.0/cinelerra/apluginarray.C @@ -85,7 +85,7 @@ void APluginArray::process_realtime(int module, int64_t input_position, int64_t input_position, len, edl->session->sample_rate, - 0, + end - start, PLAY_FORWARD); } diff --git a/cinelerra-5.0/cinelerra/asset.C b/cinelerra-5.0/cinelerra/asset.C index 7a33a7ce..f5951cf2 100644 --- a/cinelerra-5.0/cinelerra/asset.C +++ b/cinelerra-5.0/cinelerra/asset.C @@ -1,21 +1,21 @@ /* * CINELERRA * Copyright (C) 2010 Adam Williams - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * */ @@ -88,7 +88,7 @@ int Asset::init_values() ff_video_bitrate = 0; ff_video_quality = 0; - jpeg_quality = 100; + jpeg_quality = 80; aspect_ratio = -1; ampeg_bitrate = 256; @@ -106,14 +106,6 @@ int Asset::init_values() theora_keyframe_frequency = 64; theora_keyframe_force_frequency = 64; - mp3_bitrate = 256000; - - - mp4a_bitrate = 256000; - mp4a_quantqual = 100; - - - // mpeg parameters vmpeg_iframe_distance = 45; vmpeg_pframe_distance = 0; @@ -128,30 +120,6 @@ int Asset::init_values() vmpeg_preset = 0; vmpeg_field_order = 0; -// Divx parameters. BC_Hash from encore2 - divx_bitrate = 2000000; - divx_rc_period = 50; - divx_rc_reaction_ratio = 45; - divx_rc_reaction_period = 10; - divx_max_key_interval = 250; - divx_max_quantizer = 31; - divx_min_quantizer = 1; - divx_quantizer = 5; - divx_quality = 5; - divx_fix_bitrate = 1; - divx_use_deblocking = 1; - - h264_bitrate = 2000000; - h264_quantizer = 5; - h264_fix_bitrate = 0; - - ms_bitrate = 1000000; - ms_bitrate_tolerance = 500000; - ms_quantization = 10; - ms_interlaced = 0; - ms_gop_size = 45; - ms_fix_bitrate = 1; - ac3_bitrate = 128; png_use_alpha = 0; @@ -228,8 +196,6 @@ void Asset::copy_format(Asset *asset, int do_index) header = asset->header; dither = asset->dither; mp3_bitrate = asset->mp3_bitrate; - mp4a_bitrate = asset->mp4a_bitrate; - mp4a_quantqual = asset->mp4a_quantqual; use_header = asset->use_header; aspect_ratio = asset->aspect_ratio; @@ -263,7 +229,7 @@ void Asset::copy_format(Asset *asset, int do_index) vorbis_bitrate = asset->vorbis_bitrate; vorbis_max_bitrate = asset->vorbis_max_bitrate; - + theora_fix_bitrate = asset->theora_fix_bitrate; theora_bitrate = asset->theora_bitrate; theora_quality = asset->theora_quality; @@ -288,34 +254,8 @@ void Asset::copy_format(Asset *asset, int do_index) vmpeg_preset = asset->vmpeg_preset; vmpeg_field_order = asset->vmpeg_field_order; - - divx_bitrate = asset->divx_bitrate; - divx_rc_period = asset->divx_rc_period; - divx_rc_reaction_ratio = asset->divx_rc_reaction_ratio; - divx_rc_reaction_period = asset->divx_rc_reaction_period; - divx_max_key_interval = asset->divx_max_key_interval; - divx_max_quantizer = asset->divx_max_quantizer; - divx_min_quantizer = asset->divx_min_quantizer; - divx_quantizer = asset->divx_quantizer; - divx_quality = asset->divx_quality; - divx_fix_bitrate = asset->divx_fix_bitrate; - divx_use_deblocking = asset->divx_use_deblocking; - - h264_bitrate = asset->h264_bitrate; - h264_quantizer = asset->h264_quantizer; - h264_fix_bitrate = asset->h264_fix_bitrate; - - - ms_bitrate = asset->ms_bitrate; - ms_bitrate_tolerance = asset->ms_bitrate_tolerance; - ms_interlaced = asset->ms_interlaced; - ms_quantization = asset->ms_quantization; - ms_gop_size = asset->ms_gop_size; - ms_fix_bitrate = asset->ms_fix_bitrate; - - ac3_bitrate = asset->ac3_bitrate; - + png_use_alpha = asset->png_use_alpha; exr_use_alpha = asset->exr_use_alpha; exr_compression = asset->exr_compression; @@ -363,8 +303,8 @@ printf("Asset::operator=\n"); } -int Asset::equivalent(Asset &asset, - int test_audio, +int Asset::equivalent(Asset &asset, + int test_audio, int test_video) { int result = (!strcmp(asset.path, path) && @@ -375,25 +315,25 @@ int Asset::equivalent(Asset &asset, if(test_audio && result) { - result = (channels == asset.channels && - sample_rate == asset.sample_rate && - bits == asset.bits && - byte_order == asset.byte_order && - signed_ == asset.signed_ && - header == asset.header && + result = (channels == asset.channels && + sample_rate == asset.sample_rate && + bits == asset.bits && + byte_order == asset.byte_order && + signed_ == asset.signed_ && + header == asset.header && dither == asset.dither && !strcmp(acodec, asset.acodec)); if(result && format == FILE_FFMPEG) result = !strcmp(ff_audio_options, asset.ff_audio_options) && ff_audio_bitrate == asset.ff_audio_bitrate; - + } if(test_video && result) { - result = (layers == asset.layers && - program == asset.program && + result = (layers == asset.layers && + program == asset.program && frame_rate == asset.frame_rate && width == asset.width && height == asset.height && @@ -410,8 +350,8 @@ int Asset::equivalent(Asset &asset, int Asset::operator==(Asset &asset) { - return equivalent(asset, - 1, + return equivalent(asset, + 1, 1); } @@ -422,9 +362,9 @@ int Asset::operator!=(Asset &asset) int Asset::test_path(const char *path) { - if(!strcasecmp(this->path, path)) - return 1; - else + if(!strcasecmp(this->path, path)) + return 1; + else return 0; } @@ -433,7 +373,7 @@ int Asset::test_plugin_title(const char *path) return 0; } -int Asset::read(FileXML *file, +int Asset::read(FileXML *file, int expand_relative) { int result = 0; @@ -490,7 +430,7 @@ int Asset::read(FileXML *file, { const char *string = file->tag.get_property("TYPE"); format = File::strtoformat(string); - use_header = + use_header = file->tag.get_property("USE_HEADER", use_header); file->tag.get_property("FFORMAT", fformat); } @@ -526,9 +466,9 @@ int Asset::read_audio(FileXML *file) { if(file->tag.title_is("AUDIO")) audio_data = 1; channels = file->tag.get_property("CHANNELS", 2); -// This is loaded from the index file after the EDL but this +// This is loaded from the index file after the EDL but this // should be overridable in the EDL. - if(!sample_rate) sample_rate = file->tag.get_property("RATE", 44100); + if(!sample_rate) sample_rate = file->tag.get_property("RATE", 48000); bits = file->tag.get_property("BITS", 16); byte_order = file->tag.get_property("BYTE_ORDER", 1); signed_ = file->tag.get_property("SIGNED", 1); @@ -551,7 +491,7 @@ int Asset::read_video(FileXML *file) width = file->tag.get_property("WIDTH", width); layers = file->tag.get_property("LAYERS", layers); program = file->tag.get_property("PROGRAM", program); -// This is loaded from the index file after the EDL but this +// This is loaded from the index file after the EDL but this // should be overridable in the EDL. if(EQUIV(frame_rate, 0)) frame_rate = file->tag.get_property("FRAMERATE", frame_rate); vcodec[0] = 0; @@ -571,8 +511,8 @@ int Asset::read_index(FileXML *file) // Output path is the path of the output file if name truncation is desired. // It is a "" if complete names should be used. -int Asset::write(FileXML *file, - int include_index, +int Asset::write(FileXML *file, + int include_index, const char *output_path) { char new_path[BCTEXTLEN]; @@ -582,7 +522,7 @@ int Asset::write(FileXML *file, // Make path relative fs.extract_dir(asset_directory, path); - if(output_path && output_path[0]) + if(output_path && output_path[0]) fs.extract_dir(output_directory, output_path); else output_directory[0] = 0; @@ -612,7 +552,7 @@ int Asset::write(FileXML *file, // Write the format information file->tag.set_title("FORMAT"); - file->tag.set_property("TYPE", + file->tag.set_property("TYPE", File::formattostr(format)); file->tag.set_property("USE_HEADER", use_header); file->tag.set_property("FFORMAT", fformat); @@ -621,14 +561,14 @@ int Asset::write(FileXML *file, file->append_newline(); // Requiring data to exist caused batch render to lose settings. -// But the only way to know if an asset doesn't have audio or video data +// But the only way to know if an asset doesn't have audio or video data // is to not write the block. // So change the block name if the asset doesn't have the data. write_audio(file); write_video(file); // index goes after source - if(index_state->index_status == INDEX_READY && include_index) - write_index(file); + if(index_state->index_status == INDEX_READY && include_index) + write_index(file); file->tag.set_title("/ASSET"); file->append_tag(); @@ -653,7 +593,7 @@ int Asset::write_audio(FileXML *file) file->tag.set_property("DITHER", dither); if(acodec[0]) file->tag.set_property("ACODEC", acodec); - + file->tag.set_property("AUDIO_LENGTH", audio_length); @@ -662,14 +602,14 @@ int Asset::write_audio(FileXML *file) // file->tag.set_property("AMPEG_BITRATE", ampeg_bitrate); // file->tag.set_property("AMPEG_DERIVATIVE", ampeg_derivative); -// +// // file->tag.set_property("VORBIS_VBR", vorbis_vbr); // file->tag.set_property("VORBIS_MIN_BITRATE", vorbis_min_bitrate); // file->tag.set_property("VORBIS_BITRATE", vorbis_bitrate); // file->tag.set_property("VORBIS_MAX_BITRATE", vorbis_max_bitrate); -// +// // file->tag.set_property("MP3_BITRATE", mp3_bitrate); -// +// @@ -712,8 +652,8 @@ int Asset::write_index(FileXML *file) -const char* Asset::construct_param(const char *param, - const char *prefix, +const char* Asset::construct_param(const char *param, + const char *prefix, char *return_value) { if(prefix) @@ -726,8 +666,8 @@ const char* Asset::construct_param(const char *param, #define UPDATE_DEFAULT(x, y) defaults->update(construct_param(x, prefix, string), y); #define GET_DEFAULT(x, y) defaults->get(construct_param(x, prefix, string), y); -void Asset::load_defaults(BC_Hash *defaults, - const char *prefix, +void Asset::load_defaults(BC_Hash *defaults, + const char *prefix, int do_format, int do_compression, int do_path, @@ -773,7 +713,7 @@ void Asset::load_defaults(BC_Hash *defaults, channels = GET_DEFAULT("CHANNELS", 2); - if(!sample_rate) sample_rate = GET_DEFAULT("RATE", 44100); + if(!sample_rate) sample_rate = GET_DEFAULT("RATE", 48000); header = GET_DEFAULT("HEADER", 0); audio_length = GET_DEFAULT("AUDIO_LENGTH", (int64_t)0); @@ -811,8 +751,6 @@ void Asset::load_defaults(BC_Hash *defaults, ff_video_quality = GET_DEFAULT("FF_VIDEO_QUALITY", ff_video_quality); mp3_bitrate = GET_DEFAULT("MP3_BITRATE", mp3_bitrate); - mp4a_bitrate = GET_DEFAULT("MP4A_BITRATE", mp4a_bitrate); - mp4a_quantqual = GET_DEFAULT("MP4A_QUANTQUAL", mp4a_quantqual); jpeg_quality = GET_DEFAULT("JPEG_QUALITY", jpeg_quality); aspect_ratio = GET_DEFAULT("ASPECT_RATIO", aspect_ratio); @@ -831,30 +769,6 @@ void Asset::load_defaults(BC_Hash *defaults, vmpeg_preset = GET_DEFAULT("VMPEG_PRESET", vmpeg_preset); vmpeg_field_order = GET_DEFAULT("VMPEG_FIELD_ORDER", vmpeg_field_order); - h264_bitrate = GET_DEFAULT("H264_BITRATE", h264_bitrate); - h264_quantizer = GET_DEFAULT("H264_QUANTIZER", h264_quantizer); - h264_fix_bitrate = GET_DEFAULT("H264_FIX_BITRATE", h264_fix_bitrate); - - - divx_bitrate = GET_DEFAULT("DIVX_BITRATE", divx_bitrate); - divx_rc_period = GET_DEFAULT("DIVX_RC_PERIOD", divx_rc_period); - divx_rc_reaction_ratio = GET_DEFAULT("DIVX_RC_REACTION_RATIO", divx_rc_reaction_ratio); - divx_rc_reaction_period = GET_DEFAULT("DIVX_RC_REACTION_PERIOD", divx_rc_reaction_period); - divx_max_key_interval = GET_DEFAULT("DIVX_MAX_KEY_INTERVAL", divx_max_key_interval); - divx_max_quantizer = GET_DEFAULT("DIVX_MAX_QUANTIZER", divx_max_quantizer); - divx_min_quantizer = GET_DEFAULT("DIVX_MIN_QUANTIZER", divx_min_quantizer); - divx_quantizer = GET_DEFAULT("DIVX_QUANTIZER", divx_quantizer); - divx_quality = GET_DEFAULT("DIVX_QUALITY", divx_quality); - divx_fix_bitrate = GET_DEFAULT("DIVX_FIX_BITRATE", divx_fix_bitrate); - divx_use_deblocking = GET_DEFAULT("DIVX_USE_DEBLOCKING", divx_use_deblocking); - - ms_bitrate = GET_DEFAULT("MS_BITRATE", ms_bitrate); - ms_bitrate_tolerance = GET_DEFAULT("MS_BITRATE_TOLERANCE", ms_bitrate_tolerance); - ms_interlaced = GET_DEFAULT("MS_INTERLACED", ms_interlaced); - ms_quantization = GET_DEFAULT("MS_QUANTIZATION", ms_quantization); - ms_gop_size = GET_DEFAULT("MS_GOP_SIZE", ms_gop_size); - ms_fix_bitrate = GET_DEFAULT("MS_FIX_BITRATE", ms_fix_bitrate); - ac3_bitrate = GET_DEFAULT("AC3_BITRATE", ac3_bitrate); png_use_alpha = GET_DEFAULT("PNG_USE_ALPHA", png_use_alpha); @@ -866,7 +780,7 @@ void Asset::load_defaults(BC_Hash *defaults, boundaries(); } -void Asset::save_defaults(BC_Hash *defaults, +void Asset::save_defaults(BC_Hash *defaults, const char *prefix, int do_format, int do_compression, @@ -923,12 +837,6 @@ void Asset::save_defaults(BC_Hash *defaults, UPDATE_DEFAULT("MP3_BITRATE", mp3_bitrate); - UPDATE_DEFAULT("MP4A_BITRATE", mp4a_bitrate); - UPDATE_DEFAULT("MP4A_QUANTQUAL", mp4a_quantqual); - - - - UPDATE_DEFAULT("JPEG_QUALITY", jpeg_quality); UPDATE_DEFAULT("ASPECT_RATIO", aspect_ratio); @@ -947,29 +855,6 @@ void Asset::save_defaults(BC_Hash *defaults, UPDATE_DEFAULT("VMPEG_PRESET", vmpeg_preset); UPDATE_DEFAULT("VMPEG_FIELD_ORDER", vmpeg_field_order); - UPDATE_DEFAULT("H264_BITRATE", h264_bitrate); - UPDATE_DEFAULT("H264_QUANTIZER", h264_quantizer); - UPDATE_DEFAULT("H264_FIX_BITRATE", h264_fix_bitrate); - - UPDATE_DEFAULT("DIVX_BITRATE", divx_bitrate); - UPDATE_DEFAULT("DIVX_RC_PERIOD", divx_rc_period); - UPDATE_DEFAULT("DIVX_RC_REACTION_RATIO", divx_rc_reaction_ratio); - UPDATE_DEFAULT("DIVX_RC_REACTION_PERIOD", divx_rc_reaction_period); - UPDATE_DEFAULT("DIVX_MAX_KEY_INTERVAL", divx_max_key_interval); - UPDATE_DEFAULT("DIVX_MAX_QUANTIZER", divx_max_quantizer); - UPDATE_DEFAULT("DIVX_MIN_QUANTIZER", divx_min_quantizer); - UPDATE_DEFAULT("DIVX_QUANTIZER", divx_quantizer); - UPDATE_DEFAULT("DIVX_QUALITY", divx_quality); - UPDATE_DEFAULT("DIVX_FIX_BITRATE", divx_fix_bitrate); - UPDATE_DEFAULT("DIVX_USE_DEBLOCKING", divx_use_deblocking); - - - UPDATE_DEFAULT("MS_BITRATE", ms_bitrate); - UPDATE_DEFAULT("MS_BITRATE_TOLERANCE", ms_bitrate_tolerance); - UPDATE_DEFAULT("MS_INTERLACED", ms_interlaced); - UPDATE_DEFAULT("MS_QUANTIZATION", ms_quantization); - UPDATE_DEFAULT("MS_GOP_SIZE", ms_gop_size); - UPDATE_DEFAULT("MS_FIX_BITRATE", ms_fix_bitrate); UPDATE_DEFAULT("AC3_BITRATE", ac3_bitrate); @@ -1042,13 +927,6 @@ int Asset::dump(FILE *fp) video_data, layers, program, frame_rate, width, height, vcodec[0], vcodec[1], vcodec[2], vcodec[3], aspect_ratio); fprintf(fp," video_length " _LD " \n", video_length); - fprintf(fp," ms_bitrate_tolerance=%d\n", ms_bitrate_tolerance); - fprintf(fp," ms_quantization=%d\n", ms_quantization); - fprintf(fp," ms_fix_bitrate=%d\n", ms_fix_bitrate); - fprintf(fp," ms_interlaced=%d\n", ms_interlaced); - fprintf(fp," h264_bitrate=%d\n", h264_bitrate); - fprintf(fp," h264_quantizer=%d\n", h264_quantizer); - fprintf(fp," h264_fix_bitrate=%d\n", h264_fix_bitrate); return 0; } diff --git a/cinelerra-5.0/cinelerra/asset.h b/cinelerra-5.0/cinelerra/asset.h index 30523acd..a449896f 100644 --- a/cinelerra-5.0/cinelerra/asset.h +++ b/cinelerra-5.0/cinelerra/asset.h @@ -122,7 +122,6 @@ public: int write_index(FileXML *xml); - // Format of file. An enumeration from file.inc. int format; @@ -154,6 +153,9 @@ public: +// mp3 compression + int mp3_bitrate; + // mpeg audio information int ampeg_bitrate; // 2 - 3 @@ -174,14 +176,6 @@ public: int theora_keyframe_force_frequency; -// mp3 compression - int mp3_bitrate; - -// mp4a compression - int mp4a_bitrate; - int mp4a_quantqual; - - // Set by package render during file creation. -1 means square pixels. double aspect_ratio; @@ -214,26 +208,6 @@ public: int ff_video_bitrate; int ff_video_quality; -// Divx video compression - int divx_bitrate; - int divx_rc_period; - int divx_rc_reaction_ratio; - int divx_rc_reaction_period; - int divx_max_key_interval; - int divx_max_quantizer; - int divx_min_quantizer; - int divx_quantizer; - int divx_quality; - int divx_fix_bitrate; - -// h264 video compression - int h264_bitrate; - int h264_quantizer; - int h264_fix_bitrate; - -// Divx video decompression - int divx_use_deblocking; - // PNG video compression int png_use_alpha; @@ -245,15 +219,6 @@ public: int tiff_cmodel; int tiff_compression; -// Microsoft MPEG-4 - int ms_bitrate; - int ms_bitrate_tolerance; - int ms_interlaced; - int ms_quantization; - int ms_gop_size; - int ms_fix_bitrate; - - int ac3_bitrate; // Image file sequences. Background rendering doesn't want to write a @@ -262,8 +227,6 @@ public: // We still want sequence headers sometimes because loading a directory full of images // for editing would create new assets for every image. int use_header; - - }; diff --git a/cinelerra-5.0/cinelerra/assetpopup.C b/cinelerra-5.0/cinelerra/assetpopup.C index e03cdd76..e12c5623 100644 --- a/cinelerra-5.0/cinelerra/assetpopup.C +++ b/cinelerra-5.0/cinelerra/assetpopup.C @@ -25,6 +25,7 @@ #include "awindow.h" #include "awindowgui.h" #include "awindowmenu.h" +#include "bcsignals.h" #include "clipedit.h" #include "cwindow.h" #include "cwindowgui.h" @@ -394,7 +395,10 @@ AssetPopupProjectRemove::~AssetPopupProjectRemove() int AssetPopupProjectRemove::handle_event() { - mwindow->remove_assets_from_project(1); + mwindow->remove_assets_from_project(1, + 1, + mwindow->session->drag_assets, + mwindow->session->drag_clips); return 1; } diff --git a/cinelerra-5.0/cinelerra/audioalsa.C b/cinelerra-5.0/cinelerra/audioalsa.C index 60604d43..962755e8 100644 --- a/cinelerra-5.0/cinelerra/audioalsa.C +++ b/cinelerra-5.0/cinelerra/audioalsa.C @@ -512,6 +512,15 @@ int AudioALSA::write_buffer(char *buffer, int size) int count = samples; snd_pcm_sframes_t delay = 0; +// static FILE *debug_fd = 0; +// if(!debug_fd) +// { +// debug_fd = fopen("/tmp/debug.pcm", "w"); +// } +// fwrite(buffer, size, 1, debug_fd); +// fflush(debug_fd); + + if(!get_output()) return 0; if( buffer_position == 0 ) timer->update(); diff --git a/cinelerra-5.0/cinelerra/autoconf.C b/cinelerra-5.0/cinelerra/autoconf.C index 22fed1e5..68a9b2aa 100644 --- a/cinelerra-5.0/cinelerra/autoconf.C +++ b/cinelerra-5.0/cinelerra/autoconf.C @@ -43,11 +43,11 @@ static const char *xml_titles[AUTOMATION_TOTAL] = static int auto_defaults[AUTOMATION_TOTAL] = { 0, // MUTE, - 1, // CAMERA_X - 1, // CAMERA_Y + 0, // CAMERA_X + 0, // CAMERA_Y 0, // CAMERA_Z - 1, // PROJECTOR_X - 1, // PROJECTOR_Y + 0, // PROJECTOR_X + 0, // PROJECTOR_Y 0, // PROJECTOR_Z 0, // FADE 0, // PAN @@ -56,7 +56,6 @@ static int auto_defaults[AUTOMATION_TOTAL] = 0, // SPEED }; - int AutoConf::load_defaults(BC_Hash* defaults) { for(int i = 0; i < AUTOMATION_TOTAL; i++) diff --git a/cinelerra-5.0/cinelerra/cache.C b/cinelerra-5.0/cinelerra/cache.C index 646eb68a..439a8cf1 100644 --- a/cinelerra-5.0/cinelerra/cache.C +++ b/cinelerra-5.0/cinelerra/cache.C @@ -321,9 +321,6 @@ CICacheItem::CICacheItem(CICache *cache, EDL *edl, Asset *asset) file->set_interpolate_raw(edl->session->interpolate_raw); file->set_white_balance_raw(edl->session->white_balance_raw); - -// Copy decoding parameters from session to asset so file can see them. - this->asset->divx_use_deblocking = edl->session->mpeg4_deblock; SET_TRACE } diff --git a/cinelerra-5.0/cinelerra/confirmsave.C b/cinelerra-5.0/cinelerra/confirmsave.C index d5177469..5fe6ab90 100644 --- a/cinelerra-5.0/cinelerra/confirmsave.C +++ b/cinelerra-5.0/cinelerra/confirmsave.C @@ -2,21 +2,21 @@ /* * CINELERRA * Copyright (C) 2008 Adam Williams - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * */ #include "asset.h" @@ -45,37 +45,30 @@ int ConfirmSave::test_file(MWindow *mwindow, char *path) return result; } -int ConfirmSave::test_files(MWindow *mwindow, - ArrayList *paths) +int ConfirmSave::test_files(MWindow *mwindow, ArrayList *paths) { FILE *file; ArrayList list; int result = 0; - for(int i = 0; i < paths->total; i++) - { + for(int i = 0; i < paths->size(); i++) { char *path = paths->values[i]; - if( (file=fopen(path, "r")) != 0 ) - { + if( (file=fopen(path, "r")) != 0 ) { fclose(file); list.append(new BC_ListBoxItem(path)); } } - if(list.total) - { - if(mwindow) - { + if(list.total) { + if(mwindow) { ConfirmSaveWindow window(mwindow, &list); window.create_objects(); window.raise_window(); result = window.run_window(); } - else - { + else { printf(_("The following files exist:\n")); - for(int i = 0; i < list.total; i++) - { + for(int i = 0; i < list.total; i++) { printf(" %s\n", list.values[i]->get_text()); } printf(_("Won't overwrite existing files.\n")); @@ -84,8 +77,7 @@ int ConfirmSave::test_files(MWindow *mwindow, list.remove_all_objects(); return result; } - else - { + else { list.remove_all_objects(); return 0; } @@ -101,12 +93,12 @@ int ConfirmSave::test_files(MWindow *mwindow, -ConfirmSaveWindow::ConfirmSaveWindow(MWindow *mwindow, +ConfirmSaveWindow::ConfirmSaveWindow(MWindow *mwindow, ArrayList *list) - : BC_Window(_(PROGRAM_NAME ": File Exists"), - mwindow->gui->get_abs_cursor_x(1) - 160, - mwindow->gui->get_abs_cursor_y(1) - 120, - 320, + : BC_Window(_(PROGRAM_NAME ": File Exists"), + mwindow->gui->get_abs_cursor_x(1) - 160, + mwindow->gui->get_abs_cursor_y(1) - 120, + 320, 320) { this->list = list; @@ -124,12 +116,12 @@ void ConfirmSaveWindow::create_objects() add_subwindow(new BC_OKButton(this)); add_subwindow(new BC_CancelButton(this)); - add_subwindow(title = new BC_Title(x, - y, + add_subwindow(title = new BC_Title(x, + y, _("The following files exist. Overwrite them?"))); y += 30; - add_subwindow(listbox = new BC_ListBox(x, - y, + add_subwindow(listbox = new BC_ListBox(x, + y, get_w() - x - 10, get_h() - y - BC_OKButton::calculate_h() - 10, LISTBOX_TEXT, diff --git a/cinelerra-5.0/cinelerra/cwindowgui.C b/cinelerra-5.0/cinelerra/cwindowgui.C index 95097523..c1f98d3a 100644 --- a/cinelerra-5.0/cinelerra/cwindowgui.C +++ b/cinelerra-5.0/cinelerra/cwindowgui.C @@ -1091,6 +1091,7 @@ int CWindowCanvas::do_ruler(int draw, // Show ruler do_ruler(1, 0, 0, 0); get_canvas()->flash(); + gui->update_tool(); } else switch(gui->ruler_handle) diff --git a/cinelerra-5.0/cinelerra/cwindowtool.C b/cinelerra-5.0/cinelerra/cwindowtool.C index 84cdb1d1..fee67009 100644 --- a/cinelerra-5.0/cinelerra/cwindowtool.C +++ b/cinelerra-5.0/cinelerra/cwindowtool.C @@ -20,6 +20,7 @@ */ #include "automation.h" +#include "cicolors.h" #include "clip.h" #include "condition.h" #include "cpanel.h" @@ -480,7 +481,7 @@ CWindowEyedropGUI::CWindowEyedropGUI(MWindow *mwindow, CWindowTool *thread) thread, _(PROGRAM_NAME ": Color"), 200, - 200) + 250) { } @@ -495,8 +496,8 @@ void CWindowEyedropGUI::create_objects() int y = margin; int x2 = 70; lock_window("CWindowEyedropGUI::create_objects"); - BC_Title *title1, *title2, *title3, *title4; - add_subwindow(title4 = new BC_Title(x, y, _("Radius:"))); + BC_Title *title1, *title2, *title3, *title4, *title5, *title6, *title7; + add_subwindow(title7 = new BC_Title(x, y, _("Radius:"))); y += BC_TextBox::calculate_h(this, MEDIUMFONT, 1, 1) + margin; add_subwindow(title1 = new BC_Title(x, y, _("Red:"))); @@ -504,11 +505,18 @@ void CWindowEyedropGUI::create_objects() add_subwindow(title2 = new BC_Title(x, y, _("Green:"))); y += title2->get_h() + margin; add_subwindow(title3 = new BC_Title(x, y, _("Blue:"))); + y += title3->get_h() + margin; + + add_subwindow(title4 = new BC_Title(x, y, "Y:")); + y += title4->get_h() + margin; + add_subwindow(title5 = new BC_Title(x, y, "U:")); + y += title5->get_h() + margin; + add_subwindow(title6 = new BC_Title(x, y, "V:")); radius = new CWindowCoord(this, x2, - title4->get_y(), + title7->get_y(), mwindow->edl->session->eyedrop_radius); radius->create_objects(); radius->set_boundaries((int64_t)0, (int64_t)255); @@ -518,7 +526,11 @@ void CWindowEyedropGUI::create_objects() add_subwindow(green = new BC_Title(x2, title2->get_y(), "0")); add_subwindow(blue = new BC_Title(x2, title3->get_y(), "0")); - y = blue->get_y() + blue->get_h() + margin; + add_subwindow(this->y = new BC_Title(x2, title4->get_y(), "0")); + add_subwindow(this->u = new BC_Title(x2, title5->get_y(), "0")); + add_subwindow(this->v = new BC_Title(x2, title6->get_y(), "0")); + + y = title6->get_y() + this->v->get_h() + margin; add_subwindow(sample = new BC_SubWindow(x, y, 50, 50)); update(); unlock_window(); @@ -532,6 +544,17 @@ void CWindowEyedropGUI::update() green->update(mwindow->edl->local_session->green); blue->update(mwindow->edl->local_session->blue); + float y, u, v; + YUV::rgb_to_yuv_f(mwindow->edl->local_session->red, + mwindow->edl->local_session->green, + mwindow->edl->local_session->blue, + y, + u, + v); + this->y->update(y); + this->u->update(u); + this->v->update(v); + int red = (int)(CLIP(mwindow->edl->local_session->red, 0, 1) * 0xff); int green = (int)(CLIP(mwindow->edl->local_session->green, 0, 1) * 0xff); int blue = (int)(CLIP(mwindow->edl->local_session->blue, 0, 1) * 0xff); diff --git a/cinelerra-5.0/cinelerra/cwindowtool.h b/cinelerra-5.0/cinelerra/cwindowtool.h index eba6b559..6a6bb114 100644 --- a/cinelerra-5.0/cinelerra/cwindowtool.h +++ b/cinelerra-5.0/cinelerra/cwindowtool.h @@ -238,7 +238,7 @@ public: void update(); CWindowCoord *radius; - BC_Title *red, *green, *blue; + BC_Title *red, *green, *blue, *y, *u, *v; BC_SubWindow *sample; }; diff --git a/cinelerra-5.0/cinelerra/edit.C b/cinelerra-5.0/cinelerra/edit.C index d1421020..a02e6a8b 100644 --- a/cinelerra-5.0/cinelerra/edit.C +++ b/cinelerra-5.0/cinelerra/edit.C @@ -161,9 +161,9 @@ int Edit::copy(int64_t start, char output_directory[BCTEXTLEN]; FileSystem fs; -//printf("Edit::copy 6 %s\n", asset->path); +//printf("Edit::copy %d %s\n", __LINE__, asset->path); fs.extract_dir(asset_directory, asset->path); -//printf("Edit::copy 6 %s\n", asset->path); +//printf("Edit::copy %d %s\n", __LINE__, asset->path); if(output_path) fs.extract_dir(output_directory, output_path); diff --git a/cinelerra-5.0/cinelerra/edl.C b/cinelerra-5.0/cinelerra/edl.C index 8ef59f2b..f185e4f5 100644 --- a/cinelerra-5.0/cinelerra/edl.C +++ b/cinelerra-5.0/cinelerra/edl.C @@ -2,21 +2,21 @@ /* * CINELERRA * Copyright (C) 1997-2012 Adam Williams - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * */ #include "asset.h" @@ -135,7 +135,7 @@ void EDL::create_objects() assets = parent_edl->assets; session = parent_edl->session; } - + local_session = new LocalSession(this); labels = new Labels(this, "LABELS"); nested_edls = new NestedEDLs; @@ -162,7 +162,7 @@ int EDL::save_defaults(BC_Hash *defaults) { if(!parent_edl) session->save_defaults(defaults); - + local_session->save_defaults(defaults); return 0; } @@ -187,7 +187,7 @@ int EDL::create_default_tracks() return 0; } -int EDL::load_xml(FileXML *file, +int EDL::load_xml(FileXML *file, uint32_t load_flags) { int result = 0; @@ -197,7 +197,7 @@ int EDL::load_xml(FileXML *file, // Clear objects folders.remove_all_objects(); - if((load_flags & LOAD_ALL) == LOAD_ALL) + if((load_flags & LOAD_ALL) == LOAD_ALL) { remove_vwindow_edls(); } @@ -215,8 +215,8 @@ int EDL::load_xml(FileXML *file, { do{ result = file->read_tag(); - }while(!result && - !file->tag.title_is("XML") && + }while(!result && + !file->tag.title_is("XML") && !file->tag.title_is("EDL")); } @@ -268,7 +268,7 @@ int EDL::load_xml(FileXML *file, else if(file->tag.title_is("CLIPBOARD")) { - local_session->clipboard_length = + local_session->clipboard_length = file->tag.get_property("LENGTH", (double)0); } else @@ -347,7 +347,7 @@ int EDL::load_xml(FileXML *file, if((load_flags & LOAD_ALL) == LOAD_ALL) { -// if(vwindow_edl && !vwindow_edl_shared) +// if(vwindow_edl && !vwindow_edl_shared) // vwindow_edl->Garbage::remove_user(); // vwindow_edl_shared = 0; // vwindow_edl = new_edl; @@ -375,17 +375,17 @@ int EDL::load_xml(FileXML *file, // It is a "" if complete names should be used. // Called recursively by copy for clips, thus the string can't be terminated. // The string is not terminated in this call. -int EDL::save_xml(FileXML *file, +int EDL::save_xml(FileXML *file, const char *output_path, int is_clip, int is_vwindow) { - copy(0, - tracks->total_length(), - 1, + copy(0, + tracks->total_length(), + 1, is_clip, is_vwindow, - file, + file, output_path, 0); return 0; @@ -410,7 +410,7 @@ void EDL::copy_clips(EDL *edl) remove_vwindow_edls(); -// if(vwindow_edl && !vwindow_edl_shared) +// if(vwindow_edl && !vwindow_edl_shared) // vwindow_edl->Garbage::remove_user(); // vwindow_edl = 0; // vwindow_edl_shared = 0; @@ -471,10 +471,10 @@ void EDL::copy_session(EDL *edl, int session_only) } } -int EDL::copy_assets(double start, - double end, - FileXML *file, - int all, +int EDL::copy_assets(double start, + double end, + FileXML *file, + int all, const char *output_path) { ArrayList asset_list; @@ -497,14 +497,14 @@ int EDL::copy_assets(double start, else // Copy just the ones being used. { - for(current = tracks->first; - current; + for(current = tracks->first; + current; current = NEXT) { if(current->record) { - current->copy_assets(start, - end, + current->copy_assets(start, + end, &asset_list); } } @@ -513,8 +513,8 @@ int EDL::copy_assets(double start, // Paths relativised here for(int i = 0; i < asset_list.total; i++) { - asset_list.values[i]->write(file, - 0, + asset_list.values[i]->write(file, + 0, output_path); } @@ -525,12 +525,12 @@ int EDL::copy_assets(double start, return 0; } -int EDL::copy(double start, - double end, - int all, +int EDL::copy(double start, + double end, + int all, int is_clip, int is_vwindow, - FileXML *file, + FileXML *file, const char *output_path, int rewind_it) { @@ -595,10 +595,10 @@ int EDL::copy(double start, // Don't replicate all assets for every clip. // The assets for the clips are probably in the mane EDL. if(!is_clip) - copy_assets(start, - end, - file, - all, + copy_assets(start, + end, + file, + all, output_path); // Clips @@ -607,14 +607,14 @@ int EDL::copy(double start, { for(int i = 0; i < total_vwindow_edls(); i++) { - get_vwindow_edl(i)->save_xml(file, + get_vwindow_edl(i)->save_xml(file, output_path, 0, 1); } for(int i = 0; i < clips.total; i++) - clips.values[i]->save_xml(file, + clips.values[i]->save_xml(file, output_path, 1, 0); @@ -687,8 +687,8 @@ void EDL::resample(double old_rate, double new_rate, int data_type) void EDL::synchronize_params(EDL *edl) { local_session->synchronize_params(edl->local_session); - for(Track *this_track = tracks->first, *that_track = edl->tracks->first; - this_track && that_track; + for(Track *this_track = tracks->first, *that_track = edl->tracks->first; + this_track && that_track; this_track = this_track->next, that_track = that_track->next) { @@ -696,7 +696,7 @@ void EDL::synchronize_params(EDL *edl) } } -int EDL::trim_selection(double start, +int EDL::trim_selection(double start, double end, int edit_labels, int edit_plugins, @@ -705,12 +705,12 @@ int EDL::trim_selection(double start, if(start != end) { // clear the data - clear(0, + clear(0, start, edit_labels, edit_plugins, edit_autos); - clear(end - start, + clear(end - start, tracks->total_length(), edit_labels, edit_plugins, @@ -723,7 +723,7 @@ int EDL::trim_selection(double start, int EDL::equivalent(double position1, double position2) { double threshold = (double).5 / session->frame_rate; - if(session->cursor_on_frames) + if(session->cursor_on_frames) threshold = (double).5 / session->frame_rate; else threshold = (double)1 / session->sample_rate; @@ -750,7 +750,7 @@ void EDL::set_path(char *path) void EDL::set_inpoint(double position) { - if(equivalent(local_session->get_inpoint(), position) && + if(equivalent(local_session->get_inpoint(), position) && local_session->get_inpoint() >= 0) { local_session->unset_inpoint(); @@ -758,14 +758,14 @@ void EDL::set_inpoint(double position) else { local_session->set_inpoint(align_to_frame(position, 0)); - if(local_session->get_outpoint() <= local_session->get_inpoint()) + if(local_session->get_outpoint() <= local_session->get_inpoint()) local_session->unset_outpoint(); } } void EDL::set_outpoint(double position) { - if(equivalent(local_session->get_outpoint(), position) && + if(equivalent(local_session->get_outpoint(), position) && local_session->get_outpoint() >= 0) { local_session->unset_outpoint(); @@ -773,14 +773,14 @@ void EDL::set_outpoint(double position) else { local_session->set_outpoint(align_to_frame(position, 0)); - if(local_session->get_inpoint() >= local_session->get_outpoint()) + if(local_session->get_inpoint() >= local_session->get_outpoint()) local_session->unset_inpoint(); } } -int EDL::clear(double start, - double end, +int EDL::clear(double start, + double end, int clear_labels, int clear_plugins, int edit_autos) @@ -788,25 +788,25 @@ int EDL::clear(double start, if(start == end) { double distance = 0; - tracks->clear_handle(start, + tracks->clear_handle(start, end, - distance, + distance, clear_labels, clear_plugins, edit_autos); if(clear_labels && distance > 0) - labels->paste_silence(start, + labels->paste_silence(start, start + distance); } else { - tracks->clear(start, + tracks->clear(start, end, clear_plugins, edit_autos); - if(clear_labels) - labels->clear(start, - end, + if(clear_labels) + labels->clear(start, + end, 1); } @@ -818,39 +818,39 @@ int EDL::clear(double start, return 0; } -void EDL::modify_edithandles(double oldposition, - double newposition, +void EDL::modify_edithandles(double oldposition, + double newposition, int currentend, int handle_mode, int edit_labels, int edit_plugins, int edit_autos) { - tracks->modify_edithandles(oldposition, - newposition, + tracks->modify_edithandles(oldposition, + newposition, currentend, handle_mode, - edit_labels, + edit_labels, edit_plugins, edit_autos); - labels->modify_handles(oldposition, - newposition, + labels->modify_handles(oldposition, + newposition, currentend, handle_mode, edit_labels); } -void EDL::modify_pluginhandles(double oldposition, - double newposition, - int currentend, +void EDL::modify_pluginhandles(double oldposition, + double newposition, + int currentend, int handle_mode, int edit_labels, int edit_autos, Edits *trim_edits) { - tracks->modify_pluginhandles(oldposition, - newposition, - currentend, + tracks->modify_pluginhandles(oldposition, + newposition, + currentend, handle_mode, edit_labels, edit_autos, @@ -858,16 +858,16 @@ void EDL::modify_pluginhandles(double oldposition, optimize(); } -void EDL::paste_silence(double start, - double end, - int edit_labels, +void EDL::paste_silence(double start, + double end, + int edit_labels, int edit_plugins, int edit_autos) { - if(edit_labels) + if(edit_labels) labels->paste_silence(start, end); - tracks->paste_silence(start, - end, + tracks->paste_silence(start, + end, edit_plugins, edit_autos); } @@ -962,7 +962,7 @@ int64_t EDL::get_tracks_width() // int EDL::calculate_output_w(int single_channel) // { // if(single_channel) return session->output_w; -// +// // int widest = 0; // for(int i = 0; i < session->video_channels; i++) // { @@ -970,11 +970,11 @@ int64_t EDL::get_tracks_width() // } // return widest; // } -// +// // int EDL::calculate_output_h(int single_channel) // { // if(single_channel) return session->output_h; -// +// // int tallest = 0; // for(int i = 0; i < session->video_channels; i++) // { @@ -991,12 +991,12 @@ void EDL::calculate_conformed_dimensions(int single_channel, float &w, float &h) if((float)session->output_w / session->output_h > get_aspect_ratio()) { - h = (float)h * + h = (float)h * (session->output_w / get_aspect_ratio() / session->output_h); } else { - w = (float)w * + w = (float)w * (h * get_aspect_ratio() / session->output_w); } } @@ -1014,8 +1014,8 @@ int EDL::dump(FILE *fp) fprintf(fp,"EDL\n"); fprintf(fp," clip_title: %s\n" " parent_edl: %p\n", local_session->clip_title, parent_edl); - fprintf(fp," selectionstart %f\n selectionend %f\n loop_start %f\n loop_end %f\n", - local_session->get_selectionstart(1), + fprintf(fp," selectionstart %f\n selectionend %f\n loop_start %f\n loop_end %f\n", + local_session->get_selectionstart(1), local_session->get_selectionend(1), local_session->loop_start, local_session->loop_end); @@ -1039,8 +1039,8 @@ int EDL::dump(FILE *fp) " output_w: %d\n" " output_h: %d\n" " aspect_w: %f\n" - " aspect_h %f\n" - " color_model %d\n", + " aspect_h: %f\n" + " color_model: %d\n", session->video_channels, session->video_tracks, session->frame_rate, @@ -1053,7 +1053,7 @@ int EDL::dump(FILE *fp) fprintf(fp," CLIPS\n"); fprintf(fp," total: %d\n", clips.total); - + for(int i = 0; i < clips.total; i++) { fprintf(fp,"\n\n"); @@ -1063,12 +1063,12 @@ int EDL::dump(FILE *fp) fprintf(fp," VWINDOW EDLS\n"); fprintf(fp," total: %d\n", total_vwindow_edls()); - + for(int i = 0; i < total_vwindow_edls(); i++) { fprintf(fp," %s\n", get_vwindow_edl(i)->local_session->clip_title); } - + fprintf(fp," ASSETS\n"); assets->dump(fp); } @@ -1090,10 +1090,10 @@ EDL* EDL::add_clip(EDL *edl) return new_edl; } -void EDL::insert_asset(Asset *asset, +void EDL::insert_asset(Asset *asset, EDL *nested_edl, - double position, - Track *first_track, + double position, + Track *first_track, RecordLabels *labels) { // Insert asset into asset table @@ -1123,8 +1123,8 @@ void EDL::insert_asset(Asset *asset, if(new_asset) { // Insert 1 frame for undefined length - if(new_asset->video_length < 0) - length = 1.0 / session->frame_rate; + if(new_asset->video_length < 0) + length = 1.0 / session->frame_rate; else if(new_asset->frame_rate > 0) length = ((double)new_asset->video_length / new_asset->frame_rate); @@ -1138,14 +1138,14 @@ void EDL::insert_asset(Asset *asset, current && vtrack < layers; current = NEXT) { - if(!current->record || + if(!current->record || current->data_type != TRACK_VIDEO) continue; - current->insert_asset(new_asset, + current->insert_asset(new_asset, new_nested_edl, - length, - position, + length, + position, vtrack); vtrack++; @@ -1164,7 +1164,7 @@ void EDL::insert_asset(Asset *asset, length = 1.0; } else - length = (double)new_asset->audio_length / + length = (double)new_asset->audio_length / new_asset->sample_rate; } @@ -1176,10 +1176,10 @@ void EDL::insert_asset(Asset *asset, current->data_type != TRACK_AUDIO) continue; - current->insert_asset(new_asset, + current->insert_asset(new_asset, new_nested_edl, - length, - position, + length, + position, atrack); @@ -1228,7 +1228,7 @@ int EDL::next_id() return result; } -void EDL::get_shared_plugins(Track *source, +void EDL::get_shared_plugins(Track *source, ArrayList *plugin_locations, int omit_recordable, int data_type) @@ -1237,15 +1237,15 @@ void EDL::get_shared_plugins(Track *source, { if(!track->record || !omit_recordable) { - if(track != source && + if(track != source && track->data_type == data_type) { for(int i = 0; i < track->plugin_set.total; i++) { Plugin *plugin = track->get_current_plugin( - local_session->get_selectionstart(1), - i, - PLAY_FORWARD, + local_session->get_selectionstart(1), + i, + PLAY_FORWARD, 1, 0); if(plugin && plugin->plugin_type == PLUGIN_STANDALONE) @@ -1258,7 +1258,7 @@ void EDL::get_shared_plugins(Track *source, } } -void EDL::get_shared_tracks(Track *track, +void EDL::get_shared_tracks(Track *track, ArrayList *module_locations, int omit_recordable, int data_type) @@ -1267,7 +1267,7 @@ void EDL::get_shared_tracks(Track *track, { if(!omit_recordable || !current->record) { - if(current != track && + if(current != track && current->data_type == data_type) { module_locations->append(new SharedLocation(tracks->number_of(current), 0)); @@ -1296,7 +1296,7 @@ double EDL::align_to_frame(double position, int round) // Round frames // Always round down negative numbers // but round up only if requested - if(round) + if(round) { temp = Units::round(temp); } @@ -1357,7 +1357,7 @@ void EDL::delete_folder(char *folder) } int EDL::get_use_vconsole(VEdit* *playable_edit, - int64_t position, + int64_t position, int direction, PlayableTracks *playable_tracks) { @@ -1380,7 +1380,7 @@ int EDL::get_use_vconsole(VEdit* *playable_edit, // Total number of playable tracks is 1 - if(playable_tracks->size() != 1) + if(playable_tracks->size() != 1) { result = 1; } @@ -1395,20 +1395,20 @@ int EDL::get_use_vconsole(VEdit* *playable_edit, delete playable_tracks; } -if(debug) printf("EDL::get_use_vconsole %d playable_tracks->size()=%d\n", +if(debug) printf("EDL::get_use_vconsole %d playable_tracks->size()=%d\n", __LINE__, playable_tracks->size()); if(result) return 1; // Test mutual conditions between direct copy rendering and this. - if(!playable_track->direct_copy_possible(position, + if(!playable_track->direct_copy_possible(position, direction, 1)) return 1; if(debug) printf("EDL::get_use_vconsole %d\n", __LINE__); - *playable_edit = (VEdit*)playable_track->edits->editof(position, + *playable_edit = (VEdit*)playable_track->edits->editof(position, direction, 0); // No edit at current location @@ -1421,9 +1421,9 @@ if(debug) printf("EDL::get_use_vconsole %d\n", __LINE__); { // Test nested EDL EDL *nested_edl = (*playable_edit)->nested_edl; - int64_t nested_position = (int64_t)((position - + int64_t nested_position = (int64_t)((position - (*playable_edit)->startproject + - (*playable_edit)->startsource) * + (*playable_edit)->startsource) * nested_edl->session->frame_rate / session->frame_rate); @@ -1432,11 +1432,11 @@ if(debug) printf("EDL::get_use_vconsole %d\n", __LINE__); if(session->output_w != nested_edl->session->output_w || session->output_h != nested_edl->session->output_h || nested_edl->get_use_vconsole(&playable_edit_temp, - nested_position, + nested_position, direction, - 0)) + 0)) return 1; - + return 0; } @@ -1532,6 +1532,7 @@ void EDL::remove_vwindow_edl(EDL *edl) if(vwindow_edls.number_of(edl) >= 0) { edl->Garbage::remove_user(); + vwindow_edls.remove(edl); } } diff --git a/cinelerra-5.0/cinelerra/edlsession.C b/cinelerra-5.0/cinelerra/edlsession.C index 94d591fa..e69e84f0 100644 --- a/cinelerra-5.0/cinelerra/edlsession.C +++ b/cinelerra-5.0/cinelerra/edlsession.C @@ -6,7 +6,7 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -43,7 +43,7 @@ EDLSession::EDLSession(EDL *edl) aconfig_in = new AudioInConfig; vconfig_in = new VideoInConfig; recording_format = new Asset; - interpolation_type = CUBIC_LINEAR; + interpolation_type = CUBIC_CUBIC; interpolate_raw = 1; white_balance_raw = 1; test_playback_edits = 1; @@ -56,7 +56,7 @@ EDLSession::EDLSession(EDL *edl) strcpy(default_atransition, ""); strcpy(default_vtransition, ""); default_transition_length = 1.0; - folderlist_format = ASSETS_ICONS; + folderlist_format = FOLDERS_ICONS; frame_rate = 25; // just has to be something by default autos_follow_edits = 1; // this is needed for predictability labels_follow_edits = 1; @@ -181,9 +181,9 @@ int EDLSession::load_defaults(BC_Hash *defaults) typeless_keyframes = defaults->get("TYPELESS_KEYFRAMES", 0); cwindow_dest = defaults->get("CWINDOW_DEST", 0); cwindow_mask = defaults->get("CWINDOW_MASK", 0); - cwindow_meter = defaults->get("CWINDOW_METER", 1); + cwindow_meter = defaults->get("CWINDOW_METER", 0); cwindow_operation = defaults->get("CWINDOW_OPERATION", 0); - cwindow_scrollbars = defaults->get("CWINDOW_SCROLLBARS", 1); + cwindow_scrollbars = defaults->get("CWINDOW_SCROLLBARS", 0); cwindow_xscroll = defaults->get("CWINDOW_XSCROLL", 0); cwindow_yscroll = defaults->get("CWINDOW_YSCROLL", 0); cwindow_zoom = defaults->get("CWINDOW_ZOOM", (float)1); @@ -226,15 +226,22 @@ int EDLSession::load_defaults(BC_Hash *defaults) // record_speed = defaults->get("RECORD_SPEED", 24); record_fragment_size = defaults->get("RECORD_FRAGMENT_SIZE", 2048); record_write_length = defaults->get("RECORD_WRITE_LENGTH", 131072); + +// set some defaults that work + recording_format->video_data = 1; + recording_format->audio_data = 1; + recording_format->format = FILE_FFMPEG; + strcpy(recording_format->acodec, "mp4.qt"); + strcpy(recording_format->vcodec, "mp4.qt"); + recording_format->channels = 2; + recording_format->sample_rate = 48000; + recording_format->bits = 16; + recording_format->dither = 0; + record_realtime_toc = defaults->get("RECORD_REALTIME_TOC", 1); - recording_format->load_defaults(defaults, - "RECORD_", - 1, - 1, - 1, - 1, - 1); - safe_regions = defaults->get("SAFE_REGIONS", 1); + recording_format->load_defaults(defaults, "RECORD_", 1, 1, 1, 1, 1); + + safe_regions = defaults->get("SAFE_REGIONS", 0); sample_rate = defaults->get("SAMPLERATE", 48000); scrub_speed = defaults->get("SCRUB_SPEED", (float)2); show_assets = defaults->get("SHOW_ASSETS", 1); @@ -258,7 +265,7 @@ int EDLSession::load_defaults(BC_Hash *defaults) video_tracks = defaults->get("VTRACKS", 1); video_write_length = defaults->get("VIDEO_WRITE_LENGTH", 30); view_follows_playback = defaults->get("VIEW_FOLLOWS_PLAYBACK", 1); - vwindow_meter = defaults->get("VWINDOW_METER", 1); + vwindow_meter = defaults->get("VWINDOW_METER", 0); decode_subtitles = defaults->get("DECODE_SUBTITLES", decode_subtitles); @@ -443,7 +450,7 @@ void EDLSession::boundaries() int EDLSession::load_video_config(FileXML *file, int append_mode, uint32_t load_flags) { - char string[1024]; + char string[BCTEXTLEN]; if(append_mode) return 0; interpolation_type = file->tag.get_property("INTERPOLATION_TYPE", interpolation_type); interpolate_raw = file->tag.get_property("INTERPOLATE_RAW", interpolate_raw); @@ -623,7 +630,7 @@ int EDLSession::save_xml(FileXML *file) int EDLSession::save_video_config(FileXML *file) { - char string[1024]; + char string[BCTEXTLEN]; file->tag.set_title("VIDEO"); file->tag.set_property("INTERPOLATION_TYPE", interpolation_type); file->tag.set_property("INTERPOLATE_RAW", interpolate_raw); diff --git a/cinelerra-5.0/cinelerra/edlsession.h b/cinelerra-5.0/cinelerra/edlsession.h index 4708a716..5b95e563 100644 --- a/cinelerra-5.0/cinelerra/edlsession.h +++ b/cinelerra-5.0/cinelerra/edlsession.h @@ -1,7 +1,7 @@ /* * CINELERRA - * Copyright (C) 2008 Adam Williams + * Copyright (C) 2008-2015 Adam Williams * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/cinelerra-5.0/cinelerra/filecr2.C b/cinelerra-5.0/cinelerra/filecr2.C index 22345b7c..074076ec 100644 --- a/cinelerra-5.0/cinelerra/filecr2.C +++ b/cinelerra-5.0/cinelerra/filecr2.C @@ -184,6 +184,8 @@ int FileCR2::read_frame(VFrame *frame, char *path) argv[argc++] = (char*)"dcraw"; // write to stdout argv[argc++] = (char*)"-c"; +// no rotation + argv[argc++] = (char*)"-j"; // printf("FileCR2::read_frame %d interpolate=%d white_balance=%d\n", // __LINE__, diff --git a/cinelerra-5.0/cinelerra/interfaceprefs.h b/cinelerra-5.0/cinelerra/interfaceprefs.h index 924014dc..f422a86f 100644 --- a/cinelerra-5.0/cinelerra/interfaceprefs.h +++ b/cinelerra-5.0/cinelerra/interfaceprefs.h @@ -1,7 +1,7 @@ /* * CINELERRA - * Copyright (C) 2008 Adam Williams + * Copyright (C) 2008-2015 Adam Williams * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/cinelerra-5.0/cinelerra/loadbalance.C b/cinelerra-5.0/cinelerra/loadbalance.C index 2d013a5d..5765e398 100644 --- a/cinelerra-5.0/cinelerra/loadbalance.C +++ b/cinelerra-5.0/cinelerra/loadbalance.C @@ -111,8 +111,8 @@ void LoadClient::run() } else { - completion_lock->unlock(); server->client_lock->unlock(); + completion_lock->unlock(); } } } diff --git a/cinelerra-5.0/cinelerra/loadbalance.h b/cinelerra-5.0/cinelerra/loadbalance.h index 2702205d..b92d138b 100644 --- a/cinelerra-5.0/cinelerra/loadbalance.h +++ b/cinelerra-5.0/cinelerra/loadbalance.h @@ -45,8 +45,6 @@ public: virtual ~LoadPackage(); Condition *completion_lock; -// Range to search in the total scan area -// int pixel1, pixel2; }; diff --git a/cinelerra-5.0/cinelerra/mainmenu.C b/cinelerra-5.0/cinelerra/mainmenu.C index 0759654c..d4738487 100644 --- a/cinelerra-5.0/cinelerra/mainmenu.C +++ b/cinelerra-5.0/cinelerra/mainmenu.C @@ -143,6 +143,7 @@ void MainMenu::create_objects() editmenu->add_item(new SelectAll(mwindow)); editmenu->add_item(new BC_MenuItem("-")); editmenu->add_item(new MenuEditShuffle(mwindow)); + editmenu->add_item(new MenuEditReverse(mwindow)); editmenu->add_item(new MenuEditLength(mwindow)); editmenu->add_item(new MenuEditAlign(mwindow)); editmenu->add_item(new MenuTransitionLength(mwindow)); @@ -203,6 +204,7 @@ void MainMenu::create_objects() settingsmenu->add_item(keyframes_follow_edits = new KeyframesFollowEdits(mwindow)); settingsmenu->add_item(cursor_on_frames = new CursorOnFrames(mwindow)); settingsmenu->add_item(typeless_keyframes = new TypelessKeyframes(mwindow)); + settingsmenu->add_item(new BC_MenuItem("-")); settingsmenu->add_item(new SaveSettingsNow(mwindow)); settingsmenu->add_item(loop_playback = new LoopPlayback(mwindow)); settingsmenu->add_item(new SetBRenderStart(mwindow)); @@ -242,6 +244,7 @@ void MainMenu::create_objects() windowmenu->add_item(show_cwindow = new ShowCWindow(mwindow)); windowmenu->add_item(show_gwindow = new ShowGWindow(mwindow)); windowmenu->add_item(show_lwindow = new ShowLWindow(mwindow)); + windowmenu->add_item(new BC_MenuItem("-")); windowmenu->add_item(split_x = new SplitX(mwindow)); windowmenu->add_item(split_y = new SplitY(mwindow)); windowmenu->add_item(new TileWindows(mwindow,_("Default positions"),-1,_("Ctrl+P"),'p')); diff --git a/cinelerra-5.0/cinelerra/mainsession.C b/cinelerra-5.0/cinelerra/mainsession.C index 287c973f..f64eca5f 100644 --- a/cinelerra-5.0/cinelerra/mainsession.C +++ b/cinelerra-5.0/cinelerra/mainsession.C @@ -413,7 +413,7 @@ int MainSession::load_defaults(BC_Hash *defaults) batchrender_w = defaults->get("BATCHRENDER_W", batchrender_w); batchrender_h = defaults->get("BATCHRENDER_H", batchrender_h); - show_vwindow = defaults->get("SHOW_VWINDOW", 1); + show_vwindow = defaults->get("SHOW_VWINDOW", 0); show_awindow = defaults->get("SHOW_AWINDOW", 1); show_cwindow = defaults->get("SHOW_CWINDOW", 1); show_lwindow = defaults->get("SHOW_LWINDOW", 0); diff --git a/cinelerra-5.0/cinelerra/maskauto.C b/cinelerra-5.0/cinelerra/maskauto.C index 869a9487..b332fc75 100644 --- a/cinelerra-5.0/cinelerra/maskauto.C +++ b/cinelerra-5.0/cinelerra/maskauto.C @@ -427,5 +427,29 @@ void MaskAuto::translate_submasks(float translate_x, float translate_y) } } +void MaskAuto::scale_submasks(int orig_scale, int new_scale) +{ + for(int i = 0; i < masks.size(); i++) + { + SubMask *mask = get_submask(i); + for (int j = 0; j < mask->points.total; j++) + { + float orig_x = mask->points.values[j]->x * orig_scale; + float orig_y = mask->points.values[j]->y * orig_scale; + mask->points.values[j]->x = orig_x / new_scale; + mask->points.values[j]->y = orig_y / new_scale; + + orig_x = mask->points.values[j]->control_x1 * orig_scale; + orig_y = mask->points.values[j]->control_y1 * orig_scale; + mask->points.values[j]->control_x1 = orig_x / new_scale; + mask->points.values[j]->control_y1 = orig_y / new_scale; + + orig_x = mask->points.values[j]->control_x2 * orig_scale; + orig_y = mask->points.values[j]->control_y2 * orig_scale; + mask->points.values[j]->control_x2 = orig_x / new_scale; + mask->points.values[j]->control_y2 = orig_y / new_scale; + } + } +} diff --git a/cinelerra-5.0/cinelerra/maskauto.h b/cinelerra-5.0/cinelerra/maskauto.h index 5913e6c1..1fd3da03 100644 --- a/cinelerra-5.0/cinelerra/maskauto.h +++ b/cinelerra-5.0/cinelerra/maskauto.h @@ -90,6 +90,8 @@ public: SubMask* get_submask(int number); // Translates all submasks void translate_submasks(float translate_x, float translate_y); +// scale all submasks + void scale_submasks(int orig_scale, int new_scale); ArrayList masks; diff --git a/cinelerra-5.0/cinelerra/maskautos.C b/cinelerra-5.0/cinelerra/maskautos.C index c6ad7a39..1db01f60 100644 --- a/cinelerra-5.0/cinelerra/maskautos.C +++ b/cinelerra-5.0/cinelerra/maskautos.C @@ -295,17 +295,7 @@ void MaskAutos::translate_masks(float translate_x, float translate_y) current = (MaskAuto*)NEXT) { current->translate_submasks(translate_x, translate_y); - for(int i = 0; i < current->masks.total; i++) - { - SubMask *mask = current->get_submask(i); - for (int j = 0; j < mask->points.total; j++) - { - mask->points.values[j]->x += translate_x; - mask->points.values[j]->y += translate_y; - printf("mpx: %f, mpy:%f\n",mask->points.values[j]->x,mask->points.values[j]->y); - } - } - } } + diff --git a/cinelerra-5.0/cinelerra/maskautos.h b/cinelerra-5.0/cinelerra/maskautos.h index 9e2ffa4f..465a8563 100644 --- a/cinelerra-5.0/cinelerra/maskautos.h +++ b/cinelerra-5.0/cinelerra/maskautos.h @@ -55,7 +55,6 @@ public: // Translates all mask points void translate_masks(float translate_x, float translate_y); - private: void avg_points(MaskPoint *output, MaskPoint *input1, diff --git a/cinelerra-5.0/cinelerra/menueditlength.C b/cinelerra-5.0/cinelerra/menueditlength.C index 2369a07d..08d1c465 100644 --- a/cinelerra-5.0/cinelerra/menueditlength.C +++ b/cinelerra-5.0/cinelerra/menueditlength.C @@ -63,6 +63,21 @@ int MenuEditShuffle::handle_event() } +MenuEditReverse::MenuEditReverse(MWindow *mwindow) + : BC_MenuItem(_("Reverse Edits")) +{ + this->mwindow = mwindow; +} + + + +int MenuEditReverse::handle_event() +{ + mwindow->reverse_edits(); + return 1; +} + + diff --git a/cinelerra-5.0/cinelerra/menueditlength.h b/cinelerra-5.0/cinelerra/menueditlength.h index 144bbc83..3aa733d1 100644 --- a/cinelerra-5.0/cinelerra/menueditlength.h +++ b/cinelerra-5.0/cinelerra/menueditlength.h @@ -56,6 +56,17 @@ public: }; +class MenuEditReverse : public BC_MenuItem +{ +public: + MenuEditReverse(MWindow *mwindow); + + int handle_event(); + + MWindow *mwindow; +}; + + class MenuEditAlign : public BC_MenuItem { public: diff --git a/cinelerra-5.0/cinelerra/mwindow.C b/cinelerra-5.0/cinelerra/mwindow.C index cfb2caf0..31835cc5 100644 --- a/cinelerra-5.0/cinelerra/mwindow.C +++ b/cinelerra-5.0/cinelerra/mwindow.C @@ -435,7 +435,7 @@ void MWindow::init_plugin_index(MWindow *mwindow, Preferences *preferences, FILE int vis_id = idx++; for( int i=0; ipath; + char *fs_path = fs.dir_list[i]->path; char *base_path = FileSystem::basepath(fs_path), *bp = base_path; const char *dp = plug_dir; while( *bp && *dp && *bp == *dp ) { ++bp; ++dp; } @@ -508,7 +508,7 @@ void MWindow::search_plugindb(int do_audio, // Get plugins for(int i = 0; i < MWindow::plugindb->total; i++) { - PluginServer *current = MWindow::plugindb->values[i]; + PluginServer *current = MWindow::plugindb->get(i); if(current->audio == do_audio && current->video == do_video && @@ -526,13 +526,13 @@ void MWindow::search_plugindb(int do_audio, for(int i = 0; i < results.total - 1; i++) { - PluginServer *value1 = results.values[i]; - PluginServer *value2 = results.values[i + 1]; + PluginServer *value1 = results[i]; + PluginServer *value2 = results[i + 1]; if(strcmp(_(value1->title), _(value2->title)) > 0) { done = 0; - results.values[i] = value2; - results.values[i + 1] = value1; + results[i] = value2; + results[i + 1] = value1; } } } @@ -549,13 +549,13 @@ PluginServer* MWindow::scan_plugindb(char *title, for(int i = 0; i < plugindb->total; i++) { - PluginServer *server = plugindb->values[i]; + PluginServer *server = plugindb->get(i); if(server->title && !strcasecmp(server->title, title) && (data_type < 0 || (data_type == TRACK_AUDIO && server->audio) || (data_type == TRACK_VIDEO && server->video))) - return plugindb->values[i]; + return plugindb->get(i); } return 0; } @@ -563,7 +563,7 @@ PluginServer* MWindow::scan_plugindb(char *title, int MWindow::plugin_exists(char *plugin_path) { for( int i=0; itotal; ++i ) { - PluginServer *server = plugindb->values[i]; + PluginServer *server = plugindb->get(i); if( !strcmp(plugin_path, server->get_path()) ) return 1; } return 0; @@ -606,10 +606,10 @@ void MWindow::clean_indexes() result = 0; for(int i = 0; i < fs.dir_list.total && !result; i++) { - fs.join_names(string, preferences->index_directory, fs.dir_list.values[i]->name); + fs.join_names(string, preferences->index_directory, fs.dir_list[i]->name); if(fs.is_dir(string)) { - delete fs.dir_list.values[i]; + delete fs.dir_list[i]; fs.dir_list.remove_number(i); result = 1; } @@ -623,7 +623,7 @@ void MWindow::clean_indexes() // Get oldest for(int i = 0; i < fs.dir_list.total; i++) { - fs.join_names(string, preferences->index_directory, fs.dir_list.values[i]->name); + fs.join_names(string, preferences->index_directory, fs.dir_list[i]->name); if(i == 0 || fs.get_date(string) <= oldest) { @@ -637,11 +637,11 @@ void MWindow::clean_indexes() // Remove index file fs.join_names(string, preferences->index_directory, - fs.dir_list.values[oldest_item]->name); + fs.dir_list[oldest_item]->name); //printf("MWindow::clean_indexes 1 %s\n", string); if(remove(string)) perror("delete_indexes"); - delete fs.dir_list.values[oldest_item]; + delete fs.dir_list[oldest_item]; fs.dir_list.remove_number(oldest_item); // Remove table of contents if it exists @@ -699,9 +699,9 @@ void MWindow::init_theme() PluginServer *theme_plugin = 0; for(int i = 0; i < plugindb->total && !theme_plugin; i++) { - if( plugindb->values[i]->theme && - !strcasecmp(preferences->theme, plugindb->values[i]->title) ) - theme_plugin = plugindb->values[i]; + if( plugindb->get(i)->theme && + !strcasecmp(preferences->theme, plugindb->get(i)->title) ) + theme_plugin = plugindb->get(i); } if( !theme_plugin ) @@ -712,9 +712,9 @@ void MWindow::init_theme() fprintf(stderr, _("MWindow::init_theme: trying default theme %s\n"), DEFAULT_THEME); for(int i = 0; i < plugindb->total && !theme_plugin; i++) { - if( plugindb->values[i]->theme && - !strcasecmp(DEFAULT_THEME, plugindb->values[i]->title) ) - theme_plugin = plugindb->values[i]; + if( plugindb->get(i)->theme && + !strcasecmp(DEFAULT_THEME, plugindb->get(i)->title) ) + theme_plugin = plugindb->get(i); } } @@ -778,10 +778,10 @@ void MWindow::init_levelwindow() VWindow *MWindow::get_viewer(int start_it, int idx) { vwindows_lock->lock("MWindow::get_viewer"); - VWindow *vwindow = idx >= 0 && idx < vwindows.size() ? vwindows.get(idx) : 0; + VWindow *vwindow = idx >= 0 && idx < vwindows.size() ? vwindows[idx] : 0; if( !vwindow ) idx = vwindows.size(); while( !vwindow && --idx >= 0 ) { - VWindow *vwin = vwindows.get(idx); + VWindow *vwin = vwindows[idx]; if( !vwin->is_running() || !vwin->get_edl() ) vwindow = vwin; } @@ -1037,7 +1037,7 @@ void MWindow::stop_playback(int wait) cwindow->playback_engine->interrupt_playback(wait); for(int i = 0; i < vwindows.size(); i++) { - VWindow *vwindow = vwindows.get(i); + VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; vwindow->playback_engine->que->send_command(STOP, CHANGE_NONE, 0, 0); vwindow->playback_engine->interrupt_playback(wait); @@ -1062,6 +1062,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); // deleted. stop_playback(1); +if(debug) printf("MWindow::load_filenames %d\n", __LINE__); undo->update_undo_before(); @@ -1069,11 +1070,11 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); // Define new_edls and new_assets to load int result = 0, ftype = -1; - for(int i = 0; i < filenames->total; i++) + for(int i = 0; i < filenames->size(); i++) { // Get type of file File *new_file = new File; - Asset *new_asset = new Asset(filenames->values[i]); + Asset *new_asset = new Asset(filenames->get(i)); EDL *new_edl = new EDL; char string[BCTEXTLEN]; @@ -1188,7 +1189,7 @@ SET_TRACE } else { - old_asset = new_edls.values[j]->assets->get_asset(new_asset->path); + old_asset = new_edls[j]->assets->get_asset(new_asset->path); if( old_asset ) { *new_asset = *old_asset; @@ -1264,7 +1265,7 @@ SET_TRACE { FileXML xml_file; if(debug) printf("MWindow::load_filenames %d\n", __LINE__); - xml_file.read_from_file(filenames->values[i]); + xml_file.read_from_file(filenames->get(i)); if(debug) printf("MWindow::load_filenames %d\n", __LINE__); if(load_mode == LOADMODE_NESTED) @@ -1272,7 +1273,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); // Load temporary EDL for nesting. EDL *nested_edl = new EDL; nested_edl->create_objects(); - nested_edl->set_path(filenames->values[i]); + nested_edl->set_path(filenames->get(i)); nested_edl->load_xml(&xml_file, LOAD_ALL); //printf("MWindow::load_filenames %p %s\n", nested_edl, nested_edl->project_path); edl_to_nested(new_edl, nested_edl); @@ -1283,15 +1284,15 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); // Load EDL for pasting new_edl->load_xml(&xml_file, LOAD_ALL); if(debug) printf("MWindow::load_filenames %d\n", __LINE__); - test_plugins(new_edl, filenames->values[i]); + test_plugins(new_edl, filenames->get(i)); if(debug) printf("MWindow::load_filenames %d\n", __LINE__); if(load_mode == LOADMODE_REPLACE || load_mode == LOADMODE_REPLACE_CONCATENATE) { - strcpy(session->filename, filenames->values[i]); + strcpy(session->filename, filenames->get(i)); strcpy(new_edl->local_session->clip_title, - filenames->values[i]); + filenames->get(i)); if(update_filename) set_filename(new_edl->local_session->clip_title); } @@ -1361,7 +1362,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); int got_indexes = 0; for(int i = 0; i < new_edls.size(); i++) { - EDL *new_edl = new_edls.get(i); + EDL *new_edl = new_edls[i]; for(int j = 0; j < new_edl->nested_edls->size(); j++) { mainindexes->add_next_asset(0, @@ -1377,13 +1378,13 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); { for(int i = 0; i < new_assets.size(); i++) { - Asset *new_asset = new_assets.get(i); + Asset *new_asset = new_assets[i]; File *new_file = 0; int got_it = 0; for(int j = 0; j < new_files.size(); j++) { - new_file = new_files.get(j); + new_file = new_files[j]; if(!strcmp(new_file->asset->path, new_asset->path)) { @@ -1412,7 +1413,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); { for(int j = 0; j < track->plugin_set.size(); j++) { - PluginSet *plugins = track->plugin_set.get(j); + PluginSet *plugins = track->plugin_set[j]; Plugin *plugin = plugins->get_first_plugin(); while(plugin) @@ -1452,14 +1453,14 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); goto_start(); } - - update_project(load_mode); - +// need to update undo before project, since mwindow is unlocked & a new load +// can begin here. Should really prevent loading until we're done. if(debug) printf("MWindow::load_filenames %d\n", __LINE__); + undo->update_undo_after(_("load"), LOAD_ALL); for(int i = 0; i < new_edls.size(); i++) { - new_edls.get(i)->remove_user(); + new_edls[i]->remove_user(); } if(debug) printf("MWindow::load_filenames %d\n", __LINE__); @@ -1467,14 +1468,14 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); for(int i = 0; i < new_assets.size(); i++) { - new_assets.get(i)->Garbage::remove_user(); + new_assets[i]->Garbage::remove_user(); } new_assets.remove_all(); new_files.remove_all_objects(); - undo->update_undo_after(_("load"), LOAD_ALL); +if(debug) printf("MWindow::load_filenames %d\n", __LINE__); if(load_mode == LOADMODE_REPLACE || load_mode == LOADMODE_REPLACE_CONCATENATE) { @@ -1489,6 +1490,10 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); if(debug) printf("MWindow::load_filenames %d\n", __LINE__); + update_project(load_mode); + +if(debug) printf("MWindow::load_filenames %d\n", __LINE__); + return 0; } @@ -1504,7 +1509,7 @@ void MWindow::test_plugins(EDL *new_edl, char *path) { for(int k = 0; k < track->plugin_set.total; k++) { - PluginSet *plugin_set = track->plugin_set.values[k]; + PluginSet *plugin_set = track->plugin_set[k]; for(Plugin *plugin = (Plugin*)plugin_set->first; plugin; plugin = (Plugin*)plugin->next) @@ -1701,7 +1706,7 @@ void MWindow::create_objects(int want_gui, // Show all vwindows // if(session->show_vwindow) { // for(int j = 0; j < vwindows.size(); j++) { -// VWindow *vwindow = vwindows.get(j); +// VWindow *vwindow = vwindows[j]; // if( !vwindow->is_running() ) continue; // if(debug) printf("MWindow::create_objects %d vwindow=%p\n", // __LINE__, @@ -1808,7 +1813,7 @@ void MWindow::start() { ENABLE_BUFFER //PRINT_TRACE -// vwindows.get(DEFAULT_VWINDOW)->start(); +// vwindows[DEFAULT_VWINDOW]->start(); awindow->start(); //PRINT_TRACE cwindow->start(); @@ -1833,9 +1838,10 @@ void MWindow::show_vwindow() int total_running = 0; session->show_vwindow = 1; +//printf("MWindow::show_vwindow %d %d\n", __LINE__, vwindows.size()); // Raise all windows which are visible for(int j = 0; j < vwindows.size(); j++) { - VWindow *vwindow = vwindows.get(j); + VWindow *vwindow = vwindows[j]; if( !vwindow->is_running() ) continue; vwindow->gui->lock_window("MWindow::show_vwindow"); vwindow->gui->show_window(0); @@ -1845,7 +1851,6 @@ void MWindow::show_vwindow() total_running++; } -//printf("MWindow::show_vwindow %d %d\n", __LINE__, vwindows.size()); // If no windows visible if(!total_running) { @@ -2121,9 +2126,9 @@ SET_TRACE for(int i = 0; i < plugin_guis->total; i++) { // Pointer comparison - if(plugin_guis->values[i]->plugin == plugin) + if(plugin_guis->get(i)->plugin == plugin) { - plugin_guis->values[i]->raise_window(); + plugin_guis->get(i)->raise_window(); done = 1; break; } @@ -2169,9 +2174,9 @@ void MWindow::hide_plugin(Plugin *plugin, int lock) if(lock) plugin_gui_lock->lock("MWindow::hide_plugin"); for(int i = 0; i < plugin_guis->total; i++) { - if(plugin_guis->values[i]->plugin == plugin) + if(plugin_guis->get(i)->plugin == plugin) { - PluginServer *ptr = plugin_guis->values[i]; + PluginServer *ptr = plugin_guis->get(i); plugin_guis->remove(ptr); if(lock) plugin_gui_lock->unlock(); // Last command executed in client side close @@ -2280,7 +2285,7 @@ void MWindow::update_plugin_guis(int do_keyframe_guis) { for(int i = 0; i < track->plugin_set.size(); i++) { - Plugin *plugin = (Plugin*)track->plugin_set.get(i)->first; + Plugin *plugin = (Plugin*)track->plugin_set[i]->first; while(plugin) { int got_it = 0; @@ -2315,7 +2320,7 @@ int MWindow::plugin_gui_open(Plugin *plugin) plugin_gui_lock->lock("MWindow::plugin_gui_open"); for(int i = 0; i < plugin_guis->total; i++) { - if(plugin_guis->values[i]->plugin->identical_location(plugin)) + if(plugin_guis->get(i)->plugin->identical_location(plugin)) { result = 1; break; @@ -2330,9 +2335,9 @@ void MWindow::render_plugin_gui(void *data, Plugin *plugin) plugin_gui_lock->lock("MWindow::render_plugin_gui"); for(int i = 0; i < plugin_guis->total; i++) { - if(plugin_guis->values[i]->plugin->identical_location(plugin)) + if(plugin_guis->get(i)->plugin->identical_location(plugin)) { - plugin_guis->values[i]->render_gui(data); + plugin_guis->get(i)->render_gui(data); break; } } @@ -2344,9 +2349,9 @@ void MWindow::render_plugin_gui(void *data, int size, Plugin *plugin) plugin_gui_lock->lock("MWindow::render_plugin_gui"); for(int i = 0; i < plugin_guis->total; i++) { - if(plugin_guis->values[i]->plugin->identical_location(plugin)) + if(plugin_guis->get(i)->plugin->identical_location(plugin)) { - plugin_guis->values[i]->render_gui(data, size); + plugin_guis->get(i)->render_gui(data, size); break; } } @@ -2361,8 +2366,8 @@ void MWindow::update_plugin_states() { int result = 0; // Get a plugin GUI - Plugin *src_plugin = plugin_guis->values[i]->plugin; - PluginServer *src_plugingui = plugin_guis->values[i]; + Plugin *src_plugin = plugin_guis->get(i)->plugin; + PluginServer *src_plugingui = plugin_guis->get(i); // Search for plugin in EDL. Only the master EDL shows plugin GUIs. for(Track *track = edl->tracks->first; @@ -2373,7 +2378,7 @@ void MWindow::update_plugin_states() j < track->plugin_set.total && !result; j++) { - PluginSet *plugin_set = track->plugin_set.values[j]; + PluginSet *plugin_set = track->plugin_set[j]; for(Plugin *plugin = (Plugin*)plugin_set->first; plugin && !result; plugin = (Plugin*)plugin->next) @@ -2400,7 +2405,7 @@ void MWindow::update_plugin_titles() { for(int i = 0; i < plugin_guis->total; i++) { - plugin_guis->values[i]->update_title(); + plugin_guis->get(i)->update_title(); } } @@ -2536,21 +2541,21 @@ void MWindow::update_project(int load_mode) if(session->show_vwindow) first_vwindow = 1; // Change visible windows to no source for(int i = 0; i < first_vwindow && i < vwindows.size(); i++) { - VWindow *vwindow = vwindows.get(i); + VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; vwindow->change_source(-1); } // Close remaining windows for(int i = first_vwindow; i < vwindows.size(); i++) { - VWindow *vwindow = vwindows.get(i); + VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; vwindow->close_window(); } if(debug) PRINT_TRACE } else if(vwindows.size()) { - VWindow *vwindow = vwindows.get(DEFAULT_VWINDOW); + VWindow *vwindow = vwindows[DEFAULT_VWINDOW]; if( vwindow->is_running() ) { vwindow->gui->lock_window("MWindow::update_project"); vwindow->update(1); @@ -2597,7 +2602,7 @@ void MWindow::rebuild_indices() { for(int i = 0; i < session->drag_assets->total; i++) { - Indexable *indexable = session->drag_assets->values[i]; + Indexable *indexable = session->drag_assets->get(i); //printf("MWindow::rebuild_indices 1 %s\n", indexable->path); remove_indexfile(indexable); // Schedule index build @@ -2714,7 +2719,7 @@ void MWindow::reset_caches() cwindow->playback_engine->video_cache->remove_all(); for(int i = 0; i < vwindows.size(); i++) { - VWindow *vwindow = vwindows.get(i); + VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; if(vwindow->playback_engine && vwindow->playback_engine->audio_cache) vwindow->playback_engine->audio_cache->remove_all(); @@ -2734,7 +2739,7 @@ void MWindow::remove_asset_from_caches(Asset *asset) if( cwindow->playback_engine && cwindow->playback_engine->video_cache ) cwindow->playback_engine->video_cache->delete_entry(asset); for(int i = 0; i < vwindows.size(); i++) { - VWindow *vwindow = vwindows.get(i); + VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; if(vwindow->playback_engine && vwindow->playback_engine->audio_cache) vwindow->playback_engine->audio_cache->delete_entry(asset); @@ -2744,20 +2749,20 @@ void MWindow::remove_asset_from_caches(Asset *asset) } - -void MWindow::remove_assets_from_project(int push_undo) +void MWindow::remove_assets_from_project(int push_undo, int redraw, + ArrayList *drag_assets, ArrayList *drag_clips) { for(int i = 0; i < session->drag_assets->total; i++) { - Indexable *indexable = session->drag_assets->values[i]; + Indexable *indexable = session->drag_assets->get(i); if(indexable->is_asset) remove_asset_from_caches((Asset*)indexable); } // Remove from VWindow. for(int i = 0; i < session->drag_clips->total; i++) { for(int j = 0; j < vwindows.size(); j++) { - VWindow *vwindow = vwindows.get(j); + VWindow *vwindow = vwindows[j]; if( !vwindow->is_running() ) continue; - if(session->drag_clips->values[i] == vwindow->get_edl()) { + if(session->drag_clips->get(i) == vwindow->get_edl()) { vwindow->gui->lock_window("MWindow::remove_assets_from_project 1"); vwindow->delete_source(1, 1); vwindow->gui->unlock_window(); @@ -2767,7 +2772,7 @@ void MWindow::remove_assets_from_project(int push_undo) for(int i = 0; i < session->drag_assets->size(); i++) { for(int j = 0; j < vwindows.size(); j++) { - VWindow *vwindow = vwindows.get(j); + VWindow *vwindow = vwindows[j]; if( !vwindow->is_running() ) continue; if(session->drag_assets->get(i) == vwindow->get_source()) { vwindow->gui->lock_window("MWindow::remove_assets_from_project 2"); @@ -2778,35 +2783,38 @@ void MWindow::remove_assets_from_project(int push_undo) } for(int i = 0; i < session->drag_assets->size(); i++) { - Indexable *indexable = session->drag_assets->values[i]; + Indexable *indexable = session->drag_assets->get(i); remove_indexfile(indexable); } //printf("MWindow::rebuild_indices 1 %s\n", indexable->path); if(push_undo) undo->update_undo_before(); - edl->remove_from_project(session->drag_assets); - edl->remove_from_project(session->drag_clips); - save_backup(); + if(drag_assets) edl->remove_from_project(drag_assets); + if(drag_clips) edl->remove_from_project(session->drag_clips); + if(redraw) save_backup(); if(push_undo) undo->update_undo_after(_("remove assets"), LOAD_ALL); - restart_brender(); - - gui->lock_window("MWindow::remove_assets_from_project 3"); - gui->update(1, - 1, - 1, - 1, - 0, - 1, - 0); - gui->unlock_window(); - - awindow->gui->lock_window("MWindow::remove_assets_from_project 4"); - awindow->gui->update_assets(); - awindow->gui->flush(); - awindow->gui->unlock_window(); + if(redraw) + { + restart_brender(); + + gui->lock_window("MWindow::remove_assets_from_project 3"); + gui->update(1, + 1, + 1, + 1, + 0, + 1, + 0); + gui->unlock_window(); + + awindow->gui->lock_window("MWindow::remove_assets_from_project 4"); + awindow->gui->update_assets(); + awindow->gui->flush(); + awindow->gui->unlock_window(); -// Removes from playback here - sync_parameters(CHANGE_ALL); + // Removes from playback here + sync_parameters(CHANGE_ALL); + } } void MWindow::remove_assets_from_disk() @@ -2814,10 +2822,13 @@ void MWindow::remove_assets_from_disk() // Remove from disk for(int i = 0; i < session->drag_assets->total; i++) { - remove(session->drag_assets->values[i]->path); + remove(session->drag_assets->get(i)->path); } - remove_assets_from_project(1); + remove_assets_from_project(1, + 1, + session->drag_assets, + session->drag_clips); } void MWindow::dump_plugins(FILE *fp) @@ -2827,15 +2838,15 @@ void MWindow::dump_plugins(FILE *fp) { fprintf(fp, "type=%d audio=%d video=%d rt=%d multi=%d" " synth=%d transition=%d theme=%d %s\n", - plugindb->values[i]->plugin_type, - plugindb->values[i]->audio, - plugindb->values[i]->video, - plugindb->values[i]->realtime, - plugindb->values[i]->multichannel, - plugindb->values[i]->get_synthesis(), - plugindb->values[i]->transition, - plugindb->values[i]->theme, - plugindb->values[i]->title); + plugindb->get(i)->plugin_type, + plugindb->get(i)->audio, + plugindb->get(i)->video, + plugindb->get(i)->realtime, + plugindb->get(i)->multichannel, + plugindb->get(i)->get_synthesis(), + plugindb->get(i)->transition, + plugindb->get(i)->theme, + plugindb->get(i)->title); } } @@ -2903,7 +2914,7 @@ int MWindow::save_defaults() for(int i = 0; i < plugin_guis->total; i++) { // Pointer comparison - plugin_guis->values[i]->save_defaults(); + plugin_guis->get(i)->save_defaults(); } awindow->save_defaults(defaults); @@ -3073,7 +3084,7 @@ int MWindow::reset_meters() cwindow->gui->unlock_window(); for(int j = 0; j < vwindows.size(); j++) { - VWindow *vwindow = vwindows.get(j); + VWindow *vwindow = vwindows[j]; if( !vwindow->is_running() ) continue; vwindow->gui->lock_window("MWindow::reset_meters 2"); vwindow->gui->meters->reset_meters(); @@ -3108,7 +3119,7 @@ void MWindow::resync_guis() cwindow->gui->unlock_window(); for(int i = 0; i < vwindows.size(); i++) { - VWindow *vwindow = vwindows.get(i); + VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; vwindow->gui->lock_window("MWindow::resync_guis"); vwindow->gui->resize_event(vwindow->gui->get_w(), @@ -3266,6 +3277,6 @@ void MWindow::dump_plugindb(FILE *fp) { if( !plugindb ) return; for(int i = 0; i < plugindb->total; i++) - plugindb->values[i]->dump(fp); + plugindb->get(i)->dump(fp); } diff --git a/cinelerra-5.0/cinelerra/mwindow.h b/cinelerra-5.0/cinelerra/mwindow.h index 7d7d2ce5..97581ca8 100644 --- a/cinelerra-5.0/cinelerra/mwindow.h +++ b/cinelerra-5.0/cinelerra/mwindow.h @@ -413,6 +413,7 @@ public: void paste_audio_transition(); void paste_video_transition(); void shuffle_edits(); + void reverse_edits(); void align_edits(); void set_edit_length(double length); // Set length of single transition @@ -425,7 +426,10 @@ public: // Asset removal from caches void reset_caches(); void remove_asset_from_caches(Asset *asset); - void remove_assets_from_project(int push_undo = 0); + void remove_assets_from_project(int push_undo /* = 0 */, + int redraw /* 1 */, + ArrayList *drag_assets /* mwindow->session->drag_assets */, + ArrayList *drag_clips /* mwindow->session->drag_clips */); void remove_assets_from_disk(); void resize_track(Track *track, int w, int h); @@ -471,8 +475,6 @@ public: static void trap_hook(FILE *fp, void *vp); void reset_android_remote(); - - // Send new EDL to caches void age_caches(); diff --git a/cinelerra-5.0/cinelerra/mwindowedit.C b/cinelerra-5.0/cinelerra/mwindowedit.C index a8f798df..17fa1c7c 100644 --- a/cinelerra-5.0/cinelerra/mwindowedit.C +++ b/cinelerra-5.0/cinelerra/mwindowedit.C @@ -36,6 +36,7 @@ #include "edlsession.h" #include "filexml.h" #include "floatauto.h" +#include "floatautos.h" #include "gwindow.h" #include "gwindowgui.h" #include "keyframe.h" @@ -221,8 +222,8 @@ void MWindow::asset_to_all() current; current = NEXT) { - if(current->data_type == TRACK_VIDEO && - current->record) + if(current->data_type == TRACK_VIDEO /* && + current->record */ ) { current->track_w = w; current->track_h = h; @@ -2060,6 +2061,25 @@ void MWindow::shuffle_edits() gui->unlock_window(); } +void MWindow::reverse_edits() +{ + gui->lock_window("MWindow::reverse_edits 1"); + + undo->update_undo_before(); + double start = edl->local_session->get_selectionstart(); + double end = edl->local_session->get_selectionend(); + + edl->tracks->reverse_edits(start, end); + + save_backup(); + undo->update_undo_after(_("reverse edits"), LOAD_EDITS | LOAD_TIMEBAR); + + sync_parameters(CHANGE_EDL); + restart_brender(); + gui->update(0, 1, 1, 0, 0, 0, 0); + gui->unlock_window(); +} + void MWindow::align_edits() { gui->lock_window("MWindow::align_edits 1"); @@ -2152,17 +2172,26 @@ void MWindow::redo_entry(BC_WindowBase *calling_window_gui) for(int i = 0; i < vwindows.size(); i++) { - vwindows.get(i)->playback_engine->que->send_command(STOP, - CHANGE_NONE, - 0, - 0); - vwindows.get(i)->playback_engine->interrupt_playback(0); + if(vwindows.get(i)->is_running()) + { + vwindows.get(i)->playback_engine->que->send_command(STOP, + CHANGE_NONE, + 0, + 0); + vwindows.get(i)->playback_engine->interrupt_playback(0); + } } cwindow->gui->lock_window("MWindow::redo_entry"); for(int i = 0; i < vwindows.size(); i++) { - vwindows.get(i)->gui->lock_window("MWindow::redo_entry 2"); + if(vwindows.get(i)->is_running()) + { + if (calling_window_gui != vwindows.get(i)->gui) + { + vwindows.get(i)->gui->lock_window("MWindow::redo_entry 2"); + } + } } gui->lock_window(); @@ -2183,8 +2212,13 @@ void MWindow::redo_entry(BC_WindowBase *calling_window_gui) for(int i = 0; i < vwindows.size(); i++) { - if (calling_window_gui != vwindows.get(i)->gui) - vwindows.get(i)->gui->unlock_window(); + if(vwindows.get(i)->is_running()) + { + if (calling_window_gui != vwindows.get(i)->gui) + { + vwindows.get(i)->gui->unlock_window(); + } + } } cwindow->playback_engine->que->send_command(CURRENT_FRAME, @@ -2443,20 +2477,29 @@ void MWindow::undo_entry(BC_WindowBase *calling_window_gui) 0); cwindow->playback_engine->interrupt_playback(0); - +printf("MWindow::undo_entry %d %d\n", __LINE__, vwindows.size()); for(int i = 0; i < vwindows.size(); i++) { - vwindows.get(i)->playback_engine->que->send_command(STOP, - CHANGE_NONE, - 0, - 0); - vwindows.get(i)->playback_engine->interrupt_playback(0); + if(vwindows.get(i)->is_running()) + { + vwindows.get(i)->playback_engine->que->send_command(STOP, + CHANGE_NONE, + 0, + 0); + vwindows.get(i)->playback_engine->interrupt_playback(0); + } } cwindow->gui->lock_window("MWindow::undo_entry 1"); for(int i = 0; i < vwindows.size(); i++) { - vwindows.get(i)->gui->lock_window("MWindow::undo_entry 4"); + if(vwindows.get(i)->is_running()) + { + if (calling_window_gui != vwindows.get(i)->gui) + { + vwindows.get(i)->gui->lock_window("MWindow::undo_entry 4"); + } + } } gui->lock_window("MWindow::undo_entry 2"); @@ -2479,8 +2522,13 @@ void MWindow::undo_entry(BC_WindowBase *calling_window_gui) for(int i = 0; i < vwindows.size(); i++) { - if (calling_window_gui != vwindows.get(i)->gui) - vwindows.get(i)->gui->unlock_window(); + if(vwindows.get(i)->is_running()) + { + if (calling_window_gui != vwindows.get(i)->gui) + { + vwindows.get(i)->gui->unlock_window(); + } + } } if (calling_window_gui != gui) @@ -2635,3 +2683,4 @@ void MWindow::cut_commercials() send_command(CURRENT_FRAME, CHANGE_EDL, edl, 1); } + diff --git a/cinelerra-5.0/cinelerra/mwindowgui.C b/cinelerra-5.0/cinelerra/mwindowgui.C index b0c0f53f..8c5b4726 100644 --- a/cinelerra-5.0/cinelerra/mwindowgui.C +++ b/cinelerra-5.0/cinelerra/mwindowgui.C @@ -25,6 +25,7 @@ #include "bcdisplayinfo.h" #include "bchash.h" #include "bcsignals.h" +#include "clip.h" #include "cwindowgui.h" #include "cwindow.h" #include "channelinfo.h" @@ -70,7 +71,7 @@ #include "vwindow.h" #include "zoombar.h" -#define PANE_DRAG_MARGIN 50 +#define PANE_DRAG_MARGIN MAX(mwindow->theme->pane_w, mwindow->theme->pane_h) // the main window uses its own private colormap for video @@ -394,6 +395,54 @@ int MWindowGUI::resize_event(int w, int h) resource_thread->stop_draw(1); + if(total_panes() > 1) + { + if(horizontal_panes()) + { +// printf("MWindowGUI::resize_event %d %d %d\n", +// __LINE__, +// pane[TOP_RIGHT_PANE]->x, +// mwindow->theme->mcanvas_w - +// BC_ScrollBar::get_span(SCROLL_VERT) - +// PANE_DRAG_MARGIN); + if(pane[TOP_RIGHT_PANE]->x >= mwindow->theme->mcanvas_w - + BC_ScrollBar::get_span(SCROLL_VERT) - + PANE_DRAG_MARGIN) + { + delete_x_pane(pane[TOP_RIGHT_PANE]->x); + mwindow->edl->local_session->x_pane = -1; + } + } + else + if(vertical_panes()) + { + if(pane[BOTTOM_LEFT_PANE]->y >= mwindow->theme->mzoom_y - + BC_ScrollBar::get_span(SCROLL_HORIZ) - + PANE_DRAG_MARGIN) + { + delete_y_pane(pane[BOTTOM_LEFT_PANE]->y); + mwindow->edl->local_session->y_pane = -1; + } + } + else + { + if(pane[TOP_RIGHT_PANE]->x >= mwindow->theme->mcanvas_w - + BC_ScrollBar::get_span(SCROLL_VERT) - + PANE_DRAG_MARGIN) + { + delete_x_pane(pane[TOP_RIGHT_PANE]->x); + mwindow->edl->local_session->x_pane = -1; + } + + if(pane[BOTTOM_LEFT_PANE]->y >= mwindow->theme->mzoom_y - + BC_ScrollBar::get_span(SCROLL_HORIZ) - + PANE_DRAG_MARGIN) + { + delete_y_pane(pane[BOTTOM_LEFT_PANE]->y); + mwindow->edl->local_session->y_pane = -1; + } + } + } if(total_panes() == 1) { @@ -474,7 +523,8 @@ int MWindowGUI::resize_event(int w, int h) // get_scrollbars(0); // canvas->resize_event(); //printf("MWindowGUI::resize_event %d\n", __LINE__); - flash(0); +// required to get new widgets to appear after a pane deletion + show_window(); return 0; } diff --git a/cinelerra-5.0/cinelerra/new.C b/cinelerra-5.0/cinelerra/new.C index fe137644..c0f234ae 100644 --- a/cinelerra-5.0/cinelerra/new.C +++ b/cinelerra-5.0/cinelerra/new.C @@ -53,7 +53,7 @@ New::New(MWindow *mwindow) - : BC_MenuItem(_("New..."), "n", 'n') + : BC_MenuItem(_("New"), "n", 'n') { this->mwindow = mwindow; script = 0; @@ -74,7 +74,10 @@ void New::create_objects() int New::handle_event() { mwindow->gui->unlock_window(); - thread->start(); + mwindow->edl->save_defaults(mwindow->defaults); + create_new_edl(); + create_new_project(); +// thread->start(); mwindow->gui->lock_window("New::handle_event"); return 1; @@ -143,6 +146,7 @@ NewThread::NewThread(MWindow *mwindow, New *new_project) { this->mwindow = mwindow; this->new_project = new_project; + nwindow = 0; } NewThread::~NewThread() diff --git a/cinelerra-5.0/cinelerra/overlayframe.C b/cinelerra-5.0/cinelerra/overlayframe.C index 187bcadd..c660dbbb 100644 --- a/cinelerra-5.0/cinelerra/overlayframe.C +++ b/cinelerra-5.0/cinelerra/overlayframe.C @@ -394,12 +394,12 @@ int OverlayFrame::overlay(VFrame *output, VFrame *input, // MAX [max(Sa, Da), MAX(Sc, Dc)] #define ALPHA_MAX(mx, Sa, Da) (Sa > Da ? Sa : Da) #define COLOR_MAX(mx, Sc, Sa, Dc, Da) (Sc > Dc ? Sc : Dc) -#define CHROMA_MAX(mx, Sc, Sa, Dc, Da) (Sc > Dc ? Sc : Dc) +#define CHROMA_MAX(mx, Sc, Sa, Dc, Da) (mabs(Sc) > mabs(Dc) ? Sc : Dc) // MIN [min(Sa, Da), MIN(Sc, Dc)] #define ALPHA_MIN(mx, Sa, Da) (Sa < Da ? Sa : Da) #define COLOR_MIN(mx, Sc, Sa, Dc, Da) (Sc < Dc ? Sc : Dc) -#define CHROMA_MIN(mx, Sc, Sa, Dc, Da) (Sc < Dc ? Sc : Dc) +#define CHROMA_MIN(mx, Sc, Sa, Dc, Da) (mabs(Sc) < mabs(Dc) ? Sc : Dc) // AVERAGE [(Sa + Da) * 0.5, (Sc + Dc) * 0.5] #define ALPHA_AVERAGE(mx, Sa, Da) ((Sa + Da) / 2) @@ -409,12 +409,12 @@ int OverlayFrame::overlay(VFrame *output, VFrame *input, // DARKEN [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] #define ALPHA_DARKEN(mx, Sa, Da) (Sa + Da - (Sa * Da) / mx) #define COLOR_DARKEN(mx, Sc, Sa, Dc, Da) ((Sc * (mx - Da) + Dc * (mx - Sa)) / mx + (Sc < Dc ? Sc : Dc)) -#define CHROMA_DARKEN COLOR_DARKEN +#define CHROMA_DARKEN(mx, Sc, Sa, Dc, Da) ((Sc * (mx - Da) + Dc * (mx - Sa)) / mx + (mabs(Sc) < mabs(Dc) ? Sc : Dc)) // LIGHTEN [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)] #define ALPHA_LIGHTEN(mx, Sa, Da) (Sa + Da - Sa * Da / mx) #define COLOR_LIGHTEN(mx, Sc, Sa, Dc, Da) ((Sc * (mx - Da) + Dc * (mx - Sa)) / mx + (Sc > Dc ? Sc : Dc)) -#define CHROMA_LIGHTEN COLOR_LIGHTEN +#define CHROMA_LIGHTEN(mx, Sc, Sa, Dc, Da) ((Sc * (mx - Da) + Dc * (mx - Sa)) / mx + (mabs(Sc) > mabs(Dc) ? Sc : Dc)) // DST [Da, Dc] #define ALPHA_DST(mx, Sa, Da) Da diff --git a/cinelerra-5.0/cinelerra/patchgui.C b/cinelerra-5.0/cinelerra/patchgui.C index 73fda403..66c295c3 100644 --- a/cinelerra-5.0/cinelerra/patchgui.C +++ b/cinelerra-5.0/cinelerra/patchgui.C @@ -208,7 +208,7 @@ int PatchGUI::update(int x, int y) if(h - y1 >= mwindow->theme->play_h) { patchbay->add_subwindow(play = new PlayPatch(mwindow, this, x1 + x, y1 + y)); -//printf("PatchGUI::update 1 %p %p\n", play, &play->status); +//printf("PatchGUI::update %d %d\n", __LINE__, play->get_h()); x1 += play->get_w(); patchbay->add_subwindow(record = new RecordPatch(mwindow, this, x1 + x, y1 + y)); x1 += record->get_w(); diff --git a/cinelerra-5.0/cinelerra/pluginarray.C b/cinelerra-5.0/cinelerra/pluginarray.C index 92dc342a..0059e23f 100644 --- a/cinelerra-5.0/cinelerra/pluginarray.C +++ b/cinelerra-5.0/cinelerra/pluginarray.C @@ -189,14 +189,14 @@ int PluginArray::run_plugins() error = 0; if(plugin_server->realtime) { - int64_t len; + int64_t len = 0; MainProgressBar *progress; char string[BCTEXTLEN], string2[BCTEXTLEN]; sprintf(string, _("%s..."), plugin_server->title); progress = mwindow->mainprogress->start_progress(string, end - start); - for(int current_position = start; + for(int64_t current_position = start; current_position < end && !done && !error; current_position += len) { diff --git a/cinelerra-5.0/cinelerra/pluginclient.C b/cinelerra-5.0/cinelerra/pluginclient.C index 0dbe601f..64c7d53f 100644 --- a/cinelerra-5.0/cinelerra/pluginclient.C +++ b/cinelerra-5.0/cinelerra/pluginclient.C @@ -293,6 +293,8 @@ int PluginClient::plugin_start_loop(int64_t start, int64_t buffer_size, int total_buffers) { +//printf("PluginClient::plugin_start_loop %d %ld %ld %ld %d\n", +// __LINE__, start, end, buffer_size, total_buffers); this->source_start = start; this->total_len = end - start; this->start = start; diff --git a/cinelerra-5.0/cinelerra/pluginserver.C b/cinelerra-5.0/cinelerra/pluginserver.C index 66abd3bd..17e1b17e 100644 --- a/cinelerra-5.0/cinelerra/pluginserver.C +++ b/cinelerra-5.0/cinelerra/pluginserver.C @@ -530,14 +530,19 @@ void PluginServer::process_buffer(VFrame **frame, vclient->input[i] = frame[i]; vclient->output[i] = frame[i]; } - vclient->source_start = (int64_t)(plugin ? - plugin->startproject * - frame_rate / - vclient->project_frame_rate : - 0); + + if(plugin) + { + vclient->source_start = (int64_t)plugin->startproject * + frame_rate / + vclient->project_frame_rate; + } vclient->direction = direction; +//PRINT_TRACE +//printf("plugin=%p source_start=%ld\n", plugin, vclient->source_start); + vclient->begin_process_buffer(); if(multichannel) { @@ -660,6 +665,10 @@ int PluginServer::get_parameters(int64_t start, int64_t end, int channels) client->source_start = start; client->total_len = end - start; client->total_in_buffers = channels; + +//PRINT_TRACE +//printf(" source_start=%ld total_len=%ld\n", client->source_start, client->total_len); + return client->plugin_get_parameters(); } @@ -802,6 +811,7 @@ int PluginServer::read_frame(VFrame *buffer, // If we're a VirtualNode, read_data in the virtual plugin node handles // backward propogation and produces the data. // If we're a Module, render in the module produces the data. +//PRINT_TRACE int result = -1; if(!multichannel) channel = 0; diff --git a/cinelerra-5.0/cinelerra/pluginvclient.C b/cinelerra-5.0/cinelerra/pluginvclient.C index 2c063d61..51a8f08f 100644 --- a/cinelerra-5.0/cinelerra/pluginvclient.C +++ b/cinelerra-5.0/cinelerra/pluginvclient.C @@ -19,6 +19,7 @@ * */ +#include "bcsignals.h" #include "edl.h" #include "edlsession.h" #include "pluginserver.h" @@ -164,8 +165,9 @@ int PluginVClient::process_buffer(VFrame **frame, int64_t start_position, double frame_rate) { +//PRINT_TRACE for(int i = 0; i < PluginClient::total_in_buffers; i++) - read_frame(frame[i], i, start_position, frame_rate); + read_frame(frame[i], i, start_position, frame_rate, 0); if(is_multichannel()) process_realtime(frame, frame); return 0; @@ -175,27 +177,12 @@ int PluginVClient::process_buffer(VFrame *frame, int64_t start_position, double frame_rate) { - read_frame(frame, 0, start_position, frame_rate); + read_frame(frame, 0, start_position, frame_rate, 0); process_realtime(frame, frame); return 0; } -// Replaced by pull method -// void PluginVClient::plugin_process_realtime(VFrame **input, -// VFrame **output, -// int64_t current_position, -// int64_t total_len) -// { -// this->source_position = current_position; -// this->total_len = total_len; -// -// if(is_multichannel()) -// process_realtime(input, output); -// else -// process_realtime(input[0], output[0]); -// } - int PluginVClient::plugin_start_loop(int64_t start, int64_t end, int64_t buffer_size, diff --git a/cinelerra-5.0/cinelerra/pluginvclient.h b/cinelerra-5.0/cinelerra/pluginvclient.h index 3444370a..1493c92b 100644 --- a/cinelerra-5.0/cinelerra/pluginvclient.h +++ b/cinelerra-5.0/cinelerra/pluginvclient.h @@ -104,7 +104,7 @@ public: int channel, int64_t start_position, double frame_rate, - int use_opengl = 0); + int use_opengl /* = 0 */); // User calls this to request an opengl routine to be run synchronously. diff --git a/cinelerra-5.0/cinelerra/render.C b/cinelerra-5.0/cinelerra/render.C index 5998aa57..53adbf90 100644 --- a/cinelerra-5.0/cinelerra/render.C +++ b/cinelerra-5.0/cinelerra/render.C @@ -608,15 +608,15 @@ int Render::load_defaults(Asset *asset) strategy = mwindow->defaults->get("RENDER_STRATEGY", SINGLE_PASS); load_mode = mwindow->defaults->get("RENDER_LOADMODE", LOADMODE_NEW_TRACKS); +// some defaults which work + asset->video_data = 1; + asset->audio_data = 1; + asset->format = FILE_FFMPEG; + strcpy(asset->acodec, "mp4.qt"); + strcpy(asset->vcodec, "mp4.qt"); asset->load_defaults(mwindow->defaults, - "RENDER_", - 1, - 1, - 1, - 1, - 1); - + "RENDER_", 1, 1, 1, 1, 1); return 0; } diff --git a/cinelerra-5.0/cinelerra/scopewindow.C b/cinelerra-5.0/cinelerra/scopewindow.C index c13093cd..966b5736 100644 --- a/cinelerra-5.0/cinelerra/scopewindow.C +++ b/cinelerra-5.0/cinelerra/scopewindow.C @@ -675,7 +675,7 @@ void ScopeGUI::toggle_event() void ScopeGUI::calculate_sizes(int w, int h) { int margin = theme->widget_border; - int text_w = 20; + int text_w = get_text_width(SMALLFONT, "000") + margin * 2; int total_panels = ((use_hist || use_hist_parade) ? 1 : 0) + ((use_wave || use_wave_parade) ? 1 : 0) + (use_vector ? 1 : 0); @@ -794,6 +794,13 @@ int ScopeGUI::translation_event() void ScopeGUI::draw_overlays(int overlays, int borders, int flush) { + BC_Resources *resources = BC_WindowBase::get_resources(); + int text_color = GREEN; + if(resources->bg_color == 0xffffff) + { + text_color = BLACK; + } + if(overlays && borders) { clear_box(0, 0, get_w(), get_h()); @@ -802,7 +809,7 @@ void ScopeGUI::draw_overlays(int overlays, int borders, int flush) if(overlays) { set_line_dashes(1); - set_color(GREEN); + set_color(text_color); set_font(SMALLFONT); if(histogram && (use_hist || use_hist_parade)) @@ -824,18 +831,18 @@ void ScopeGUI::draw_overlays(int overlays, int borders, int flush) // Waveform overlay if(waveform && (use_wave || use_wave_parade)) { - set_color(GREEN); + set_color(text_color); for(int i = 0; i <= WAVEFORM_DIVISIONS; i++) { int y = wave_h * i / WAVEFORM_DIVISIONS; int text_y = y + wave_y + get_text_ascent(SMALLFONT) / 2; CLAMP(text_y, waveform->get_y() + get_text_ascent(SMALLFONT), waveform->get_y() + waveform->get_h() - 1); - int x = wave_x - 20; char string[BCTEXTLEN]; sprintf(string, "%d", (int)((FLOAT_MAX - i * (FLOAT_MAX - FLOAT_MIN) / WAVEFORM_DIVISIONS) * 100)); - draw_text(x, text_y, string); + int text_x = wave_x - get_text_width(SMALLFONT, string) - theme->widget_border; + draw_text(text_x, text_y, string); int y1 = CLAMP(y, 0, waveform->get_h() - 1); waveform->draw_line(0, y1, wave_w, y1); @@ -851,13 +858,12 @@ void ScopeGUI::draw_overlays(int overlays, int borders, int flush) // Vectorscope overlay if(vectorscope && use_vector) { - set_color(GREEN); + set_color(text_color); int radius = MIN(vector_w / 2, vector_h / 2); for(int i = 1; i <= VECTORSCOPE_DIVISIONS; i += 2) { int x = vector_w / 2 - radius * i / VECTORSCOPE_DIVISIONS; int y = vector_h / 2 - radius * i / VECTORSCOPE_DIVISIONS; - int text_x = vector_x - 20; int text_y = y + vector_y + get_text_ascent(SMALLFONT) / 2; int w = radius * i / VECTORSCOPE_DIVISIONS * 2; int h = radius * i / VECTORSCOPE_DIVISIONS * 2; @@ -865,6 +871,7 @@ void ScopeGUI::draw_overlays(int overlays, int borders, int flush) sprintf(string, "%d", (int)((FLOAT_MAX / VECTORSCOPE_DIVISIONS * i) * 100)); + int text_x = vector_x - get_text_width(SMALLFONT, string) - theme->widget_border; draw_text(text_x, text_y, string); //printf("ScopeGUI::draw_overlays %d %d %d %s\n", __LINE__, text_x, text_y, string); diff --git a/cinelerra-5.0/cinelerra/theme.C b/cinelerra-5.0/cinelerra/theme.C index 9ed4ce30..f3137a25 100644 --- a/cinelerra-5.0/cinelerra/theme.C +++ b/cinelerra-5.0/cinelerra/theme.C @@ -520,10 +520,6 @@ void Theme::build_toggle(VFrame** &data, &default_data); } -#define TIMEBAR_HEIGHT 10 -#define PATCHBAY_W 145 -#define STATUS_H 20 -#define ZOOM_H 30 void Theme::get_mwindow_sizes(MWindowGUI *gui, int w, int h) { diff --git a/cinelerra-5.0/cinelerra/track.C b/cinelerra-5.0/cinelerra/track.C index 30922045..253f1c88 100644 --- a/cinelerra-5.0/cinelerra/track.C +++ b/cinelerra-5.0/cinelerra/track.C @@ -1621,6 +1621,122 @@ void Track::shuffle_edits(double start, double end, int first_track) } } +// exactly the same as shuffle_edits except for 1 line +void Track::reverse_edits(double start, double end, int first_track) +{ + ArrayList new_edits; + ArrayList new_labels; + int64_t start_units = to_units(start, 0); + int64_t end_units = to_units(end, 0); +// Sample range of all edits selected + //int64_t total_start_units = 0; + //int64_t total_end_units = 0; +// Edit before range + Edit *start_edit = 0; + int have_start_edit = 0; + +// Move all edit pointers to list + for(Edit *current = edits->first; + current; ) + { + if(current->startproject >= start_units && + current->startproject + current->length <= end_units) + { + if(!have_start_edit) start_edit = current->previous; + have_start_edit = 1; + //total_start_units = current->startproject; + //total_end_units = current->startproject + current->length; + new_edits.append(current); + +// Move label pointers + if(first_track && edl->session->labels_follow_edits) + { + double start_seconds = from_units(current->startproject); + double end_seconds = from_units(current->startproject + + current->length); + for(Label *label = edl->labels->first; + label; + label = label->next) + { + if(label->position >= start_seconds && + label->position < end_seconds) + { + new_labels.append(label); + edl->labels->remove_pointer(label); + } + } + } + +// Remove edit pointer + Edit *previous = current; + current = NEXT; + edits->remove_pointer(previous); + } + else + { + current = NEXT; + } + } + +// Insert pointers in reverse order + while(new_edits.size()) + { + int index = new_edits.size() - 1; + Edit *edit = new_edits.get(index); + new_edits.remove_number(index); + edits->insert_after(start_edit, edit); + start_edit = edit; + +// Recalculate start position +// Save old position for moving labels + int64_t startproject1 = edit->startproject; + int64_t startproject2 = 0; + if(edit->previous) + { + edit->startproject = + startproject2 = + edit->previous->startproject + edit->previous->length; + } + else + { + edit->startproject = startproject2 = 0; + } + + +// Insert label pointers + if(first_track && edl->session->labels_follow_edits) + { + double start_seconds1 = from_units(startproject1); + double start_seconds2 = from_units(startproject2); + //double end_seconds1 = from_units(edit->startproject + edit->length); + for(int i = new_labels.size() - 1; i >= 0; i--) + { + Label *label = new_labels.get(i); +// Was in old edit position + if(label->position >= start_seconds1 && + label->position < start_seconds2) + { +// Move to new edit position + double position = label->position - + start_seconds1 + + start_seconds2; + edl->labels->insert_label(position); + new_labels.remove_object_number(i); + } + } + } + + + } + + optimize(); + + if(first_track && edl->session->labels_follow_edits) + { + edl->labels->optimize(); + } +} + void Track::align_edits(double start, double end, ArrayList *times) diff --git a/cinelerra-5.0/cinelerra/track.h b/cinelerra-5.0/cinelerra/track.h index c8671019..d7d21bb7 100644 --- a/cinelerra-5.0/cinelerra/track.h +++ b/cinelerra-5.0/cinelerra/track.h @@ -115,6 +115,7 @@ public: // Pad pasted sections to a minimum of this length. double edl_length); void shuffle_edits(double start, double end, int first_track); + void reverse_edits(double start, double end, int first_track); void align_edits(double start, double end, ArrayList *times); diff --git a/cinelerra-5.0/cinelerra/tracks.h b/cinelerra-5.0/cinelerra/tracks.h index 1aae3642..3baf650c 100644 --- a/cinelerra-5.0/cinelerra/tracks.h +++ b/cinelerra-5.0/cinelerra/tracks.h @@ -240,6 +240,7 @@ public: void clear_transitions(double start, double end); void shuffle_edits(double start, double end); + void reverse_edits(double start, double end); void align_edits(double start, double end); void set_edit_length(double start, double end, double length); void set_transition_length(double start, double end, double length); diff --git a/cinelerra-5.0/cinelerra/tracksedit.C b/cinelerra-5.0/cinelerra/tracksedit.C index 31e535ac..0fa3b75a 100644 --- a/cinelerra-5.0/cinelerra/tracksedit.C +++ b/cinelerra-5.0/cinelerra/tracksedit.C @@ -130,6 +130,23 @@ void Tracks::shuffle_edits(double start, double end) } } +void Tracks::reverse_edits(double start, double end) +{ +// This doesn't affect automation or effects +// Labels follow the first track. + int first_track = 1; + for(Track *current_track = first; + current_track; + current_track = current_track->next) + { + if(current_track->record) + { + current_track->reverse_edits(start, end, first_track); + + first_track = 0; + } + } +} void Tracks::align_edits(double start, double end) { // This doesn't affect automation or effects diff --git a/cinelerra-5.0/cinelerra/vmodule.C b/cinelerra-5.0/cinelerra/vmodule.C index 871eeba0..c7da42b3 100644 --- a/cinelerra-5.0/cinelerra/vmodule.C +++ b/cinelerra-5.0/cinelerra/vmodule.C @@ -919,7 +919,7 @@ int VModule::render(VFrame *output, int result = 0; double edl_rate = get_edl()->session->frame_rate; -//printf("VModule::render %lld\n", start_position); +//printf("VModule::render %d %ld\n", __LINE__, start_position); if(use_nudge) start_position += Units::to_int64(track->nudge * frame_rate / @@ -940,9 +940,10 @@ int VModule::render(VFrame *output, //printf("VModule::render %d %p %ld %d\n", __LINE__, current_edit, start_position_project, direction); if(debug_render) - printf(" VModule::render %d %lld %s transition=%p opengl=%d current_edit=%p output=%p\n", + printf(" VModule::render %d %d %ld %s transition=%p opengl=%d current_edit=%p output=%p\n", + __LINE__, use_nudge, - (long long)start_position_project, + start_position_project, track->title, transition, use_opengl, diff --git a/cinelerra-5.0/cinelerra/vpluginarray.C b/cinelerra-5.0/cinelerra/vpluginarray.C index 435cbcfb..bfb57271 100644 --- a/cinelerra-5.0/cinelerra/vpluginarray.C +++ b/cinelerra-5.0/cinelerra/vpluginarray.C @@ -19,6 +19,7 @@ * */ +#include "bcsignals.h" #include "cache.h" #include "edl.h" #include "edlsession.h" @@ -99,7 +100,7 @@ void VPluginArray::process_realtime(int module, values[module]->process_buffer(realtime_buffers[module], input_position, edl->session->frame_rate, - 0, + end - start, PLAY_FORWARD); } diff --git a/cinelerra-5.0/cinelerra/vtrack.h b/cinelerra-5.0/cinelerra/vtrack.h index 98d01d3a..a2755147 100644 --- a/cinelerra-5.0/cinelerra/vtrack.h +++ b/cinelerra-5.0/cinelerra/vtrack.h @@ -32,7 +32,7 @@ #include "vedit.inc" #include "vframe.inc" -// CONVERTS FROM SAMPLES TO FRAMES + diff --git a/cinelerra-5.0/cinelerra/vtracking.C b/cinelerra-5.0/cinelerra/vtracking.C index e4713d5f..64ec559d 100644 --- a/cinelerra-5.0/cinelerra/vtracking.C +++ b/cinelerra-5.0/cinelerra/vtracking.C @@ -49,7 +49,6 @@ PlaybackEngine* VTracking::get_playback_engine() void VTracking::update_tracker(double position) { -//printf("VTracking::update_tracker %ld\n", position); vwindow->gui->lock_window("VTracking::update_tracker"); vwindow->get_edl()->local_session->set_selectionstart(position); vwindow->get_edl()->local_session->set_selectionend(position); diff --git a/cinelerra-5.0/cinelerra/vwindow.C b/cinelerra-5.0/cinelerra/vwindow.C index 57459ef9..f7e39374 100644 --- a/cinelerra-5.0/cinelerra/vwindow.C +++ b/cinelerra-5.0/cinelerra/vwindow.C @@ -21,6 +21,7 @@ #include "asset.h" #include "assets.h" +#include "bcsignals.h" #include "clip.h" #include "clipedit.h" #include "bchash.h" @@ -73,12 +74,11 @@ VWindow::~VWindow() void VWindow::delete_source(int do_main_edl, int update_gui) { +//printf("VWindow::delete_source %d %d %p %p\n", __LINE__, gui->get_window_lock(), edl, indexable); if(do_main_edl) mwindow->edl->remove_vwindow_edl(get_edl()); - if(edl) { -//printf("VWindow::delete_source %d %p\n", __LINE__, edl); edl->Garbage::remove_user(); //printf("VWindow::delete_source %d\n", __LINE__); edl = 0; @@ -93,10 +93,10 @@ void VWindow::delete_source(int do_main_edl, int update_gui) //printf("VWindow::delete_source %d\n", __LINE__); if(indexable) indexable->Garbage::remove_user(); -//printf("VWindow::delete_source %d\n", __LINE__); indexable = 0; if(update_gui) gui->change_source(0, _("Viewer")); +//printf("VWindow::delete_source %d\n", __LINE__); } @@ -109,22 +109,17 @@ void VWindow::create_objects() } -void VWindow::handle_close_event(int result) +void VWindow::handle_done_event(int result) { + playback_engine->interrupt_playback(1); delete_source(1, 0); - delete playback_engine; - delete playback_cursor; - delete clip_edit; - playback_engine = 0; - playback_cursor = 0; - clip_edit = 0; if( mwindow->in_destructor ) return; int total = 0; for(int i = 0; i < mwindow->vwindows.size(); i++) { -//printf("VWindow::handle_close_event %d %d\n", __LINE__, mwindow->vwindows.get(i)->is_running()); +//printf("VWindow::handle_done_event %d %d\n", __LINE__, mwindow->vwindows.get(i)->is_running()); if(mwindow->vwindows.get(i)->is_running()) total++; } // subtract ourselves diff --git a/cinelerra-5.0/cinelerra/vwindow.h b/cinelerra-5.0/cinelerra/vwindow.h index 1f3d541b..e75d941f 100644 --- a/cinelerra-5.0/cinelerra/vwindow.h +++ b/cinelerra-5.0/cinelerra/vwindow.h @@ -40,7 +40,7 @@ public: VWindow(MWindow *mwindow); ~VWindow(); - void handle_close_event(int result); + void handle_done_event(int result); BC_Window* new_gui(); void load_defaults(); diff --git a/cinelerra-5.0/cinelerra/zoombar.C b/cinelerra-5.0/cinelerra/zoombar.C index a7ad9979..cdc65bd1 100644 --- a/cinelerra-5.0/cinelerra/zoombar.C +++ b/cinelerra-5.0/cinelerra/zoombar.C @@ -335,7 +335,7 @@ SampleZoomPanel::SampleZoomPanel(MWindow *mwindow, 110, MIN_ZOOM_TIME, MAX_ZOOM_TIME, - ZOOM_TIME) + ZOOM_LONG) { this->mwindow = mwindow; this->zoombar = zoombar; diff --git a/cinelerra-5.0/global_config b/cinelerra-5.0/global_config index 623a0e33..4fbe48b3 100644 --- a/cinelerra-5.0/global_config +++ b/cinelerra-5.0/global_config @@ -5,7 +5,7 @@ HAVE_XFT := y HAVE_ESOUND := y HAVE_FIREWIRE := y HAVE_OSS := y -STATIC_LIBRARIES := y +STATIC_LIBRARIES := n OBJDIR := $(shell uname --machine) @@ -105,3 +105,4 @@ LOOP_BEGIN = @ for i in $(DIRS) ; \ LOOP_END = done +EXTRA_LIBS += -lnuma diff --git a/cinelerra-5.0/guicast/bccmodels.C b/cinelerra-5.0/guicast/bccmodels.C index 6abfe00f..e50193c6 100644 --- a/cinelerra-5.0/guicast/bccmodels.C +++ b/cinelerra-5.0/guicast/bccmodels.C @@ -22,7 +22,6 @@ #include #include - int BC_CModels::is_planar(int colormodel) { switch(colormodel) { diff --git a/cinelerra-5.0/guicast/bccmodels.h b/cinelerra-5.0/guicast/bccmodels.h index e4e1cba4..b6c397b3 100644 --- a/cinelerra-5.0/guicast/bccmodels.h +++ b/cinelerra-5.0/guicast/bccmodels.h @@ -73,7 +73,6 @@ #endif // !BC_TRANSPARENCY - // Access with BC_WindowBase::cmodels class BC_CModels { diff --git a/cinelerra-5.0/guicast/bcmenu.C b/cinelerra-5.0/guicast/bcmenu.C index dae98076..7cfc69fa 100644 --- a/cinelerra-5.0/guicast/bcmenu.C +++ b/cinelerra-5.0/guicast/bcmenu.C @@ -308,7 +308,7 @@ int BC_Menu::draw_title(int flash, int flush) menu_bar->set_color(resources->menu_title_text); menu_bar->set_font(MEDIUMFONT); menu_bar->draw_text(x + 10 + text_offset, - h - menu_bar->get_text_descent(MEDIUMFONT) + text_offset, + h / 2 + menu_bar->get_text_ascent(MEDIUMFONT) / 2 + 1 + text_offset, text); if(flash) menu_bar->flash(flush); diff --git a/cinelerra-5.0/guicast/bcmenubar.C b/cinelerra-5.0/guicast/bcmenubar.C index cc84f8a9..ac4dbdc6 100644 --- a/cinelerra-5.0/guicast/bcmenubar.C +++ b/cinelerra-5.0/guicast/bcmenubar.C @@ -1,7 +1,7 @@ /* * CINELERRA - * Copyright (C) 2008 Adam Williams + * Copyright (C) 2008-2015 Adam Williams * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -262,7 +262,12 @@ int BC_MenuBar::draw_face(int flash, int flush) { if(menu_bar_bg) { - draw_9segment(0, 0, get_w(), get_h(), menu_bar_bg); + draw_3segmenth(0, + 0, + get_w(), + menu_bar_bg); +// 9 segment doesn't draw properly +// draw_9segment(0, 0, get_w(), get_h(), menu_bar_bg); } else { diff --git a/cinelerra-5.0/guicast/bcmenuitem.C b/cinelerra-5.0/guicast/bcmenuitem.C index f8dbfc91..66f86953 100644 --- a/cinelerra-5.0/guicast/bcmenuitem.C +++ b/cinelerra-5.0/guicast/bcmenuitem.C @@ -26,6 +26,7 @@ #include "bcpopup.h" #include "bcpopupmenu.h" #include "bcresources.h" +#include "bcsignals.h" #include "bcwindowbase.h" #include "colors.h" @@ -343,10 +344,14 @@ int BC_MenuItem::draw() { if(menu_popup->item_bg[MENUITEM_DN]) { - menu_popup->get_popup()->draw_9segment(MENUITEM_MARGIN, +// menu_popup->get_popup()->draw_9segment(MENUITEM_MARGIN, +// y, +// menu_popup->get_w() - MENUITEM_MARGIN * 2, +// h, +// menu_popup->item_bg[MENUITEM_DN]); + menu_popup->get_popup()->draw_3segmenth(MENUITEM_MARGIN, y, menu_popup->get_w() - MENUITEM_MARGIN * 2, - h, menu_popup->item_bg[MENUITEM_DN]); } else @@ -368,10 +373,14 @@ int BC_MenuItem::draw() { if(menu_popup->item_bg[MENUITEM_HI]) { - menu_popup->get_popup()->draw_9segment(MENUITEM_MARGIN, +// menu_popup->get_popup()->draw_9segment(MENUITEM_MARGIN, +// y, +// menu_popup->get_w() - MENUITEM_MARGIN * 2, +// h, +// menu_popup->item_bg[MENUITEM_HI]); + menu_popup->get_popup()->draw_3segmenth(MENUITEM_MARGIN, y, menu_popup->get_w() - MENUITEM_MARGIN * 2, - h, menu_popup->item_bg[MENUITEM_HI]); } else @@ -391,10 +400,17 @@ int BC_MenuItem::draw() } if(checked) { - menu_popup->get_popup()->draw_check(10 + offset, y + 2 + offset); +// menu_popup->get_popup()->draw_check(10 + offset, y + 2 + offset); + menu_popup->get_popup()->draw_pixmap(menu_popup->check, + offset, + y + (this->h - menu_popup->check->get_h()) / 2 + offset); menu_popup->get_popup()->set_font(MEDIUMFONT); - menu_popup->get_popup()->draw_text(30 + offset, y + h - text_line - 2 + offset, text); - menu_popup->get_popup()->draw_text(menu_popup->get_key_x() + offset, y + h - text_line - 2 + offset, hotkey_text); + menu_popup->get_popup()->draw_text(menu_popup->check->get_w() + offset, + y + h - text_line - 2 + offset, + text); + menu_popup->get_popup()->draw_text(menu_popup->get_key_x() + offset, + y + h - text_line - 2 + offset, + hotkey_text); } else { diff --git a/cinelerra-5.0/guicast/bcmenupopup.C b/cinelerra-5.0/guicast/bcmenupopup.C index e465d01f..f03d64fe 100644 --- a/cinelerra-5.0/guicast/bcmenupopup.C +++ b/cinelerra-5.0/guicast/bcmenupopup.C @@ -45,6 +45,7 @@ BC_MenuPopup::BC_MenuPopup() item_bg[0] = 0; item_bg[1] = 0; item_bg[2] = 0; + check = 0; } BC_MenuPopup::~BC_MenuPopup() @@ -59,6 +60,7 @@ BC_MenuPopup::~BC_MenuPopup() delete item_bg[0]; delete item_bg[1]; delete item_bg[2]; + delete check; } int BC_MenuPopup::initialize(BC_WindowBase *top_level, @@ -86,6 +88,7 @@ int BC_MenuPopup::initialize(BC_WindowBase *top_level, { window_bg = new BC_Pixmap(top_level, resources->menu_popup_bg); } + if(resources->menu_item_bg) { item_bg[0] = new BC_Pixmap(top_level, resources->menu_item_bg[0], PIXMAP_ALPHA); @@ -93,6 +96,11 @@ int BC_MenuPopup::initialize(BC_WindowBase *top_level, item_bg[2] = new BC_Pixmap(top_level, resources->menu_item_bg[2], PIXMAP_ALPHA); } + if(resources->check) + { + check = new BC_Pixmap(top_level, resources->check, PIXMAP_ALPHA); + } + return 0; } @@ -369,7 +377,7 @@ int BC_MenuPopup::get_dimensions() for(i = 0; i < menu_items.total; i++) { text_w = 10 + top_level->get_text_width(MEDIUMFONT, menu_items.values[i]->text); - if(menu_items.values[i]->checked) text_w += 20; + if(menu_items.values[i]->checked) text_w += check->get_w() + 1; key_w = 10 + top_level->get_text_width(MEDIUMFONT, menu_items.values[i]->hotkey_text); if(text_w > widest_text) widest_text = text_w; @@ -378,7 +386,10 @@ int BC_MenuPopup::get_dimensions() if(!strcmp(menu_items.values[i]->text, "-")) menu_items.values[i]->h = 5; else - menu_items.values[i]->h = top_level->get_text_height(MEDIUMFONT) + 4; + { +// menu_items.values[i]->h = top_level->get_text_height(MEDIUMFONT) + 4; + menu_items.values[i]->h = item_bg[0]->get_h(); + } menu_items.values[i]->y = h; menu_items.values[i]->highlighted = 0; diff --git a/cinelerra-5.0/guicast/bcmenupopup.h b/cinelerra-5.0/guicast/bcmenupopup.h index 714a96f2..a70a50f7 100644 --- a/cinelerra-5.0/guicast/bcmenupopup.h +++ b/cinelerra-5.0/guicast/bcmenupopup.h @@ -89,6 +89,7 @@ private: // Images for backgrounds BC_Pixmap *window_bg; BC_Pixmap *item_bg[3]; + BC_Pixmap *check; }; class BC_SubMenu : public BC_MenuPopup diff --git a/cinelerra-5.0/guicast/bcresources.C b/cinelerra-5.0/guicast/bcresources.C index 9c0da519..7ac9096b 100644 --- a/cinelerra-5.0/guicast/bcresources.C +++ b/cinelerra-5.0/guicast/bcresources.C @@ -1,7 +1,7 @@ /* * CINELERRA - * Copyright (C) 2009 Adam Williams + * Copyright (C) 2009-2015 Adam Williams * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -329,6 +329,10 @@ BC_Resources::BC_Resources() }; #endif +#include "images/check_png.h" + static VFrame* default_check_image = new VFrame(check_png); + check = default_check_image; + #include "images/file_text_up_png.h" #include "images/file_text_hi_png.h" #include "images/file_text_dn_png.h" diff --git a/cinelerra-5.0/guicast/bcresources.h b/cinelerra-5.0/guicast/bcresources.h index a86fd560..be9cee01 100644 --- a/cinelerra-5.0/guicast/bcresources.h +++ b/cinelerra-5.0/guicast/bcresources.h @@ -206,6 +206,8 @@ public: VFrame **checkbox_images; VFrame **radial_images; VFrame **label_images; +// menu check + VFrame *check; VFrame **tumble_data; int tumble_duration; diff --git a/cinelerra-5.0/guicast/filesystem.C b/cinelerra-5.0/guicast/filesystem.C index 1b4a8b1a..0f03530e 100644 --- a/cinelerra-5.0/guicast/filesystem.C +++ b/cinelerra-5.0/guicast/filesystem.C @@ -31,6 +31,8 @@ #include #include #include +#include + #include "filesystem.h" @@ -792,7 +794,7 @@ int FileSystem::join_names(char *out, const char *dir_in, const char *name_in) return 0; } -int64_t FileSystem::get_date(char *filename) +int64_t FileSystem::get_date(const char *filename) { struct stat file_status; bzero(&file_status, sizeof(struct stat)); @@ -800,6 +802,14 @@ int64_t FileSystem::get_date(char *filename) return !result ? file_status.st_mtime : -1; } +void FileSystem::set_date(const char *path, int64_t value) +{ + struct utimbuf new_time; + new_time.actime = value; + new_time.modtime = value; + utime(path, &new_time); +} + int64_t FileSystem::get_size(char *filename) { struct stat file_status; @@ -857,6 +867,7 @@ FileItem* FileSystem::get_entry(int entry) return dir_list.values[entry]; } + // collapse ".", "..", "//" eg. x/./..//y = y char *FileSystem::basepath(const char *path) { diff --git a/cinelerra-5.0/guicast/filesystem.h b/cinelerra-5.0/guicast/filesystem.h index 012699f8..40a0b7f6 100644 --- a/cinelerra-5.0/guicast/filesystem.h +++ b/cinelerra-5.0/guicast/filesystem.h @@ -93,7 +93,8 @@ public: int extract_dir(char *out, const char *in); // extract the directory from the path int extract_name(char *out, const char *in, int test_dir = 1); // extract the name from the path int join_names(char *out, const char *dir_in, const char *name_in); // combine a directory and filename - static int64_t get_date(char *filename); // get the date of the filename modification + static int64_t get_date(const char *path); // get the date of the filename modification + static void set_date(const char *path, int64_t value); // set the date of the file static int64_t get_size(char *filename); // Get the number of bytes in the file. int add_end_slash(char *new_dir); int total_files(); diff --git a/cinelerra-5.0/guicast/images/check.png b/cinelerra-5.0/guicast/images/check.png index 9634629b..270fdac8 100644 Binary files a/cinelerra-5.0/guicast/images/check.png and b/cinelerra-5.0/guicast/images/check.png differ diff --git a/cinelerra-5.0/guicast/images/check_png.h b/cinelerra-5.0/guicast/images/check_png.h index 660f02af..13c806ef 100644 --- a/cinelerra-5.0/guicast/images/check_png.h +++ b/cinelerra-5.0/guicast/images/check_png.h @@ -3,25 +3,23 @@ static unsigned char check_png[] = { - 0x00, 0x00, 0x01, 0x17, + 0x00, 0x00, 0x00, 0xf4, 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x08, 0x06, 0x00, 0x00, 0x00, 0x80, 0x97, 0x6d, - 0x4a, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, 0x61, - 0x05, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, - 0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x12, 0x00, - 0x00, 0x0b, 0x12, 0x01, 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, - 0x07, 0xd0, 0x06, 0x10, 0x16, 0x24, 0x39, 0xb7, 0xf5, 0xa2, 0xdc, 0x00, 0x00, 0x00, 0x94, 0x49, - 0x44, 0x41, 0x54, 0x78, 0xda, 0xc5, 0x93, 0xcd, 0x0d, 0xc0, 0x20, 0x08, 0x85, 0xb1, 0x71, 0xa0, - 0x1e, 0x18, 0xc9, 0xb1, 0x3a, 0x92, 0x23, 0x99, 0xd0, 0x43, 0xdb, 0xc4, 0x2a, 0x4f, 0x30, 0xa6, - 0x29, 0x89, 0x17, 0x7e, 0x3e, 0x10, 0x9f, 0x44, 0x7f, 0x5b, 0xe1, 0x24, 0x85, 0x93, 0x2c, 0x43, - 0x32, 0x91, 0x64, 0x22, 0xa1, 0xeb, 0xac, 0x41, 0xee, 0x89, 0x64, 0x7a, 0x54, 0x00, 0x79, 0xd7, - 0x34, 0x09, 0xaa, 0x99, 0x10, 0xd0, 0xcd, 0xda, 0x8b, 0xb8, 0x46, 0xaf, 0x81, 0xe6, 0x5e, 0x3c, - 0x30, 0x05, 0xac, 0x82, 0x02, 0xe0, 0x49, 0x56, 0x9c, 0x3c, 0xa8, 0xdb, 0x00, 0x28, 0x0c, 0x86, - 0x56, 0x63, 0x1b, 0xba, 0x1e, 0xf0, 0xaf, 0x09, 0x0e, 0x3d, 0xc2, 0xd0, 0xd0, 0x62, 0xa7, 0x60, - 0x0e, 0xad, 0x88, 0xa5, 0xb7, 0x29, 0xad, 0x3c, 0xb9, 0x5d, 0x9e, 0xeb, 0x0f, 0x29, 0x12, 0xa9, - 0xf3, 0x62, 0x1d, 0xd9, 0x39, 0x51, 0xcc, 0x87, 0x47, 0x02, 0x5d, 0x3c, 0x34, 0x1d, 0xbc, 0x90, - 0xef, 0xec, 0x04, 0x6a, 0x69, 0xcc, 0xe2, 0x9a, 0xb8, 0x52, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x49, - 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x11, 0x08, 0x06, 0x00, 0x00, 0x00, 0xca, 0x66, 0x1c, + 0x77, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, + 0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0e, 0xc4, 0x00, + 0x00, 0x0e, 0xc4, 0x01, 0x95, 0x2b, 0x0e, 0x1b, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, + 0x07, 0xdf, 0x05, 0x13, 0x10, 0x23, 0x3b, 0xb6, 0x74, 0x4e, 0x6e, 0x00, 0x00, 0x00, 0x19, 0x74, + 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0x0e, 0x17, + 0x00, 0x00, 0x00, 0x5c, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0xd0, 0x41, 0x0e, 0xc0, 0x20, + 0x08, 0x44, 0xd1, 0x99, 0xde, 0x8c, 0x93, 0x73, 0x34, 0xba, 0x35, 0x95, 0x26, 0x05, 0x95, 0xba, + 0xf0, 0xef, 0x30, 0xc6, 0x17, 0x01, 0x26, 0xa6, 0xaa, 0x9f, 0xef, 0x5e, 0x7f, 0xa0, 0x29, 0xd8, + 0x03, 0xa2, 0x28, 0x00, 0x70, 0x04, 0x16, 0x91, 0x6e, 0x2e, 0x81, 0xdb, 0x22, 0x68, 0x6a, 0xd5, + 0x1e, 0xd0, 0x9c, 0x19, 0x2a, 0x7a, 0xfc, 0xde, 0x56, 0xc3, 0xf6, 0x72, 0x16, 0x82, 0x39, 0x08, + 0xd3, 0x99, 0x4b, 0xe0, 0xf4, 0x5b, 0x9c, 0xb4, 0x6e, 0xa2, 0x38, 0xc3, 0xe9, 0xb4, 0x5b, 0x37, + 0x24, 0x2c, 0x21, 0xbb, 0x75, 0xa2, 0x49, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, + 0xae, 0x42, 0x60, 0x82 }; #endif diff --git a/cinelerra-5.0/guicast/vframe.C b/cinelerra-5.0/guicast/vframe.C index de53a068..d40d7270 100644 --- a/cinelerra-5.0/guicast/vframe.C +++ b/cinelerra-5.0/guicast/vframe.C @@ -1365,6 +1365,161 @@ int VFrame::get_memory_usage() return get_h() * get_bytes_per_line(); } +void VFrame::draw_pixel(int x, int y) +{ + if(!(x >= 0 && y >= 0 && x < get_w() && y < get_h())) return; + +#define DRAW_PIXEL(x, y, components, do_yuv, max, type) \ +{ \ + type **rows = (type**)get_rows(); \ + rows[y][x * components] = max - rows[y][x * components]; \ + if(!do_yuv) \ + { \ + rows[y][x * components + 1] = max - rows[y][x * components + 1]; \ + rows[y][x * components + 2] = max - rows[y][x * components + 2]; \ + } \ + else \ + { \ + rows[y][x * components + 1] = (max / 2 + 1) - rows[y][x * components + 1]; \ + rows[y][x * components + 2] = (max / 2 + 1) - rows[y][x * components + 2]; \ + } \ + if(components == 4) \ + rows[y][x * components + 3] = max; \ +} + + + switch(get_color_model()) + { + case BC_RGB888: + DRAW_PIXEL(x, y, 3, 0, 0xff, unsigned char); + break; + case BC_RGBA8888: + DRAW_PIXEL(x, y, 4, 0, 0xff, unsigned char); + break; + case BC_RGB_FLOAT: + DRAW_PIXEL(x, y, 3, 0, 1.0, float); + break; + case BC_RGBA_FLOAT: + DRAW_PIXEL(x, y, 4, 0, 1.0, float); + break; + case BC_YUV888: + DRAW_PIXEL(x, y, 3, 1, 0xff, unsigned char); + break; + case BC_YUVA8888: + DRAW_PIXEL(x, y, 4, 1, 0xff, unsigned char); + break; + case BC_RGB161616: + DRAW_PIXEL(x, y, 3, 0, 0xffff, uint16_t); + break; + case BC_YUV161616: + DRAW_PIXEL(x, y, 3, 1, 0xffff, uint16_t); + break; + case BC_RGBA16161616: + DRAW_PIXEL(x, y, 4, 0, 0xffff, uint16_t); + break; + case BC_YUVA16161616: + DRAW_PIXEL(x, y, 4, 1, 0xffff, uint16_t); + break; + } +} + + +void VFrame::draw_line(int x1, int y1, int x2, int y2) +{ + int w = labs(x2 - x1); + int h = labs(y2 - y1); +//printf("FindObjectMain::draw_line 1 %d %d %d %d\n", x1, y1, x2, y2); + + if(!w && !h) + { + draw_pixel(x1, y1); + } + else + if(w > h) + { +// Flip coordinates so x1 < x2 + if(x2 < x1) + { + y2 ^= y1; + y1 ^= y2; + y2 ^= y1; + x1 ^= x2; + x2 ^= x1; + x1 ^= x2; + } + int numerator = y2 - y1; + int denominator = x2 - x1; + for(int i = x1; i <= x2; i++) + { + int y = y1 + (int64_t)(i - x1) * (int64_t)numerator / (int64_t)denominator; + draw_pixel(i, y); + } + } + else + { +// Flip coordinates so y1 < y2 + if(y2 < y1) + { + y2 ^= y1; + y1 ^= y2; + y2 ^= y1; + x1 ^= x2; + x2 ^= x1; + x1 ^= x2; + } + int numerator = x2 - x1; + int denominator = y2 - y1; + for(int i = y1; i <= y2; i++) + { + int x = x1 + (int64_t)(i - y1) * (int64_t)numerator / (int64_t)denominator; + draw_pixel(x, i); + } + } +//printf("FindObjectMain::draw_line 2\n"); +} + +void VFrame::draw_rect(int x1, int y1, int x2, int y2) +{ + draw_line(x1, y1, x2, y1); + draw_line(x2, y1 + 1, x2, y2); + draw_line(x2 - 1, y2, x1, y2); + draw_line(x1, y2 - 1, x1, y1 + 1); +} + +#define ARROW_SIZE 10 +void VFrame::draw_arrow(int x1, int y1, int x2, int y2) +{ + double angle = atan((float)(y2 - y1) / (float)(x2 - x1)); + double angle1 = angle + (float)145 / 360 * 2 * 3.14159265; + double angle2 = angle - (float)145 / 360 * 2 * 3.14159265; + int x3; + int y3; + int x4; + int y4; + if(x2 < x1) + { + x3 = x2 - (int)(ARROW_SIZE * cos(angle1)); + y3 = y2 - (int)(ARROW_SIZE * sin(angle1)); + x4 = x2 - (int)(ARROW_SIZE * cos(angle2)); + y4 = y2 - (int)(ARROW_SIZE * sin(angle2)); + } + else + { + x3 = x2 + (int)(ARROW_SIZE * cos(angle1)); + y3 = y2 + (int)(ARROW_SIZE * sin(angle1)); + x4 = x2 + (int)(ARROW_SIZE * cos(angle2)); + y4 = y2 + (int)(ARROW_SIZE * sin(angle2)); + } + +// Main vector + draw_line(x1, y1, x2, y2); +// draw_line(x1, y1 + 1, x2, y2 + 1); + +// Arrow line + if(abs(y2 - y1) || abs(x2 - x1)) draw_line(x2, y2, x3, y3); +// Arrow line + if(abs(y2 - y1) || abs(x2 - x1)) draw_line(x2, y2, x4, y4); +} diff --git a/cinelerra-5.0/guicast/vframe.h b/cinelerra-5.0/guicast/vframe.h index 3cf9645b..694bfaa9 100644 --- a/cinelerra-5.0/guicast/vframe.h +++ b/cinelerra-5.0/guicast/vframe.h @@ -351,6 +351,11 @@ public: // This clears the stacks and the param table void clear_stacks(); + void draw_rect(int x1, int y1, int x2, int y2); + void draw_line(int x1, int y1, int x2, int y2); + void draw_pixel(int x, int y); + void draw_arrow(int x1, int y1, int x2, int y2); + // 3D scene graphs // Not integrated with shmem because that only affects codecs VFrameScene* get_scene(); diff --git a/cinelerra-5.0/libzmpeg3/audio/layer3.C b/cinelerra-5.0/libzmpeg3/audio/layer3.C index c9b2bd1e..984bb053 100644 --- a/cinelerra-5.0/libzmpeg3/audio/layer3.C +++ b/cinelerra-5.0/libzmpeg3/audio/layer3.C @@ -439,10 +439,15 @@ dequantize_sample(float xr[SBLIMIT][SSLIMIT], int *scf, while( xrpnt < &xr[SBLIMIT][0] ) *xrpnt++ = 0.0; + if( -part2remain > num ) + num = -part2remain; part2remain += num; - stream->start_reverse(); - stream->get_bits_reverse(num); - stream->start_forward(); + + if( num > 0 ) { + stream->start_reverse(); + stream->get_bits_reverse(num); + stream->start_forward(); + } //zmsgs("3 %d %04x\n", stream->bit_number, stream->show_bits(16)); while( part2remain > 16 ) { diff --git a/cinelerra-5.0/plugin_defs b/cinelerra-5.0/plugin_defs index cc14f5d3..ea285b63 100644 --- a/cinelerra-5.0/plugin_defs +++ b/cinelerra-5.0/plugin_defs @@ -55,6 +55,7 @@ burn := exotic dot := exotic holo := exotic oil := exotic +edge := exotic audioscope := audio_tools cdripper := audio_tools diff --git a/cinelerra-5.0/plugins/4k/4k.C b/cinelerra-5.0/plugins/4k/4k.C new file mode 100644 index 00000000..7268be7f --- /dev/null +++ b/cinelerra-5.0/plugins/4k/4k.C @@ -0,0 +1,1026 @@ + +/* + * CINELERRA + * Copyright (C) 1997-2014 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "bcsignals.h" +#include "clip.h" +#include "cwindowgui.h" +#include "4k.h" +#include "edl.h" +#include "edlsession.h" +#include "mainmenu.h" +#include "mainsession.h" +#include "mbuttons.h" +#include "meterpanel.h" +#include "mwindow.h" +#include "mwindowgui.h" +#include "new.h" +#include "patchbay.h" +#include "preferencesthread.h" +#include "recordgui.h" +#include "recordmonitor.h" +#include "setformat.h" +#include "statusbar.h" +#include "timebar.h" +#include "trackcanvas.h" +#include "vframe.h" +#include "vwindowgui.h" + + + + +PluginClient* new_plugin(PluginServer *server) +{ + return new FourKMain(server); +} + + + + + + + +FourKMain::FourKMain(PluginServer *server) + : PluginTClient(server) +{ +} + +FourKMain::~FourKMain() +{ +} + +const char* FourKMain::plugin_title() +{ + return _("4K"); +} + +Theme* FourKMain::new_theme() +{ + theme = new FourK; + extern unsigned char _binary_4k_data_start[]; + theme->set_data(_binary_4k_data_start); + return theme; +} + + + + + + + + +FourK::FourK() + : Theme() +{ +} + +FourK::~FourK() +{ +} + +void FourK::initialize() +{ + BC_Resources *resources = BC_WindowBase::get_resources(); + + resources->small_font_xft = N_("Sans-13"); + resources->medium_font_xft = N_("Sans-17"); + resources->large_font_xft = N_("Sans-17:style=bold"); + + resources->text_default = 0xbfbfbf; + resources->text_background = 0x373737; + resources->text_border1 = 0x202020; + resources->text_border2 = 0x373737; + resources->text_border3 = 0x373737; + resources->text_border4 = 0x969696; + resources->text_inactive_highlight = 0x707070; + + resources->bg_color = 0x484848; + resources->border_light2 = resources->bg_color; + resources->border_shadow2 = resources->bg_color; + resources->default_text_color = 0xbfbfbf; + resources->menu_title_text = 0xbfbfbf; + resources->popup_title_text = 0xbfbfbf; + resources->menu_item_text = 0xbfbfbf; + resources->menu_highlighted_fontcolor = WHITE; + resources->generic_button_margin = 30; + resources->pot_needle_color = resources->text_default; + resources->pot_offset = 1; + resources->progress_text = resources->text_default; + resources->meter_font_color = resources->default_text_color; + + resources->menu_light = 0xababab; + resources->menu_highlighted = 0x6f6f6f; + resources->menu_down = 0x4b4b4b; + resources->menu_up = 0x4b4b4b; + resources->menu_shadow = 0x202020; + resources->popupmenu_margin = 15; + resources->popupmenu_triangle_margin = 15; + + resources->listbox_title_color = 0xbfbfbf; + + resources->listbox_title_margin = 20; + resources->listbox_title_hotspot = 20; + resources->listbox_border1 = 0x1a1a1a; + resources->listbox_border2 = 0x373737; + resources->listbox_border3 = 0x373737; + resources->listbox_border4 = 0x646464; + resources->listbox_highlighted = 0x505050; + resources->listbox_inactive = 0x373737; + resources->listbox_bg = 0; + resources->listbox_text = 0xbfbfbf; + + resources->filebox_margin = 130; + resources->file_color = 0xbfbfbf; + resources->directory_color = 0xa0a0ff; + + + new_toggle("loadmode_new.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_new"); + new_toggle("loadmode_none.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_none"); + new_toggle("loadmode_newcat.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_newcat"); + new_toggle("loadmode_cat.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_cat"); + new_toggle("loadmode_newtracks.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_newtracks"); + new_toggle("loadmode_paste.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_paste"); + new_toggle("loadmode_resource.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_resource"); + new_toggle("loadmode_nested.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_nested"); + + + + resources->filebox_icons_images = new_button("icons.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_text_images = new_button("text.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_newfolder_images = new_button("folder.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_rename_images = new_button("rename.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_updir_images = new_button("updir.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_delete_images = new_button("delete.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_reload_images = new_button("reload.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + + resources->filebox_descend_images = new_button("openfolder.png", + "filebox_bigbutton_up.png", + "filebox_bigbutton_hi.png", + "filebox_bigbutton_dn.png"); + + resources->usethis_button_images = + resources->ok_images = new_button("ok.png", + "filebox_bigbutton_up.png", + "filebox_bigbutton_hi.png", + "filebox_bigbutton_dn.png"); + + new_button("ok.png", + "new_bigbutton_up.png", + "new_bigbutton_hi.png", + "new_bigbutton_dn.png", + "new_ok_images"); + + resources->cancel_images = new_button("cancel.png", + "filebox_bigbutton_up.png", + "filebox_bigbutton_hi.png", + "filebox_bigbutton_dn.png"); + + new_button("cancel.png", + "new_bigbutton_up.png", + "new_bigbutton_hi.png", + "new_bigbutton_dn.png", + "new_cancel_images"); + + resources->medium_7segment = new_image_set(TOTAL_7SEGMENT, + "0.png", + "1.png", + "2.png", + "3.png", + "4.png", + "5.png", + "6.png", + "7.png", + "8.png", + "9.png", + "colon.png", + "period.png", + "a.png", + "b.png", + "c.png", + "d.png", + "e.png", + "f.png", + "space.png", + "dash.png"); + + resources->bar_data = new_image("bar", "bar.png"); + resources->check = new_image("check", "check.png"); + + resources->min_menu_w = 96; + resources->menu_popup_bg = new_image("menu_popup_bg.png"); + resources->menu_item_bg = new_image_set(3, + "menuitem_up.png", + "menuitem_hi.png", + "menuitem_dn.png"); + resources->menu_bar_bg = new_image("menubar_bg.png"); + resources->menu_title_bg = new_image_set(3, + "menubar_up.png", + "menubar_hi.png", + "menubar_dn.png"); + + + resources->popupmenu_images = 0; +// new_image_set(3, +// "menupopup_up.png", +// "menupopup_hi.png", +// "menupopup_dn.png"); + + resources->toggle_highlight_bg = new_image("toggle_highlight_bg", + "text_highlight.png"); + + resources->generic_button_images = new_image_set(3, + "generic_up.png", + "generic_hi.png", + "generic_dn.png"); + resources->horizontal_slider_data = new_image_set(6, + "hslider_fg_up.png", + "hslider_fg_hi.png", + "hslider_fg_dn.png", + "hslider_bg_up.png", + "hslider_bg_hi.png", + "hslider_bg_dn.png"); + resources->progress_images = new_image_set(2, + "progress_bg.png", + "progress_hi.png"); + resources->tumble_data = new_image_set(4, + "tumble_up.png", + "tumble_hi.png", + "tumble_bottom.png", + "tumble_top.png"); + resources->listbox_button = new_button4("listbox_button.png", + "editpanel_up.png", + "editpanel_hi.png", + "editpanel_dn.png", + "editpanel_hi.png"); + resources->listbox_column = new_image_set(3, + "column_up.png", + "column_hi.png", + "column_dn.png"); + resources->listbox_up = new_image("listbox_up.png"); + resources->listbox_dn = new_image("listbox_dn.png"); + resources->pan_data = new_image_set(7, + "pan_up.png", + "pan_hi.png", + "pan_popup.png", + "pan_channel.png", + "pan_stick.png", + "pan_channel_small.png", + "pan_stick_small.png"); + resources->pan_text_color = WHITE; + + resources->pot_images = new_image_set(3, + "pot_up.png", + "pot_hi.png", + "pot_dn.png"); + + resources->checkbox_images = new_image_set(5, + "checkbox_up.png", + "checkbox_hi.png", + "checkbox_checked.png", + "checkbox_dn.png", + "checkbox_checkedhi.png"); + + resources->radial_images = new_image_set(5, + "radial_up.png", + "radial_hi.png", + "radial_checked.png", + "radial_dn.png", + "radial_checkedhi.png"); + + resources->xmeter_images = new_image_set(7, + "xmeter_normal.png", + "xmeter_green.png", + "xmeter_red.png", + "xmeter_yellow.png", + "xmeter_white.png", + "xmeter_over.png", + "downmix51_2.png"); + resources->ymeter_images = new_image_set(7, + "ymeter_normal.png", + "ymeter_green.png", + "ymeter_red.png", + "ymeter_yellow.png", + "ymeter_white.png", + "ymeter_over.png", + "downmix51_2.png"); + + resources->hscroll_data = new_image_set(10, + "hscroll_handle_up.png", + "hscroll_handle_hi.png", + "hscroll_handle_dn.png", + "hscroll_handle_bg.png", + "hscroll_left_up.png", + "hscroll_left_hi.png", + "hscroll_left_dn.png", + "hscroll_right_up.png", + "hscroll_right_hi.png", + "hscroll_right_dn.png"); + + resources->vscroll_data = new_image_set(10, + "vscroll_handle_up.png", + "vscroll_handle_hi.png", + "vscroll_handle_dn.png", + "vscroll_handle_bg.png", + "vscroll_left_up.png", + "vscroll_left_hi.png", + "vscroll_left_dn.png", + "vscroll_right_up.png", + "vscroll_right_hi.png", + "vscroll_right_dn.png"); + resources->scroll_minhandle = 20; + + + new_button("prevtip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "prev_tip"); + new_button("nexttip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "next_tip"); + new_button("closetip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "close_tip"); + new_button("swap_extents.png", + "editpanel_up.png", + "editpanel_hi.png", + "editpanel_dn.png", + "swap_extents"); + + +// Record windows + + + preferences_category_overlap = 0; + preferencescategory_x = 0; + preferencescategory_y = 5; + preferencestitle_x = 5; + preferencestitle_y = 10; + preferencesoptions_x = 5; + preferencesoptions_y = 0; + +// MWindow + message_normal = resources->text_default; + audio_color = GREEN; + mtransport_margin = 16; + toggle_margin = 16; + + new_button("pane.png", "pane_up.png", "pane_hi.png", "pane_dn.png", "pane"); + new_image_set("xpane", 3, "xpane_up.png", "xpane_hi.png", "xpane_dn.png"); + new_image_set("ypane", 3, "ypane_up.png", "ypane_hi.png", "ypane_dn.png"); + + new_image("mbutton_bg", "mbutton_bg.png"); + new_image("timebar_bg", "timebar_bg_flat.png"); + new_image("timebar_brender", "timebar_brender.png"); + new_image("clock_bg", "mclock_flat.png"); + new_image("patchbay_bg", "patchbay_bg.png"); + new_image("statusbar", "statusbar.png"); +// new_image("mscroll_filler", "mscroll_filler.png"); + + new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png"); + new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png"); + new_image_set("plugin_on", 5, "plugin_on.png", "plugin_onhi.png", "plugin_onselect.png", "plugin_ondn.png", "plugin_onselecthi.png"); + new_image_set("plugin_show", 5, "plugin_show.png", "plugin_showhi.png", "plugin_showselect.png", "plugin_showdn.png", "plugin_showselecthi.png"); + +// CWindow + new_image("cpanel_bg", "cpanel_bg.png"); + new_image("cbuttons_left", "cbuttons_left.png"); + new_image("cbuttons_right", "cbuttons_right.png"); + new_image("cmeter_bg", "cmeter_bg.png"); + +// VWindow + new_image("vbuttons_left", "vbuttons_left.png"); + new_image("vclock", "vclock.png"); + + new_image("preferences_bg", "preferences_bg.png"); + + + new_image("new_bg", "new_bg.png"); + new_image("setformat_bg", "setformat_bg.png"); + + + timebar_view_data = new_image("timebar_view.png"); + + setformat_w = get_image("setformat_bg")->get_w(); + setformat_h = get_image("setformat_bg")->get_h(); + setformat_x1 = 15; + setformat_x2 = 100; + + setformat_x3 = 315; + setformat_x4 = 415; + setformat_y1 = 20; + setformat_y2 = 85; + setformat_y3 = 125; + setformat_margin = 30; + setformat_channels_x = 25; + setformat_channels_y = 242; + setformat_channels_w = 250; + setformat_channels_h = 250; + + loadfile_pad = get_image_set("loadmode_new")[0]->get_h() + 10; + browse_pad = 20; + + + new_toggle("playpatch.png", + "patch_up.png", + "patch_hi.png", + "patch_checked.png", + "patch_dn.png", + "patch_checkedhi.png", + "playpatch_data"); + + new_toggle("recordpatch.png", + "patch_up.png", + "patch_hi.png", + "patch_checked.png", + "patch_dn.png", + "patch_checkedhi.png", + "recordpatch_data"); + + new_toggle("gangpatch.png", + "patch_up.png", + "patch_hi.png", + "patch_checked.png", + "patch_dn.png", + "patch_checkedhi.png", + "gangpatch_data"); + + new_toggle("drawpatch.png", + "patch_up.png", + "patch_hi.png", + "patch_checked.png", + "patch_dn.png", + "patch_checkedhi.png", + "drawpatch_data"); + + + new_image_set("mutepatch_data", + 5, + "mutepatch_up.png", + "mutepatch_hi.png", + "mutepatch_checked.png", + "mutepatch_dn.png", + "mutepatch_checkedhi.png"); + + new_image_set("expandpatch_data", + 5, + "expandpatch_up.png", + "expandpatch_hi.png", + "expandpatch_checked.png", + "expandpatch_dn.png", + "expandpatch_checkedhi.png"); + + build_bg_data(); + build_overlays(); + + + + + out_point = new_image_set(5, + "out_up.png", + "out_hi.png", + "out_checked.png", + "out_dn.png", + "out_checkedhi.png"); + in_point = new_image_set(5, + "in_up.png", + "in_hi.png", + "in_checked.png", + "in_dn.png", + "in_checkedhi.png"); + + label_toggle = new_image_set(5, + "labeltoggle_up.png", + "labeltoggle_uphi.png", + "label_checked.png", + "labeltoggle_dn.png", + "label_checkedhi.png"); + + new_image_set("histogram_carrot", + 5, + "histogram_carrot_up.png", + "histogram_carrot_hi.png", + "histogram_carrot_checked.png", + "histogram_carrot_dn.png", + "histogram_carrot_checkedhi.png"); + + + statusbar_cancel_data = new_image_set(3, + "statusbar_cancel_up.png", + "statusbar_cancel_hi.png", + "statusbar_cancel_dn.png"); + + + VFrame *editpanel_up = new_image("editpanel_up.png"); + VFrame *editpanel_hi = new_image("editpanel_hi.png"); + VFrame *editpanel_dn = new_image("editpanel_dn.png"); + VFrame *editpanel_checked = new_image("editpanel_checked.png"); + VFrame *editpanel_checkedhi = new_image("editpanel_checkedhi.png"); + + new_image("panel_divider", "panel_divider.png"); + new_button("bottom_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "bottom_justify"); + new_button("center_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "center_justify"); + new_button("channel.png", editpanel_up, editpanel_hi, editpanel_dn, "channel"); + + new_toggle("histogram.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "histogram_toggle"); + new_toggle("histogram_rgb.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "histogram_rgb_toggle"); + new_toggle("waveform.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "waveform_toggle"); + new_toggle("waveform_rgb.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "waveform_rgb_toggle"); + new_toggle("scope.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "scope_toggle"); + + new_button("picture.png", editpanel_up, editpanel_hi, editpanel_dn, "picture"); + new_button("histogram.png", editpanel_up, editpanel_hi, editpanel_dn, "histogram"); + + + new_button("copy.png", editpanel_up, editpanel_hi, editpanel_dn, "copy"); + new_button("commercial.png", editpanel_up, editpanel_hi, editpanel_dn, "commercial"); + new_button("cut.png", editpanel_up, editpanel_hi, editpanel_dn, "cut"); + new_button("fit.png", editpanel_up, editpanel_hi, editpanel_dn, "fit"); + new_button("fitautos.png", editpanel_up, editpanel_hi, editpanel_dn, "fitautos"); + new_button("inpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "inbutton"); + new_button("label.png", editpanel_up, editpanel_hi, editpanel_dn, "labelbutton"); + new_button("left_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "left_justify"); + new_button("magnify.png", editpanel_up, editpanel_hi, editpanel_dn, "magnify_button"); + new_button("middle_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "middle_justify"); + new_button("nextlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "nextlabel"); + new_button("prevlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "prevlabel"); + new_button("nextedit.png", editpanel_up, editpanel_hi, editpanel_dn, "nextedit"); + new_button("prevedit.png", editpanel_up, editpanel_hi, editpanel_dn, "prevedit"); + new_button("outpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "outbutton"); + over_button = new_button("over.png", editpanel_up, editpanel_hi, editpanel_dn); + overwrite_data = new_button("overwrite.png", editpanel_up, editpanel_hi, editpanel_dn); + new_button("paste.png", editpanel_up, editpanel_hi, editpanel_dn, "paste"); + new_button("redo.png", editpanel_up, editpanel_hi, editpanel_dn, "redo"); + new_button("right_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "right_justify"); + splice_data = new_button("splice.png", editpanel_up, editpanel_hi, editpanel_dn); + new_button("toclip.png", editpanel_up, editpanel_hi, editpanel_dn, "toclip"); + new_button("goto.png", editpanel_up, editpanel_hi, editpanel_dn, "goto"); + new_button("top_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "top_justify"); + new_button("undo.png", editpanel_up, editpanel_hi, editpanel_dn, "undo"); + new_button("wrench.png", editpanel_up, editpanel_hi, editpanel_dn, "wrench"); + + + VFrame *transport_up = new_image("transportup.png"); + VFrame *transport_hi = new_image("transporthi.png"); + VFrame *transport_dn = new_image("transportdn.png"); + + new_button("end.png", transport_up, transport_hi, transport_dn, "end"); + new_button("fastfwd.png", transport_up, transport_hi, transport_dn, "fastfwd"); + new_button("fastrev.png", transport_up, transport_hi, transport_dn, "fastrev"); + new_button("play.png", transport_up, transport_hi, transport_dn, "play"); + new_button("framefwd.png", transport_up, transport_hi, transport_dn, "framefwd"); + new_button("framerev.png", transport_up, transport_hi, transport_dn, "framerev"); + new_button("pause.png", transport_up, transport_hi, transport_dn, "pause"); + new_button("record.png", transport_up, transport_hi, transport_dn, "record"); + new_button("singleframe.png", transport_up, transport_hi, transport_dn, "recframe"); + new_button("reverse.png", transport_up, transport_hi, transport_dn, "reverse"); + new_button("rewind.png", transport_up, transport_hi, transport_dn, "rewind"); + new_button("stop.png", transport_up, transport_hi, transport_dn, "stop"); + new_button("stop.png", transport_up, transport_hi, transport_dn, "stoprec"); + + + +// CWindow icons + new_image("cwindow_inactive", "cwindow_inactive.png"); + new_image("cwindow_active", "cwindow_active.png"); + + + + new_image_set("category_button", + 3, + "preferencesbutton_dn.png", + "preferencesbutton_dnhi.png", + "preferencesbutton_dnlo.png"); + + new_image_set("category_button_checked", + 3, + "preferencesbutton_up.png", + "preferencesbutton_uphi.png", + "preferencesbutton_dnlo.png"); + + + + + + new_image_set("color3way_point", + 3, + "color3way_up.png", + "color3way_hi.png", + "color3way_dn.png"); + + new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow"); + new_toggle("autokeyframe.png", transport_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe"); + new_toggle("ibeam.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "ibeam"); + new_toggle("show_meters.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "meters"); + new_toggle("blank30x30.png", + new_image("locklabels_locked.png"), + new_image("locklabels_lockedhi.png"), + new_image("locklabels_unlocked.png"), + new_image("locklabels_dn.png"), // can't have seperate down for each!!?? + new_image("locklabels_unlockedhi.png"), + "locklabels"); + + VFrame *cpanel_up = new_image("cpanel_up.png"); + VFrame *cpanel_hi = new_image("cpanel_hi.png"); + VFrame *cpanel_dn = new_image("cpanel_dn.png"); + VFrame *cpanel_checked = new_image("cpanel_checked.png"); + VFrame *cpanel_checkedhi = new_image("cpanel_checkedhi.png"); + + + new_toggle("camera.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "camera"); + new_toggle("crop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "crop"); + new_toggle("eyedrop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "eyedrop"); + new_toggle("magnify.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "magnify"); + new_toggle("mask.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "mask"); + new_toggle("ruler.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "ruler"); + new_toggle("projector.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "projector"); + new_toggle("protect.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "protect"); + new_toggle("titlesafe.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "titlesafe"); + new_toggle("toolwindow.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "tool"); + + // toggle for tangent mode (compositor/tool window) + new_toggle("tan_smooth.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_smooth"); + new_toggle("tan_linear.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_linear"); + + + flush_images(); + + title_font = MEDIUMFONT_3D; + title_color = 0xbfbfbf; + recordgui_fixed_color = YELLOW; + recordgui_variable_color = RED; + + channel_position_color = MEYELLOW; + resources->meter_title_w = 25; + + // (asset) edit info text color + edit_font_color = YELLOW; +} + +#define VWINDOW_METER_MARGIN 5 + + + + + + + + + + + +void FourK::build_bg_data() +{ +// Audio settings + channel_position_data = new VFrame(get_image_data("channel_position.png")); + +// Track bitmaps + new_image("resource1024", "resource1024.png"); + new_image("resource512", "resource512.png"); + new_image("resource256", "resource256.png"); + new_image("resource128", "resource128.png"); + new_image("resource64", "resource64.png"); + new_image("resource32", "resource32.png"); + new_image("plugin_bg_data", "plugin_bg.png"); + new_image("title_bg_data", "title_bg.png"); + new_image("vtimebar_bg_data", "vwindow_timebar.png"); +} + + + +void FourK::build_overlays() +{ + keyframe_data = new VFrame(get_image_data("keyframe.png")); + camerakeyframe_data = new VFrame(get_image_data("camerakeyframe.png")); + maskkeyframe_data = new VFrame(get_image_data("maskkeyframe.png")); + modekeyframe_data = new VFrame(get_image_data("modekeyframe.png")); + pankeyframe_data = new VFrame(get_image_data("pankeyframe.png")); + projectorkeyframe_data = new VFrame(get_image_data("projectorkeyframe.png")); +} + + + + + + + + + +void FourK::draw_rwindow_bg(RecordGUI *gui) +{ +// int y; +// int margin = 50; +// int margin2 = 80; +// gui->draw_9segment(recordgui_batch_x - margin, +// 0, +// mwindow->session->rwindow_w - recordgui_status_x + margin, +// recordgui_buttons_y, +// rgui_batch); +// gui->draw_3segmenth(recordgui_options_x - margin2, +// recordgui_buttons_y - 5, +// mwindow->session->rwindow_w - recordgui_options_x + margin2, +// rgui_controls); +// y = recordgui_buttons_y - 5 + rgui_controls->get_h(); +// gui->draw_9segment(0, +// y, +// mwindow->session->rwindow_w, +// mwindow->session->rwindow_h - y, +// rgui_list); +} + +void FourK::draw_rmonitor_bg(RecordMonitorGUI *gui) +{ +// int margin = 45; +// int panel_w = 300; +// int x = rmonitor_meter_x - margin; +// int w = mwindow->session->rmonitor_w - x; +// if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w(); +// gui->clear_box(0, +// 0, +// mwindow->session->rmonitor_w, +// mwindow->session->rmonitor_h); +// gui->draw_9segment(x, +// 0, +// w, +// mwindow->session->rmonitor_h, +// rmonitor_meters); +} + + + + + + +void FourK::draw_mwindow_bg(MWindowGUI *gui) +{ +// Button bar + gui->draw_3segmenth(mbuttons_x, + mbuttons_y - 1, + mwindow->session->mwindow_w, + get_image("mbutton_bg")); + + int pdw = get_image("panel_divider")->get_w(); + int x = mbuttons_x; + x += 9 * get_image("play")->get_w(); + x += mtransport_margin; // the control buttons + + gui->draw_vframe(get_image("panel_divider"), + x - toggle_margin / 2 - pdw / 2 + 2, + mbuttons_y - 1); + x += 2 * get_image("arrow")->get_w() + toggle_margin; // the mode buttons + + gui->draw_vframe(get_image("panel_divider"), + x - toggle_margin / 2 - pdw / 2 + 2, + mbuttons_y - 1); + x += 2 * get_image("autokeyframe")->get_w() + toggle_margin; // the state toggle buttons + + gui->draw_vframe(get_image("panel_divider"), + x - toggle_margin / 2 - pdw / 2 + 2, + mbuttons_y - 1); + +// Clock + gui->draw_3segmenth(0, + mbuttons_y - 1 + get_image("mbutton_bg")->get_h(), + get_image("patchbay_bg")->get_w(), + get_image("clock_bg")); + +// Patchbay +//printf("FourK::draw_mwindow_bg %d %d %d\n", __LINE__, +//mclock_h, +//mtimebar_h); + gui->draw_3segmentv(patchbay_x, + patchbay_y, + patchbay_h, + get_image("patchbay_bg")); + +// Track canvas + gui->set_color(BLACK); + gui->draw_box(mcanvas_x + get_image("patchbay_bg")->get_w(), + mcanvas_y + mtimebar_h, + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT), + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h); + +// Timebar + gui->draw_3segmenth(mtimebar_x, + mtimebar_y, + mtimebar_w, + get_image("timebar_bg")); + +// Zoombar + gui->set_color(0x373737); + gui->draw_box(mzoom_x, + mzoom_y, + mwindow->session->mwindow_w, + 25); + +// Scrollbar filler +// gui->draw_vframe(get_image("mscroll_filler"), +// mcanvas_x + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT), +// mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ)); + +// Status + gui->draw_3segmenth(mzoom_x, + mzoom_y, + mzoom_w, + get_image("statusbar")); + + +} + +void FourK::draw_cwindow_bg(CWindowGUI *gui) +{ + gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg")); + + gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left")); + + if(mwindow->edl->session->cwindow_meter) + { + gui->draw_3segmenth(cstatus_x, + ccomposite_h, + cmeter_x - widget_border - cstatus_x, + get_image("cbuttons_right")); + gui->draw_9segment(cmeter_x - widget_border, + 0, + mwindow->session->cwindow_w - cmeter_x + widget_border, + mwindow->session->cwindow_h, + get_image("cmeter_bg")); + } + else + { + gui->draw_3segmenth(cstatus_x, + ccomposite_h, + cmeter_x - widget_border - cstatus_x + 100, + get_image("cbuttons_right")); + } +} + +void FourK::draw_vwindow_bg(VWindowGUI *gui) +{ + gui->draw_3segmenth(0, + vcanvas_h, + vdivision_x, + get_image("vbuttons_left")); + if(mwindow->edl->session->vwindow_meter) + { + gui->draw_3segmenth(vdivision_x, + vcanvas_h, + vmeter_x - widget_border - vdivision_x, + get_image("cbuttons_right")); + gui->draw_9segment(vmeter_x - widget_border, + 0, + mwindow->session->vwindow_w - vmeter_x + widget_border, + mwindow->session->vwindow_h, + get_image("cmeter_bg")); + } + else + { + gui->draw_3segmenth(vdivision_x, + vcanvas_h, + vmeter_x - widget_border - vdivision_x + 100, + get_image("cbuttons_right")); + } + +// Clock border + gui->draw_3segmenth(vtime_x - 20, + vtime_y - 1, + vtime_w + 40, + get_image("vclock")); +} + + +void FourK::draw_preferences_bg(PreferencesWindow *gui) +{ + gui->draw_vframe(get_image("preferences_bg"), 0, 0); +} + +void FourK::draw_new_bg(NewWindow *gui) +{ + gui->draw_vframe(get_image("new_bg"), 0, 0); +} + +void FourK::draw_setformat_bg(SetFormatWindow *gui) +{ + gui->draw_vframe(get_image("setformat_bg"), 0, 0); +} + + + + + + + diff --git a/cinelerra-5.0/plugins/4k/4k.h b/cinelerra-5.0/plugins/4k/4k.h new file mode 100644 index 00000000..37de898a --- /dev/null +++ b/cinelerra-5.0/plugins/4k/4k.h @@ -0,0 +1,77 @@ + +/* + * CINELERRA + * Copyright (C) 2008 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef DEFAULTTHEME_H +#define DEFAULTTHEME_H + +#include "new.inc" +#include "plugintclient.h" +#include "preferencesthread.inc" +#include "statusbar.inc" +#include "theme.h" +#include "timebar.inc" + +class FourK : public Theme +{ +public: + FourK(); + ~FourK(); + + void initialize(); + void draw_mwindow_bg(MWindowGUI *gui); + + void draw_rwindow_bg(RecordGUI *gui); + void draw_rmonitor_bg(RecordMonitorGUI *gui); + void draw_cwindow_bg(CWindowGUI *gui); + void draw_vwindow_bg(VWindowGUI *gui); + void draw_preferences_bg(PreferencesWindow *gui); + + + void draw_new_bg(NewWindow *gui); + void draw_setformat_bg(SetFormatWindow *gui); + +private: + void build_bg_data(); + void build_patches(); + void build_overlays(); + + + + + +}; + + + +class FourKMain : public PluginTClient +{ +public: + FourKMain(PluginServer *server); + ~FourKMain(); + + const char* plugin_title(); + Theme* new_theme(); + + FourK *theme; +}; + + +#endif diff --git a/cinelerra-5.0/plugins/4k/Makefile b/cinelerra-5.0/plugins/4k/Makefile new file mode 100644 index 00000000..295124d9 --- /dev/null +++ b/cinelerra-5.0/plugins/4k/Makefile @@ -0,0 +1,13 @@ +include ../../global_config + +PLUGIN = 4k +OBJS = $(OBJDIR)/4k.o +OUTPUT_THEME = $(OUTPUT) + +AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd) +CFLAGS += -I$(AVC_DIR) + +include ../../plugin_config + +$(OBJDIR)/4k.o: 4k.C + diff --git a/cinelerra-5.0/plugins/4k/data/0.png b/cinelerra-5.0/plugins/4k/data/0.png new file mode 100644 index 00000000..56171ca3 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/0.png differ diff --git a/cinelerra-5.0/plugins/4k/data/1.png b/cinelerra-5.0/plugins/4k/data/1.png new file mode 100644 index 00000000..6eac7177 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/1.png differ diff --git a/cinelerra-5.0/plugins/4k/data/2.png b/cinelerra-5.0/plugins/4k/data/2.png new file mode 100644 index 00000000..915fe064 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/2.png differ diff --git a/cinelerra-5.0/plugins/4k/data/3.png b/cinelerra-5.0/plugins/4k/data/3.png new file mode 100644 index 00000000..fccbfb70 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/3.png differ diff --git a/cinelerra-5.0/plugins/4k/data/4.png b/cinelerra-5.0/plugins/4k/data/4.png new file mode 100644 index 00000000..74f9f117 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/4.png differ diff --git a/cinelerra-5.0/plugins/4k/data/5.png b/cinelerra-5.0/plugins/4k/data/5.png new file mode 100644 index 00000000..ef37107d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/5.png differ diff --git a/cinelerra-5.0/plugins/4k/data/6.png b/cinelerra-5.0/plugins/4k/data/6.png new file mode 100644 index 00000000..8e5dbed3 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/6.png differ diff --git a/cinelerra-5.0/plugins/4k/data/7.png b/cinelerra-5.0/plugins/4k/data/7.png new file mode 100644 index 00000000..e06668f5 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/7.png differ diff --git a/cinelerra-5.0/plugins/4k/data/8.png b/cinelerra-5.0/plugins/4k/data/8.png new file mode 100644 index 00000000..4c9fef86 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/8.png differ diff --git a/cinelerra-5.0/plugins/4k/data/9.png b/cinelerra-5.0/plugins/4k/data/9.png new file mode 100644 index 00000000..e09afffe Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/9.png differ diff --git a/cinelerra-5.0/plugins/4k/data/a.png b/cinelerra-5.0/plugins/4k/data/a.png new file mode 100644 index 00000000..12bf179e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/a.png differ diff --git a/cinelerra-5.0/plugins/4k/data/about.png b/cinelerra-5.0/plugins/4k/data/about.png new file mode 100644 index 00000000..4fa4ec1f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/about.png differ diff --git a/cinelerra-5.0/plugins/4k/data/about_bg.png b/cinelerra-5.0/plugins/4k/data/about_bg.png new file mode 100644 index 00000000..bf0f1ad2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/about_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/aeffect_icon.png b/cinelerra-5.0/plugins/4k/data/aeffect_icon.png new file mode 100644 index 00000000..5a69c3a9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/aeffect_icon.png differ diff --git a/cinelerra-5.0/plugins/4k/data/antenna.png b/cinelerra-5.0/plugins/4k/data/antenna.png new file mode 100644 index 00000000..06072e5a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/antenna.png differ diff --git a/cinelerra-5.0/plugins/4k/data/arrow.png b/cinelerra-5.0/plugins/4k/data/arrow.png new file mode 100644 index 00000000..1bb480bc Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/arrow.png differ diff --git a/cinelerra-5.0/plugins/4k/data/atransition_icon.png b/cinelerra-5.0/plugins/4k/data/atransition_icon.png new file mode 100644 index 00000000..d73ccb1f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/atransition_icon.png differ diff --git a/cinelerra-5.0/plugins/4k/data/autokeyframe.png b/cinelerra-5.0/plugins/4k/data/autokeyframe.png new file mode 100644 index 00000000..47e6f76d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/autokeyframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/b.png b/cinelerra-5.0/plugins/4k/data/b.png new file mode 100644 index 00000000..9f94f172 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/b.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dn.png b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dn.png new file mode 100644 index 00000000..985c7cb0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dnhi.png b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dnhi.png new file mode 100644 index 00000000..441138e2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dnhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dnlo.png b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dnlo.png new file mode 100644 index 00000000..2b6a3ce8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_dnlo.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_up.png b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_up.png new file mode 100644 index 00000000..3223ec6f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_uphi.png b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_uphi.png new file mode 100644 index 00000000..a77c8527 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak/preferencesbutton_uphi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dn.png b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dn.png new file mode 100644 index 00000000..511905e1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dnhi.png b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dnhi.png new file mode 100644 index 00000000..8757b3f1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dnhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dnlo.png b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dnlo.png new file mode 100644 index 00000000..cf3c9dfc Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_dnlo.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_up.png b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_up.png new file mode 100644 index 00000000..45daa5c0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_uphi.png b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_uphi.png new file mode 100644 index 00000000..3e35fb58 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bak2/preferencesbutton_uphi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bar.png b/cinelerra-5.0/plugins/4k/data/bar.png new file mode 100644 index 00000000..a1e237cf Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bar.png differ diff --git a/cinelerra-5.0/plugins/4k/data/blank30x30.png b/cinelerra-5.0/plugins/4k/data/blank30x30.png new file mode 100644 index 00000000..39c5e55a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/blank30x30.png differ diff --git a/cinelerra-5.0/plugins/4k/data/bottom_justify.png b/cinelerra-5.0/plugins/4k/data/bottom_justify.png new file mode 100644 index 00000000..110d09f6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/bottom_justify.png differ diff --git a/cinelerra-5.0/plugins/4k/data/buttonbar.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/buttonbar.xcf.bz2 new file mode 100644 index 00000000..baf5c8cd Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/buttonbar.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/c.png b/cinelerra-5.0/plugins/4k/data/c.png new file mode 100644 index 00000000..644986ad Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/c.png differ diff --git a/cinelerra-5.0/plugins/4k/data/camera.png b/cinelerra-5.0/plugins/4k/data/camera.png new file mode 100644 index 00000000..eb9cc288 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/camera.png differ diff --git a/cinelerra-5.0/plugins/4k/data/camerakeyframe.png b/cinelerra-5.0/plugins/4k/data/camerakeyframe.png new file mode 100644 index 00000000..0fefa82a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/camerakeyframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cancel.png b/cinelerra-5.0/plugins/4k/data/cancel.png new file mode 100644 index 00000000..87299a7d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cancel.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cbuttons_left.png b/cinelerra-5.0/plugins/4k/data/cbuttons_left.png new file mode 100644 index 00000000..9890741c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cbuttons_left.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cbuttons_right.png b/cinelerra-5.0/plugins/4k/data/cbuttons_right.png new file mode 100644 index 00000000..ab695b6b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cbuttons_right.png differ diff --git a/cinelerra-5.0/plugins/4k/data/center_justify.png b/cinelerra-5.0/plugins/4k/data/center_justify.png new file mode 100644 index 00000000..022c12bf Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/center_justify.png differ diff --git a/cinelerra-5.0/plugins/4k/data/channel.png b/cinelerra-5.0/plugins/4k/data/channel.png new file mode 100644 index 00000000..3f88a8ff Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/channel.png differ diff --git a/cinelerra-5.0/plugins/4k/data/channel_position.png b/cinelerra-5.0/plugins/4k/data/channel_position.png new file mode 100644 index 00000000..c6c49aa0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/channel_position.png differ diff --git a/cinelerra-5.0/plugins/4k/data/check.png b/cinelerra-5.0/plugins/4k/data/check.png new file mode 100644 index 00000000..1354b863 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/check.png differ diff --git a/cinelerra-5.0/plugins/4k/data/checkbox_checked.png b/cinelerra-5.0/plugins/4k/data/checkbox_checked.png new file mode 100644 index 00000000..c115c32d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/checkbox_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/checkbox_checkedhi.png b/cinelerra-5.0/plugins/4k/data/checkbox_checkedhi.png new file mode 100644 index 00000000..046ff11f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/checkbox_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/checkbox_dn.png b/cinelerra-5.0/plugins/4k/data/checkbox_dn.png new file mode 100644 index 00000000..fb34441c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/checkbox_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/checkbox_hi.png b/cinelerra-5.0/plugins/4k/data/checkbox_hi.png new file mode 100644 index 00000000..3a8c6ad5 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/checkbox_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/checkbox_up.png b/cinelerra-5.0/plugins/4k/data/checkbox_up.png new file mode 100644 index 00000000..02f3d54f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/checkbox_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/clearinpoint.png b/cinelerra-5.0/plugins/4k/data/clearinpoint.png new file mode 100644 index 00000000..36356b7d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/clearinpoint.png differ diff --git a/cinelerra-5.0/plugins/4k/data/clearoutpoint.png b/cinelerra-5.0/plugins/4k/data/clearoutpoint.png new file mode 100644 index 00000000..6b05707f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/clearoutpoint.png differ diff --git a/cinelerra-5.0/plugins/4k/data/clip_icon.png b/cinelerra-5.0/plugins/4k/data/clip_icon.png new file mode 100644 index 00000000..9b1d2787 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/clip_icon.png differ diff --git a/cinelerra-5.0/plugins/4k/data/closetip.png b/cinelerra-5.0/plugins/4k/data/closetip.png new file mode 100644 index 00000000..75125cb9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/closetip.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cmeter_bg.png b/cinelerra-5.0/plugins/4k/data/cmeter_bg.png new file mode 100644 index 00000000..35a80c4d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cmeter_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/colon.png b/cinelerra-5.0/plugins/4k/data/colon.png new file mode 100644 index 00000000..0e1c835c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/colon.png differ diff --git a/cinelerra-5.0/plugins/4k/data/color3way_dn.png b/cinelerra-5.0/plugins/4k/data/color3way_dn.png new file mode 100644 index 00000000..fad9ed65 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/color3way_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/color3way_hi.png b/cinelerra-5.0/plugins/4k/data/color3way_hi.png new file mode 100644 index 00000000..a9377da6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/color3way_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/color3way_point.png b/cinelerra-5.0/plugins/4k/data/color3way_point.png new file mode 100644 index 00000000..1934b8e0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/color3way_point.png differ diff --git a/cinelerra-5.0/plugins/4k/data/color3way_up.png b/cinelerra-5.0/plugins/4k/data/color3way_up.png new file mode 100644 index 00000000..e2fef63c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/color3way_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/column_dn.png b/cinelerra-5.0/plugins/4k/data/column_dn.png new file mode 100644 index 00000000..6201333f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/column_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/column_hi.png b/cinelerra-5.0/plugins/4k/data/column_hi.png new file mode 100644 index 00000000..fe6c180a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/column_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/column_up.png b/cinelerra-5.0/plugins/4k/data/column_up.png new file mode 100644 index 00000000..0709e162 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/column_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/commercial.png b/cinelerra-5.0/plugins/4k/data/commercial.png new file mode 100644 index 00000000..a1eae6e0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/commercial.png differ diff --git a/cinelerra-5.0/plugins/4k/data/configure.png b/cinelerra-5.0/plugins/4k/data/configure.png new file mode 100644 index 00000000..4b20dbcd Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/configure.png differ diff --git a/cinelerra-5.0/plugins/4k/data/copy.png b/cinelerra-5.0/plugins/4k/data/copy.png new file mode 100644 index 00000000..b82d4fb4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/copy.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cpanel_bg.png b/cinelerra-5.0/plugins/4k/data/cpanel_bg.png new file mode 100644 index 00000000..bbb0ca92 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cpanel_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cpanel_checked.png b/cinelerra-5.0/plugins/4k/data/cpanel_checked.png new file mode 100644 index 00000000..6f36c7e3 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cpanel_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cpanel_checkedhi.png b/cinelerra-5.0/plugins/4k/data/cpanel_checkedhi.png new file mode 100644 index 00000000..1a660646 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cpanel_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cpanel_dn.png b/cinelerra-5.0/plugins/4k/data/cpanel_dn.png new file mode 100644 index 00000000..1418124a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cpanel_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cpanel_hi.png b/cinelerra-5.0/plugins/4k/data/cpanel_hi.png new file mode 100644 index 00000000..aca8c70a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cpanel_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cpanel_up.png b/cinelerra-5.0/plugins/4k/data/cpanel_up.png new file mode 100644 index 00000000..59f34c9f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cpanel_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/crop.png b/cinelerra-5.0/plugins/4k/data/crop.png new file mode 100644 index 00000000..2eea5ccd Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/crop.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cut.png b/cinelerra-5.0/plugins/4k/data/cut.png new file mode 100644 index 00000000..174d2ef5 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cut.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cwindow_active.png b/cinelerra-5.0/plugins/4k/data/cwindow_active.png new file mode 100644 index 00000000..259fb44b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cwindow_active.png differ diff --git a/cinelerra-5.0/plugins/4k/data/cwindow_inactive.png b/cinelerra-5.0/plugins/4k/data/cwindow_inactive.png new file mode 100644 index 00000000..b0687d95 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/cwindow_inactive.png differ diff --git a/cinelerra-5.0/plugins/4k/data/d.png b/cinelerra-5.0/plugins/4k/data/d.png new file mode 100644 index 00000000..3bfdc6bd Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/d.png differ diff --git a/cinelerra-5.0/plugins/4k/data/dash.png b/cinelerra-5.0/plugins/4k/data/dash.png new file mode 100644 index 00000000..01321e98 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/dash.png differ diff --git a/cinelerra-5.0/plugins/4k/data/delete.png b/cinelerra-5.0/plugins/4k/data/delete.png new file mode 100644 index 00000000..200b9ea4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/delete.png differ diff --git a/cinelerra-5.0/plugins/4k/data/downmix51_2.png b/cinelerra-5.0/plugins/4k/data/downmix51_2.png new file mode 100644 index 00000000..3cbcaf72 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/downmix51_2.png differ diff --git a/cinelerra-5.0/plugins/4k/data/drawpatch.png b/cinelerra-5.0/plugins/4k/data/drawpatch.png new file mode 100644 index 00000000..5cff6410 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/drawpatch.png differ diff --git a/cinelerra-5.0/plugins/4k/data/duplex.png b/cinelerra-5.0/plugins/4k/data/duplex.png new file mode 100644 index 00000000..4abd4e7c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/duplex.png differ diff --git a/cinelerra-5.0/plugins/4k/data/e.png b/cinelerra-5.0/plugins/4k/data/e.png new file mode 100644 index 00000000..20892c45 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/e.png differ diff --git a/cinelerra-5.0/plugins/4k/data/editpanel.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/editpanel.xcf.bz2 new file mode 100644 index 00000000..95ef5bf7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/editpanel.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/editpanel_checked.png b/cinelerra-5.0/plugins/4k/data/editpanel_checked.png new file mode 100644 index 00000000..4176c68c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/editpanel_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/editpanel_checkedhi.png b/cinelerra-5.0/plugins/4k/data/editpanel_checkedhi.png new file mode 100644 index 00000000..9d27df7f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/editpanel_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/editpanel_dn.png b/cinelerra-5.0/plugins/4k/data/editpanel_dn.png new file mode 100644 index 00000000..4322c944 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/editpanel_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/editpanel_hi.png b/cinelerra-5.0/plugins/4k/data/editpanel_hi.png new file mode 100644 index 00000000..f6355f6f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/editpanel_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/editpanel_up.png b/cinelerra-5.0/plugins/4k/data/editpanel_up.png new file mode 100644 index 00000000..8332f5e1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/editpanel_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/end.png b/cinelerra-5.0/plugins/4k/data/end.png new file mode 100644 index 00000000..b4f801ad Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/end.png differ diff --git a/cinelerra-5.0/plugins/4k/data/expandpatch.png b/cinelerra-5.0/plugins/4k/data/expandpatch.png new file mode 100644 index 00000000..b5067efe Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/expandpatch.png differ diff --git a/cinelerra-5.0/plugins/4k/data/expandpatch.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/expandpatch.xcf.bz2 new file mode 100644 index 00000000..836453e5 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/expandpatch.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/expandpatch_checked.png b/cinelerra-5.0/plugins/4k/data/expandpatch_checked.png new file mode 100644 index 00000000..b83cb92d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/expandpatch_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/expandpatch_checkedhi.png b/cinelerra-5.0/plugins/4k/data/expandpatch_checkedhi.png new file mode 100644 index 00000000..ed3d3d74 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/expandpatch_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/expandpatch_dn.png b/cinelerra-5.0/plugins/4k/data/expandpatch_dn.png new file mode 100644 index 00000000..19783442 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/expandpatch_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/expandpatch_hi.png b/cinelerra-5.0/plugins/4k/data/expandpatch_hi.png new file mode 100644 index 00000000..37da94c1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/expandpatch_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/expandpatch_up.png b/cinelerra-5.0/plugins/4k/data/expandpatch_up.png new file mode 100644 index 00000000..0d9ec4ff Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/expandpatch_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/eyedrop.png b/cinelerra-5.0/plugins/4k/data/eyedrop.png new file mode 100644 index 00000000..48a51160 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/eyedrop.png differ diff --git a/cinelerra-5.0/plugins/4k/data/f.png b/cinelerra-5.0/plugins/4k/data/f.png new file mode 100644 index 00000000..0f5047bb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/f.png differ diff --git a/cinelerra-5.0/plugins/4k/data/fastfwd.png b/cinelerra-5.0/plugins/4k/data/fastfwd.png new file mode 100644 index 00000000..572d3c29 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/fastfwd.png differ diff --git a/cinelerra-5.0/plugins/4k/data/fastrev.png b/cinelerra-5.0/plugins/4k/data/fastrev.png new file mode 100644 index 00000000..5a1553af Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/fastrev.png differ diff --git a/cinelerra-5.0/plugins/4k/data/filebox.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/filebox.xcf.bz2 new file mode 100644 index 00000000..87aaa3af Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/filebox.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_dn.png b/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_dn.png new file mode 100644 index 00000000..33b57d4d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_hi.png b/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_hi.png new file mode 100644 index 00000000..9a4c83bd Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_up.png b/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_up.png new file mode 100644 index 00000000..80e8504e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/filebox_bigbutton_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/fileboxbutton_dn.png b/cinelerra-5.0/plugins/4k/data/fileboxbutton_dn.png new file mode 100644 index 00000000..101f4c27 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/fileboxbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/fileboxbutton_hi.png b/cinelerra-5.0/plugins/4k/data/fileboxbutton_hi.png new file mode 100644 index 00000000..3b56bfc6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/fileboxbutton_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/fileboxbutton_up.png b/cinelerra-5.0/plugins/4k/data/fileboxbutton_up.png new file mode 100644 index 00000000..6037ac78 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/fileboxbutton_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/fit.png b/cinelerra-5.0/plugins/4k/data/fit.png new file mode 100644 index 00000000..5523ef36 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/fit.png differ diff --git a/cinelerra-5.0/plugins/4k/data/fitautos.png b/cinelerra-5.0/plugins/4k/data/fitautos.png new file mode 100644 index 00000000..4de2f6ea Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/fitautos.png differ diff --git a/cinelerra-5.0/plugins/4k/data/folder.png b/cinelerra-5.0/plugins/4k/data/folder.png new file mode 100644 index 00000000..8acd4dec Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/folder.png differ diff --git a/cinelerra-5.0/plugins/4k/data/framefwd.png b/cinelerra-5.0/plugins/4k/data/framefwd.png new file mode 100644 index 00000000..08097d60 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/framefwd.png differ diff --git a/cinelerra-5.0/plugins/4k/data/framerev.png b/cinelerra-5.0/plugins/4k/data/framerev.png new file mode 100644 index 00000000..84ab6b3f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/framerev.png differ diff --git a/cinelerra-5.0/plugins/4k/data/gangpatch.png b/cinelerra-5.0/plugins/4k/data/gangpatch.png new file mode 100644 index 00000000..6b1e606b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/gangpatch.png differ diff --git a/cinelerra-5.0/plugins/4k/data/generic_dn.png b/cinelerra-5.0/plugins/4k/data/generic_dn.png new file mode 100644 index 00000000..2df647d3 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/generic_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/generic_hi.png b/cinelerra-5.0/plugins/4k/data/generic_hi.png new file mode 100644 index 00000000..ee3928ba Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/generic_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/generic_up.png b/cinelerra-5.0/plugins/4k/data/generic_up.png new file mode 100644 index 00000000..46efb79f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/generic_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/generickeyframe.png b/cinelerra-5.0/plugins/4k/data/generickeyframe.png new file mode 100644 index 00000000..e3a95cc4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/generickeyframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/goto.png b/cinelerra-5.0/plugins/4k/data/goto.png new file mode 100644 index 00000000..513f964f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/goto.png differ diff --git a/cinelerra-5.0/plugins/4k/data/heroine_icon.png b/cinelerra-5.0/plugins/4k/data/heroine_icon.png new file mode 100644 index 00000000..8694da90 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/heroine_icon.png differ diff --git a/cinelerra-5.0/plugins/4k/data/histogram.png b/cinelerra-5.0/plugins/4k/data/histogram.png new file mode 100644 index 00000000..0f7da6eb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/histogram.png differ diff --git a/cinelerra-5.0/plugins/4k/data/histogram_carrot_checked.png b/cinelerra-5.0/plugins/4k/data/histogram_carrot_checked.png new file mode 100644 index 00000000..8e5840a9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/histogram_carrot_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/histogram_carrot_checkedhi.png b/cinelerra-5.0/plugins/4k/data/histogram_carrot_checkedhi.png new file mode 100644 index 00000000..1fcfff69 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/histogram_carrot_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/histogram_carrot_dn.png b/cinelerra-5.0/plugins/4k/data/histogram_carrot_dn.png new file mode 100644 index 00000000..0fb61fb1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/histogram_carrot_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/histogram_carrot_hi.png b/cinelerra-5.0/plugins/4k/data/histogram_carrot_hi.png new file mode 100644 index 00000000..81d78997 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/histogram_carrot_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/histogram_carrot_up.png b/cinelerra-5.0/plugins/4k/data/histogram_carrot_up.png new file mode 100644 index 00000000..cfd43b2f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/histogram_carrot_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/histogram_rgb.png b/cinelerra-5.0/plugins/4k/data/histogram_rgb.png new file mode 100644 index 00000000..a68050a1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/histogram_rgb.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_handle_bg.png b/cinelerra-5.0/plugins/4k/data/hscroll_handle_bg.png new file mode 100644 index 00000000..0e722adb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_handle_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_handle_dn.png b/cinelerra-5.0/plugins/4k/data/hscroll_handle_dn.png new file mode 100644 index 00000000..05b0533d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_handle_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_handle_hi.png b/cinelerra-5.0/plugins/4k/data/hscroll_handle_hi.png new file mode 100644 index 00000000..6e4dd55d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_handle_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_handle_up.png b/cinelerra-5.0/plugins/4k/data/hscroll_handle_up.png new file mode 100644 index 00000000..a19784ce Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_handle_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_left_dn.png b/cinelerra-5.0/plugins/4k/data/hscroll_left_dn.png new file mode 100644 index 00000000..830d3a78 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_left_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_left_hi.png b/cinelerra-5.0/plugins/4k/data/hscroll_left_hi.png new file mode 100644 index 00000000..66dbf22b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_left_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_left_up.png b/cinelerra-5.0/plugins/4k/data/hscroll_left_up.png new file mode 100644 index 00000000..62eb0059 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_left_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_right_dn.png b/cinelerra-5.0/plugins/4k/data/hscroll_right_dn.png new file mode 100644 index 00000000..078c6534 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_right_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_right_hi.png b/cinelerra-5.0/plugins/4k/data/hscroll_right_hi.png new file mode 100644 index 00000000..7e507298 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_right_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hscroll_right_up.png b/cinelerra-5.0/plugins/4k/data/hscroll_right_up.png new file mode 100644 index 00000000..2b57c724 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hscroll_right_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hslider_bg_dn.png b/cinelerra-5.0/plugins/4k/data/hslider_bg_dn.png new file mode 100644 index 00000000..27e78d65 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hslider_bg_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hslider_bg_hi.png b/cinelerra-5.0/plugins/4k/data/hslider_bg_hi.png new file mode 100644 index 00000000..872e5b20 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hslider_bg_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hslider_bg_up.png b/cinelerra-5.0/plugins/4k/data/hslider_bg_up.png new file mode 100644 index 00000000..467c174a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hslider_bg_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hslider_fg_dn.png b/cinelerra-5.0/plugins/4k/data/hslider_fg_dn.png new file mode 100644 index 00000000..d2da18e9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hslider_fg_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hslider_fg_hi.png b/cinelerra-5.0/plugins/4k/data/hslider_fg_hi.png new file mode 100644 index 00000000..553fd9f2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hslider_fg_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/hslider_fg_up.png b/cinelerra-5.0/plugins/4k/data/hslider_fg_up.png new file mode 100644 index 00000000..58aae510 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/hslider_fg_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ibeam.png b/cinelerra-5.0/plugins/4k/data/ibeam.png new file mode 100644 index 00000000..ab84d1ca Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ibeam.png differ diff --git a/cinelerra-5.0/plugins/4k/data/icons.png b/cinelerra-5.0/plugins/4k/data/icons.png new file mode 100644 index 00000000..bfde0416 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/icons.png differ diff --git a/cinelerra-5.0/plugins/4k/data/in_checked.png b/cinelerra-5.0/plugins/4k/data/in_checked.png new file mode 100644 index 00000000..5b22ecbf Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/in_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/in_checkedhi.png b/cinelerra-5.0/plugins/4k/data/in_checkedhi.png new file mode 100644 index 00000000..f1323992 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/in_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/in_dn.png b/cinelerra-5.0/plugins/4k/data/in_dn.png new file mode 100644 index 00000000..d5517b46 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/in_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/in_hi.png b/cinelerra-5.0/plugins/4k/data/in_hi.png new file mode 100644 index 00000000..db52c7b6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/in_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/in_up.png b/cinelerra-5.0/plugins/4k/data/in_up.png new file mode 100644 index 00000000..e89aecba Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/in_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/inpoint.png b/cinelerra-5.0/plugins/4k/data/inpoint.png new file mode 100644 index 00000000..727c8fd1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/inpoint.png differ diff --git a/cinelerra-5.0/plugins/4k/data/keyframe.png b/cinelerra-5.0/plugins/4k/data/keyframe.png new file mode 100644 index 00000000..aca4d93b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/keyframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/label.png b/cinelerra-5.0/plugins/4k/data/label.png new file mode 100644 index 00000000..f9744afb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/label.png differ diff --git a/cinelerra-5.0/plugins/4k/data/label_checked.png b/cinelerra-5.0/plugins/4k/data/label_checked.png new file mode 100644 index 00000000..aaf69d3e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/label_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/label_checkedhi.png b/cinelerra-5.0/plugins/4k/data/label_checkedhi.png new file mode 100644 index 00000000..93322250 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/label_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/labeltoggle_dn.png b/cinelerra-5.0/plugins/4k/data/labeltoggle_dn.png new file mode 100644 index 00000000..f8ce2b51 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/labeltoggle_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/labeltoggle_up.png b/cinelerra-5.0/plugins/4k/data/labeltoggle_up.png new file mode 100644 index 00000000..0d09e344 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/labeltoggle_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/labeltoggle_uphi.png b/cinelerra-5.0/plugins/4k/data/labeltoggle_uphi.png new file mode 100644 index 00000000..40164d2d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/labeltoggle_uphi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/left_justify.png b/cinelerra-5.0/plugins/4k/data/left_justify.png new file mode 100644 index 00000000..ca8c76a9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/left_justify.png differ diff --git a/cinelerra-5.0/plugins/4k/data/listbox_button.png b/cinelerra-5.0/plugins/4k/data/listbox_button.png new file mode 100644 index 00000000..691d32a7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/listbox_button.png differ diff --git a/cinelerra-5.0/plugins/4k/data/listbox_dn.png b/cinelerra-5.0/plugins/4k/data/listbox_dn.png new file mode 100644 index 00000000..a897a681 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/listbox_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/listbox_up.png b/cinelerra-5.0/plugins/4k/data/listbox_up.png new file mode 100644 index 00000000..13adce2a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/listbox_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_cat.png b/cinelerra-5.0/plugins/4k/data/loadmode_cat.png new file mode 100644 index 00000000..a103c436 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_cat.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_checked.png b/cinelerra-5.0/plugins/4k/data/loadmode_checked.png new file mode 100644 index 00000000..b3701565 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_checkedhi.png b/cinelerra-5.0/plugins/4k/data/loadmode_checkedhi.png new file mode 100644 index 00000000..2a5c484e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_dn.png b/cinelerra-5.0/plugins/4k/data/loadmode_dn.png new file mode 100644 index 00000000..0f5ceeef Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_hi.png b/cinelerra-5.0/plugins/4k/data/loadmode_hi.png new file mode 100644 index 00000000..dded1505 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_nested.png b/cinelerra-5.0/plugins/4k/data/loadmode_nested.png new file mode 100644 index 00000000..a1bb86b5 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_nested.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_new.png b/cinelerra-5.0/plugins/4k/data/loadmode_new.png new file mode 100644 index 00000000..11d5a0df Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_new.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_newcat.png b/cinelerra-5.0/plugins/4k/data/loadmode_newcat.png new file mode 100644 index 00000000..ac851116 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_newcat.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_newtracks.png b/cinelerra-5.0/plugins/4k/data/loadmode_newtracks.png new file mode 100644 index 00000000..017ef88b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_newtracks.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_none.png b/cinelerra-5.0/plugins/4k/data/loadmode_none.png new file mode 100644 index 00000000..6efb68f3 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_none.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_paste.png b/cinelerra-5.0/plugins/4k/data/loadmode_paste.png new file mode 100644 index 00000000..f1bcef7c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_paste.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_resource.png b/cinelerra-5.0/plugins/4k/data/loadmode_resource.png new file mode 100644 index 00000000..c1efcf44 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_resource.png differ diff --git a/cinelerra-5.0/plugins/4k/data/loadmode_up.png b/cinelerra-5.0/plugins/4k/data/loadmode_up.png new file mode 100644 index 00000000..1bd32e7f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/loadmode_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/locklabels_dn.png b/cinelerra-5.0/plugins/4k/data/locklabels_dn.png new file mode 100644 index 00000000..0a1563b4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/locklabels_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/locklabels_locked.png b/cinelerra-5.0/plugins/4k/data/locklabels_locked.png new file mode 100644 index 00000000..f4963ed2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/locklabels_locked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/locklabels_lockedhi.png b/cinelerra-5.0/plugins/4k/data/locklabels_lockedhi.png new file mode 100644 index 00000000..236325e6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/locklabels_lockedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/locklabels_unlocked.png b/cinelerra-5.0/plugins/4k/data/locklabels_unlocked.png new file mode 100644 index 00000000..5b16bec7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/locklabels_unlocked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/locklabels_unlockedhi.png b/cinelerra-5.0/plugins/4k/data/locklabels_unlockedhi.png new file mode 100644 index 00000000..f16e0c1d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/locklabels_unlockedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/magnify.png b/cinelerra-5.0/plugins/4k/data/magnify.png new file mode 100644 index 00000000..ad712ae4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/magnify.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mainwindow.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/mainwindow.xcf.bz2 new file mode 100644 index 00000000..121232f2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mainwindow.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/mask.png b/cinelerra-5.0/plugins/4k/data/mask.png new file mode 100644 index 00000000..4d11bcf9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mask.png differ diff --git a/cinelerra-5.0/plugins/4k/data/maskkeyframe.png b/cinelerra-5.0/plugins/4k/data/maskkeyframe.png new file mode 100644 index 00000000..28d6f707 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/maskkeyframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mbutton_bg.png b/cinelerra-5.0/plugins/4k/data/mbutton_bg.png new file mode 100644 index 00000000..ca111827 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mbutton_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mclock_flat.png b/cinelerra-5.0/plugins/4k/data/mclock_flat.png new file mode 100644 index 00000000..471cf972 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mclock_flat.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menu.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/menu.xcf.bz2 new file mode 100644 index 00000000..8c49073d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menu.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/menu_popup_bg.png b/cinelerra-5.0/plugins/4k/data/menu_popup_bg.png new file mode 100644 index 00000000..4dbb903b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menu_popup_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menubar_bg.png b/cinelerra-5.0/plugins/4k/data/menubar_bg.png new file mode 100644 index 00000000..c9dbd359 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menubar_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menubar_dn.png b/cinelerra-5.0/plugins/4k/data/menubar_dn.png new file mode 100644 index 00000000..f51f146d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menubar_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menubar_hi.png b/cinelerra-5.0/plugins/4k/data/menubar_hi.png new file mode 100644 index 00000000..270b883d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menubar_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menubar_up.png b/cinelerra-5.0/plugins/4k/data/menubar_up.png new file mode 100644 index 00000000..b6ab3be2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menubar_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menuitem_dn.png b/cinelerra-5.0/plugins/4k/data/menuitem_dn.png new file mode 100644 index 00000000..c101e239 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menuitem_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menuitem_hi.png b/cinelerra-5.0/plugins/4k/data/menuitem_hi.png new file mode 100644 index 00000000..f029ffd9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menuitem_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menuitem_up.png b/cinelerra-5.0/plugins/4k/data/menuitem_up.png new file mode 100644 index 00000000..3826da23 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menuitem_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menupopup_dn.png b/cinelerra-5.0/plugins/4k/data/menupopup_dn.png new file mode 100644 index 00000000..342a6c0c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menupopup_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menupopup_hi.png b/cinelerra-5.0/plugins/4k/data/menupopup_hi.png new file mode 100644 index 00000000..74940ead Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menupopup_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menupopup_up.png b/cinelerra-5.0/plugins/4k/data/menupopup_up.png new file mode 100644 index 00000000..d535ce8b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menupopup_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menutitle_dn.png b/cinelerra-5.0/plugins/4k/data/menutitle_dn.png new file mode 100644 index 00000000..f6643fa8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menutitle_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menutitle_hi.png b/cinelerra-5.0/plugins/4k/data/menutitle_hi.png new file mode 100644 index 00000000..6c64d7f2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menutitle_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/menutitle_up.png b/cinelerra-5.0/plugins/4k/data/menutitle_up.png new file mode 100644 index 00000000..3d0ea8c8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/menutitle_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/middle_justify.png b/cinelerra-5.0/plugins/4k/data/middle_justify.png new file mode 100644 index 00000000..b7081c82 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/middle_justify.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_add.png b/cinelerra-5.0/plugins/4k/data/mode_add.png new file mode 100644 index 00000000..3e130cc8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_add.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_average.png b/cinelerra-5.0/plugins/4k/data/mode_average.png new file mode 100644 index 00000000..3edf8524 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_average.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_darken.png b/cinelerra-5.0/plugins/4k/data/mode_darken.png new file mode 100644 index 00000000..2c3f6c8a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_darken.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_divide.png b/cinelerra-5.0/plugins/4k/data/mode_divide.png new file mode 100644 index 00000000..4af0eff6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_divide.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_dn.png b/cinelerra-5.0/plugins/4k/data/mode_dn.png new file mode 100644 index 00000000..78b5b0d0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_dst.png b/cinelerra-5.0/plugins/4k/data/mode_dst.png new file mode 100644 index 00000000..933eb89c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_dst.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_dstatop.png b/cinelerra-5.0/plugins/4k/data/mode_dstatop.png new file mode 100644 index 00000000..8ac13873 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_dstatop.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_dstin.png b/cinelerra-5.0/plugins/4k/data/mode_dstin.png new file mode 100644 index 00000000..7fab8e1b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_dstin.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_dstout.png b/cinelerra-5.0/plugins/4k/data/mode_dstout.png new file mode 100644 index 00000000..09cfb006 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_dstout.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_dstover.png b/cinelerra-5.0/plugins/4k/data/mode_dstover.png new file mode 100644 index 00000000..d9328280 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_dstover.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_hi.png b/cinelerra-5.0/plugins/4k/data/mode_hi.png new file mode 100644 index 00000000..4c927459 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_lighten.png b/cinelerra-5.0/plugins/4k/data/mode_lighten.png new file mode 100644 index 00000000..fa9a5877 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_lighten.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_max.png b/cinelerra-5.0/plugins/4k/data/mode_max.png new file mode 100644 index 00000000..8674f1b2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_max.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_min.png b/cinelerra-5.0/plugins/4k/data/mode_min.png new file mode 100644 index 00000000..b21e080e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_min.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_multiply.png b/cinelerra-5.0/plugins/4k/data/mode_multiply.png new file mode 100644 index 00000000..77b8fce8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_multiply.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_normal.png b/cinelerra-5.0/plugins/4k/data/mode_normal.png new file mode 100644 index 00000000..df5af6fd Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_normal.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_or.png b/cinelerra-5.0/plugins/4k/data/mode_or.png new file mode 100644 index 00000000..9a531226 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_or.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_replace.png b/cinelerra-5.0/plugins/4k/data/mode_replace.png new file mode 100644 index 00000000..51aa6e43 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_replace.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_src.png b/cinelerra-5.0/plugins/4k/data/mode_src.png new file mode 100644 index 00000000..1b0038d8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_src.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_srcatop.png b/cinelerra-5.0/plugins/4k/data/mode_srcatop.png new file mode 100644 index 00000000..36426557 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_srcatop.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_srcin.png b/cinelerra-5.0/plugins/4k/data/mode_srcin.png new file mode 100644 index 00000000..31bcc425 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_srcin.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_srcout.png b/cinelerra-5.0/plugins/4k/data/mode_srcout.png new file mode 100644 index 00000000..6119c40a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_srcout.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_srcover.png b/cinelerra-5.0/plugins/4k/data/mode_srcover.png new file mode 100644 index 00000000..a8ff0f26 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_srcover.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_subtract.png b/cinelerra-5.0/plugins/4k/data/mode_subtract.png new file mode 100644 index 00000000..35b7bcee Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_subtract.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_up.png b/cinelerra-5.0/plugins/4k/data/mode_up.png new file mode 100644 index 00000000..a1c22a40 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mode_xor.png b/cinelerra-5.0/plugins/4k/data/mode_xor.png new file mode 100644 index 00000000..c7f6765a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mode_xor.png differ diff --git a/cinelerra-5.0/plugins/4k/data/modekeyframe.png b/cinelerra-5.0/plugins/4k/data/modekeyframe.png new file mode 100644 index 00000000..0b14af85 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/modekeyframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mscroll_filler.png b/cinelerra-5.0/plugins/4k/data/mscroll_filler.png new file mode 100644 index 00000000..320695ba Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mscroll_filler.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mtimebar.png b/cinelerra-5.0/plugins/4k/data/mtimebar.png new file mode 100644 index 00000000..e59afe74 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mtimebar.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mutepatch.png b/cinelerra-5.0/plugins/4k/data/mutepatch.png new file mode 100644 index 00000000..adb2a934 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mutepatch.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mutepatch.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/mutepatch.xcf.bz2 new file mode 100644 index 00000000..12f3d9df Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mutepatch.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/mutepatch_checked.png b/cinelerra-5.0/plugins/4k/data/mutepatch_checked.png new file mode 100644 index 00000000..482d22eb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mutepatch_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mutepatch_checkedhi.png b/cinelerra-5.0/plugins/4k/data/mutepatch_checkedhi.png new file mode 100644 index 00000000..f856fb2e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mutepatch_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mutepatch_dn.png b/cinelerra-5.0/plugins/4k/data/mutepatch_dn.png new file mode 100644 index 00000000..1de6242b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mutepatch_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mutepatch_hi.png b/cinelerra-5.0/plugins/4k/data/mutepatch_hi.png new file mode 100644 index 00000000..1dadc9b2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mutepatch_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/mutepatch_up.png b/cinelerra-5.0/plugins/4k/data/mutepatch_up.png new file mode 100644 index 00000000..80789f94 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/mutepatch_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/new.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/new.xcf.bz2 new file mode 100644 index 00000000..7b5c23db Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/new.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/new_bg.png b/cinelerra-5.0/plugins/4k/data/new_bg.png new file mode 100644 index 00000000..f9f6730c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/new_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/new_bigbutton_dn.png b/cinelerra-5.0/plugins/4k/data/new_bigbutton_dn.png new file mode 100644 index 00000000..ce02a72b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/new_bigbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/new_bigbutton_hi.png b/cinelerra-5.0/plugins/4k/data/new_bigbutton_hi.png new file mode 100644 index 00000000..a0fa6805 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/new_bigbutton_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/new_bigbutton_up.png b/cinelerra-5.0/plugins/4k/data/new_bigbutton_up.png new file mode 100644 index 00000000..886ac237 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/new_bigbutton_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/nextedit.png b/cinelerra-5.0/plugins/4k/data/nextedit.png new file mode 100644 index 00000000..7e85145e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/nextedit.png differ diff --git a/cinelerra-5.0/plugins/4k/data/nextlabel.png b/cinelerra-5.0/plugins/4k/data/nextlabel.png new file mode 100644 index 00000000..980f9669 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/nextlabel.png differ diff --git a/cinelerra-5.0/plugins/4k/data/nexttip.png b/cinelerra-5.0/plugins/4k/data/nexttip.png new file mode 100644 index 00000000..ef04f404 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/nexttip.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ok.png b/cinelerra-5.0/plugins/4k/data/ok.png new file mode 100644 index 00000000..15dfcc1d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ok.png differ diff --git a/cinelerra-5.0/plugins/4k/data/openfolder.png b/cinelerra-5.0/plugins/4k/data/openfolder.png new file mode 100644 index 00000000..95d9e591 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/openfolder.png differ diff --git a/cinelerra-5.0/plugins/4k/data/out_checked.png b/cinelerra-5.0/plugins/4k/data/out_checked.png new file mode 100644 index 00000000..730196c5 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/out_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/out_checkedhi.png b/cinelerra-5.0/plugins/4k/data/out_checkedhi.png new file mode 100644 index 00000000..186a292e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/out_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/out_dn.png b/cinelerra-5.0/plugins/4k/data/out_dn.png new file mode 100644 index 00000000..5299bbe1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/out_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/out_hi.png b/cinelerra-5.0/plugins/4k/data/out_hi.png new file mode 100644 index 00000000..bf6aabbe Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/out_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/out_up.png b/cinelerra-5.0/plugins/4k/data/out_up.png new file mode 100644 index 00000000..973bf38d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/out_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/outpoint.png b/cinelerra-5.0/plugins/4k/data/outpoint.png new file mode 100644 index 00000000..a1387d27 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/outpoint.png differ diff --git a/cinelerra-5.0/plugins/4k/data/over.png b/cinelerra-5.0/plugins/4k/data/over.png new file mode 100644 index 00000000..e1378d48 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/over.png differ diff --git a/cinelerra-5.0/plugins/4k/data/overwrite.png b/cinelerra-5.0/plugins/4k/data/overwrite.png new file mode 100644 index 00000000..ce21cc98 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/overwrite.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pan_channel.png b/cinelerra-5.0/plugins/4k/data/pan_channel.png new file mode 100644 index 00000000..8986edf8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pan_channel.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pan_channel_small.png b/cinelerra-5.0/plugins/4k/data/pan_channel_small.png new file mode 100644 index 00000000..332849dd Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pan_channel_small.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pan_hi.png b/cinelerra-5.0/plugins/4k/data/pan_hi.png new file mode 100644 index 00000000..2fa43d1c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pan_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pan_popup.png b/cinelerra-5.0/plugins/4k/data/pan_popup.png new file mode 100644 index 00000000..29a77e55 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pan_popup.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pan_stick.png b/cinelerra-5.0/plugins/4k/data/pan_stick.png new file mode 100644 index 00000000..7923a1c9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pan_stick.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pan_stick_small.png b/cinelerra-5.0/plugins/4k/data/pan_stick_small.png new file mode 100644 index 00000000..4d09d4a8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pan_stick_small.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pan_up.png b/cinelerra-5.0/plugins/4k/data/pan_up.png new file mode 100644 index 00000000..2d878111 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pan_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pane.png b/cinelerra-5.0/plugins/4k/data/pane.png new file mode 100644 index 00000000..37259445 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pane.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pane_dn.png b/cinelerra-5.0/plugins/4k/data/pane_dn.png new file mode 100644 index 00000000..9206a712 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pane_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pane_hi.png b/cinelerra-5.0/plugins/4k/data/pane_hi.png new file mode 100644 index 00000000..52e881dc Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pane_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pane_up.png b/cinelerra-5.0/plugins/4k/data/pane_up.png new file mode 100644 index 00000000..ab12e210 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pane_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/panel_divider.png b/cinelerra-5.0/plugins/4k/data/panel_divider.png new file mode 100644 index 00000000..f9b5e9c9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/panel_divider.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pankeyframe.png b/cinelerra-5.0/plugins/4k/data/pankeyframe.png new file mode 100644 index 00000000..65f86f0c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pankeyframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/paste.png b/cinelerra-5.0/plugins/4k/data/paste.png new file mode 100644 index 00000000..d28aa0d6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/paste.png differ diff --git a/cinelerra-5.0/plugins/4k/data/patch_checked.png b/cinelerra-5.0/plugins/4k/data/patch_checked.png new file mode 100644 index 00000000..082adb5c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/patch_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/patch_checkedhi.png b/cinelerra-5.0/plugins/4k/data/patch_checkedhi.png new file mode 100644 index 00000000..96cc44cf Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/patch_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/patch_dn.png b/cinelerra-5.0/plugins/4k/data/patch_dn.png new file mode 100644 index 00000000..4086fb9e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/patch_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/patch_hi.png b/cinelerra-5.0/plugins/4k/data/patch_hi.png new file mode 100644 index 00000000..c411933b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/patch_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/patch_up.png b/cinelerra-5.0/plugins/4k/data/patch_up.png new file mode 100644 index 00000000..54c2c633 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/patch_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/patchbay_bg.png b/cinelerra-5.0/plugins/4k/data/patchbay_bg.png new file mode 100644 index 00000000..475e5f14 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/patchbay_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/patches.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/patches.xcf.bz2 new file mode 100644 index 00000000..275778f7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/patches.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/pause.png b/cinelerra-5.0/plugins/4k/data/pause.png new file mode 100644 index 00000000..59d015bb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pause.png differ diff --git a/cinelerra-5.0/plugins/4k/data/period.png b/cinelerra-5.0/plugins/4k/data/period.png new file mode 100644 index 00000000..072f5e5b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/period.png differ diff --git a/cinelerra-5.0/plugins/4k/data/picture.png b/cinelerra-5.0/plugins/4k/data/picture.png new file mode 100644 index 00000000..c634d408 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/picture.png differ diff --git a/cinelerra-5.0/plugins/4k/data/play.png b/cinelerra-5.0/plugins/4k/data/play.png new file mode 100644 index 00000000..05c4eab6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/play.png differ diff --git a/cinelerra-5.0/plugins/4k/data/playpatch.png b/cinelerra-5.0/plugins/4k/data/playpatch.png new file mode 100644 index 00000000..ea784b04 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/playpatch.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/plugin.xcf.bz2 new file mode 100644 index 00000000..a5974377 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_bg.png b/cinelerra-5.0/plugins/4k/data/plugin_bg.png new file mode 100644 index 00000000..99ecaa21 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_on.png b/cinelerra-5.0/plugins/4k/data/plugin_on.png new file mode 100644 index 00000000..f5e05cfe Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_on.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_ondn.png b/cinelerra-5.0/plugins/4k/data/plugin_ondn.png new file mode 100644 index 00000000..d5599d14 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_ondn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_onhi.png b/cinelerra-5.0/plugins/4k/data/plugin_onhi.png new file mode 100644 index 00000000..0b03ba5f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_onhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_onselect.png b/cinelerra-5.0/plugins/4k/data/plugin_onselect.png new file mode 100644 index 00000000..f648acd2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_onselect.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_onselecthi.png b/cinelerra-5.0/plugins/4k/data/plugin_onselecthi.png new file mode 100644 index 00000000..500cef35 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_onselecthi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_show.png b/cinelerra-5.0/plugins/4k/data/plugin_show.png new file mode 100644 index 00000000..a59b549d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_show.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_showdn.png b/cinelerra-5.0/plugins/4k/data/plugin_showdn.png new file mode 100644 index 00000000..90afae7c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_showdn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_showhi.png b/cinelerra-5.0/plugins/4k/data/plugin_showhi.png new file mode 100644 index 00000000..439585b5 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_showhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_showselect.png b/cinelerra-5.0/plugins/4k/data/plugin_showselect.png new file mode 100644 index 00000000..fbb3f760 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_showselect.png differ diff --git a/cinelerra-5.0/plugins/4k/data/plugin_showselecthi.png b/cinelerra-5.0/plugins/4k/data/plugin_showselecthi.png new file mode 100644 index 00000000..5f98a4a0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/plugin_showselecthi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pot.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/pot.xcf.bz2 new file mode 100644 index 00000000..c3997b9a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pot.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/pot_dn.png b/cinelerra-5.0/plugins/4k/data/pot_dn.png new file mode 100644 index 00000000..a5c996c1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pot_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pot_hi.png b/cinelerra-5.0/plugins/4k/data/pot_hi.png new file mode 100644 index 00000000..c64127c1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pot_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/pot_up.png b/cinelerra-5.0/plugins/4k/data/pot_up.png new file mode 100644 index 00000000..97957f26 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/pot_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/preferences_bg.png b/cinelerra-5.0/plugins/4k/data/preferences_bg.png new file mode 100644 index 00000000..8d9ea644 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/preferences_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/preferencesbutton_dn.png b/cinelerra-5.0/plugins/4k/data/preferencesbutton_dn.png new file mode 100644 index 00000000..985c7cb0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/preferencesbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/preferencesbutton_dnhi.png b/cinelerra-5.0/plugins/4k/data/preferencesbutton_dnhi.png new file mode 100644 index 00000000..dc132991 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/preferencesbutton_dnhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/preferencesbutton_dnlo.png b/cinelerra-5.0/plugins/4k/data/preferencesbutton_dnlo.png new file mode 100644 index 00000000..692a9021 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/preferencesbutton_dnlo.png differ diff --git a/cinelerra-5.0/plugins/4k/data/preferencesbutton_up.png b/cinelerra-5.0/plugins/4k/data/preferencesbutton_up.png new file mode 100644 index 00000000..3223ec6f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/preferencesbutton_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/preferencesbutton_uphi.png b/cinelerra-5.0/plugins/4k/data/preferencesbutton_uphi.png new file mode 100644 index 00000000..a77c8527 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/preferencesbutton_uphi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/prevedit.png b/cinelerra-5.0/plugins/4k/data/prevedit.png new file mode 100644 index 00000000..bbbb3c5f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/prevedit.png differ diff --git a/cinelerra-5.0/plugins/4k/data/prevlabel.png b/cinelerra-5.0/plugins/4k/data/prevlabel.png new file mode 100644 index 00000000..717cd401 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/prevlabel.png differ diff --git a/cinelerra-5.0/plugins/4k/data/prevtip.png b/cinelerra-5.0/plugins/4k/data/prevtip.png new file mode 100644 index 00000000..234ff2ba Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/prevtip.png differ diff --git a/cinelerra-5.0/plugins/4k/data/progress_bg.png b/cinelerra-5.0/plugins/4k/data/progress_bg.png new file mode 100644 index 00000000..1b0468a7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/progress_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/progress_hi.png b/cinelerra-5.0/plugins/4k/data/progress_hi.png new file mode 100644 index 00000000..3dfe11ad Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/progress_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/projector.png b/cinelerra-5.0/plugins/4k/data/projector.png new file mode 100644 index 00000000..31a053f4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/projector.png differ diff --git a/cinelerra-5.0/plugins/4k/data/projectorkeyframe.png b/cinelerra-5.0/plugins/4k/data/projectorkeyframe.png new file mode 100644 index 00000000..4aaea3c6 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/projectorkeyframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/protect.png b/cinelerra-5.0/plugins/4k/data/protect.png new file mode 100644 index 00000000..4c78a905 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/protect.png differ diff --git a/cinelerra-5.0/plugins/4k/data/radial.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/radial.xcf.bz2 new file mode 100644 index 00000000..5722e9a7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/radial.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/radial_checked.png b/cinelerra-5.0/plugins/4k/data/radial_checked.png new file mode 100644 index 00000000..12f6374e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/radial_checked.png differ diff --git a/cinelerra-5.0/plugins/4k/data/radial_checkedhi.png b/cinelerra-5.0/plugins/4k/data/radial_checkedhi.png new file mode 100644 index 00000000..9ff3e709 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/radial_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/radial_dn.png b/cinelerra-5.0/plugins/4k/data/radial_dn.png new file mode 100644 index 00000000..7647ab7d Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/radial_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/radial_hi.png b/cinelerra-5.0/plugins/4k/data/radial_hi.png new file mode 100644 index 00000000..4c4bbfa7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/radial_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/radial_up.png b/cinelerra-5.0/plugins/4k/data/radial_up.png new file mode 100644 index 00000000..b361f826 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/radial_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/record.png b/cinelerra-5.0/plugins/4k/data/record.png new file mode 100644 index 00000000..d15bfed1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/record.png differ diff --git a/cinelerra-5.0/plugins/4k/data/recordpatch.png b/cinelerra-5.0/plugins/4k/data/recordpatch.png new file mode 100644 index 00000000..8746ceed Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/recordpatch.png differ diff --git a/cinelerra-5.0/plugins/4k/data/redo.png b/cinelerra-5.0/plugins/4k/data/redo.png new file mode 100644 index 00000000..55f8115e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/redo.png differ diff --git a/cinelerra-5.0/plugins/4k/data/reload.png b/cinelerra-5.0/plugins/4k/data/reload.png new file mode 100644 index 00000000..ff0478aa Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/reload.png differ diff --git a/cinelerra-5.0/plugins/4k/data/rename.png b/cinelerra-5.0/plugins/4k/data/rename.png new file mode 100644 index 00000000..71e36db8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/rename.png differ diff --git a/cinelerra-5.0/plugins/4k/data/resource1024.png b/cinelerra-5.0/plugins/4k/data/resource1024.png new file mode 100644 index 00000000..67da059c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/resource1024.png differ diff --git a/cinelerra-5.0/plugins/4k/data/resource128.png b/cinelerra-5.0/plugins/4k/data/resource128.png new file mode 100644 index 00000000..2e3e90b7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/resource128.png differ diff --git a/cinelerra-5.0/plugins/4k/data/resource256.png b/cinelerra-5.0/plugins/4k/data/resource256.png new file mode 100644 index 00000000..6d31a0f1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/resource256.png differ diff --git a/cinelerra-5.0/plugins/4k/data/resource32.png b/cinelerra-5.0/plugins/4k/data/resource32.png new file mode 100644 index 00000000..9fe5d9d0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/resource32.png differ diff --git a/cinelerra-5.0/plugins/4k/data/resource512.png b/cinelerra-5.0/plugins/4k/data/resource512.png new file mode 100644 index 00000000..439b624f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/resource512.png differ diff --git a/cinelerra-5.0/plugins/4k/data/resource64.png b/cinelerra-5.0/plugins/4k/data/resource64.png new file mode 100644 index 00000000..1035e24a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/resource64.png differ diff --git a/cinelerra-5.0/plugins/4k/data/reverse.png b/cinelerra-5.0/plugins/4k/data/reverse.png new file mode 100644 index 00000000..01201336 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/reverse.png differ diff --git a/cinelerra-5.0/plugins/4k/data/rewind.png b/cinelerra-5.0/plugins/4k/data/rewind.png new file mode 100644 index 00000000..14357bb0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/rewind.png differ diff --git a/cinelerra-5.0/plugins/4k/data/right_justify.png b/cinelerra-5.0/plugins/4k/data/right_justify.png new file mode 100644 index 00000000..bf6b6706 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/right_justify.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ruler.png b/cinelerra-5.0/plugins/4k/data/ruler.png new file mode 100644 index 00000000..b28a223a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ruler.png differ diff --git a/cinelerra-5.0/plugins/4k/data/scope.png b/cinelerra-5.0/plugins/4k/data/scope.png new file mode 100644 index 00000000..bef250d8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/scope.png differ diff --git a/cinelerra-5.0/plugins/4k/data/setformat_bg.png b/cinelerra-5.0/plugins/4k/data/setformat_bg.png new file mode 100644 index 00000000..f0b95fc5 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/setformat_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/show_meters.png b/cinelerra-5.0/plugins/4k/data/show_meters.png new file mode 100644 index 00000000..057785eb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/show_meters.png differ diff --git a/cinelerra-5.0/plugins/4k/data/singleframe.png b/cinelerra-5.0/plugins/4k/data/singleframe.png new file mode 100644 index 00000000..e13a7a34 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/singleframe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/space.png b/cinelerra-5.0/plugins/4k/data/space.png new file mode 100644 index 00000000..c8147f05 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/space.png differ diff --git a/cinelerra-5.0/plugins/4k/data/splice.png b/cinelerra-5.0/plugins/4k/data/splice.png new file mode 100644 index 00000000..77d34008 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/splice.png differ diff --git a/cinelerra-5.0/plugins/4k/data/statusbar.png b/cinelerra-5.0/plugins/4k/data/statusbar.png new file mode 100644 index 00000000..4dc5b96b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/statusbar.png differ diff --git a/cinelerra-5.0/plugins/4k/data/statusbar_cancel.png b/cinelerra-5.0/plugins/4k/data/statusbar_cancel.png new file mode 100644 index 00000000..ec5309ed Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/statusbar_cancel.png differ diff --git a/cinelerra-5.0/plugins/4k/data/statusbar_cancel_dn.png b/cinelerra-5.0/plugins/4k/data/statusbar_cancel_dn.png new file mode 100644 index 00000000..5e96b013 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/statusbar_cancel_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/statusbar_cancel_hi.png b/cinelerra-5.0/plugins/4k/data/statusbar_cancel_hi.png new file mode 100644 index 00000000..40e98bd2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/statusbar_cancel_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/statusbar_cancel_up.png b/cinelerra-5.0/plugins/4k/data/statusbar_cancel_up.png new file mode 100644 index 00000000..6186769c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/statusbar_cancel_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/stop.png b/cinelerra-5.0/plugins/4k/data/stop.png new file mode 100644 index 00000000..5c3d9ac1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/stop.png differ diff --git a/cinelerra-5.0/plugins/4k/data/swap_extents.png b/cinelerra-5.0/plugins/4k/data/swap_extents.png new file mode 100644 index 00000000..e5915cd0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/swap_extents.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tan_linear.png b/cinelerra-5.0/plugins/4k/data/tan_linear.png new file mode 100644 index 00000000..dbc70edf Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tan_linear.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tan_smooth.png b/cinelerra-5.0/plugins/4k/data/tan_smooth.png new file mode 100644 index 00000000..4dc63b10 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tan_smooth.png differ diff --git a/cinelerra-5.0/plugins/4k/data/text.png b/cinelerra-5.0/plugins/4k/data/text.png new file mode 100644 index 00000000..a8065bb2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/text.png differ diff --git a/cinelerra-5.0/plugins/4k/data/text_highlight.png b/cinelerra-5.0/plugins/4k/data/text_highlight.png new file mode 100644 index 00000000..8bb91268 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/text_highlight.png differ diff --git a/cinelerra-5.0/plugins/4k/data/timebar_bg_flat.png b/cinelerra-5.0/plugins/4k/data/timebar_bg_flat.png new file mode 100644 index 00000000..3ee6abe4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/timebar_bg_flat.png differ diff --git a/cinelerra-5.0/plugins/4k/data/timebar_brender.png b/cinelerra-5.0/plugins/4k/data/timebar_brender.png new file mode 100644 index 00000000..13045cb4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/timebar_brender.png differ diff --git a/cinelerra-5.0/plugins/4k/data/timebar_view.png b/cinelerra-5.0/plugins/4k/data/timebar_view.png new file mode 100644 index 00000000..fed4b1fa Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/timebar_view.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tipbutton_dn.png b/cinelerra-5.0/plugins/4k/data/tipbutton_dn.png new file mode 100644 index 00000000..fa3de52e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tipbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tipbutton_hi.png b/cinelerra-5.0/plugins/4k/data/tipbutton_hi.png new file mode 100644 index 00000000..1e4edf97 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tipbutton_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tipbutton_up.png b/cinelerra-5.0/plugins/4k/data/tipbutton_up.png new file mode 100644 index 00000000..4e0284a4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tipbutton_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/title_bg.png b/cinelerra-5.0/plugins/4k/data/title_bg.png new file mode 100644 index 00000000..2ee44717 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/title_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/titlesafe.png b/cinelerra-5.0/plugins/4k/data/titlesafe.png new file mode 100644 index 00000000..00b08860 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/titlesafe.png differ diff --git a/cinelerra-5.0/plugins/4k/data/toclip.png b/cinelerra-5.0/plugins/4k/data/toclip.png new file mode 100644 index 00000000..48d2f52b Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/toclip.png differ diff --git a/cinelerra-5.0/plugins/4k/data/toolwindow.png b/cinelerra-5.0/plugins/4k/data/toolwindow.png new file mode 100644 index 00000000..366c11a4 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/toolwindow.png differ diff --git a/cinelerra-5.0/plugins/4k/data/top_justify.png b/cinelerra-5.0/plugins/4k/data/top_justify.png new file mode 100644 index 00000000..8170bbc8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/top_justify.png differ diff --git a/cinelerra-5.0/plugins/4k/data/transportdn.png b/cinelerra-5.0/plugins/4k/data/transportdn.png new file mode 100644 index 00000000..4322c944 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/transportdn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/transportend.png b/cinelerra-5.0/plugins/4k/data/transportend.png new file mode 100644 index 00000000..c5abc093 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/transportend.png differ diff --git a/cinelerra-5.0/plugins/4k/data/transporthi.png b/cinelerra-5.0/plugins/4k/data/transporthi.png new file mode 100644 index 00000000..f6355f6f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/transporthi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/transportup.png b/cinelerra-5.0/plugins/4k/data/transportup.png new file mode 100644 index 00000000..8332f5e1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/transportup.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tumble_bottom.png b/cinelerra-5.0/plugins/4k/data/tumble_bottom.png new file mode 100644 index 00000000..1687644f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tumble_bottom.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tumble_hi.png b/cinelerra-5.0/plugins/4k/data/tumble_hi.png new file mode 100644 index 00000000..61616e42 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tumble_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tumble_top.png b/cinelerra-5.0/plugins/4k/data/tumble_top.png new file mode 100644 index 00000000..03907dd0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tumble_top.png differ diff --git a/cinelerra-5.0/plugins/4k/data/tumble_up.png b/cinelerra-5.0/plugins/4k/data/tumble_up.png new file mode 100644 index 00000000..eb608b00 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/tumble_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/undo.png b/cinelerra-5.0/plugins/4k/data/undo.png new file mode 100644 index 00000000..cc93b5ac Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/undo.png differ diff --git a/cinelerra-5.0/plugins/4k/data/updir.png b/cinelerra-5.0/plugins/4k/data/updir.png new file mode 100644 index 00000000..91fb90cb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/updir.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vbuttons_left.png b/cinelerra-5.0/plugins/4k/data/vbuttons_left.png new file mode 100644 index 00000000..6f233dea Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vbuttons_left.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vclock.png b/cinelerra-5.0/plugins/4k/data/vclock.png new file mode 100644 index 00000000..81a91e36 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vclock.png differ diff --git a/cinelerra-5.0/plugins/4k/data/veffect_icon.png b/cinelerra-5.0/plugins/4k/data/veffect_icon.png new file mode 100644 index 00000000..e2816133 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/veffect_icon.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_handle_bg.png b/cinelerra-5.0/plugins/4k/data/vscroll_handle_bg.png new file mode 100644 index 00000000..6e999c46 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_handle_bg.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_handle_dn.png b/cinelerra-5.0/plugins/4k/data/vscroll_handle_dn.png new file mode 100644 index 00000000..0bde47bb Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_handle_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_handle_hi.png b/cinelerra-5.0/plugins/4k/data/vscroll_handle_hi.png new file mode 100644 index 00000000..f452a530 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_handle_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_handle_up.png b/cinelerra-5.0/plugins/4k/data/vscroll_handle_up.png new file mode 100644 index 00000000..bcef19ae Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_handle_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_left_dn.png b/cinelerra-5.0/plugins/4k/data/vscroll_left_dn.png new file mode 100644 index 00000000..e9ac6448 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_left_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_left_hi.png b/cinelerra-5.0/plugins/4k/data/vscroll_left_hi.png new file mode 100644 index 00000000..c2b318d1 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_left_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_left_up.png b/cinelerra-5.0/plugins/4k/data/vscroll_left_up.png new file mode 100644 index 00000000..9e3bddf3 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_left_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_right_dn.png b/cinelerra-5.0/plugins/4k/data/vscroll_right_dn.png new file mode 100644 index 00000000..8aa68524 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_right_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_right_hi.png b/cinelerra-5.0/plugins/4k/data/vscroll_right_hi.png new file mode 100644 index 00000000..880a749e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_right_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vscroll_right_up.png b/cinelerra-5.0/plugins/4k/data/vscroll_right_up.png new file mode 100644 index 00000000..8b15b2ae Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vscroll_right_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vtransition_icon.png b/cinelerra-5.0/plugins/4k/data/vtransition_icon.png new file mode 100644 index 00000000..d73ccb1f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vtransition_icon.png differ diff --git a/cinelerra-5.0/plugins/4k/data/vwindow_timebar.png b/cinelerra-5.0/plugins/4k/data/vwindow_timebar.png new file mode 100644 index 00000000..8cba4622 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/vwindow_timebar.png differ diff --git a/cinelerra-5.0/plugins/4k/data/waveform.png b/cinelerra-5.0/plugins/4k/data/waveform.png new file mode 100644 index 00000000..fb81e31a Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/waveform.png differ diff --git a/cinelerra-5.0/plugins/4k/data/waveform_rgb.png b/cinelerra-5.0/plugins/4k/data/waveform_rgb.png new file mode 100644 index 00000000..c529ce15 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/waveform_rgb.png differ diff --git a/cinelerra-5.0/plugins/4k/data/wrench.png b/cinelerra-5.0/plugins/4k/data/wrench.png new file mode 100644 index 00000000..d68e3528 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/wrench.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xmeter_green.png b/cinelerra-5.0/plugins/4k/data/xmeter_green.png new file mode 100644 index 00000000..2f298d36 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xmeter_green.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xmeter_normal.png b/cinelerra-5.0/plugins/4k/data/xmeter_normal.png new file mode 100644 index 00000000..bc158a24 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xmeter_normal.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xmeter_over.png b/cinelerra-5.0/plugins/4k/data/xmeter_over.png new file mode 100644 index 00000000..cf5f5280 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xmeter_over.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xmeter_red.png b/cinelerra-5.0/plugins/4k/data/xmeter_red.png new file mode 100644 index 00000000..3f74e640 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xmeter_red.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xmeter_white.png b/cinelerra-5.0/plugins/4k/data/xmeter_white.png new file mode 100644 index 00000000..4c6158b9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xmeter_white.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xmeter_yellow.png b/cinelerra-5.0/plugins/4k/data/xmeter_yellow.png new file mode 100644 index 00000000..e55bb541 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xmeter_yellow.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xpane_dn.png b/cinelerra-5.0/plugins/4k/data/xpane_dn.png new file mode 100644 index 00000000..80a7337f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xpane_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xpane_hi.png b/cinelerra-5.0/plugins/4k/data/xpane_hi.png new file mode 100644 index 00000000..436c0803 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xpane_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/xpane_up.png b/cinelerra-5.0/plugins/4k/data/xpane_up.png new file mode 100644 index 00000000..007cf7a0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/xpane_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ymeter_green.png b/cinelerra-5.0/plugins/4k/data/ymeter_green.png new file mode 100644 index 00000000..161d344c Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ymeter_green.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ymeter_normal.png b/cinelerra-5.0/plugins/4k/data/ymeter_normal.png new file mode 100644 index 00000000..364cda00 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ymeter_normal.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ymeter_over.png b/cinelerra-5.0/plugins/4k/data/ymeter_over.png new file mode 100644 index 00000000..7ae2e6ca Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ymeter_over.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ymeter_red.png b/cinelerra-5.0/plugins/4k/data/ymeter_red.png new file mode 100644 index 00000000..4c25cfe8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ymeter_red.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ymeter_white.png b/cinelerra-5.0/plugins/4k/data/ymeter_white.png new file mode 100644 index 00000000..4d2c8b22 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ymeter_white.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ymeter_yellow.png b/cinelerra-5.0/plugins/4k/data/ymeter_yellow.png new file mode 100644 index 00000000..781fc4f7 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ymeter_yellow.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ypane_dn.png b/cinelerra-5.0/plugins/4k/data/ypane_dn.png new file mode 100644 index 00000000..2f7c4dee Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ypane_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ypane_hi.png b/cinelerra-5.0/plugins/4k/data/ypane_hi.png new file mode 100644 index 00000000..dff6eae9 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ypane_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/ypane_up.png b/cinelerra-5.0/plugins/4k/data/ypane_up.png new file mode 100644 index 00000000..321bf0c8 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/ypane_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/zoompopup_dn.png b/cinelerra-5.0/plugins/4k/data/zoompopup_dn.png new file mode 100644 index 00000000..65e6f9dd Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/zoompopup_dn.png differ diff --git a/cinelerra-5.0/plugins/4k/data/zoompopup_hi.png b/cinelerra-5.0/plugins/4k/data/zoompopup_hi.png new file mode 100644 index 00000000..811a7ff2 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/zoompopup_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/zoompopup_up.png b/cinelerra-5.0/plugins/4k/data/zoompopup_up.png new file mode 100644 index 00000000..64d11ff0 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/zoompopup_up.png differ diff --git a/cinelerra-5.0/plugins/4k/data/zoomtumble.xcf.bz2 b/cinelerra-5.0/plugins/4k/data/zoomtumble.xcf.bz2 new file mode 100644 index 00000000..008f9695 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/zoomtumble.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/4k/data/zoomtumble_bottom.png b/cinelerra-5.0/plugins/4k/data/zoomtumble_bottom.png new file mode 100644 index 00000000..3ba43475 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/zoomtumble_bottom.png differ diff --git a/cinelerra-5.0/plugins/4k/data/zoomtumble_hi.png b/cinelerra-5.0/plugins/4k/data/zoomtumble_hi.png new file mode 100644 index 00000000..53457042 Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/zoomtumble_hi.png differ diff --git a/cinelerra-5.0/plugins/4k/data/zoomtumble_top.png b/cinelerra-5.0/plugins/4k/data/zoomtumble_top.png new file mode 100644 index 00000000..a749c25f Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/zoomtumble_top.png differ diff --git a/cinelerra-5.0/plugins/4k/data/zoomtumble_up.png b/cinelerra-5.0/plugins/4k/data/zoomtumble_up.png new file mode 100644 index 00000000..f0f4f59e Binary files /dev/null and b/cinelerra-5.0/plugins/4k/data/zoomtumble_up.png differ diff --git a/cinelerra-5.0/plugins/5k/5k.C b/cinelerra-5.0/plugins/5k/5k.C new file mode 100644 index 00000000..04ef6ad4 --- /dev/null +++ b/cinelerra-5.0/plugins/5k/5k.C @@ -0,0 +1,1034 @@ + +/* + * CINELERRA + * Copyright (C) 1997-2014 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "bcsignals.h" +#include "clip.h" +#include "cwindowgui.h" +#include "5k.h" +#include "edl.h" +#include "edlsession.h" +#include "mainmenu.h" +#include "mainsession.h" +#include "mbuttons.h" +#include "meterpanel.h" +#include "mwindow.h" +#include "mwindowgui.h" +#include "new.h" +#include "patchbay.h" +#include "preferencesthread.h" +#include "recordgui.h" +#include "recordmonitor.h" +#include "setformat.h" +#include "statusbar.h" +#include "timebar.h" +#include "trackcanvas.h" +#include "vframe.h" +#include "vwindowgui.h" + + + + +PluginClient* new_plugin(PluginServer *server) +{ + return new FiveKMain(server); +} + + + + + + + +FiveKMain::FiveKMain(PluginServer *server) + : PluginTClient(server) +{ +} + +FiveKMain::~FiveKMain() +{ +} + +const char* FiveKMain::plugin_title() +{ + return _("5k"); +} + +Theme* FiveKMain::new_theme() +{ + theme = new FiveK; + extern unsigned char _binary_5k_data_start[]; + theme->set_data(_binary_5k_data_start); + return theme; +} + + + + + + + + +FiveK::FiveK() + : Theme() +{ +} + +FiveK::~FiveK() +{ +} + +void FiveK::initialize() +{ + BC_Resources *resources = BC_WindowBase::get_resources(); + + + resources->small_font_xft = N_("Sans-18"); + resources->medium_font_xft = N_("Sans-22"); + resources->large_font_xft = N_("Sans-22:style=bold"); + + + + + resources->text_default = 0xbfbfbf; + resources->text_background = 0x373737; + resources->text_border1 = 0x202020; + resources->text_border2 = 0x373737; + resources->text_border3 = 0x373737; + resources->text_border4 = 0x969696; + resources->text_inactive_highlight = 0x707070; + + resources->bg_color = 0x484848; + resources->border_light2 = resources->bg_color; + resources->border_shadow2 = resources->bg_color; + resources->default_text_color = 0xbfbfbf; + resources->menu_title_text = 0xbfbfbf; + resources->popup_title_text = 0xbfbfbf; + resources->menu_item_text = 0xbfbfbf; + resources->menu_highlighted_fontcolor = WHITE; + resources->generic_button_margin = 30; + resources->pot_needle_color = resources->text_default; + resources->pot_offset = 1; + resources->progress_text = resources->text_default; + resources->meter_font_color = resources->default_text_color; + + resources->menu_light = 0xababab; + resources->menu_highlighted = 0x6f6f6f; + resources->menu_down = 0x4b4b4b; + resources->menu_up = 0x4b4b4b; + resources->menu_shadow = 0x202020; + resources->popupmenu_margin = 15; + resources->popupmenu_triangle_margin = 15; + + resources->listbox_title_color = 0xbfbfbf; + + resources->listbox_title_margin = 20; + resources->listbox_title_hotspot = 20; + resources->listbox_border1 = 0x1a1a1a; + resources->listbox_border2 = 0x373737; + resources->listbox_border3 = 0x373737; + resources->listbox_border4 = 0x646464; + resources->listbox_highlighted = 0x505050; + resources->listbox_inactive = 0x373737; + resources->listbox_bg = 0; + resources->listbox_text = 0xbfbfbf; + + resources->filebox_margin = 130; + resources->file_color = 0xbfbfbf; + resources->directory_color = 0xa0a0ff; + + + new_toggle("loadmode_new.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_new"); + new_toggle("loadmode_none.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_none"); + new_toggle("loadmode_newcat.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_newcat"); + new_toggle("loadmode_cat.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_cat"); + new_toggle("loadmode_newtracks.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_newtracks"); + new_toggle("loadmode_paste.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_paste"); + new_toggle("loadmode_resource.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_resource"); + new_toggle("loadmode_nested.png", + "loadmode_up.png", + "loadmode_hi.png", + "loadmode_checked.png", + "loadmode_dn.png", + "loadmode_checkedhi.png", + "loadmode_nested"); + + + + resources->filebox_icons_images = new_button("icons.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_text_images = new_button("text.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_newfolder_images = new_button("folder.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_rename_images = new_button("rename.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_updir_images = new_button("updir.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_delete_images = new_button("delete.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + resources->filebox_reload_images = new_button("reload.png", + "fileboxbutton_up.png", + "fileboxbutton_hi.png", + "fileboxbutton_dn.png"); + + + resources->filebox_descend_images = new_button("openfolder.png", + "filebox_bigbutton_up.png", + "filebox_bigbutton_hi.png", + "filebox_bigbutton_dn.png"); + + resources->usethis_button_images = + resources->ok_images = new_button("ok.png", + "filebox_bigbutton_up.png", + "filebox_bigbutton_hi.png", + "filebox_bigbutton_dn.png"); + + new_button("ok.png", + "new_bigbutton_up.png", + "new_bigbutton_hi.png", + "new_bigbutton_dn.png", + "new_ok_images"); + + resources->cancel_images = new_button("cancel.png", + "filebox_bigbutton_up.png", + "filebox_bigbutton_hi.png", + "filebox_bigbutton_dn.png"); + + new_button("cancel.png", + "new_bigbutton_up.png", + "new_bigbutton_hi.png", + "new_bigbutton_dn.png", + "new_cancel_images"); + + resources->medium_7segment = new_image_set(TOTAL_7SEGMENT, + "0.png", + "1.png", + "2.png", + "3.png", + "4.png", + "5.png", + "6.png", + "7.png", + "8.png", + "9.png", + "colon.png", + "period.png", + "a.png", + "b.png", + "c.png", + "d.png", + "e.png", + "f.png", + "space.png", + "dash.png"); + + resources->bar_data = new_image("bar", "bar.png"); + resources->check = new_image("check", "check.png"); + + resources->min_menu_w = 96; + resources->menu_popup_bg = new_image("menu_popup_bg.png"); + resources->menu_item_bg = new_image_set(3, + "menuitem_up.png", + "menuitem_hi.png", + "menuitem_dn.png"); + resources->menu_bar_bg = new_image("menubar_bg.png"); + resources->menu_title_bg = new_image_set(3, + "menubar_up.png", + "menubar_hi.png", + "menubar_dn.png"); + + + resources->popupmenu_images = 0; +// new_image_set(3, +// "menupopup_up.png", +// "menupopup_hi.png", +// "menupopup_dn.png"); + + resources->toggle_highlight_bg = new_image("toggle_highlight_bg", + "text_highlight.png"); + + resources->generic_button_images = new_image_set(3, + "generic_up.png", + "generic_hi.png", + "generic_dn.png"); + resources->horizontal_slider_data = new_image_set(6, + "hslider_fg_up.png", + "hslider_fg_hi.png", + "hslider_fg_dn.png", + "hslider_bg_up.png", + "hslider_bg_hi.png", + "hslider_bg_dn.png"); + resources->progress_images = new_image_set(2, + "progress_bg.png", + "progress_hi.png"); + resources->tumble_data = new_image_set(4, + "tumble_up.png", + "tumble_hi.png", + "tumble_bottom.png", + "tumble_top.png"); + resources->listbox_button = new_button4("listbox_button.png", + "editpanel_up.png", + "editpanel_hi.png", + "editpanel_dn.png", + "editpanel_hi.png"); + resources->listbox_column = new_image_set(3, + "column_up.png", + "column_hi.png", + "column_dn.png"); + resources->listbox_up = new_image("listbox_up.png"); + resources->listbox_dn = new_image("listbox_dn.png"); + resources->pan_data = new_image_set(7, + "pan_up.png", + "pan_hi.png", + "pan_popup.png", + "pan_channel.png", + "pan_stick.png", + "pan_channel_small.png", + "pan_stick_small.png"); + resources->pan_text_color = WHITE; + + resources->pot_images = new_image_set(3, + "pot_up.png", + "pot_hi.png", + "pot_dn.png"); + + resources->checkbox_images = new_image_set(5, + "checkbox_up.png", + "checkbox_hi.png", + "checkbox_checked.png", + "checkbox_dn.png", + "checkbox_checkedhi.png"); + + resources->radial_images = new_image_set(5, + "radial_up.png", + "radial_hi.png", + "radial_checked.png", + "radial_dn.png", + "radial_checkedhi.png"); + + resources->xmeter_images = new_image_set(7, + "xmeter_normal.png", + "xmeter_green.png", + "xmeter_red.png", + "xmeter_yellow.png", + "xmeter_white.png", + "xmeter_over.png", + "downmix51_2.png"); + resources->ymeter_images = new_image_set(7, + "ymeter_normal.png", + "ymeter_green.png", + "ymeter_red.png", + "ymeter_yellow.png", + "ymeter_white.png", + "ymeter_over.png", + "downmix51_2.png"); + + resources->hscroll_data = new_image_set(10, + "hscroll_handle_up.png", + "hscroll_handle_hi.png", + "hscroll_handle_dn.png", + "hscroll_handle_bg.png", + "hscroll_left_up.png", + "hscroll_left_hi.png", + "hscroll_left_dn.png", + "hscroll_right_up.png", + "hscroll_right_hi.png", + "hscroll_right_dn.png"); + + resources->vscroll_data = new_image_set(10, + "vscroll_handle_up.png", + "vscroll_handle_hi.png", + "vscroll_handle_dn.png", + "vscroll_handle_bg.png", + "vscroll_left_up.png", + "vscroll_left_hi.png", + "vscroll_left_dn.png", + "vscroll_right_up.png", + "vscroll_right_hi.png", + "vscroll_right_dn.png"); + resources->scroll_minhandle = 20; + + + new_button("prevtip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "prev_tip"); + new_button("nexttip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "next_tip"); + new_button("closetip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "close_tip"); + new_button("swap_extents.png", + "editpanel_up.png", + "editpanel_hi.png", + "editpanel_dn.png", + "swap_extents"); + + +// Record windows + + + preferences_category_overlap = 0; + preferencescategory_x = 0; + preferencescategory_y = 5; + preferencestitle_x = 5; + preferencestitle_y = 10; + preferencesoptions_x = 5; + preferencesoptions_y = 0; + +// MWindow + message_normal = resources->text_default; + audio_color = GREEN; + mtransport_margin = 16; + toggle_margin = 16; + + new_button("pane.png", "pane_up.png", "pane_hi.png", "pane_dn.png", "pane"); + new_image_set("xpane", 3, "xpane_up.png", "xpane_hi.png", "xpane_dn.png"); + new_image_set("ypane", 3, "ypane_up.png", "ypane_hi.png", "ypane_dn.png"); + + new_image("mbutton_bg", "mbutton_bg.png"); + new_image("timebar_bg", "timebar_bg_flat.png"); + new_image("timebar_brender", "timebar_brender.png"); + new_image("clock_bg", "mclock_flat.png"); + new_image("patchbay_bg", "patchbay_bg.png"); + new_image("statusbar", "statusbar.png"); +// new_image("mscroll_filler", "mscroll_filler.png"); + + new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png"); + new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png"); + new_image_set("plugin_on", 5, "plugin_on.png", "plugin_onhi.png", "plugin_onselect.png", "plugin_ondn.png", "plugin_onselecthi.png"); + new_image_set("plugin_show", 5, "plugin_show.png", "plugin_showhi.png", "plugin_showselect.png", "plugin_showdn.png", "plugin_showselecthi.png"); + +// CWindow + new_image("cpanel_bg", "cpanel_bg.png"); + new_image("cbuttons_left", "cbuttons_left.png"); + new_image("cbuttons_right", "cbuttons_right.png"); + new_image("cmeter_bg", "cmeter_bg.png"); + +// VWindow + new_image("vbuttons_left", "vbuttons_left.png"); + new_image("vclock", "vclock.png"); + + new_image("preferences_bg", "preferences_bg.png"); + + + new_image("new_bg", "new_bg.png"); + new_image("setformat_bg", "setformat_bg.png"); + + + timebar_view_data = new_image("timebar_view.png"); + + setformat_w = get_image("setformat_bg")->get_w(); + setformat_h = get_image("setformat_bg")->get_h(); + setformat_x1 = 15; + setformat_x2 = 100; + + setformat_x3 = 315; + setformat_x4 = 415; + setformat_y1 = 20; + setformat_y2 = 85; + setformat_y3 = 125; + setformat_margin = 30; + setformat_channels_x = 25; + setformat_channels_y = 242; + setformat_channels_w = 250; + setformat_channels_h = 250; + + loadfile_pad = get_image_set("loadmode_new")[0]->get_h() + 10; + browse_pad = 20; + + + new_toggle("playpatch.png", + "patch_up.png", + "patch_hi.png", + "patch_checked.png", + "patch_dn.png", + "patch_checkedhi.png", + "playpatch_data"); + + new_toggle("recordpatch.png", + "patch_up.png", + "patch_hi.png", + "patch_checked.png", + "patch_dn.png", + "patch_checkedhi.png", + "recordpatch_data"); + + new_toggle("gangpatch.png", + "patch_up.png", + "patch_hi.png", + "patch_checked.png", + "patch_dn.png", + "patch_checkedhi.png", + "gangpatch_data"); + + new_toggle("drawpatch.png", + "patch_up.png", + "patch_hi.png", + "patch_checked.png", + "patch_dn.png", + "patch_checkedhi.png", + "drawpatch_data"); + + + new_image_set("mutepatch_data", + 5, + "mutepatch_up.png", + "mutepatch_hi.png", + "mutepatch_checked.png", + "mutepatch_dn.png", + "mutepatch_checkedhi.png"); + + new_image_set("expandpatch_data", + 5, + "expandpatch_up.png", + "expandpatch_hi.png", + "expandpatch_checked.png", + "expandpatch_dn.png", + "expandpatch_checkedhi.png"); + + build_bg_data(); + build_overlays(); + + + + + out_point = new_image_set(5, + "out_up.png", + "out_hi.png", + "out_checked.png", + "out_dn.png", + "out_checkedhi.png"); + in_point = new_image_set(5, + "in_up.png", + "in_hi.png", + "in_checked.png", + "in_dn.png", + "in_checkedhi.png"); + + label_toggle = new_image_set(5, + "labeltoggle_up.png", + "labeltoggle_uphi.png", + "label_checked.png", + "labeltoggle_dn.png", + "label_checkedhi.png"); + + new_image_set("histogram_carrot", + 5, + "histogram_carrot_up.png", + "histogram_carrot_hi.png", + "histogram_carrot_checked.png", + "histogram_carrot_dn.png", + "histogram_carrot_checkedhi.png"); + + + statusbar_cancel_data = new_image_set(3, + "statusbar_cancel_up.png", + "statusbar_cancel_hi.png", + "statusbar_cancel_dn.png"); + + + VFrame *editpanel_up = new_image("editpanel_up.png"); + VFrame *editpanel_hi = new_image("editpanel_hi.png"); + VFrame *editpanel_dn = new_image("editpanel_dn.png"); + VFrame *editpanel_checked = new_image("editpanel_checked.png"); + VFrame *editpanel_checkedhi = new_image("editpanel_checkedhi.png"); + + new_image("panel_divider", "panel_divider.png"); + new_button("bottom_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "bottom_justify"); + new_button("center_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "center_justify"); + new_button("channel.png", editpanel_up, editpanel_hi, editpanel_dn, "channel"); + + new_toggle("histogram.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "histogram_toggle"); + new_toggle("histogram_rgb.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "histogram_rgb_toggle"); + new_toggle("waveform.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "waveform_toggle"); + new_toggle("waveform_rgb.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "waveform_rgb_toggle"); + new_toggle("scope.png", + editpanel_up, + editpanel_hi, + editpanel_checked, + editpanel_dn, + editpanel_checkedhi, + "scope_toggle"); + + new_button("picture.png", editpanel_up, editpanel_hi, editpanel_dn, "picture"); + new_button("histogram.png", editpanel_up, editpanel_hi, editpanel_dn, "histogram"); + + + new_button("copy.png", editpanel_up, editpanel_hi, editpanel_dn, "copy"); + new_button("commercial.png", editpanel_up, editpanel_hi, editpanel_dn, "commercial"); + new_button("cut.png", editpanel_up, editpanel_hi, editpanel_dn, "cut"); + new_button("fit.png", editpanel_up, editpanel_hi, editpanel_dn, "fit"); + new_button("fitautos.png", editpanel_up, editpanel_hi, editpanel_dn, "fitautos"); + new_button("inpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "inbutton"); + new_button("label.png", editpanel_up, editpanel_hi, editpanel_dn, "labelbutton"); + new_button("left_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "left_justify"); + new_button("magnify.png", editpanel_up, editpanel_hi, editpanel_dn, "magnify_button"); + new_button("middle_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "middle_justify"); + new_button("nextlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "nextlabel"); + new_button("prevlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "prevlabel"); + new_button("nextedit.png", editpanel_up, editpanel_hi, editpanel_dn, "nextedit"); + new_button("prevedit.png", editpanel_up, editpanel_hi, editpanel_dn, "prevedit"); + new_button("outpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "outbutton"); + over_button = new_button("over.png", editpanel_up, editpanel_hi, editpanel_dn); + overwrite_data = new_button("overwrite.png", editpanel_up, editpanel_hi, editpanel_dn); + new_button("paste.png", editpanel_up, editpanel_hi, editpanel_dn, "paste"); + new_button("redo.png", editpanel_up, editpanel_hi, editpanel_dn, "redo"); + new_button("right_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "right_justify"); + splice_data = new_button("splice.png", editpanel_up, editpanel_hi, editpanel_dn); + new_button("toclip.png", editpanel_up, editpanel_hi, editpanel_dn, "toclip"); + new_button("goto.png", editpanel_up, editpanel_hi, editpanel_dn, "goto"); + new_button("top_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "top_justify"); + new_button("undo.png", editpanel_up, editpanel_hi, editpanel_dn, "undo"); + new_button("wrench.png", editpanel_up, editpanel_hi, editpanel_dn, "wrench"); + + + VFrame *transport_up = new_image("transportup.png"); + VFrame *transport_hi = new_image("transporthi.png"); + VFrame *transport_dn = new_image("transportdn.png"); + + new_button("end.png", transport_up, transport_hi, transport_dn, "end"); + new_button("fastfwd.png", transport_up, transport_hi, transport_dn, "fastfwd"); + new_button("fastrev.png", transport_up, transport_hi, transport_dn, "fastrev"); + new_button("play.png", transport_up, transport_hi, transport_dn, "play"); + new_button("framefwd.png", transport_up, transport_hi, transport_dn, "framefwd"); + new_button("framerev.png", transport_up, transport_hi, transport_dn, "framerev"); + new_button("pause.png", transport_up, transport_hi, transport_dn, "pause"); + new_button("record.png", transport_up, transport_hi, transport_dn, "record"); + new_button("singleframe.png", transport_up, transport_hi, transport_dn, "recframe"); + new_button("reverse.png", transport_up, transport_hi, transport_dn, "reverse"); + new_button("rewind.png", transport_up, transport_hi, transport_dn, "rewind"); + new_button("stop.png", transport_up, transport_hi, transport_dn, "stop"); + new_button("stop.png", transport_up, transport_hi, transport_dn, "stoprec"); + + + +// CWindow icons + new_image("cwindow_inactive", "cwindow_inactive.png"); + new_image("cwindow_active", "cwindow_active.png"); + + + + new_image_set("category_button", + 3, + "preferencesbutton_dn.png", + "preferencesbutton_dnhi.png", + "preferencesbutton_dnlo.png"); + + new_image_set("category_button_checked", + 3, + "preferencesbutton_up.png", + "preferencesbutton_uphi.png", + "preferencesbutton_dnlo.png"); + + + + + + new_image_set("color3way_point", + 3, + "color3way_up.png", + "color3way_hi.png", + "color3way_dn.png"); + + new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow"); + new_toggle("autokeyframe.png", transport_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe"); + new_toggle("ibeam.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "ibeam"); + new_toggle("show_meters.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "meters"); + new_toggle("blank30x30.png", + new_image("locklabels_locked.png"), + new_image("locklabels_lockedhi.png"), + new_image("locklabels_unlocked.png"), + new_image("locklabels_dn.png"), // can't have seperate down for each!!?? + new_image("locklabels_unlockedhi.png"), + "locklabels"); + + VFrame *cpanel_up = new_image("cpanel_up.png"); + VFrame *cpanel_hi = new_image("cpanel_hi.png"); + VFrame *cpanel_dn = new_image("cpanel_dn.png"); + VFrame *cpanel_checked = new_image("cpanel_checked.png"); + VFrame *cpanel_checkedhi = new_image("cpanel_checkedhi.png"); + + + new_toggle("camera.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "camera"); + new_toggle("crop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "crop"); + new_toggle("eyedrop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "eyedrop"); + new_toggle("magnify.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "magnify"); + new_toggle("mask.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "mask"); + new_toggle("ruler.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "ruler"); + new_toggle("projector.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "projector"); + new_toggle("protect.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "protect"); + new_toggle("titlesafe.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "titlesafe"); + new_toggle("toolwindow.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "tool"); + + // toggle for tangent mode (compositor/tool window) + new_toggle("tan_smooth.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_smooth"); + new_toggle("tan_linear.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_linear"); + + + flush_images(); + + title_font = MEDIUMFONT_3D; + title_color = 0xbfbfbf; + recordgui_fixed_color = YELLOW; + recordgui_variable_color = RED; + + channel_position_color = MEYELLOW; + resources->meter_title_w = 25; + + // (asset) edit info text color + edit_font_color = YELLOW; +} + +#define VWINDOW_METER_MARGIN 5 + + + + + + + + + + + +void FiveK::build_bg_data() +{ +// Audio settings + channel_position_data = new VFrame(get_image_data("channel_position.png")); + +// Track bitmaps + new_image("resource1024", "resource1024.png"); + new_image("resource512", "resource512.png"); + new_image("resource256", "resource256.png"); + new_image("resource128", "resource128.png"); + new_image("resource64", "resource64.png"); + new_image("resource32", "resource32.png"); + new_image("plugin_bg_data", "plugin_bg.png"); + new_image("title_bg_data", "title_bg.png"); + new_image("vtimebar_bg_data", "vwindow_timebar.png"); +} + + + +void FiveK::build_overlays() +{ + keyframe_data = new VFrame(get_image_data("keyframe3.png")); + camerakeyframe_data = new VFrame(get_image_data("camerakeyframe.png")); + maskkeyframe_data = new VFrame(get_image_data("maskkeyframe.png")); + modekeyframe_data = new VFrame(get_image_data("modekeyframe.png")); + pankeyframe_data = new VFrame(get_image_data("pankeyframe.png")); + projectorkeyframe_data = new VFrame(get_image_data("projectorkeyframe.png")); +} + + + + + + + + + +void FiveK::draw_rwindow_bg(RecordGUI *gui) +{ +// int y; +// int margin = 50; +// int margin2 = 80; +// gui->draw_9segment(recordgui_batch_x - margin, +// 0, +// mwindow->session->rwindow_w - recordgui_status_x + margin, +// recordgui_buttons_y, +// rgui_batch); +// gui->draw_3segmenth(recordgui_options_x - margin2, +// recordgui_buttons_y - 5, +// mwindow->session->rwindow_w - recordgui_options_x + margin2, +// rgui_controls); +// y = recordgui_buttons_y - 5 + rgui_controls->get_h(); +// gui->draw_9segment(0, +// y, +// mwindow->session->rwindow_w, +// mwindow->session->rwindow_h - y, +// rgui_list); +} + +void FiveK::draw_rmonitor_bg(RecordMonitorGUI *gui) +{ +// int margin = 45; +// int panel_w = 300; +// int x = rmonitor_meter_x - margin; +// int w = mwindow->session->rmonitor_w - x; +// if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w(); +// gui->clear_box(0, +// 0, +// mwindow->session->rmonitor_w, +// mwindow->session->rmonitor_h); +// gui->draw_9segment(x, +// 0, +// w, +// mwindow->session->rmonitor_h, +// rmonitor_meters); +} + + + +void FiveK::get_mwindow_sizes(MWindowGUI *gui, int w, int h) +{ + Theme::get_mwindow_sizes(gui, w, h); + mclock_w = get_image("clock_bg")->get_w() - 60; +} + + +void FiveK::draw_mwindow_bg(MWindowGUI *gui) +{ +// Button bar + gui->draw_3segmenth(mbuttons_x, + mbuttons_y - 1, + mwindow->session->mwindow_w, + get_image("mbutton_bg")); + + int pdw = get_image("panel_divider")->get_w(); + int x = mbuttons_x; + x += 9 * get_image("play")->get_w(); + x += mtransport_margin; // the control buttons + + gui->draw_vframe(get_image("panel_divider"), + x - toggle_margin / 2 - pdw / 2 + 2, + mbuttons_y - 1); + x += 2 * get_image("arrow")->get_w() + toggle_margin; // the mode buttons + + gui->draw_vframe(get_image("panel_divider"), + x - toggle_margin / 2 - pdw / 2 + 2, + mbuttons_y - 1); + x += 2 * get_image("autokeyframe")->get_w() + toggle_margin; // the state toggle buttons + + gui->draw_vframe(get_image("panel_divider"), + x - toggle_margin / 2 - pdw / 2 + 2, + mbuttons_y - 1); + +// Clock + gui->draw_3segmenth(0, + mbuttons_y - 1 + get_image("mbutton_bg")->get_h(), + get_image("patchbay_bg")->get_w(), + get_image("clock_bg")); + +// Patchbay +//printf("FiveK::draw_mwindow_bg %d %d %d\n", __LINE__, +//mclock_h, +//mtimebar_h); + gui->draw_3segmentv(patchbay_x, + patchbay_y, + patchbay_h, + get_image("patchbay_bg")); + +// Track canvas + gui->set_color(BLACK); + gui->draw_box(mcanvas_x + get_image("patchbay_bg")->get_w(), + mcanvas_y + mtimebar_h, + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT), + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h); + +// Timebar + gui->draw_3segmenth(mtimebar_x, + mtimebar_y, + mtimebar_w, + get_image("timebar_bg")); + +// Zoombar + gui->set_color(0x373737); + gui->draw_box(mzoom_x, + mzoom_y, + mwindow->session->mwindow_w, + 25); + +// Scrollbar filler +// gui->draw_vframe(get_image("mscroll_filler"), +// mcanvas_x + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT), +// mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ)); + +// Status + gui->draw_3segmenth(mzoom_x, + mzoom_y, + mzoom_w, + get_image("statusbar")); + + +} + +void FiveK::draw_cwindow_bg(CWindowGUI *gui) +{ + gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg")); + + gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left")); + + if(mwindow->edl->session->cwindow_meter) + { + gui->draw_3segmenth(cstatus_x, + ccomposite_h, + cmeter_x - widget_border - cstatus_x, + get_image("cbuttons_right")); + gui->draw_9segment(cmeter_x - widget_border, + 0, + mwindow->session->cwindow_w - cmeter_x + widget_border, + mwindow->session->cwindow_h, + get_image("cmeter_bg")); + } + else + { + gui->draw_3segmenth(cstatus_x, + ccomposite_h, + cmeter_x - widget_border - cstatus_x + 100, + get_image("cbuttons_right")); + } +} + +void FiveK::draw_vwindow_bg(VWindowGUI *gui) +{ + gui->draw_3segmenth(0, + vcanvas_h, + vdivision_x, + get_image("vbuttons_left")); + if(mwindow->edl->session->vwindow_meter) + { + gui->draw_3segmenth(vdivision_x, + vcanvas_h, + vmeter_x - widget_border - vdivision_x, + get_image("cbuttons_right")); + gui->draw_9segment(vmeter_x - widget_border, + 0, + mwindow->session->vwindow_w - vmeter_x + widget_border, + mwindow->session->vwindow_h, + get_image("cmeter_bg")); + } + else + { + gui->draw_3segmenth(vdivision_x, + vcanvas_h, + vmeter_x - widget_border - vdivision_x + 100, + get_image("cbuttons_right")); + } + +// Clock border + gui->draw_3segmenth(vtime_x - 20, + vtime_y - 1, + vtime_w + 40, + get_image("vclock")); +} + + +void FiveK::draw_preferences_bg(PreferencesWindow *gui) +{ + gui->draw_vframe(get_image("preferences_bg"), 0, 0); +} + +void FiveK::draw_new_bg(NewWindow *gui) +{ + gui->draw_vframe(get_image("new_bg"), 0, 0); +} + +void FiveK::draw_setformat_bg(SetFormatWindow *gui) +{ + gui->draw_vframe(get_image("setformat_bg"), 0, 0); +} + + + + + + + diff --git a/cinelerra-5.0/plugins/5k/5k.h b/cinelerra-5.0/plugins/5k/5k.h new file mode 100644 index 00000000..14c48741 --- /dev/null +++ b/cinelerra-5.0/plugins/5k/5k.h @@ -0,0 +1,78 @@ + +/* + * CINELERRA + * Copyright (C) 2008 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef DEFAULTTHEME_H +#define DEFAULTTHEME_H + +#include "new.inc" +#include "plugintclient.h" +#include "preferencesthread.inc" +#include "statusbar.inc" +#include "theme.h" +#include "timebar.inc" + +class FiveK : public Theme +{ +public: + FiveK(); + ~FiveK(); + + void initialize(); + void get_mwindow_sizes(MWindowGUI *gui, int w, int h); + void draw_mwindow_bg(MWindowGUI *gui); + + void draw_rwindow_bg(RecordGUI *gui); + void draw_rmonitor_bg(RecordMonitorGUI *gui); + void draw_cwindow_bg(CWindowGUI *gui); + void draw_vwindow_bg(VWindowGUI *gui); + void draw_preferences_bg(PreferencesWindow *gui); + + + void draw_new_bg(NewWindow *gui); + void draw_setformat_bg(SetFormatWindow *gui); + +private: + void build_bg_data(); + void build_patches(); + void build_overlays(); + + + + + +}; + + + +class FiveKMain : public PluginTClient +{ +public: + FiveKMain(PluginServer *server); + ~FiveKMain(); + + const char* plugin_title(); + Theme* new_theme(); + + FiveK *theme; +}; + + +#endif diff --git a/cinelerra-5.0/plugins/5k/Makefile b/cinelerra-5.0/plugins/5k/Makefile new file mode 100644 index 00000000..f70659dd --- /dev/null +++ b/cinelerra-5.0/plugins/5k/Makefile @@ -0,0 +1,13 @@ +include ../../global_config + +PLUGIN = 5k +OBJS = $(OBJDIR)/5k.o +OUTPUT_THEME = $(OUTPUT) + +AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd) +CFLAGS += -I$(AVC_DIR) + +include ../../plugin_config + +$(OBJDIR)/5k.o: 5k.C + diff --git a/cinelerra-5.0/plugins/5k/data/0.png b/cinelerra-5.0/plugins/5k/data/0.png new file mode 100644 index 00000000..196fb15a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/0.png differ diff --git a/cinelerra-5.0/plugins/5k/data/1.png b/cinelerra-5.0/plugins/5k/data/1.png new file mode 100644 index 00000000..184ba0d7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/1.png differ diff --git a/cinelerra-5.0/plugins/5k/data/2.png b/cinelerra-5.0/plugins/5k/data/2.png new file mode 100644 index 00000000..309a0ecd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/2.png differ diff --git a/cinelerra-5.0/plugins/5k/data/3.png b/cinelerra-5.0/plugins/5k/data/3.png new file mode 100644 index 00000000..29959f16 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/3.png differ diff --git a/cinelerra-5.0/plugins/5k/data/4.png b/cinelerra-5.0/plugins/5k/data/4.png new file mode 100644 index 00000000..0b850cdf Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/4.png differ diff --git a/cinelerra-5.0/plugins/5k/data/5.png b/cinelerra-5.0/plugins/5k/data/5.png new file mode 100644 index 00000000..96971b66 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/5.png differ diff --git a/cinelerra-5.0/plugins/5k/data/6.png b/cinelerra-5.0/plugins/5k/data/6.png new file mode 100644 index 00000000..93cb3aaa Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/6.png differ diff --git a/cinelerra-5.0/plugins/5k/data/7.png b/cinelerra-5.0/plugins/5k/data/7.png new file mode 100644 index 00000000..09fdade8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/7.png differ diff --git a/cinelerra-5.0/plugins/5k/data/8.png b/cinelerra-5.0/plugins/5k/data/8.png new file mode 100644 index 00000000..694d48d6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/8.png differ diff --git a/cinelerra-5.0/plugins/5k/data/9.png b/cinelerra-5.0/plugins/5k/data/9.png new file mode 100644 index 00000000..5506e358 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/9.png differ diff --git a/cinelerra-5.0/plugins/5k/data/a.png b/cinelerra-5.0/plugins/5k/data/a.png new file mode 100644 index 00000000..2ae2c525 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/a.png differ diff --git a/cinelerra-5.0/plugins/5k/data/about.png b/cinelerra-5.0/plugins/5k/data/about.png new file mode 100644 index 00000000..4fa4ec1f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/about.png differ diff --git a/cinelerra-5.0/plugins/5k/data/about_bg.png b/cinelerra-5.0/plugins/5k/data/about_bg.png new file mode 100644 index 00000000..bf0f1ad2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/about_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/aeffect_icon.png b/cinelerra-5.0/plugins/5k/data/aeffect_icon.png new file mode 100644 index 00000000..5a69c3a9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/aeffect_icon.png differ diff --git a/cinelerra-5.0/plugins/5k/data/antenna.png b/cinelerra-5.0/plugins/5k/data/antenna.png new file mode 100644 index 00000000..06072e5a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/antenna.png differ diff --git a/cinelerra-5.0/plugins/5k/data/arrow.png b/cinelerra-5.0/plugins/5k/data/arrow.png new file mode 100644 index 00000000..c5e4d4c6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/arrow.png differ diff --git a/cinelerra-5.0/plugins/5k/data/atransition_icon.png b/cinelerra-5.0/plugins/5k/data/atransition_icon.png new file mode 100644 index 00000000..d73ccb1f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/atransition_icon.png differ diff --git a/cinelerra-5.0/plugins/5k/data/autokeyframe.png b/cinelerra-5.0/plugins/5k/data/autokeyframe.png new file mode 100644 index 00000000..a65f1e73 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/autokeyframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/b.png b/cinelerra-5.0/plugins/5k/data/b.png new file mode 100644 index 00000000..9d7a6975 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/b.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dn.png b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dn.png new file mode 100644 index 00000000..985c7cb0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dnhi.png b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dnhi.png new file mode 100644 index 00000000..441138e2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dnhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dnlo.png b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dnlo.png new file mode 100644 index 00000000..2b6a3ce8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_dnlo.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_up.png b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_up.png new file mode 100644 index 00000000..3223ec6f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_uphi.png b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_uphi.png new file mode 100644 index 00000000..a77c8527 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak/preferencesbutton_uphi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dn.png b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dn.png new file mode 100644 index 00000000..511905e1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dnhi.png b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dnhi.png new file mode 100644 index 00000000..8757b3f1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dnhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dnlo.png b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dnlo.png new file mode 100644 index 00000000..cf3c9dfc Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_dnlo.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_up.png b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_up.png new file mode 100644 index 00000000..45daa5c0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_uphi.png b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_uphi.png new file mode 100644 index 00000000..3e35fb58 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bak2/preferencesbutton_uphi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bar.png b/cinelerra-5.0/plugins/5k/data/bar.png new file mode 100644 index 00000000..a1e237cf Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bar.png differ diff --git a/cinelerra-5.0/plugins/5k/data/blank30x30.png b/cinelerra-5.0/plugins/5k/data/blank30x30.png new file mode 100644 index 00000000..39c5e55a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/blank30x30.png differ diff --git a/cinelerra-5.0/plugins/5k/data/bottom_justify.png b/cinelerra-5.0/plugins/5k/data/bottom_justify.png new file mode 100644 index 00000000..110d09f6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/bottom_justify.png differ diff --git a/cinelerra-5.0/plugins/5k/data/buttonbar.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/buttonbar.xcf.bz2 new file mode 100644 index 00000000..baf5c8cd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/buttonbar.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/c.png b/cinelerra-5.0/plugins/5k/data/c.png new file mode 100644 index 00000000..bfee0220 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/c.png differ diff --git a/cinelerra-5.0/plugins/5k/data/camera.png b/cinelerra-5.0/plugins/5k/data/camera.png new file mode 100644 index 00000000..eb9cc288 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/camera.png differ diff --git a/cinelerra-5.0/plugins/5k/data/camerakeyframe.png b/cinelerra-5.0/plugins/5k/data/camerakeyframe.png new file mode 100644 index 00000000..0fefa82a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/camerakeyframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cancel.png b/cinelerra-5.0/plugins/5k/data/cancel.png new file mode 100644 index 00000000..87299a7d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cancel.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cbuttons_left.png b/cinelerra-5.0/plugins/5k/data/cbuttons_left.png new file mode 100644 index 00000000..9890741c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cbuttons_left.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cbuttons_right.png b/cinelerra-5.0/plugins/5k/data/cbuttons_right.png new file mode 100644 index 00000000..ab695b6b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cbuttons_right.png differ diff --git a/cinelerra-5.0/plugins/5k/data/center_justify.png b/cinelerra-5.0/plugins/5k/data/center_justify.png new file mode 100644 index 00000000..022c12bf Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/center_justify.png differ diff --git a/cinelerra-5.0/plugins/5k/data/channel.png b/cinelerra-5.0/plugins/5k/data/channel.png new file mode 100644 index 00000000..3f88a8ff Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/channel.png differ diff --git a/cinelerra-5.0/plugins/5k/data/channel_position.png b/cinelerra-5.0/plugins/5k/data/channel_position.png new file mode 100644 index 00000000..c6c49aa0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/channel_position.png differ diff --git a/cinelerra-5.0/plugins/5k/data/check.png b/cinelerra-5.0/plugins/5k/data/check.png new file mode 100644 index 00000000..64deb932 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/check.png differ diff --git a/cinelerra-5.0/plugins/5k/data/checkbox_checked.png b/cinelerra-5.0/plugins/5k/data/checkbox_checked.png new file mode 100644 index 00000000..c115c32d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/checkbox_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/checkbox_checkedhi.png b/cinelerra-5.0/plugins/5k/data/checkbox_checkedhi.png new file mode 100644 index 00000000..046ff11f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/checkbox_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/checkbox_dn.png b/cinelerra-5.0/plugins/5k/data/checkbox_dn.png new file mode 100644 index 00000000..fb34441c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/checkbox_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/checkbox_hi.png b/cinelerra-5.0/plugins/5k/data/checkbox_hi.png new file mode 100644 index 00000000..3a8c6ad5 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/checkbox_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/checkbox_up.png b/cinelerra-5.0/plugins/5k/data/checkbox_up.png new file mode 100644 index 00000000..02f3d54f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/checkbox_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/clearinpoint.png b/cinelerra-5.0/plugins/5k/data/clearinpoint.png new file mode 100644 index 00000000..36356b7d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/clearinpoint.png differ diff --git a/cinelerra-5.0/plugins/5k/data/clearoutpoint.png b/cinelerra-5.0/plugins/5k/data/clearoutpoint.png new file mode 100644 index 00000000..6b05707f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/clearoutpoint.png differ diff --git a/cinelerra-5.0/plugins/5k/data/clip_icon.png b/cinelerra-5.0/plugins/5k/data/clip_icon.png new file mode 100644 index 00000000..9b1d2787 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/clip_icon.png differ diff --git a/cinelerra-5.0/plugins/5k/data/clock.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/clock.xcf.bz2 new file mode 100644 index 00000000..ba8e66d5 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/clock.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/closetip.png b/cinelerra-5.0/plugins/5k/data/closetip.png new file mode 100644 index 00000000..75125cb9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/closetip.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cmeter_bg.png b/cinelerra-5.0/plugins/5k/data/cmeter_bg.png new file mode 100644 index 00000000..35a80c4d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cmeter_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/colon.png b/cinelerra-5.0/plugins/5k/data/colon.png new file mode 100644 index 00000000..5c642350 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/colon.png differ diff --git a/cinelerra-5.0/plugins/5k/data/color3way_dn.png b/cinelerra-5.0/plugins/5k/data/color3way_dn.png new file mode 100644 index 00000000..fad9ed65 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/color3way_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/color3way_hi.png b/cinelerra-5.0/plugins/5k/data/color3way_hi.png new file mode 100644 index 00000000..a9377da6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/color3way_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/color3way_point.png b/cinelerra-5.0/plugins/5k/data/color3way_point.png new file mode 100644 index 00000000..1934b8e0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/color3way_point.png differ diff --git a/cinelerra-5.0/plugins/5k/data/color3way_up.png b/cinelerra-5.0/plugins/5k/data/color3way_up.png new file mode 100644 index 00000000..e2fef63c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/color3way_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/column_dn.png b/cinelerra-5.0/plugins/5k/data/column_dn.png new file mode 100644 index 00000000..6201333f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/column_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/column_hi.png b/cinelerra-5.0/plugins/5k/data/column_hi.png new file mode 100644 index 00000000..fe6c180a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/column_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/column_up.png b/cinelerra-5.0/plugins/5k/data/column_up.png new file mode 100644 index 00000000..0709e162 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/column_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/commercial.png b/cinelerra-5.0/plugins/5k/data/commercial.png new file mode 100644 index 00000000..a1eae6e0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/commercial.png differ diff --git a/cinelerra-5.0/plugins/5k/data/configure.png b/cinelerra-5.0/plugins/5k/data/configure.png new file mode 100644 index 00000000..4b20dbcd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/configure.png differ diff --git a/cinelerra-5.0/plugins/5k/data/copy.png b/cinelerra-5.0/plugins/5k/data/copy.png new file mode 100644 index 00000000..b82d4fb4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/copy.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cpanel_bg.png b/cinelerra-5.0/plugins/5k/data/cpanel_bg.png new file mode 100644 index 00000000..bbb0ca92 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cpanel_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cpanel_checked.png b/cinelerra-5.0/plugins/5k/data/cpanel_checked.png new file mode 100644 index 00000000..6f36c7e3 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cpanel_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cpanel_checkedhi.png b/cinelerra-5.0/plugins/5k/data/cpanel_checkedhi.png new file mode 100644 index 00000000..1a660646 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cpanel_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cpanel_dn.png b/cinelerra-5.0/plugins/5k/data/cpanel_dn.png new file mode 100644 index 00000000..1418124a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cpanel_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cpanel_hi.png b/cinelerra-5.0/plugins/5k/data/cpanel_hi.png new file mode 100644 index 00000000..aca8c70a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cpanel_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cpanel_up.png b/cinelerra-5.0/plugins/5k/data/cpanel_up.png new file mode 100644 index 00000000..59f34c9f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cpanel_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/crop.png b/cinelerra-5.0/plugins/5k/data/crop.png new file mode 100644 index 00000000..2eea5ccd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/crop.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cut.png b/cinelerra-5.0/plugins/5k/data/cut.png new file mode 100644 index 00000000..174d2ef5 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cut.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cwindow_active.png b/cinelerra-5.0/plugins/5k/data/cwindow_active.png new file mode 100644 index 00000000..259fb44b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cwindow_active.png differ diff --git a/cinelerra-5.0/plugins/5k/data/cwindow_inactive.png b/cinelerra-5.0/plugins/5k/data/cwindow_inactive.png new file mode 100644 index 00000000..b0687d95 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/cwindow_inactive.png differ diff --git a/cinelerra-5.0/plugins/5k/data/d.png b/cinelerra-5.0/plugins/5k/data/d.png new file mode 100644 index 00000000..6b0f4f5c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/d.png differ diff --git a/cinelerra-5.0/plugins/5k/data/dash.png b/cinelerra-5.0/plugins/5k/data/dash.png new file mode 100644 index 00000000..01321e98 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/dash.png differ diff --git a/cinelerra-5.0/plugins/5k/data/delete.png b/cinelerra-5.0/plugins/5k/data/delete.png new file mode 100644 index 00000000..200b9ea4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/delete.png differ diff --git a/cinelerra-5.0/plugins/5k/data/downmix51_2.png b/cinelerra-5.0/plugins/5k/data/downmix51_2.png new file mode 100644 index 00000000..3cbcaf72 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/downmix51_2.png differ diff --git a/cinelerra-5.0/plugins/5k/data/drawpatch.png b/cinelerra-5.0/plugins/5k/data/drawpatch.png new file mode 100644 index 00000000..5cff6410 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/drawpatch.png differ diff --git a/cinelerra-5.0/plugins/5k/data/duplex.png b/cinelerra-5.0/plugins/5k/data/duplex.png new file mode 100644 index 00000000..4abd4e7c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/duplex.png differ diff --git a/cinelerra-5.0/plugins/5k/data/e.png b/cinelerra-5.0/plugins/5k/data/e.png new file mode 100644 index 00000000..8b12e9a1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/e.png differ diff --git a/cinelerra-5.0/plugins/5k/data/editpanel.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/editpanel.xcf.bz2 new file mode 100644 index 00000000..f05913bd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/editpanel.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/editpanel_checked.png b/cinelerra-5.0/plugins/5k/data/editpanel_checked.png new file mode 100644 index 00000000..1226b363 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/editpanel_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/editpanel_checkedhi.png b/cinelerra-5.0/plugins/5k/data/editpanel_checkedhi.png new file mode 100644 index 00000000..36fbc74c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/editpanel_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/editpanel_dn.png b/cinelerra-5.0/plugins/5k/data/editpanel_dn.png new file mode 100644 index 00000000..ad4fa60a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/editpanel_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/editpanel_hi.png b/cinelerra-5.0/plugins/5k/data/editpanel_hi.png new file mode 100644 index 00000000..8434e66d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/editpanel_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/editpanel_up.png b/cinelerra-5.0/plugins/5k/data/editpanel_up.png new file mode 100644 index 00000000..f964f994 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/editpanel_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/end.png b/cinelerra-5.0/plugins/5k/data/end.png new file mode 100644 index 00000000..4f33e729 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/end.png differ diff --git a/cinelerra-5.0/plugins/5k/data/expandpatch.png b/cinelerra-5.0/plugins/5k/data/expandpatch.png new file mode 100644 index 00000000..b5067efe Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/expandpatch.png differ diff --git a/cinelerra-5.0/plugins/5k/data/expandpatch_checked.png b/cinelerra-5.0/plugins/5k/data/expandpatch_checked.png new file mode 100644 index 00000000..b83cb92d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/expandpatch_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/expandpatch_checkedhi.png b/cinelerra-5.0/plugins/5k/data/expandpatch_checkedhi.png new file mode 100644 index 00000000..ed3d3d74 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/expandpatch_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/expandpatch_dn.png b/cinelerra-5.0/plugins/5k/data/expandpatch_dn.png new file mode 100644 index 00000000..19783442 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/expandpatch_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/expandpatch_hi.png b/cinelerra-5.0/plugins/5k/data/expandpatch_hi.png new file mode 100644 index 00000000..37da94c1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/expandpatch_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/expandpatch_up.png b/cinelerra-5.0/plugins/5k/data/expandpatch_up.png new file mode 100644 index 00000000..0d9ec4ff Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/expandpatch_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/eyedrop.png b/cinelerra-5.0/plugins/5k/data/eyedrop.png new file mode 100644 index 00000000..48a51160 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/eyedrop.png differ diff --git a/cinelerra-5.0/plugins/5k/data/f.png b/cinelerra-5.0/plugins/5k/data/f.png new file mode 100644 index 00000000..654d96e9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/f.png differ diff --git a/cinelerra-5.0/plugins/5k/data/fastfwd.png b/cinelerra-5.0/plugins/5k/data/fastfwd.png new file mode 100644 index 00000000..9d086956 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/fastfwd.png differ diff --git a/cinelerra-5.0/plugins/5k/data/fastrev.png b/cinelerra-5.0/plugins/5k/data/fastrev.png new file mode 100644 index 00000000..3b9b909b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/fastrev.png differ diff --git a/cinelerra-5.0/plugins/5k/data/filebox.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/filebox.xcf.bz2 new file mode 100644 index 00000000..87aaa3af Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/filebox.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_dn.png b/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_dn.png new file mode 100644 index 00000000..33b57d4d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_hi.png b/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_hi.png new file mode 100644 index 00000000..9a4c83bd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_up.png b/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_up.png new file mode 100644 index 00000000..80e8504e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/filebox_bigbutton_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/fileboxbutton_dn.png b/cinelerra-5.0/plugins/5k/data/fileboxbutton_dn.png new file mode 100644 index 00000000..101f4c27 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/fileboxbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/fileboxbutton_hi.png b/cinelerra-5.0/plugins/5k/data/fileboxbutton_hi.png new file mode 100644 index 00000000..3b56bfc6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/fileboxbutton_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/fileboxbutton_up.png b/cinelerra-5.0/plugins/5k/data/fileboxbutton_up.png new file mode 100644 index 00000000..6037ac78 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/fileboxbutton_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/fit.png b/cinelerra-5.0/plugins/5k/data/fit.png new file mode 100644 index 00000000..31ae12eb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/fit.png differ diff --git a/cinelerra-5.0/plugins/5k/data/fitautos.png b/cinelerra-5.0/plugins/5k/data/fitautos.png new file mode 100644 index 00000000..2c4e7af0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/fitautos.png differ diff --git a/cinelerra-5.0/plugins/5k/data/folder.png b/cinelerra-5.0/plugins/5k/data/folder.png new file mode 100644 index 00000000..8acd4dec Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/folder.png differ diff --git a/cinelerra-5.0/plugins/5k/data/framefwd.png b/cinelerra-5.0/plugins/5k/data/framefwd.png new file mode 100644 index 00000000..8333728b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/framefwd.png differ diff --git a/cinelerra-5.0/plugins/5k/data/framerev.png b/cinelerra-5.0/plugins/5k/data/framerev.png new file mode 100644 index 00000000..a0d3c18f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/framerev.png differ diff --git a/cinelerra-5.0/plugins/5k/data/gangpatch.png b/cinelerra-5.0/plugins/5k/data/gangpatch.png new file mode 100644 index 00000000..6b1e606b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/gangpatch.png differ diff --git a/cinelerra-5.0/plugins/5k/data/generic_dn.png b/cinelerra-5.0/plugins/5k/data/generic_dn.png new file mode 100644 index 00000000..2df647d3 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/generic_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/generic_hi.png b/cinelerra-5.0/plugins/5k/data/generic_hi.png new file mode 100644 index 00000000..ee3928ba Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/generic_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/generic_up.png b/cinelerra-5.0/plugins/5k/data/generic_up.png new file mode 100644 index 00000000..46efb79f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/generic_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/generickeyframe.png b/cinelerra-5.0/plugins/5k/data/generickeyframe.png new file mode 100644 index 00000000..e3a95cc4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/generickeyframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/goto.png b/cinelerra-5.0/plugins/5k/data/goto.png new file mode 100644 index 00000000..513f964f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/goto.png differ diff --git a/cinelerra-5.0/plugins/5k/data/heroine_icon.png b/cinelerra-5.0/plugins/5k/data/heroine_icon.png new file mode 100644 index 00000000..8694da90 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/heroine_icon.png differ diff --git a/cinelerra-5.0/plugins/5k/data/histogram.png b/cinelerra-5.0/plugins/5k/data/histogram.png new file mode 100644 index 00000000..0f7da6eb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/histogram.png differ diff --git a/cinelerra-5.0/plugins/5k/data/histogram_carrot_checked.png b/cinelerra-5.0/plugins/5k/data/histogram_carrot_checked.png new file mode 100644 index 00000000..8e5840a9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/histogram_carrot_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/histogram_carrot_checkedhi.png b/cinelerra-5.0/plugins/5k/data/histogram_carrot_checkedhi.png new file mode 100644 index 00000000..1fcfff69 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/histogram_carrot_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/histogram_carrot_dn.png b/cinelerra-5.0/plugins/5k/data/histogram_carrot_dn.png new file mode 100644 index 00000000..0fb61fb1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/histogram_carrot_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/histogram_carrot_hi.png b/cinelerra-5.0/plugins/5k/data/histogram_carrot_hi.png new file mode 100644 index 00000000..81d78997 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/histogram_carrot_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/histogram_carrot_up.png b/cinelerra-5.0/plugins/5k/data/histogram_carrot_up.png new file mode 100644 index 00000000..cfd43b2f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/histogram_carrot_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/histogram_rgb.png b/cinelerra-5.0/plugins/5k/data/histogram_rgb.png new file mode 100644 index 00000000..a68050a1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/histogram_rgb.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_handle_bg.png b/cinelerra-5.0/plugins/5k/data/hscroll_handle_bg.png new file mode 100644 index 00000000..0e722adb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_handle_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_handle_dn.png b/cinelerra-5.0/plugins/5k/data/hscroll_handle_dn.png new file mode 100644 index 00000000..05b0533d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_handle_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_handle_hi.png b/cinelerra-5.0/plugins/5k/data/hscroll_handle_hi.png new file mode 100644 index 00000000..6e4dd55d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_handle_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_handle_up.png b/cinelerra-5.0/plugins/5k/data/hscroll_handle_up.png new file mode 100644 index 00000000..a19784ce Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_handle_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_left_dn.png b/cinelerra-5.0/plugins/5k/data/hscroll_left_dn.png new file mode 100644 index 00000000..830d3a78 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_left_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_left_hi.png b/cinelerra-5.0/plugins/5k/data/hscroll_left_hi.png new file mode 100644 index 00000000..66dbf22b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_left_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_left_up.png b/cinelerra-5.0/plugins/5k/data/hscroll_left_up.png new file mode 100644 index 00000000..62eb0059 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_left_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_right_dn.png b/cinelerra-5.0/plugins/5k/data/hscroll_right_dn.png new file mode 100644 index 00000000..078c6534 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_right_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_right_hi.png b/cinelerra-5.0/plugins/5k/data/hscroll_right_hi.png new file mode 100644 index 00000000..7e507298 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_right_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hscroll_right_up.png b/cinelerra-5.0/plugins/5k/data/hscroll_right_up.png new file mode 100644 index 00000000..2b57c724 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hscroll_right_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hslider_bg_dn.png b/cinelerra-5.0/plugins/5k/data/hslider_bg_dn.png new file mode 100644 index 00000000..27e78d65 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hslider_bg_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hslider_bg_hi.png b/cinelerra-5.0/plugins/5k/data/hslider_bg_hi.png new file mode 100644 index 00000000..872e5b20 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hslider_bg_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hslider_bg_up.png b/cinelerra-5.0/plugins/5k/data/hslider_bg_up.png new file mode 100644 index 00000000..467c174a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hslider_bg_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hslider_fg_dn.png b/cinelerra-5.0/plugins/5k/data/hslider_fg_dn.png new file mode 100644 index 00000000..d2da18e9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hslider_fg_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hslider_fg_hi.png b/cinelerra-5.0/plugins/5k/data/hslider_fg_hi.png new file mode 100644 index 00000000..553fd9f2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hslider_fg_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/hslider_fg_up.png b/cinelerra-5.0/plugins/5k/data/hslider_fg_up.png new file mode 100644 index 00000000..58aae510 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/hslider_fg_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ibeam.png b/cinelerra-5.0/plugins/5k/data/ibeam.png new file mode 100644 index 00000000..1fd1e111 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ibeam.png differ diff --git a/cinelerra-5.0/plugins/5k/data/icons.png b/cinelerra-5.0/plugins/5k/data/icons.png new file mode 100644 index 00000000..bfde0416 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/icons.png differ diff --git a/cinelerra-5.0/plugins/5k/data/in_checked.png b/cinelerra-5.0/plugins/5k/data/in_checked.png new file mode 100644 index 00000000..5b22ecbf Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/in_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/in_checkedhi.png b/cinelerra-5.0/plugins/5k/data/in_checkedhi.png new file mode 100644 index 00000000..f1323992 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/in_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/in_dn.png b/cinelerra-5.0/plugins/5k/data/in_dn.png new file mode 100644 index 00000000..d5517b46 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/in_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/in_hi.png b/cinelerra-5.0/plugins/5k/data/in_hi.png new file mode 100644 index 00000000..db52c7b6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/in_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/in_up.png b/cinelerra-5.0/plugins/5k/data/in_up.png new file mode 100644 index 00000000..e89aecba Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/in_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/inpoint.png b/cinelerra-5.0/plugins/5k/data/inpoint.png new file mode 100644 index 00000000..facf490b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/inpoint.png differ diff --git a/cinelerra-5.0/plugins/5k/data/keyframe.png b/cinelerra-5.0/plugins/5k/data/keyframe.png new file mode 100644 index 00000000..ea305d8f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/keyframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/keyframe2.png b/cinelerra-5.0/plugins/5k/data/keyframe2.png new file mode 100644 index 00000000..065e99c8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/keyframe2.png differ diff --git a/cinelerra-5.0/plugins/5k/data/keyframe3.png b/cinelerra-5.0/plugins/5k/data/keyframe3.png new file mode 100644 index 00000000..bb6febbc Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/keyframe3.png differ diff --git a/cinelerra-5.0/plugins/5k/data/label.png b/cinelerra-5.0/plugins/5k/data/label.png new file mode 100644 index 00000000..f9744afb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/label.png differ diff --git a/cinelerra-5.0/plugins/5k/data/label_checked.png b/cinelerra-5.0/plugins/5k/data/label_checked.png new file mode 100644 index 00000000..aaf69d3e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/label_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/label_checkedhi.png b/cinelerra-5.0/plugins/5k/data/label_checkedhi.png new file mode 100644 index 00000000..93322250 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/label_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/labeltoggle_dn.png b/cinelerra-5.0/plugins/5k/data/labeltoggle_dn.png new file mode 100644 index 00000000..f8ce2b51 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/labeltoggle_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/labeltoggle_up.png b/cinelerra-5.0/plugins/5k/data/labeltoggle_up.png new file mode 100644 index 00000000..0d09e344 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/labeltoggle_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/labeltoggle_uphi.png b/cinelerra-5.0/plugins/5k/data/labeltoggle_uphi.png new file mode 100644 index 00000000..40164d2d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/labeltoggle_uphi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/left_justify.png b/cinelerra-5.0/plugins/5k/data/left_justify.png new file mode 100644 index 00000000..ca8c76a9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/left_justify.png differ diff --git a/cinelerra-5.0/plugins/5k/data/listbox_button.png b/cinelerra-5.0/plugins/5k/data/listbox_button.png new file mode 100644 index 00000000..691d32a7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/listbox_button.png differ diff --git a/cinelerra-5.0/plugins/5k/data/listbox_dn.png b/cinelerra-5.0/plugins/5k/data/listbox_dn.png new file mode 100644 index 00000000..a897a681 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/listbox_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/listbox_up.png b/cinelerra-5.0/plugins/5k/data/listbox_up.png new file mode 100644 index 00000000..13adce2a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/listbox_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_cat.png b/cinelerra-5.0/plugins/5k/data/loadmode_cat.png new file mode 100644 index 00000000..a103c436 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_cat.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_checked.png b/cinelerra-5.0/plugins/5k/data/loadmode_checked.png new file mode 100644 index 00000000..b3701565 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_checkedhi.png b/cinelerra-5.0/plugins/5k/data/loadmode_checkedhi.png new file mode 100644 index 00000000..2a5c484e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_dn.png b/cinelerra-5.0/plugins/5k/data/loadmode_dn.png new file mode 100644 index 00000000..0f5ceeef Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_hi.png b/cinelerra-5.0/plugins/5k/data/loadmode_hi.png new file mode 100644 index 00000000..dded1505 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_nested.png b/cinelerra-5.0/plugins/5k/data/loadmode_nested.png new file mode 100644 index 00000000..a1bb86b5 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_nested.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_new.png b/cinelerra-5.0/plugins/5k/data/loadmode_new.png new file mode 100644 index 00000000..11d5a0df Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_new.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_newcat.png b/cinelerra-5.0/plugins/5k/data/loadmode_newcat.png new file mode 100644 index 00000000..ac851116 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_newcat.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_newtracks.png b/cinelerra-5.0/plugins/5k/data/loadmode_newtracks.png new file mode 100644 index 00000000..017ef88b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_newtracks.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_none.png b/cinelerra-5.0/plugins/5k/data/loadmode_none.png new file mode 100644 index 00000000..6efb68f3 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_none.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_paste.png b/cinelerra-5.0/plugins/5k/data/loadmode_paste.png new file mode 100644 index 00000000..f1bcef7c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_paste.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_resource.png b/cinelerra-5.0/plugins/5k/data/loadmode_resource.png new file mode 100644 index 00000000..c1efcf44 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_resource.png differ diff --git a/cinelerra-5.0/plugins/5k/data/loadmode_up.png b/cinelerra-5.0/plugins/5k/data/loadmode_up.png new file mode 100644 index 00000000..1bd32e7f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/loadmode_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/locklabels_dn.png b/cinelerra-5.0/plugins/5k/data/locklabels_dn.png new file mode 100644 index 00000000..0a1563b4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/locklabels_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/locklabels_locked.png b/cinelerra-5.0/plugins/5k/data/locklabels_locked.png new file mode 100644 index 00000000..f4963ed2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/locklabels_locked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/locklabels_lockedhi.png b/cinelerra-5.0/plugins/5k/data/locklabels_lockedhi.png new file mode 100644 index 00000000..236325e6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/locklabels_lockedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/locklabels_unlocked.png b/cinelerra-5.0/plugins/5k/data/locklabels_unlocked.png new file mode 100644 index 00000000..5b16bec7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/locklabels_unlocked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/locklabels_unlockedhi.png b/cinelerra-5.0/plugins/5k/data/locklabels_unlockedhi.png new file mode 100644 index 00000000..f16e0c1d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/locklabels_unlockedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/magnify.png b/cinelerra-5.0/plugins/5k/data/magnify.png new file mode 100644 index 00000000..ad712ae4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/magnify.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mainwindow.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/mainwindow.xcf.bz2 new file mode 100644 index 00000000..121232f2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mainwindow.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/mask.png b/cinelerra-5.0/plugins/5k/data/mask.png new file mode 100644 index 00000000..4d11bcf9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mask.png differ diff --git a/cinelerra-5.0/plugins/5k/data/maskkeyframe.png b/cinelerra-5.0/plugins/5k/data/maskkeyframe.png new file mode 100644 index 00000000..28d6f707 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/maskkeyframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mbutton_bg.png b/cinelerra-5.0/plugins/5k/data/mbutton_bg.png new file mode 100644 index 00000000..09b3a310 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mbutton_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mclock.png b/cinelerra-5.0/plugins/5k/data/mclock.png new file mode 100644 index 00000000..601f493a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mclock.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mclock_flat.png b/cinelerra-5.0/plugins/5k/data/mclock_flat.png new file mode 100644 index 00000000..49348f9a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mclock_flat.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menu.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/menu.xcf.bz2 new file mode 100644 index 00000000..8c49073d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menu.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/menu_popup_bg.png b/cinelerra-5.0/plugins/5k/data/menu_popup_bg.png new file mode 100644 index 00000000..ec7e94cb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menu_popup_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menubar_bg.png b/cinelerra-5.0/plugins/5k/data/menubar_bg.png new file mode 100644 index 00000000..e9966f62 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menubar_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menubar_dn.png b/cinelerra-5.0/plugins/5k/data/menubar_dn.png new file mode 100644 index 00000000..e650da29 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menubar_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menubar_hi.png b/cinelerra-5.0/plugins/5k/data/menubar_hi.png new file mode 100644 index 00000000..2c11d137 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menubar_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menubar_up.png b/cinelerra-5.0/plugins/5k/data/menubar_up.png new file mode 100644 index 00000000..4373f938 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menubar_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menuitem_dn.png b/cinelerra-5.0/plugins/5k/data/menuitem_dn.png new file mode 100644 index 00000000..31ce2dbc Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menuitem_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menuitem_hi.png b/cinelerra-5.0/plugins/5k/data/menuitem_hi.png new file mode 100644 index 00000000..502b4b43 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menuitem_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menuitem_up.png b/cinelerra-5.0/plugins/5k/data/menuitem_up.png new file mode 100644 index 00000000..ab22938d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menuitem_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menupopup_dn.png b/cinelerra-5.0/plugins/5k/data/menupopup_dn.png new file mode 100644 index 00000000..342a6c0c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menupopup_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menupopup_hi.png b/cinelerra-5.0/plugins/5k/data/menupopup_hi.png new file mode 100644 index 00000000..74940ead Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menupopup_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menupopup_up.png b/cinelerra-5.0/plugins/5k/data/menupopup_up.png new file mode 100644 index 00000000..d535ce8b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menupopup_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menutitle_dn.png b/cinelerra-5.0/plugins/5k/data/menutitle_dn.png new file mode 100644 index 00000000..f6643fa8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menutitle_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menutitle_hi.png b/cinelerra-5.0/plugins/5k/data/menutitle_hi.png new file mode 100644 index 00000000..6c64d7f2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menutitle_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/menutitle_up.png b/cinelerra-5.0/plugins/5k/data/menutitle_up.png new file mode 100644 index 00000000..3d0ea8c8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/menutitle_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/middle_justify.png b/cinelerra-5.0/plugins/5k/data/middle_justify.png new file mode 100644 index 00000000..b7081c82 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/middle_justify.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_add.png b/cinelerra-5.0/plugins/5k/data/mode_add.png new file mode 100644 index 00000000..3e130cc8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_add.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_average.png b/cinelerra-5.0/plugins/5k/data/mode_average.png new file mode 100644 index 00000000..3edf8524 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_average.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_darken.png b/cinelerra-5.0/plugins/5k/data/mode_darken.png new file mode 100644 index 00000000..2c3f6c8a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_darken.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_divide.png b/cinelerra-5.0/plugins/5k/data/mode_divide.png new file mode 100644 index 00000000..4af0eff6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_divide.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_dn.png b/cinelerra-5.0/plugins/5k/data/mode_dn.png new file mode 100644 index 00000000..78b5b0d0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_dst.png b/cinelerra-5.0/plugins/5k/data/mode_dst.png new file mode 100644 index 00000000..933eb89c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_dst.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_dstatop.png b/cinelerra-5.0/plugins/5k/data/mode_dstatop.png new file mode 100644 index 00000000..8ac13873 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_dstatop.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_dstin.png b/cinelerra-5.0/plugins/5k/data/mode_dstin.png new file mode 100644 index 00000000..7fab8e1b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_dstin.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_dstout.png b/cinelerra-5.0/plugins/5k/data/mode_dstout.png new file mode 100644 index 00000000..09cfb006 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_dstout.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_dstover.png b/cinelerra-5.0/plugins/5k/data/mode_dstover.png new file mode 100644 index 00000000..d9328280 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_dstover.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_hi.png b/cinelerra-5.0/plugins/5k/data/mode_hi.png new file mode 100644 index 00000000..4c927459 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_lighten.png b/cinelerra-5.0/plugins/5k/data/mode_lighten.png new file mode 100644 index 00000000..fa9a5877 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_lighten.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_max.png b/cinelerra-5.0/plugins/5k/data/mode_max.png new file mode 100644 index 00000000..8674f1b2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_max.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_min.png b/cinelerra-5.0/plugins/5k/data/mode_min.png new file mode 100644 index 00000000..b21e080e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_min.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_multiply.png b/cinelerra-5.0/plugins/5k/data/mode_multiply.png new file mode 100644 index 00000000..77b8fce8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_multiply.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_normal.png b/cinelerra-5.0/plugins/5k/data/mode_normal.png new file mode 100644 index 00000000..df5af6fd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_normal.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_or.png b/cinelerra-5.0/plugins/5k/data/mode_or.png new file mode 100644 index 00000000..9a531226 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_or.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_replace.png b/cinelerra-5.0/plugins/5k/data/mode_replace.png new file mode 100644 index 00000000..51aa6e43 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_replace.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_src.png b/cinelerra-5.0/plugins/5k/data/mode_src.png new file mode 100644 index 00000000..1b0038d8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_src.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_srcatop.png b/cinelerra-5.0/plugins/5k/data/mode_srcatop.png new file mode 100644 index 00000000..36426557 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_srcatop.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_srcin.png b/cinelerra-5.0/plugins/5k/data/mode_srcin.png new file mode 100644 index 00000000..31bcc425 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_srcin.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_srcout.png b/cinelerra-5.0/plugins/5k/data/mode_srcout.png new file mode 100644 index 00000000..6119c40a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_srcout.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_srcover.png b/cinelerra-5.0/plugins/5k/data/mode_srcover.png new file mode 100644 index 00000000..a8ff0f26 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_srcover.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_subtract.png b/cinelerra-5.0/plugins/5k/data/mode_subtract.png new file mode 100644 index 00000000..35b7bcee Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_subtract.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_up.png b/cinelerra-5.0/plugins/5k/data/mode_up.png new file mode 100644 index 00000000..a1c22a40 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mode_xor.png b/cinelerra-5.0/plugins/5k/data/mode_xor.png new file mode 100644 index 00000000..c7f6765a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mode_xor.png differ diff --git a/cinelerra-5.0/plugins/5k/data/modekeyframe.png b/cinelerra-5.0/plugins/5k/data/modekeyframe.png new file mode 100644 index 00000000..0b14af85 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/modekeyframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mscroll_filler.png b/cinelerra-5.0/plugins/5k/data/mscroll_filler.png new file mode 100644 index 00000000..320695ba Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mscroll_filler.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mutepatch.png b/cinelerra-5.0/plugins/5k/data/mutepatch.png new file mode 100644 index 00000000..adb2a934 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mutepatch.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mutepatch_checked.png b/cinelerra-5.0/plugins/5k/data/mutepatch_checked.png new file mode 100644 index 00000000..482d22eb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mutepatch_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mutepatch_checkedhi.png b/cinelerra-5.0/plugins/5k/data/mutepatch_checkedhi.png new file mode 100644 index 00000000..f856fb2e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mutepatch_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mutepatch_dn.png b/cinelerra-5.0/plugins/5k/data/mutepatch_dn.png new file mode 100644 index 00000000..1de6242b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mutepatch_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mutepatch_hi.png b/cinelerra-5.0/plugins/5k/data/mutepatch_hi.png new file mode 100644 index 00000000..1dadc9b2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mutepatch_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/mutepatch_up.png b/cinelerra-5.0/plugins/5k/data/mutepatch_up.png new file mode 100644 index 00000000..80789f94 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/mutepatch_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/new.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/new.xcf.bz2 new file mode 100644 index 00000000..7b5c23db Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/new.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/new_bg.png b/cinelerra-5.0/plugins/5k/data/new_bg.png new file mode 100644 index 00000000..f9f6730c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/new_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/new_bigbutton_dn.png b/cinelerra-5.0/plugins/5k/data/new_bigbutton_dn.png new file mode 100644 index 00000000..ce02a72b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/new_bigbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/new_bigbutton_hi.png b/cinelerra-5.0/plugins/5k/data/new_bigbutton_hi.png new file mode 100644 index 00000000..a0fa6805 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/new_bigbutton_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/new_bigbutton_up.png b/cinelerra-5.0/plugins/5k/data/new_bigbutton_up.png new file mode 100644 index 00000000..886ac237 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/new_bigbutton_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/nextedit.png b/cinelerra-5.0/plugins/5k/data/nextedit.png new file mode 100644 index 00000000..7e85145e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/nextedit.png differ diff --git a/cinelerra-5.0/plugins/5k/data/nextlabel.png b/cinelerra-5.0/plugins/5k/data/nextlabel.png new file mode 100644 index 00000000..980f9669 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/nextlabel.png differ diff --git a/cinelerra-5.0/plugins/5k/data/nexttip.png b/cinelerra-5.0/plugins/5k/data/nexttip.png new file mode 100644 index 00000000..ef04f404 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/nexttip.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ok.png b/cinelerra-5.0/plugins/5k/data/ok.png new file mode 100644 index 00000000..15dfcc1d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ok.png differ diff --git a/cinelerra-5.0/plugins/5k/data/openfolder.png b/cinelerra-5.0/plugins/5k/data/openfolder.png new file mode 100644 index 00000000..95d9e591 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/openfolder.png differ diff --git a/cinelerra-5.0/plugins/5k/data/out_checked.png b/cinelerra-5.0/plugins/5k/data/out_checked.png new file mode 100644 index 00000000..730196c5 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/out_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/out_checkedhi.png b/cinelerra-5.0/plugins/5k/data/out_checkedhi.png new file mode 100644 index 00000000..186a292e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/out_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/out_dn.png b/cinelerra-5.0/plugins/5k/data/out_dn.png new file mode 100644 index 00000000..5299bbe1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/out_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/out_hi.png b/cinelerra-5.0/plugins/5k/data/out_hi.png new file mode 100644 index 00000000..bf6aabbe Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/out_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/out_up.png b/cinelerra-5.0/plugins/5k/data/out_up.png new file mode 100644 index 00000000..973bf38d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/out_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/outpoint.png b/cinelerra-5.0/plugins/5k/data/outpoint.png new file mode 100644 index 00000000..d36e4e1d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/outpoint.png differ diff --git a/cinelerra-5.0/plugins/5k/data/over.png b/cinelerra-5.0/plugins/5k/data/over.png new file mode 100644 index 00000000..e1378d48 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/over.png differ diff --git a/cinelerra-5.0/plugins/5k/data/overwrite.png b/cinelerra-5.0/plugins/5k/data/overwrite.png new file mode 100644 index 00000000..ce21cc98 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/overwrite.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pan_channel.png b/cinelerra-5.0/plugins/5k/data/pan_channel.png new file mode 100644 index 00000000..8986edf8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pan_channel.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pan_channel_small.png b/cinelerra-5.0/plugins/5k/data/pan_channel_small.png new file mode 100644 index 00000000..332849dd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pan_channel_small.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pan_hi.png b/cinelerra-5.0/plugins/5k/data/pan_hi.png new file mode 100644 index 00000000..2fa43d1c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pan_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pan_popup.png b/cinelerra-5.0/plugins/5k/data/pan_popup.png new file mode 100644 index 00000000..29a77e55 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pan_popup.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pan_stick.png b/cinelerra-5.0/plugins/5k/data/pan_stick.png new file mode 100644 index 00000000..7923a1c9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pan_stick.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pan_stick_small.png b/cinelerra-5.0/plugins/5k/data/pan_stick_small.png new file mode 100644 index 00000000..4d09d4a8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pan_stick_small.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pan_up.png b/cinelerra-5.0/plugins/5k/data/pan_up.png new file mode 100644 index 00000000..2d878111 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pan_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pane.png b/cinelerra-5.0/plugins/5k/data/pane.png new file mode 100644 index 00000000..37259445 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pane.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pane_dn.png b/cinelerra-5.0/plugins/5k/data/pane_dn.png new file mode 100644 index 00000000..9206a712 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pane_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pane_hi.png b/cinelerra-5.0/plugins/5k/data/pane_hi.png new file mode 100644 index 00000000..52e881dc Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pane_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pane_up.png b/cinelerra-5.0/plugins/5k/data/pane_up.png new file mode 100644 index 00000000..ab12e210 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pane_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/panel_divider.png b/cinelerra-5.0/plugins/5k/data/panel_divider.png new file mode 100644 index 00000000..f9b5e9c9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/panel_divider.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pankeyframe.png b/cinelerra-5.0/plugins/5k/data/pankeyframe.png new file mode 100644 index 00000000..65f86f0c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pankeyframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/paste.png b/cinelerra-5.0/plugins/5k/data/paste.png new file mode 100644 index 00000000..d28aa0d6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/paste.png differ diff --git a/cinelerra-5.0/plugins/5k/data/patch_checked.png b/cinelerra-5.0/plugins/5k/data/patch_checked.png new file mode 100644 index 00000000..082adb5c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/patch_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/patch_checkedhi.png b/cinelerra-5.0/plugins/5k/data/patch_checkedhi.png new file mode 100644 index 00000000..96cc44cf Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/patch_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/patch_dn.png b/cinelerra-5.0/plugins/5k/data/patch_dn.png new file mode 100644 index 00000000..4086fb9e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/patch_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/patch_hi.png b/cinelerra-5.0/plugins/5k/data/patch_hi.png new file mode 100644 index 00000000..c411933b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/patch_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/patch_up.png b/cinelerra-5.0/plugins/5k/data/patch_up.png new file mode 100644 index 00000000..54c2c633 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/patch_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/patchbay_bg.png b/cinelerra-5.0/plugins/5k/data/patchbay_bg.png new file mode 100644 index 00000000..3cb92f5c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/patchbay_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/patches.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/patches.xcf.bz2 new file mode 100644 index 00000000..275778f7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/patches.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/pause.png b/cinelerra-5.0/plugins/5k/data/pause.png new file mode 100644 index 00000000..59d015bb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pause.png differ diff --git a/cinelerra-5.0/plugins/5k/data/period.png b/cinelerra-5.0/plugins/5k/data/period.png new file mode 100644 index 00000000..792d1509 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/period.png differ diff --git a/cinelerra-5.0/plugins/5k/data/picture.png b/cinelerra-5.0/plugins/5k/data/picture.png new file mode 100644 index 00000000..c634d408 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/picture.png differ diff --git a/cinelerra-5.0/plugins/5k/data/play.png b/cinelerra-5.0/plugins/5k/data/play.png new file mode 100644 index 00000000..a9c5cc40 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/play.png differ diff --git a/cinelerra-5.0/plugins/5k/data/playpatch.png b/cinelerra-5.0/plugins/5k/data/playpatch.png new file mode 100644 index 00000000..ea784b04 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/playpatch.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/plugin.xcf.bz2 new file mode 100644 index 00000000..a5974377 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_bg.png b/cinelerra-5.0/plugins/5k/data/plugin_bg.png new file mode 100644 index 00000000..99ecaa21 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_on.png b/cinelerra-5.0/plugins/5k/data/plugin_on.png new file mode 100644 index 00000000..f5e05cfe Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_on.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_ondn.png b/cinelerra-5.0/plugins/5k/data/plugin_ondn.png new file mode 100644 index 00000000..d5599d14 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_ondn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_onhi.png b/cinelerra-5.0/plugins/5k/data/plugin_onhi.png new file mode 100644 index 00000000..0b03ba5f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_onhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_onselect.png b/cinelerra-5.0/plugins/5k/data/plugin_onselect.png new file mode 100644 index 00000000..f648acd2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_onselect.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_onselecthi.png b/cinelerra-5.0/plugins/5k/data/plugin_onselecthi.png new file mode 100644 index 00000000..500cef35 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_onselecthi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_show.png b/cinelerra-5.0/plugins/5k/data/plugin_show.png new file mode 100644 index 00000000..a59b549d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_show.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_showdn.png b/cinelerra-5.0/plugins/5k/data/plugin_showdn.png new file mode 100644 index 00000000..90afae7c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_showdn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_showhi.png b/cinelerra-5.0/plugins/5k/data/plugin_showhi.png new file mode 100644 index 00000000..439585b5 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_showhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_showselect.png b/cinelerra-5.0/plugins/5k/data/plugin_showselect.png new file mode 100644 index 00000000..fbb3f760 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_showselect.png differ diff --git a/cinelerra-5.0/plugins/5k/data/plugin_showselecthi.png b/cinelerra-5.0/plugins/5k/data/plugin_showselecthi.png new file mode 100644 index 00000000..5f98a4a0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/plugin_showselecthi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pot.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/pot.xcf.bz2 new file mode 100644 index 00000000..c3997b9a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pot.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/pot_dn.png b/cinelerra-5.0/plugins/5k/data/pot_dn.png new file mode 100644 index 00000000..a5c996c1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pot_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pot_hi.png b/cinelerra-5.0/plugins/5k/data/pot_hi.png new file mode 100644 index 00000000..c64127c1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pot_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/pot_up.png b/cinelerra-5.0/plugins/5k/data/pot_up.png new file mode 100644 index 00000000..97957f26 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/pot_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/preferences_bg.png b/cinelerra-5.0/plugins/5k/data/preferences_bg.png new file mode 100644 index 00000000..8d9ea644 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/preferences_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/preferencesbutton_dn.png b/cinelerra-5.0/plugins/5k/data/preferencesbutton_dn.png new file mode 100644 index 00000000..985c7cb0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/preferencesbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/preferencesbutton_dnhi.png b/cinelerra-5.0/plugins/5k/data/preferencesbutton_dnhi.png new file mode 100644 index 00000000..dc132991 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/preferencesbutton_dnhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/preferencesbutton_dnlo.png b/cinelerra-5.0/plugins/5k/data/preferencesbutton_dnlo.png new file mode 100644 index 00000000..692a9021 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/preferencesbutton_dnlo.png differ diff --git a/cinelerra-5.0/plugins/5k/data/preferencesbutton_up.png b/cinelerra-5.0/plugins/5k/data/preferencesbutton_up.png new file mode 100644 index 00000000..3223ec6f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/preferencesbutton_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/preferencesbutton_uphi.png b/cinelerra-5.0/plugins/5k/data/preferencesbutton_uphi.png new file mode 100644 index 00000000..a77c8527 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/preferencesbutton_uphi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/prevedit.png b/cinelerra-5.0/plugins/5k/data/prevedit.png new file mode 100644 index 00000000..bbbb3c5f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/prevedit.png differ diff --git a/cinelerra-5.0/plugins/5k/data/prevlabel.png b/cinelerra-5.0/plugins/5k/data/prevlabel.png new file mode 100644 index 00000000..717cd401 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/prevlabel.png differ diff --git a/cinelerra-5.0/plugins/5k/data/prevtip.png b/cinelerra-5.0/plugins/5k/data/prevtip.png new file mode 100644 index 00000000..234ff2ba Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/prevtip.png differ diff --git a/cinelerra-5.0/plugins/5k/data/progress_bg.png b/cinelerra-5.0/plugins/5k/data/progress_bg.png new file mode 100644 index 00000000..1b0468a7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/progress_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/progress_hi.png b/cinelerra-5.0/plugins/5k/data/progress_hi.png new file mode 100644 index 00000000..3dfe11ad Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/progress_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/projector.png b/cinelerra-5.0/plugins/5k/data/projector.png new file mode 100644 index 00000000..31a053f4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/projector.png differ diff --git a/cinelerra-5.0/plugins/5k/data/projectorkeyframe.png b/cinelerra-5.0/plugins/5k/data/projectorkeyframe.png new file mode 100644 index 00000000..4aaea3c6 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/projectorkeyframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/protect.png b/cinelerra-5.0/plugins/5k/data/protect.png new file mode 100644 index 00000000..4c78a905 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/protect.png differ diff --git a/cinelerra-5.0/plugins/5k/data/radial.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/radial.xcf.bz2 new file mode 100644 index 00000000..5722e9a7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/radial.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/radial_checked.png b/cinelerra-5.0/plugins/5k/data/radial_checked.png new file mode 100644 index 00000000..12f6374e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/radial_checked.png differ diff --git a/cinelerra-5.0/plugins/5k/data/radial_checkedhi.png b/cinelerra-5.0/plugins/5k/data/radial_checkedhi.png new file mode 100644 index 00000000..9ff3e709 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/radial_checkedhi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/radial_dn.png b/cinelerra-5.0/plugins/5k/data/radial_dn.png new file mode 100644 index 00000000..7647ab7d Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/radial_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/radial_hi.png b/cinelerra-5.0/plugins/5k/data/radial_hi.png new file mode 100644 index 00000000..4c4bbfa7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/radial_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/radial_up.png b/cinelerra-5.0/plugins/5k/data/radial_up.png new file mode 100644 index 00000000..b361f826 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/radial_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/record.png b/cinelerra-5.0/plugins/5k/data/record.png new file mode 100644 index 00000000..d15bfed1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/record.png differ diff --git a/cinelerra-5.0/plugins/5k/data/recordpatch.png b/cinelerra-5.0/plugins/5k/data/recordpatch.png new file mode 100644 index 00000000..8746ceed Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/recordpatch.png differ diff --git a/cinelerra-5.0/plugins/5k/data/redo.png b/cinelerra-5.0/plugins/5k/data/redo.png new file mode 100644 index 00000000..5984dead Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/redo.png differ diff --git a/cinelerra-5.0/plugins/5k/data/reload.png b/cinelerra-5.0/plugins/5k/data/reload.png new file mode 100644 index 00000000..ff0478aa Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/reload.png differ diff --git a/cinelerra-5.0/plugins/5k/data/rename.png b/cinelerra-5.0/plugins/5k/data/rename.png new file mode 100644 index 00000000..71e36db8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/rename.png differ diff --git a/cinelerra-5.0/plugins/5k/data/resource1024.png b/cinelerra-5.0/plugins/5k/data/resource1024.png new file mode 100644 index 00000000..67da059c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/resource1024.png differ diff --git a/cinelerra-5.0/plugins/5k/data/resource128.png b/cinelerra-5.0/plugins/5k/data/resource128.png new file mode 100644 index 00000000..2e3e90b7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/resource128.png differ diff --git a/cinelerra-5.0/plugins/5k/data/resource256.png b/cinelerra-5.0/plugins/5k/data/resource256.png new file mode 100644 index 00000000..6d31a0f1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/resource256.png differ diff --git a/cinelerra-5.0/plugins/5k/data/resource32.png b/cinelerra-5.0/plugins/5k/data/resource32.png new file mode 100644 index 00000000..9fe5d9d0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/resource32.png differ diff --git a/cinelerra-5.0/plugins/5k/data/resource512.png b/cinelerra-5.0/plugins/5k/data/resource512.png new file mode 100644 index 00000000..439b624f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/resource512.png differ diff --git a/cinelerra-5.0/plugins/5k/data/resource64.png b/cinelerra-5.0/plugins/5k/data/resource64.png new file mode 100644 index 00000000..1035e24a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/resource64.png differ diff --git a/cinelerra-5.0/plugins/5k/data/reverse.png b/cinelerra-5.0/plugins/5k/data/reverse.png new file mode 100644 index 00000000..6ff15be7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/reverse.png differ diff --git a/cinelerra-5.0/plugins/5k/data/rewind.png b/cinelerra-5.0/plugins/5k/data/rewind.png new file mode 100644 index 00000000..0d82573a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/rewind.png differ diff --git a/cinelerra-5.0/plugins/5k/data/right_justify.png b/cinelerra-5.0/plugins/5k/data/right_justify.png new file mode 100644 index 00000000..bf6b6706 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/right_justify.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ruler.png b/cinelerra-5.0/plugins/5k/data/ruler.png new file mode 100644 index 00000000..b28a223a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ruler.png differ diff --git a/cinelerra-5.0/plugins/5k/data/scope.png b/cinelerra-5.0/plugins/5k/data/scope.png new file mode 100644 index 00000000..bef250d8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/scope.png differ diff --git a/cinelerra-5.0/plugins/5k/data/setformat_bg.png b/cinelerra-5.0/plugins/5k/data/setformat_bg.png new file mode 100644 index 00000000..f0b95fc5 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/setformat_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/show_meters.png b/cinelerra-5.0/plugins/5k/data/show_meters.png new file mode 100644 index 00000000..057785eb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/show_meters.png differ diff --git a/cinelerra-5.0/plugins/5k/data/singleframe.png b/cinelerra-5.0/plugins/5k/data/singleframe.png new file mode 100644 index 00000000..e13a7a34 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/singleframe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/space.png b/cinelerra-5.0/plugins/5k/data/space.png new file mode 100644 index 00000000..c8147f05 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/space.png differ diff --git a/cinelerra-5.0/plugins/5k/data/splice.png b/cinelerra-5.0/plugins/5k/data/splice.png new file mode 100644 index 00000000..77d34008 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/splice.png differ diff --git a/cinelerra-5.0/plugins/5k/data/statusbar.png b/cinelerra-5.0/plugins/5k/data/statusbar.png new file mode 100644 index 00000000..4dc5b96b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/statusbar.png differ diff --git a/cinelerra-5.0/plugins/5k/data/statusbar_cancel.png b/cinelerra-5.0/plugins/5k/data/statusbar_cancel.png new file mode 100644 index 00000000..ec5309ed Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/statusbar_cancel.png differ diff --git a/cinelerra-5.0/plugins/5k/data/statusbar_cancel_dn.png b/cinelerra-5.0/plugins/5k/data/statusbar_cancel_dn.png new file mode 100644 index 00000000..5e96b013 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/statusbar_cancel_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/statusbar_cancel_hi.png b/cinelerra-5.0/plugins/5k/data/statusbar_cancel_hi.png new file mode 100644 index 00000000..40e98bd2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/statusbar_cancel_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/statusbar_cancel_up.png b/cinelerra-5.0/plugins/5k/data/statusbar_cancel_up.png new file mode 100644 index 00000000..6186769c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/statusbar_cancel_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/stop.png b/cinelerra-5.0/plugins/5k/data/stop.png new file mode 100644 index 00000000..b7f33464 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/stop.png differ diff --git a/cinelerra-5.0/plugins/5k/data/swap_extents.png b/cinelerra-5.0/plugins/5k/data/swap_extents.png new file mode 100644 index 00000000..e5915cd0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/swap_extents.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tan_linear.png b/cinelerra-5.0/plugins/5k/data/tan_linear.png new file mode 100644 index 00000000..dbc70edf Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tan_linear.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tan_smooth.png b/cinelerra-5.0/plugins/5k/data/tan_smooth.png new file mode 100644 index 00000000..4dc63b10 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tan_smooth.png differ diff --git a/cinelerra-5.0/plugins/5k/data/text.png b/cinelerra-5.0/plugins/5k/data/text.png new file mode 100644 index 00000000..a8065bb2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/text.png differ diff --git a/cinelerra-5.0/plugins/5k/data/text_highlight.png b/cinelerra-5.0/plugins/5k/data/text_highlight.png new file mode 100644 index 00000000..8bb91268 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/text_highlight.png differ diff --git a/cinelerra-5.0/plugins/5k/data/timebar_bg_flat.png b/cinelerra-5.0/plugins/5k/data/timebar_bg_flat.png new file mode 100644 index 00000000..c01c9557 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/timebar_bg_flat.png differ diff --git a/cinelerra-5.0/plugins/5k/data/timebar_brender.png b/cinelerra-5.0/plugins/5k/data/timebar_brender.png new file mode 100644 index 00000000..13045cb4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/timebar_brender.png differ diff --git a/cinelerra-5.0/plugins/5k/data/timebar_view.png b/cinelerra-5.0/plugins/5k/data/timebar_view.png new file mode 100644 index 00000000..fed4b1fa Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/timebar_view.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tipbutton_dn.png b/cinelerra-5.0/plugins/5k/data/tipbutton_dn.png new file mode 100644 index 00000000..fa3de52e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tipbutton_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tipbutton_hi.png b/cinelerra-5.0/plugins/5k/data/tipbutton_hi.png new file mode 100644 index 00000000..1e4edf97 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tipbutton_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tipbutton_up.png b/cinelerra-5.0/plugins/5k/data/tipbutton_up.png new file mode 100644 index 00000000..4e0284a4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tipbutton_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/title_bg.png b/cinelerra-5.0/plugins/5k/data/title_bg.png new file mode 100644 index 00000000..2ee44717 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/title_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/titlesafe.png b/cinelerra-5.0/plugins/5k/data/titlesafe.png new file mode 100644 index 00000000..00b08860 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/titlesafe.png differ diff --git a/cinelerra-5.0/plugins/5k/data/toclip.png b/cinelerra-5.0/plugins/5k/data/toclip.png new file mode 100644 index 00000000..48d2f52b Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/toclip.png differ diff --git a/cinelerra-5.0/plugins/5k/data/toolwindow.png b/cinelerra-5.0/plugins/5k/data/toolwindow.png new file mode 100644 index 00000000..366c11a4 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/toolwindow.png differ diff --git a/cinelerra-5.0/plugins/5k/data/top_justify.png b/cinelerra-5.0/plugins/5k/data/top_justify.png new file mode 100644 index 00000000..8170bbc8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/top_justify.png differ diff --git a/cinelerra-5.0/plugins/5k/data/transportdn.png b/cinelerra-5.0/plugins/5k/data/transportdn.png new file mode 100644 index 00000000..dac1ba1a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/transportdn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/transportend.png b/cinelerra-5.0/plugins/5k/data/transportend.png new file mode 100644 index 00000000..c5abc093 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/transportend.png differ diff --git a/cinelerra-5.0/plugins/5k/data/transporthi.png b/cinelerra-5.0/plugins/5k/data/transporthi.png new file mode 100644 index 00000000..e5d02334 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/transporthi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/transportup.png b/cinelerra-5.0/plugins/5k/data/transportup.png new file mode 100644 index 00000000..d6d05ff8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/transportup.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tumble_bottom.png b/cinelerra-5.0/plugins/5k/data/tumble_bottom.png new file mode 100644 index 00000000..1687644f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tumble_bottom.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tumble_hi.png b/cinelerra-5.0/plugins/5k/data/tumble_hi.png new file mode 100644 index 00000000..61616e42 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tumble_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tumble_top.png b/cinelerra-5.0/plugins/5k/data/tumble_top.png new file mode 100644 index 00000000..03907dd0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tumble_top.png differ diff --git a/cinelerra-5.0/plugins/5k/data/tumble_up.png b/cinelerra-5.0/plugins/5k/data/tumble_up.png new file mode 100644 index 00000000..eb608b00 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/tumble_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/undo.png b/cinelerra-5.0/plugins/5k/data/undo.png new file mode 100644 index 00000000..aa86a360 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/undo.png differ diff --git a/cinelerra-5.0/plugins/5k/data/updir.png b/cinelerra-5.0/plugins/5k/data/updir.png new file mode 100644 index 00000000..91fb90cb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/updir.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vbuttons_left.png b/cinelerra-5.0/plugins/5k/data/vbuttons_left.png new file mode 100644 index 00000000..6f233dea Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vbuttons_left.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vclock.png b/cinelerra-5.0/plugins/5k/data/vclock.png new file mode 100644 index 00000000..81a91e36 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vclock.png differ diff --git a/cinelerra-5.0/plugins/5k/data/veffect_icon.png b/cinelerra-5.0/plugins/5k/data/veffect_icon.png new file mode 100644 index 00000000..e2816133 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/veffect_icon.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_handle_bg.png b/cinelerra-5.0/plugins/5k/data/vscroll_handle_bg.png new file mode 100644 index 00000000..6e999c46 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_handle_bg.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_handle_dn.png b/cinelerra-5.0/plugins/5k/data/vscroll_handle_dn.png new file mode 100644 index 00000000..0bde47bb Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_handle_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_handle_hi.png b/cinelerra-5.0/plugins/5k/data/vscroll_handle_hi.png new file mode 100644 index 00000000..f452a530 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_handle_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_handle_up.png b/cinelerra-5.0/plugins/5k/data/vscroll_handle_up.png new file mode 100644 index 00000000..bcef19ae Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_handle_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_left_dn.png b/cinelerra-5.0/plugins/5k/data/vscroll_left_dn.png new file mode 100644 index 00000000..e9ac6448 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_left_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_left_hi.png b/cinelerra-5.0/plugins/5k/data/vscroll_left_hi.png new file mode 100644 index 00000000..c2b318d1 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_left_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_left_up.png b/cinelerra-5.0/plugins/5k/data/vscroll_left_up.png new file mode 100644 index 00000000..9e3bddf3 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_left_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_right_dn.png b/cinelerra-5.0/plugins/5k/data/vscroll_right_dn.png new file mode 100644 index 00000000..8aa68524 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_right_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_right_hi.png b/cinelerra-5.0/plugins/5k/data/vscroll_right_hi.png new file mode 100644 index 00000000..880a749e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_right_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vscroll_right_up.png b/cinelerra-5.0/plugins/5k/data/vscroll_right_up.png new file mode 100644 index 00000000..8b15b2ae Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vscroll_right_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vtransition_icon.png b/cinelerra-5.0/plugins/5k/data/vtransition_icon.png new file mode 100644 index 00000000..d73ccb1f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vtransition_icon.png differ diff --git a/cinelerra-5.0/plugins/5k/data/vwindow_timebar.png b/cinelerra-5.0/plugins/5k/data/vwindow_timebar.png new file mode 100644 index 00000000..8cba4622 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/vwindow_timebar.png differ diff --git a/cinelerra-5.0/plugins/5k/data/waveform.png b/cinelerra-5.0/plugins/5k/data/waveform.png new file mode 100644 index 00000000..fb81e31a Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/waveform.png differ diff --git a/cinelerra-5.0/plugins/5k/data/waveform_rgb.png b/cinelerra-5.0/plugins/5k/data/waveform_rgb.png new file mode 100644 index 00000000..c529ce15 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/waveform_rgb.png differ diff --git a/cinelerra-5.0/plugins/5k/data/wrench.png b/cinelerra-5.0/plugins/5k/data/wrench.png new file mode 100644 index 00000000..d68e3528 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/wrench.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xmeter_green.png b/cinelerra-5.0/plugins/5k/data/xmeter_green.png new file mode 100644 index 00000000..2f298d36 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xmeter_green.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xmeter_normal.png b/cinelerra-5.0/plugins/5k/data/xmeter_normal.png new file mode 100644 index 00000000..bc158a24 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xmeter_normal.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xmeter_over.png b/cinelerra-5.0/plugins/5k/data/xmeter_over.png new file mode 100644 index 00000000..cf5f5280 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xmeter_over.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xmeter_red.png b/cinelerra-5.0/plugins/5k/data/xmeter_red.png new file mode 100644 index 00000000..3f74e640 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xmeter_red.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xmeter_white.png b/cinelerra-5.0/plugins/5k/data/xmeter_white.png new file mode 100644 index 00000000..4c6158b9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xmeter_white.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xmeter_yellow.png b/cinelerra-5.0/plugins/5k/data/xmeter_yellow.png new file mode 100644 index 00000000..e55bb541 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xmeter_yellow.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xpane_dn.png b/cinelerra-5.0/plugins/5k/data/xpane_dn.png new file mode 100644 index 00000000..80a7337f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xpane_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xpane_hi.png b/cinelerra-5.0/plugins/5k/data/xpane_hi.png new file mode 100644 index 00000000..436c0803 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xpane_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/xpane_up.png b/cinelerra-5.0/plugins/5k/data/xpane_up.png new file mode 100644 index 00000000..007cf7a0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/xpane_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ymeter_green.png b/cinelerra-5.0/plugins/5k/data/ymeter_green.png new file mode 100644 index 00000000..161d344c Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ymeter_green.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ymeter_normal.png b/cinelerra-5.0/plugins/5k/data/ymeter_normal.png new file mode 100644 index 00000000..364cda00 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ymeter_normal.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ymeter_over.png b/cinelerra-5.0/plugins/5k/data/ymeter_over.png new file mode 100644 index 00000000..7ae2e6ca Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ymeter_over.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ymeter_red.png b/cinelerra-5.0/plugins/5k/data/ymeter_red.png new file mode 100644 index 00000000..4c25cfe8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ymeter_red.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ymeter_white.png b/cinelerra-5.0/plugins/5k/data/ymeter_white.png new file mode 100644 index 00000000..4d2c8b22 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ymeter_white.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ymeter_yellow.png b/cinelerra-5.0/plugins/5k/data/ymeter_yellow.png new file mode 100644 index 00000000..781fc4f7 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ymeter_yellow.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ypane_dn.png b/cinelerra-5.0/plugins/5k/data/ypane_dn.png new file mode 100644 index 00000000..2f7c4dee Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ypane_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ypane_hi.png b/cinelerra-5.0/plugins/5k/data/ypane_hi.png new file mode 100644 index 00000000..dff6eae9 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ypane_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/ypane_up.png b/cinelerra-5.0/plugins/5k/data/ypane_up.png new file mode 100644 index 00000000..321bf0c8 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/ypane_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/zoompopup_dn.png b/cinelerra-5.0/plugins/5k/data/zoompopup_dn.png new file mode 100644 index 00000000..65e6f9dd Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/zoompopup_dn.png differ diff --git a/cinelerra-5.0/plugins/5k/data/zoompopup_hi.png b/cinelerra-5.0/plugins/5k/data/zoompopup_hi.png new file mode 100644 index 00000000..811a7ff2 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/zoompopup_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/zoompopup_up.png b/cinelerra-5.0/plugins/5k/data/zoompopup_up.png new file mode 100644 index 00000000..64d11ff0 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/zoompopup_up.png differ diff --git a/cinelerra-5.0/plugins/5k/data/zoomtumble.xcf.bz2 b/cinelerra-5.0/plugins/5k/data/zoomtumble.xcf.bz2 new file mode 100644 index 00000000..008f9695 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/zoomtumble.xcf.bz2 differ diff --git a/cinelerra-5.0/plugins/5k/data/zoomtumble_bottom.png b/cinelerra-5.0/plugins/5k/data/zoomtumble_bottom.png new file mode 100644 index 00000000..3ba43475 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/zoomtumble_bottom.png differ diff --git a/cinelerra-5.0/plugins/5k/data/zoomtumble_hi.png b/cinelerra-5.0/plugins/5k/data/zoomtumble_hi.png new file mode 100644 index 00000000..53457042 Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/zoomtumble_hi.png differ diff --git a/cinelerra-5.0/plugins/5k/data/zoomtumble_top.png b/cinelerra-5.0/plugins/5k/data/zoomtumble_top.png new file mode 100644 index 00000000..a749c25f Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/zoomtumble_top.png differ diff --git a/cinelerra-5.0/plugins/5k/data/zoomtumble_up.png b/cinelerra-5.0/plugins/5k/data/zoomtumble_up.png new file mode 100644 index 00000000..f0f4f59e Binary files /dev/null and b/cinelerra-5.0/plugins/5k/data/zoomtumble_up.png differ diff --git a/cinelerra-5.0/plugins/Makefile b/cinelerra-5.0/plugins/Makefile index de78961b..1153b322 100644 --- a/cinelerra-5.0/plugins/Makefile +++ b/cinelerra-5.0/plugins/Makefile @@ -8,6 +8,8 @@ include ../global_config DIRS = \ 1080to480 \ 1080to540 \ + 4k \ + 5k \ 720to480 \ aging \ audioscope \ @@ -44,6 +46,7 @@ DIRS = \ dissolve \ dot \ downsample \ + edge \ echo \ echocancel \ fieldframe \ diff --git a/cinelerra-5.0/plugins/brighttheme/data/check.png b/cinelerra-5.0/plugins/brighttheme/data/check.png new file mode 100644 index 00000000..270fdac8 Binary files /dev/null and b/cinelerra-5.0/plugins/brighttheme/data/check.png differ diff --git a/cinelerra-5.0/plugins/decimate/decimate.C b/cinelerra-5.0/plugins/decimate/decimate.C index 38946d28..4d8565fe 100644 --- a/cinelerra-5.0/plugins/decimate/decimate.C +++ b/cinelerra-5.0/plugins/decimate/decimate.C @@ -672,7 +672,8 @@ void Decimate::fill_lookahead(double frame_rate, read_frame(frames[lookahead_size], 0, lookahead_end, - config.input_rate); + config.input_rate, + 0); // Fill difference buffer if(lookahead_size > 0) differences[lookahead_size] = diff --git a/cinelerra-5.0/plugins/deinterlace-cv/deinterlace-cv.C b/cinelerra-5.0/plugins/deinterlace-cv/deinterlace-cv.C index 7c8e05bf..cdd2cccd 100644 --- a/cinelerra-5.0/plugins/deinterlace-cv/deinterlace-cv.C +++ b/cinelerra-5.0/plugins/deinterlace-cv/deinterlace-cv.C @@ -530,10 +530,7 @@ int DeInterlaceMain::process_buffer(VFrame *frame, load_configuration(); - read_frame(frame, - 0, - start_position, - frame_rate); + read_frame(frame, 0, start_position, frame_rate, 0); // Temp was used for adaptive deinterlacing where it took deinterlacing // an entire frame to decide if the deinterlaced output should be used. @@ -569,16 +566,16 @@ int DeInterlaceMain::process_buffer(VFrame *frame, break; case DEINTERLACE_BOBWEAVE: if (get_source_position()==0) - read_frame(temp_prevframe,0, get_source_position(), get_framerate()); + read_frame(temp_prevframe,0, get_source_position(), get_framerate(), 0); else - read_frame(temp_prevframe,0, get_source_position()-1, get_framerate()); + read_frame(temp_prevframe,0, get_source_position()-1, get_framerate(), 0); deinterlace_bobweave(frame, temp_prevframe, frame, config.dominance); break; case DEINTERLACE_TEMPORALSWAP: if (get_source_position()==0) - read_frame(temp_prevframe,0, get_source_position(), get_framerate()); + read_frame(temp_prevframe,0, get_source_position(), get_framerate(), 0); else - read_frame(temp_prevframe,0, get_source_position()-1, get_framerate()); + read_frame(temp_prevframe,0, get_source_position()-1, get_framerate(), 0); deinterlace_temporalswap(frame, temp_prevframe, frame, config.dominance); break; } diff --git a/cinelerra-5.0/plugins/denoiseseltempavg/seltempavg.C b/cinelerra-5.0/plugins/denoiseseltempavg/seltempavg.C index fc826c1d..bfd8dea9 100644 --- a/cinelerra-5.0/plugins/denoiseseltempavg/seltempavg.C +++ b/cinelerra-5.0/plugins/denoiseseltempavg/seltempavg.C @@ -291,7 +291,8 @@ int SelTempAvgMain::process_buffer(VFrame *frame, read_frame(history[j], 0, history_frame[j], - frame_rate); + frame_rate, + 0); add_accum(history[j]); break; } @@ -317,7 +318,8 @@ int SelTempAvgMain::process_buffer(VFrame *frame, read_frame(frame, 0, i, - frame_rate); + frame_rate, + 0); add_accum(frame); //printf("SelTempAvgMain::process_buffer 1 %lld %lld %lld\n", prev_frame, start_position, i); } @@ -331,7 +333,8 @@ int SelTempAvgMain::process_buffer(VFrame *frame, read_frame(frame, 0, start_position, - frame_rate); + frame_rate, + 0); // Transfer accumulation to output with division if average is desired. diff --git a/cinelerra-5.0/plugins/edge/Makefile b/cinelerra-5.0/plugins/edge/Makefile new file mode 100644 index 00000000..4271887d --- /dev/null +++ b/cinelerra-5.0/plugins/edge/Makefile @@ -0,0 +1,13 @@ +include ../../global_config + +OBJS := \ + $(OBJDIR)/edge.o \ + $(OBJDIR)/edgewindow.o + +PLUGIN = edge + +include ../../plugin_config + +$(OBJDIR)/edge.o: edge.C +$(OBJDIR)/edgewindow.o: edgewindow.C + diff --git a/cinelerra-5.0/plugins/edge/edge.C b/cinelerra-5.0/plugins/edge/edge.C new file mode 100644 index 00000000..89f757cd --- /dev/null +++ b/cinelerra-5.0/plugins/edge/edge.C @@ -0,0 +1,378 @@ +/* + * CINELERRA + * Copyright (C) 1997-2015 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "affine.h" +#include "bcsignals.h" +#include "clip.h" +#include "filexml.h" +#include "edge.h" +#include "edgewindow.h" +#include "language.h" +#include "transportque.inc" +#include + +// Edge detection from the Gimp + +REGISTER_PLUGIN(Edge) + +EdgeConfig::EdgeConfig() +{ + amount = 8; +} + +int EdgeConfig::equivalent(EdgeConfig &that) +{ + if(this->amount != that.amount) return 0; + return 1; +} + +void EdgeConfig::copy_from(EdgeConfig &that) +{ + this->amount = that.amount; +} + +void EdgeConfig::interpolate( + EdgeConfig &prev, + EdgeConfig &next, + long prev_frame, + long next_frame, + long current_frame) +{ + copy_from(next); +} + +void EdgeConfig::limits() +{ + CLAMP(amount, 0, 10); +} + + +Edge::Edge(PluginServer *server) + : PluginVClient(server) +{ + engine = 0; + temp = 0; +} + +Edge::~Edge() +{ + if(engine) delete engine; + if(temp) delete temp; +} + +const char* Edge::plugin_title() { return N_("Edge"); } +int Edge::is_realtime() { return 1; } + +NEW_WINDOW_MACRO(Edge, EdgeWindow); +LOAD_CONFIGURATION_MACRO(Edge, EdgeConfig) + +void Edge::save_data(KeyFrame *keyframe) +{ + FileXML output; + +// cause data to be stored directly in text + output.set_shared_output(keyframe->get_data(), MESSAGESIZE); + + output.tag.set_title("EDGE"); + output.tag.set_property("AMOUNT", config.amount); + output.append_tag(); + output.append_newline(); + output.tag.set_title("/EDGE"); + output.append_tag(); + output.append_newline(); + output.terminate_string(); +} + +void Edge::read_data(KeyFrame *keyframe) +{ + FileXML input; + + input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data())); + + int result = 0; + while(!result) + { + result = input.read_tag(); + + if(!result) + { + if(input.tag.title_is("EDGE")) + { + config.amount = input.tag.get_property("AMOUNT", config.amount); + config.limits(); + + } + else + if(input.tag.title_is("/EDGE")) + { + result = 1; + } + } + } + +} + +void Edge::update_gui() +{ + if(thread) + { + if(load_configuration()) + { + thread->window->lock_window("Edge::update_gui"); + EdgeWindow *window = (EdgeWindow*)thread->window; + window->flush(); + thread->window->unlock_window(); + } + } +} + + + +int Edge::process_buffer(VFrame *frame, + int64_t start_position, + double frame_rate) +{ + +// int need_reconfigure = + load_configuration(); + int w = frame->get_w(); + int h = frame->get_h(); + int color_model = frame->get_color_model(); + +// initialize everything + if(!temp) + { + engine = new EdgeEngine(this, + PluginClient::get_project_smp() + 1, + PluginClient::get_project_smp() + 1); + + temp = new VFrame(0, + -1, + w, + h, + color_model, + -1); + + } + + read_frame(frame, + 0, + start_position, + frame_rate, + 0); + engine->process(temp, frame); + frame->copy_from(temp); + + return 0; +} + + + + +EdgePackage::EdgePackage() + : LoadPackage() +{ +} + +EdgeUnit::EdgeUnit(EdgeEngine *server) : LoadClient(server) +{ + this->server = server; +} + +EdgeUnit::~EdgeUnit() +{ +} + + +float EdgeUnit::edge_detect(float *data, float max, int do_max) +{ + const float v_kernel[9] = { 0, 0, 0, + 0, 2, -2, + 0, 2, -2 }; + const float h_kernel[9] = { 0, 0, 0, + 0, -2, -2, + 0, 2, 2 }; + int i; + float v_grad, h_grad; + float amount = server->plugin->config.amount; + + for (i = 0, v_grad = 0, h_grad = 0; i < 9; i++) + { + v_grad += v_kernel[i] * data[i]; + h_grad += h_kernel[i] * data[i]; + } + + float result = sqrt (v_grad * v_grad * amount + + h_grad * h_grad * amount); + if(do_max) + CLAMP(result, 0, max); + return result; +} + +#define EDGE_MACRO(type, max, components, is_yuv) \ +{ \ + type **input_rows = (type**)server->src->get_rows(); \ + type **output_rows = (type**)server->dst->get_rows(); \ + int comps = MIN(components, 3); \ + for(int y = pkg->y1; y < pkg->y2; y++) \ + { \ + for(int x = 0; x < w; x++) \ + { \ +/* kernel is in bounds */ \ + if(y > 0 && x > 0 && y < h - 2 && x < w - 2) \ + { \ + for(int chan = 0; chan < comps; chan++) \ + { \ +/* load kernel */ \ + for(int kernel_y = 0; kernel_y < 3; kernel_y++) \ + { \ + for(int kernel_x = 0; kernel_x < 3; kernel_x++) \ + { \ + kernel[3 * kernel_y + kernel_x] = \ + (type)input_rows[y - 1 + kernel_y][(x - 1 + kernel_x) * components + chan]; \ + \ + if(is_yuv && chan > 0) \ + { \ + kernel[3 * kernel_y + kernel_x] -= 0x80; \ + } \ + \ + } \ + } \ +/* do the business */ \ + output_rows[y][x * components + chan] = edge_detect(kernel, max, sizeof(type) < 4); \ + if(is_yuv && chan > 0) \ + { \ + output_rows[y][x * components + chan] += 0x80; \ + } \ + \ + } \ + \ + if(components == 4) output_rows[y][x * components + 3] = \ + input_rows[y][x * components + 3]; \ + } \ + else \ + { \ + for(int chan = 0; chan < comps; chan++) \ + { \ +/* load kernel */ \ + for(int kernel_y = 0; kernel_y < 3; kernel_y++) \ + { \ + for(int kernel_x = 0; kernel_x < 3; kernel_x++) \ + { \ + int in_y = y - 1 + kernel_y; \ + int in_x = x - 1 + kernel_x; \ + CLAMP(in_y, 0, h - 1); \ + CLAMP(in_x, 0, w - 1); \ + kernel[3 * kernel_y + kernel_x] = \ + (type)input_rows[in_y][in_x * components + chan]; \ + if(is_yuv && chan > 0) \ + { \ + kernel[3 * kernel_y + kernel_x] -= 0x80; \ + } \ + } \ + } \ +/* do the business */ \ + output_rows[y][x * components + chan] = edge_detect(kernel, max, sizeof(type) < 4); \ + if(is_yuv && chan > 0) \ + { \ + output_rows[y][x * components + chan] += 0x80; \ + } \ + } \ + if(components == 4) output_rows[y][x * components + 3] = \ + input_rows[y][x * components + 3]; \ + } \ + } \ + } \ +} + + +void EdgeUnit::process_package(LoadPackage *package) +{ + EdgePackage *pkg = (EdgePackage*)package; + int w = server->src->get_w(); + int h = server->src->get_h(); + float kernel[9]; + + switch(server->src->get_color_model()) + { + case BC_RGB_FLOAT: + EDGE_MACRO(float, 1, 3, 0); + break; + case BC_RGBA_FLOAT: + EDGE_MACRO(float, 1, 4, 0); + break; + case BC_RGB888: + EDGE_MACRO(unsigned char, 0xff, 3, 0); + break; + case BC_YUV888: + EDGE_MACRO(unsigned char, 0xff, 3, 1); + break; + case BC_RGBA8888: + EDGE_MACRO(unsigned char, 0xff, 4, 0); + break; + case BC_YUVA8888: + EDGE_MACRO(unsigned char, 0xff, 4, 1); + break; + } +} + + +EdgeEngine::EdgeEngine(Edge *plugin, + int total_clients, + int total_packages) + : LoadServer(total_clients, total_packages) +{ + this->plugin = plugin; +} + +EdgeEngine::~EdgeEngine() +{ +} + + +void EdgeEngine::init_packages() +{ + for(int i = 0; i < get_total_packages(); i++) + { + EdgePackage *pkg = (EdgePackage*)get_package(i); + pkg->y1 = plugin->get_input(0)->get_h() * i / LoadServer::get_total_packages(); + pkg->y2 = plugin->get_input(0)->get_h() * (i + 1) / LoadServer::get_total_packages(); + } +} + +void EdgeEngine::process(VFrame *dst, VFrame *src) +{ + this->dst = dst; + this->src = src; + process_packages(); +} + + +LoadClient* EdgeEngine::new_client() +{ + return new EdgeUnit(this); +} + +LoadPackage* EdgeEngine::new_package() +{ + return new EdgePackage; +} + + diff --git a/cinelerra-5.0/plugins/edge/edge.h b/cinelerra-5.0/plugins/edge/edge.h new file mode 100644 index 00000000..6e44d368 --- /dev/null +++ b/cinelerra-5.0/plugins/edge/edge.h @@ -0,0 +1,111 @@ +/* + * CINELERRA + * Copyright (C) 1997-2014 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + + + +#ifndef EDGE_H +#define EDGE_H + +#include "loadbalance.h" +#include "pluginvclient.h" + +class EdgeEngine; +class Edge; + +class EdgeConfig +{ +public: + EdgeConfig(); + + int equivalent(EdgeConfig &that); + void copy_from(EdgeConfig &that); + void interpolate(EdgeConfig &prev, + EdgeConfig &next, + long prev_frame, + long next_frame, + long current_frame); + void limits(); + + + int amount; +}; + +class EdgePackage : public LoadPackage +{ +public: + EdgePackage(); + int y1; + int y2; +}; + +class EdgeUnit : public LoadClient +{ +public: + EdgeUnit(EdgeEngine *server); + ~EdgeUnit(); + float edge_detect(float *data, float max, int do_max); + void process_package(LoadPackage *package); + EdgeEngine *server; +}; + + +class EdgeEngine : public LoadServer +{ +public: + EdgeEngine(Edge *plugin, + int total_clients, + int total_packages); + ~EdgeEngine(); + + void init_packages(); + void process(VFrame *dst, VFrame *src); + + LoadClient* new_client(); + LoadPackage* new_package(); + VFrame *src, *dst; + Edge *plugin; +}; + + +class Edge : public PluginVClient +{ +public: + Edge(PluginServer *server); + ~Edge(); +// required for all realtime plugins + PLUGIN_CLASS_MEMBERS2(EdgeConfig) + int is_realtime(); + void update_gui(); + void save_data(KeyFrame *keyframe); + void read_data(KeyFrame *keyframe); + int process_buffer(VFrame *frame, + int64_t start_position, + double frame_rate); + + EdgeEngine *engine; + VFrame *temp; +}; + + + +#endif + + + diff --git a/cinelerra-5.0/plugins/edge/edgewindow.C b/cinelerra-5.0/plugins/edge/edgewindow.C new file mode 100644 index 00000000..9e738c50 --- /dev/null +++ b/cinelerra-5.0/plugins/edge/edgewindow.C @@ -0,0 +1,98 @@ +/* + * CINELERRA + * Copyright (C) 2014 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "bcdisplayinfo.h" +#include "clip.h" +#include "language.h" +#include "edge.h" +#include "edgewindow.h" +#include "theme.h" + +EdgeWindow::EdgeWindow(Edge *plugin) + : PluginClientWindow(plugin, + 320, + 120, + 320, + 120, + 0) +{ + this->plugin = plugin; +} + +EdgeWindow::~EdgeWindow() +{ +} + +void EdgeWindow::create_objects() +{ + int x = 10, y = 10; + int margin = plugin->get_theme()->widget_border; + BC_Title *title; + + + + add_subwindow(title = new BC_Title(x, + y, + _("Amount:"))); + y += title->get_h() + margin; + add_subwindow(amount = new EdgeAmount(this, + x, + y, + get_w() - x * 2)); + y += amount->get_h() + margin; + + show_window(1); +} + + + + + + + +EdgeAmount::EdgeAmount(EdgeWindow *gui, + int x, + int y, + int w) + : BC_ISlider(x, + y, + 0, + w, + w, + 0, + 10, + gui->plugin->config.amount, + 0) +{ + this->gui = gui; +} + +int EdgeAmount::handle_event() +{ + gui->plugin->config.amount = get_value(); + gui->plugin->send_configure_change(); + return 1; +} + + + + + + diff --git a/cinelerra-5.0/plugins/edge/edgewindow.h b/cinelerra-5.0/plugins/edge/edgewindow.h new file mode 100644 index 00000000..4b2d76c8 --- /dev/null +++ b/cinelerra-5.0/plugins/edge/edgewindow.h @@ -0,0 +1,57 @@ +/* + * CINELERRA + * Copyright (C) 2008-2015 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef EDGEWINDOW_H +#define EDGEWINDOW_H + + +#include "guicast.h" + +class Edge; +class EdgeWindow; + + +class EdgeAmount : public BC_ISlider +{ +public: + EdgeAmount(EdgeWindow *gui, + int x, + int y, + int w); + int handle_event(); + EdgeWindow *gui; +}; + +class EdgeWindow : public PluginClientWindow +{ +public: + EdgeWindow(Edge *plugin); + ~EdgeWindow(); + + void create_objects(); + + Edge *plugin; + EdgeAmount *amount; +}; + + + +#endif + diff --git a/cinelerra-5.0/plugins/fieldframe/fieldframe.C b/cinelerra-5.0/plugins/fieldframe/fieldframe.C index bcb677a0..0780c61b 100644 --- a/cinelerra-5.0/plugins/fieldframe/fieldframe.C +++ b/cinelerra-5.0/plugins/fieldframe/fieldframe.C @@ -439,14 +439,16 @@ int FieldFrame::process_buffer(VFrame *frame, read_frame(input, 0, field1_position, - frame_rate * 2); + frame_rate * 2, + 0); apply_field(frame, input, config.field_dominance == TOP_FIELD_FIRST ? 0 : 1); read_frame(input, 0, field2_position, - frame_rate * 2); + frame_rate * 2, + 0); apply_field(frame, input, config.field_dominance == TOP_FIELD_FIRST ? 1 : 0); diff --git a/cinelerra-5.0/plugins/findobject/findobject.C b/cinelerra-5.0/plugins/findobject/findobject.C index 9cade6e8..2f5d1362 100644 --- a/cinelerra-5.0/plugins/findobject/findobject.C +++ b/cinelerra-5.0/plugins/findobject/findobject.C @@ -682,14 +682,14 @@ void FindObjectMain::process_surf() //printf("FindObjectMain::process_surf %d\n", __LINE__); if(scene_keypoints->total && object_keypoints->total && - locatePlanarObject(object_keypoints, - object_descriptors, - scene_keypoints, - scene_descriptors, - src_corners, - dst_corners, - &point_pairs, - &total_pairs)) + locatePlanarObject(object_keypoints, + object_descriptors, + scene_keypoints, + scene_descriptors, + src_corners, + dst_corners, + &point_pairs, + &total_pairs)) { diff --git a/cinelerra-5.0/plugins/interpolatevideo/interpolatevideo.C b/cinelerra-5.0/plugins/interpolatevideo/interpolatevideo.C index c00d26c7..a0313931 100644 --- a/cinelerra-5.0/plugins/interpolatevideo/interpolatevideo.C +++ b/cinelerra-5.0/plugins/interpolatevideo/interpolatevideo.C @@ -135,14 +135,14 @@ void InterpolateVideo::fill_border(double frame_rate, int64_t start_position) if( frame_start != frame_number[0] ) { //printf("InterpolateVideo::fill_border 1 %lld\n", range_start); - read_frame(frames[0], 0, frame_start, active_input_rate); + read_frame(frames[0], 0, frame_start, active_input_rate, 0); frame_number[0] = frame_start; } if( frame_end != frame_number[1] ) { //printf("InterpolateVideo::fill_border 2 %lld\n", range_start); - read_frame(frames[1], 0, frame_end, active_input_rate); + read_frame(frames[1], 0, frame_end, active_input_rate, 0); frame_number[1] = frame_end; } @@ -788,10 +788,7 @@ int InterpolateVideo::process_buffer(VFrame *frame, frame_rate / active_input_rate); if(requested_range_start == requested_range_end) { - read_frame(frame, - 0, - range_start, - active_input_rate); + read_frame(frame, 0, range_start, active_input_rate, 0); } else { diff --git a/cinelerra-5.0/plugins/loopvideo/loopvideo.C b/cinelerra-5.0/plugins/loopvideo/loopvideo.C index 65d030e2..c29189ae 100644 --- a/cinelerra-5.0/plugins/loopvideo/loopvideo.C +++ b/cinelerra-5.0/plugins/loopvideo/loopvideo.C @@ -229,7 +229,8 @@ int LoopVideo::process_buffer(VFrame *frame, read_frame(frame, 0, current_loop_position, - frame_rate); + frame_rate, + 0); return 0; } diff --git a/cinelerra-5.0/plugins/motion/motion.C b/cinelerra-5.0/plugins/motion/motion.C index 207fd547..37f6baa0 100644 --- a/cinelerra-5.0/plugins/motion/motion.C +++ b/cinelerra-5.0/plugins/motion/motion.C @@ -971,17 +971,20 @@ printf("MotionMain::process_buffer %d start_position=%lld\n", __LINE__, start_po read_frame(prev_global_ref, reference_layer, previous_frame_number, - frame_rate); + frame_rate, + 0); } read_frame(current_global_ref, reference_layer, start_position, - frame_rate); + frame_rate, + 0); read_frame(global_target_src, target_layer, start_position, - frame_rate); + frame_rate, + 0); @@ -1035,16 +1038,19 @@ printf("MotionMain::process_buffer %d start_position=%lld\n", __LINE__, start_po read_frame(prev_rotate_ref, reference_layer, previous_frame_number, - frame_rate); + frame_rate, + 0); } read_frame(current_rotate_ref, reference_layer, start_position, - frame_rate); + frame_rate, + 0); read_frame(rotate_target_src, target_layer, start_position, - frame_rate); + frame_rate, + 0); } @@ -1089,7 +1095,8 @@ printf("MotionMain::process_buffer %d start_position=%lld\n", __LINE__, start_po read_frame(frame[target_layer], target_layer, start_position, - frame_rate); + frame_rate, + 0); } if(config.draw_vectors) diff --git a/cinelerra-5.0/plugins/motion/motionwindow.C b/cinelerra-5.0/plugins/motion/motionwindow.C index 883876a5..6bbb9cd5 100644 --- a/cinelerra-5.0/plugins/motion/motionwindow.C +++ b/cinelerra-5.0/plugins/motion/motionwindow.C @@ -263,8 +263,7 @@ void MotionWindow::create_objects() - show_window(); - flush(); + show_window(1); } void MotionWindow::update_mode() diff --git a/cinelerra-5.0/plugins/motion2point/motion.C b/cinelerra-5.0/plugins/motion2point/motion.C index 285c5d50..39a6f73f 100644 --- a/cinelerra-5.0/plugins/motion2point/motion.C +++ b/cinelerra-5.0/plugins/motion2point/motion.C @@ -846,17 +846,20 @@ printf("MotionMain2::process_buffer 1 start_position=" _LD "\n", start_position) read_frame(prev_global_ref, reference_layer, previous_frame_number, - frame_rate); + frame_rate, + 0); } read_frame(current_global_ref, reference_layer, start_position, - frame_rate); + frame_rate, + 0); read_frame(global_target_src, target_layer, start_position, - frame_rate); + frame_rate, + 0); } @@ -894,7 +897,8 @@ printf("MotionMain2::process_buffer 1 start_position=" _LD "\n", start_position) read_frame(frame[target_layer], target_layer, start_position, - frame_rate); + frame_rate, + 0); } if(config.draw_vectors) diff --git a/cinelerra-5.0/plugins/reframert/reframert.C b/cinelerra-5.0/plugins/reframert/reframert.C index 881b121d..c9d086f9 100644 --- a/cinelerra-5.0/plugins/reframert/reframert.C +++ b/cinelerra-5.0/plugins/reframert/reframert.C @@ -411,7 +411,8 @@ int ReframeRT::process_buffer(VFrame *frame, read_frame(frame, 0, input_frame, - input_rate); + input_rate, + 0); delete fake_keyframe; diff --git a/cinelerra-5.0/plugins/reroute/reroute.C b/cinelerra-5.0/plugins/reroute/reroute.C index 257284e8..d4ac373b 100644 --- a/cinelerra-5.0/plugins/reroute/reroute.C +++ b/cinelerra-5.0/plugins/reroute/reroute.C @@ -381,12 +381,12 @@ int Reroute::process_buffer(VFrame **frame, { load_configuration(); - bool do_components, do_alpha; + bool do_components = true, do_alpha = true; switch(config.operation) { - case RerouteConfig::REPLACE: do_components = do_alpha=true; break; - case RerouteConfig::REPLACE_ALPHA: do_components=false; do_alpha=true; break; - case RerouteConfig::REPLACE_COMPONENTS: do_components=true; do_alpha=false; break; + case RerouteConfig::REPLACE: break; + case RerouteConfig::REPLACE_ALPHA: do_components = false; break; + case RerouteConfig::REPLACE_COMPONENTS: do_alpha = false; break; } if(config.output_track == RerouteConfig::TOP) @@ -429,7 +429,8 @@ int Reroute::process_buffer(VFrame **frame, read_frame(target, output_track, start_position, - frame_rate); + frame_rate, + 0); switch(source->get_color_model()) { diff --git a/cinelerra-5.0/plugins/reversevideo/reversevideo.C b/cinelerra-5.0/plugins/reversevideo/reversevideo.C index 004b9f04..72db6dcd 100644 --- a/cinelerra-5.0/plugins/reversevideo/reversevideo.C +++ b/cinelerra-5.0/plugins/reversevideo/reversevideo.C @@ -21,6 +21,7 @@ #include "bcdisplayinfo.h" #include "bchash.h" +#include "bcsignals.h" #include "filexml.h" #include "guicast.h" #include "language.h" @@ -191,12 +192,14 @@ int ReverseVideo::process_buffer(VFrame *frame, read_frame(frame, 0, input_position, - frame_rate); + frame_rate, + 0); else read_frame(frame, 0, start_position, - frame_rate); + frame_rate, + 0); return 0; } @@ -250,6 +253,13 @@ int ReverseVideo::load_configuration() // Convert start position to new direction if(get_direction() == PLAY_FORWARD) { +//printf("ReverseVideo::load_configuration %d %ld %ld %ld %ld %ld\n", +// __LINE__, +// get_source_position(), +// get_source_start(), +// get_total_len(), +// range_start, +// range_end); input_position = get_source_position() - range_start; input_position = range_end - input_position - 1; } diff --git a/cinelerra-5.0/plugins/suv/data/check.png b/cinelerra-5.0/plugins/suv/data/check.png new file mode 100644 index 00000000..64deb932 Binary files /dev/null and b/cinelerra-5.0/plugins/suv/data/check.png differ diff --git a/cinelerra-5.0/plugins/suv/suv.C b/cinelerra-5.0/plugins/suv/suv.C index 7e2bdeac..08d4d547 100644 --- a/cinelerra-5.0/plugins/suv/suv.C +++ b/cinelerra-5.0/plugins/suv/suv.C @@ -301,7 +301,7 @@ void SUV::initialize() "dash.png"); resources->bar_data = new_image("bar", "bar.png"); - + resources->check = new_image("check", "check.png"); resources->min_menu_w = 96; resources->menu_popup_bg = new_image("menu_popup_bg.png"); diff --git a/cinelerra-5.0/plugins/timeavg/timeavg.C b/cinelerra-5.0/plugins/timeavg/timeavg.C index f95ab926..445bbf7f 100644 --- a/cinelerra-5.0/plugins/timeavg/timeavg.C +++ b/cinelerra-5.0/plugins/timeavg/timeavg.C @@ -328,7 +328,8 @@ int TimeAvgMain::process_buffer(VFrame *frame, read_frame(history[j], 0, history_frame[j], - frame_rate); + frame_rate, + 0); if(config.mode == TimeAvgConfig::AVERAGE || config.mode == TimeAvgConfig::ACCUMULATE) { @@ -378,7 +379,8 @@ int TimeAvgMain::process_buffer(VFrame *frame, read_frame(frame, 0, i, - frame_rate); + frame_rate, + 0); add_accum(frame); printf("TimeAvgMain::process_buffer %d prev_frame=" _LD " start_position=" _LD " i=" _LD "\n", __LINE__, prev_frame, start_position, i); diff --git a/cinelerra-5.0/plugins/timefront/timefront.C b/cinelerra-5.0/plugins/timefront/timefront.C index 59eb05dc..88dc2987 100644 --- a/cinelerra-5.0/plugins/timefront/timefront.C +++ b/cinelerra-5.0/plugins/timefront/timefront.C @@ -770,7 +770,8 @@ int TimeFrontMain::process_buffer(VFrame **frame, read_frame(framelist[0], 0, start_position, - frame_rate); + frame_rate, + 0); this->input = framelist[0]; this->output = outframes[0]; need_reconfigure |= load_configuration(); @@ -849,7 +850,8 @@ int TimeFrontMain::process_buffer(VFrame **frame, read_frame(tfframe, 1, start_position, - frame_rate); + frame_rate, + 0); if (config.track_usage == TimeFrontConfig::OTHERTRACK_INTENSITY) { switch (tfframe->get_color_model()) @@ -916,7 +918,8 @@ int TimeFrontMain::process_buffer(VFrame **frame, read_frame(framelist[i], 0, start_position - i, - frame_rate); + frame_rate, + 0); } } diff --git a/cinelerra-5.0/plugins/titler/title.C b/cinelerra-5.0/plugins/titler/title.C index 9974c91a..3b25e1bf 100644 --- a/cinelerra-5.0/plugins/titler/title.C +++ b/cinelerra-5.0/plugins/titler/title.C @@ -818,7 +818,6 @@ LoadPackage* TitleOutlineEngine::new_package() - TitleTranslatePackage::TitleTranslatePackage() : LoadPackage() { @@ -850,7 +849,6 @@ void TitleTranslate::run_packages() - #define TRANSLATE(type, max, components, ofs) \ { \ unsigned char **in_rows = plugin->text_mask->get_rows(); \ @@ -1216,11 +1214,11 @@ void TitleMain::build_previews(TitleWindow *gui) if(!FT_Load_Char(freetype_face, c, FT_LOAD_RENDER)) { if(pass == 0) { current_w = current_x + freetype_face->glyph->bitmap.width; - if(freetype_face->glyph->bitmap_top > current_ascent) + if((int)freetype_face->glyph->bitmap_top > current_ascent) current_ascent = freetype_face->glyph->bitmap_top; - if(freetype_face->glyph->bitmap.rows > total_h) + if((int)freetype_face->glyph->bitmap.rows > total_h) total_h = freetype_face->glyph->bitmap.rows; - if(freetype_face->glyph->bitmap.rows > current_h) + if((int)freetype_face->glyph->bitmap.rows > current_h) current_h = freetype_face->glyph->bitmap.rows; } else { @@ -1229,7 +1227,7 @@ void TitleMain::build_previews(TitleWindow *gui) int out_y = (total_h - height[font_number]) / 2 + ascent[font_number] - freetype_face->glyph->bitmap_top; for(int in_y = 0; - in_y < freetype_face->glyph->bitmap.rows && + in_y < (int)freetype_face->glyph->bitmap.rows && out_y < total_h; in_y++, out_y++) { unsigned char *out_row = font_entry->image->get_rows()[out_y] + @@ -1237,7 +1235,7 @@ void TitleMain::build_previews(TitleWindow *gui) unsigned char *in_row = freetype_face->glyph->bitmap.buffer + freetype_face->glyph->bitmap.pitch * in_y; - for(int out_x = 0; out_x < freetype_face->glyph->bitmap.width && + for(int out_x = 0; out_x < (int)freetype_face->glyph->bitmap.width && out_x < total_w; out_x++) { *out_row = (*in_row * r + @@ -1303,7 +1301,7 @@ int TitleMain::check_char_code_path(FT_Library &freetype_library, { FT_Set_Pixel_Sizes(temp_freetype_face, 128, 0); int gindex = FT_Get_Char_Index(temp_freetype_face, char_code); - if((!gindex == 0) && (!char_code != 10)) + if( gindex != 0 && char_code == 10 ) { strcpy(path_new, path_old); notfindit = 0; @@ -1329,7 +1327,7 @@ int TitleMain::check_char_code_path(FT_Library &freetype_library, { FT_Set_Pixel_Sizes(temp_freetype_face, 128, 0); int gindex = FT_Get_Char_Index(temp_freetype_face, char_code); - if((!gindex == 0) && (!char_code != 10)) + if( gindex != 0 && char_code == 10 ) { sprintf(path_new, "%s", tmpstring); notfindit = 0; diff --git a/cinelerra-5.0/plugins/translate/translatewin.C b/cinelerra-5.0/plugins/translate/translatewin.C index a10c5d33..5f13aab5 100644 --- a/cinelerra-5.0/plugins/translate/translatewin.C +++ b/cinelerra-5.0/plugins/translate/translatewin.C @@ -123,7 +123,7 @@ TranslateCoord::TranslateCoord(TranslateWin *win, : BC_TumbleTextBox(win, (int)*value, (int)0, - (int)100, + (int)10000, x, y, 100) diff --git a/cinelerra-5.0/plugins/unsharp/unsharp.C b/cinelerra-5.0/plugins/unsharp/unsharp.C index 03dc25da..186e24a5 100644 --- a/cinelerra-5.0/plugins/unsharp/unsharp.C +++ b/cinelerra-5.0/plugins/unsharp/unsharp.C @@ -181,7 +181,7 @@ int UnsharpMain::process_buffer(VFrame *frame, if(!engine) engine = new UnsharpEngine(this, get_project_smp() + 1, get_project_smp() + 1); - read_frame(frame, 0, get_source_position(), get_framerate()); + read_frame(frame, 0, get_source_position(), get_framerate(), 0); engine->do_unsharp(frame); return 0; }