16.01.2016, 15:53 | #821 | |
Бывалый писикарщик
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
|
Цитата:
Хотя вот понаблюдал , показатели такие : При старте 2.5% далее гуляет от 1.2 до 2.0% (и это с часами ) - тоесть не критично. (память - старт 130мб и падает до 25) Плавнее не знаю как сделать , если присмотреться - фризы всегда были + ещё небольшое передёргивание при возврате . При увеличении скорости оно и получается плавнее , но растёт проц ... Добавлю сюда , то, на чём остановился(gr.GdiDrawString заменил на gr.GdiDrawText тк первый не хотел правильно самоцентровать) : Код:
/////////////////////// бегущая строка - сикбар v.10.12.2010 \\\\\\\\\\\ //San_dr http://forum.oszone.net && Zin-Uru http://foobar2000.ru/forum\\ //var font = gdi.Font("Tahoma", 17, 1); //var font = gdi.Font("AGOpus", 17, 0); // ==PREPROCESSOR== // @name "Date Modoki" // @version "1.0.0" // @author "tomato111" // ==/PREPROCESSOR== //年 %YYYY 4桁 //年 %YY 2桁 //年 %Y 2桁(桁合わせ無し) //月 %MM //月 %M (桁合わせ無し) //月 %ME 英語 フル //月 %Me 英語 略字 //日 %DD //日 %D (桁合わせ無し) //時 %hh //時 %h(桁合わせ無し) //分 %mm //分 %m(桁合わせ無し) //秒 %ss //秒 %s(桁合わせ無し) //曜日 %WJ 日本 フル //曜日 %Wj 日本 略字 //曜日 %WE 英語 フル //曜日 %We 英語 略字 //======== // properties //======== function RGB(r, g, b) { return (0xff000000 | (r << 24) | (g << 16) | (b)); } var prop = new function () { this.Style = { _format: window.GetProperty('Style._format', '%hh:%mm:%ss • %We• %DD.%MM.%Y'), Color: { _0_Default: window.GetProperty('Style.Color._0_Default', 'RGB(29,21,14)'), _1_Year: window.GetProperty('Style.Color._1_Year', 'RGB(91,145,143)'), _2_Month: window.GetProperty('Style.Color._2_Month', 'RGB(35,246,238)'), _3_Day: window.GetProperty('Style.Color._3_Day', 'RGB(35,246,238)'), _4_Hour: window.GetProperty('Style.Color._4_Hour', 'RGB(35,246,238)'), _5_Minute: window.GetProperty('Style.Color._5_Minute', 'RGB(35,246,238)'), _6_Second: window.GetProperty('Style.Color._6_Second', 'RGB(91,145,143)'), _7_DayOfWeek: window.GetProperty('Style.Color._7_DayOfWeek', 'RGB(120,255,130)'), _8_DayOfWeek_sat: window.GetProperty('Style.Color._8_DayOfWeek_sat', 'RGB(0,0,200)'), _9_DayOfWeek_sun: window.GetProperty('Style.Color._9_DayOfWeek_sun', 'RGB(200,0,0)'), //Background: window.GetProperty('Style.Color.Background', 'RGBA(255,255,255,0)') }, Font_Family: window.GetProperty('Style.Font_Family', 'a_LCDNova'), Font_Size: window.GetProperty('Style.Font_Size', 34), Font_Bold: window.GetProperty('Style.Font_Bold', true) }; }; //======== //============================================ //== Prototype ================================== //============================================ Function.prototype.interval = function (time, callback) { var __method = this; var __callback = callback || function () { }; this.$$timerid$$ = window.setInterval(function () { __method.apply(this, arguments); __callback.apply(this, arguments); }, time); }; Function.prototype.clearInterval = function () { window.clearInterval(this.$$timerid$$); }; //============================================ //== function ================================== //============================================ //============================================ //== DateModoki Object ========================== //============================================ var DateModoki = new function () { this.on_paint = function (gr, x, y) { //gr.FillSolidRect(-1, -1, window.Width + 2, window.Height + 2, color['Background']); for (var i = 0; i < applied_text_arr.length; i++) { var text = applied_text_arr[i].toString(); if (format.type_arr[i] === '_6_Second') { switch (format.text_arr[i]) { case '%ss': text = ('0' + (Number(text) + timer_count)).slice(-2); break; case '%s': text = (Number(text) + timer_count).toString(); break; } } gr.GdiDrawText(text, font, color[format.type_arr[i]], x, y, window.Width, window.Height, 0x00000001); x += gr.MeasureString(text.replace(/ /g,''), font, 0, 0, window.Width, window.Height,10).Width-12 + (text.split('').length - 1) * spaceWidth; // MeasureString??????????0?????????????????spaceWidth???????? } }; this.start = function () { setFontAndColor(); setDate(); timer.interval(1000); window.Repaint(); }; var timer = function () { timer_count++; if (date_now.getSeconds() + timer_count === 60) { setDate(); window.Repaint() } else format.isContain_Second && window.Repaint(); }; var setDate = function () { timer_count = 0; date_now = new Date(); applied_text_arr = format.applyDate(date_now); }; var setFontAndColor = function () { var fontfamily = ['prop.Style.Font_Family']; fontfamily.unshift(prop.Style.Font_Family); for (i = 0; i < fontfamily.length; i++) { if (utils.CheckFont("a_LCDNova")) { window.SetProperty('Style.Font_Family', prop.Style.Font_Family = fontfamily[i]); break; } } font = gdi.Font(prop.Style.Font_Family, prop.Style.Font_Size, Number(prop.Style.Font_Bold)); color = []; for (var name in prop.Style.Color) { color[name] = eval(prop.Style.Color[name]); } var temp_bmp = gdi.CreateImage(1, 1); var temp_gr = temp_bmp.GetGraphics(); spaceWidth = temp_gr.MeasureString(' ,', font, 0, 1, window.Width, window.Height, 0).Width - temp_gr.MeasureString(',', font, 0, 0, window.Width, window.Height, 0).Width; temp_bmp.ReleaseGraphics(temp_gr); temp_bmp.Dispose(); temp_gr = null; temp_bmp = null; }; var timer_count, date_now, applied_text_arr = [], spaceWidth, font, color; var format = new ParseFormat(prop.Style._format); // Constructor function ParseFormat(formatText) { this.text_arr = []; this.type_arr = []; this.isContain_Second = false; var i = 0; var type = { YYYY: '_1_Year', YY: '_1_Year', Y: '_1_Year', MM: '_2_Month', ME: '_2_Month', Me: '_2_Month', M: '_2_Month', DD: '_3_Day', D: '_3_Day', hh: '_4_Hour', h: '_4_Hour', mm: '_5_Minute', m: '_5_Minute', ss: '_6_Second', s: '_6_Second', WJ: '_7_DayOfWeek', Wj: '_7_DayOfWeek', WE: '_7_DayOfWeek', We: '_7_DayOfWeek' }; var dateRE = /%(?:YYYY|YY|Y|MM|ME|Me|M|DD|D|hh|h|mm|m|ss|s|WJ|Wj|WE|We)/g; while (dateRE.exec(formatText) !== null) { if (i !== RegExp.index) { this.text_arr.push(formatText.substring(i, RegExp.index).replace(/ /g, ' ')); this.type_arr.push('_0_Default'); } this.text_arr.push(RegExp.lastMatch); this.type_arr.push(type[RegExp.lastMatch.slice(1)]); type[RegExp.lastMatch.slice(1)] === '_6_Second' && (this.isContain_Second = true); i = RegExp.lastIndex; } if (i !== formatText.length) { this.text_arr.push(formatText.substring(i, formatText.length)); this.type_arr.push('_0_Default'); } } ParseFormat.prototype.applyDate = function (dateObj) { var arr = [], _this = this; for (var i = 0; i < this.text_arr.length; i++) { switch (this.text_arr[i]) { case '%YYYY': arr.push(dateObj.getFullYear()); break; case '%YY': arr.push(dateObj.getFullYear().toString().slice(2)); break; case '%Y': arr.push(Number(dateObj.getFullYear().toString().slice(2))); break; case '%MM': arr.push(('0' + (dateObj.getMonth() + 1)).slice(-2)); break; case '%ME': arr.push(monthToString(dateObj.getMonth(), false)); break; case '%Me': arr.push(monthToString(dateObj.getMonth(), true)); break; case '%M': arr.push(dateObj.getMonth() + 1); break; case '%DD': arr.push(('0' + dateObj.getDate()).slice(-2)); break; case '%D': arr.push(dateObj.getDate()); break; case '%hh': arr.push(('0' + dateObj.getHours()).slice(-2)); break; case '%h': arr.push(dateObj.getHours()); break; case '%mm': arr.push(('0' + dateObj.getMinutes()).slice(-2)); break; case '%m': arr.push(dateObj.getMinutes()); break; case '%ss': arr.push(('0' + dateObj.getSeconds()).slice(-2)); break; case '%s': arr.push(dateObj.getSeconds()); break; case '%WJ': arr.push(dayToString(dateObj.getDay(), false, 'ja')); setDayColor(dateObj.getDay(), i); break; case '%Wj': arr.push(dayToString(dateObj.getDay(), true, 'ja')); setDayColor(dateObj.getDay(), i); break; case '%WE': arr.push(dayToString(dateObj.getDay(), false, 'en')); setDayColor(dateObj.getDay(), i); break; case '%We': arr.push(dayToString(dateObj.getDay(), true, 'en')); setDayColor(dateObj.getDay(), i); break; default: arr.push(this.text_arr[i]); break; } } function monthToString(num, shorter) { if (shorter) return ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'][num]; else return ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'][num]; } function dayToString(num, shorter, lang) { if (shorter) switch (lang) { case 'en': return ['Вос', 'Пон', 'Втр', 'Срд', 'Чет', 'Пят', 'Суб'][num]; case 'ja': return ['日', '月', '火', '水', '木', '金', '土'][num]; } else switch (lang) { case 'en': return ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'][num]; case 'ja': return ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'][num]; } } function setDayColor(num, i) { if (num === 0) _this.type_arr[i] = '_9_DayOfWeek_sun'; else if (num === 6) _this.type_arr[i] = '_8_DayOfWeek_sat'; } return arr; }; // End Constructor }; DateModoki.start(); //======================================== //== Callback function ========================= //======================================== //EOF var font = gdi.Font("Arial", 40, 0); var align = 0x00000003 | 0x00000008, align_scroll = 0x00000009; var tf_string = ('[%title% —] Art: $if(%artist%,%artist%,•) •%codec%•[%playback_time%]/[%length%]'); var ww, pos_d = 3, q = 0, timer, g_drag = 0; var start = true, stopped = false; window.MinHeight = window.MaxHeight = 90; function on_timer(id) { window.Repaint(); } function on_playback_new_track(metadb) { window.Repaint(); } function on_playback_stop(){ window.Repaint(); } function on_playback_seek(time){ window.Repaint(); } function on_playback_time(time){ window.Repaint(); } function on_playback_pause(state){ window.Repaint(); } function on_mouse_lbtn_down(x,y){ g_drag = 1; on_mouse_move(x,y); } function on_mouse_lbtn_up(x,y){ if(g_drag){ g_drag = 0; g_drag_seek = x / window.Width; g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1; fb.PlaybackTime = fb.PlaybackLength * g_drag_seek; g_drag = 0; } } function on_mouse_move(x,y){ if(g_drag){ g_drag_seek = x / window.Width; g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1; window.Repaint(); } } function RGB(r, g, b) { return (0xff000000 | (r << 16) | (g << 8) | (b)); } function on_paint(gr) { var text = fb.IsPlaying ? fb.TitleFormat((tf_string)+" • ").Eval() : (stopped ? "STOP" : "----=== fb2k 4 iCar ===----");// название сборки var text_width_d = gr.CalcTextWidth(text, font); ww = window.Width, wh = window.Height, pos = 0, length = fb.PlaybackLength; if(!timer) timer = window.SetInterval(on_timer,50); q = q + 50; if(length > 0){ if(g_drag){ pos = window.Width * g_drag_seek; } else{ pos = window.Width * (fb.PlaybackTime / [length]); } } else if (fb.PlaybackTime) { } gr.FillGradRect(0,0,ww,wh,-90,RGB(140,121,92), RGB(25,13,5)); gr.FillGradRect(0,0,pos,wh,-90,RGB(25,13,5),RGB(191,171,118)); //фон прошло DateModoki.on_paint(gr, -185, 6); gr.DrawRect(1,0, ww-1, wh-0, 1.0, RGB(205,170,125)); gr.DrawRect(-2,0, pos+1, 90, 3, RGB(25, 20, 20)); //движок-разделитель gr.DrawRect(1,-1, ww-0, wh-0, 2.0, RGB(20,20,20)); text_width_2 = gr.CalcTextWidth(text, font); if(text_width_d>ww-15) { text = text + " • " + text; text_width_2 = gr.CalcTextWidth(text, font); if(pos_d <= text_width_d - text_width_2) { pos_d = 10 - (start ? 0 : 3); start = false; } else { pos_d = pos_d - 1; } gr.GdiDrawText(text, font, RGB(244,231,211), pos_d + 10, 38, text_width_2, 80, align_scroll); } else { gr.GdiDrawText(text, font, RGB(244,231,211), 0, 38, ww, 90, align_scroll); } function on_size() { if (g_timer) {window.KillTimer(g_timer); g_timer=false;} } function on_playback_pause(state) { window.Repaint(); } function on_playback_starting(cmd, is_paused) {} } // APPLICATION - END |
|
16.01.2016, 16:48 | #822 | |
Старший Пользователь
Регистрация: 09.07.2011
Город: Ростов на Дону
Регион: 61
Машина: KIA Sorento XM
Сообщений: 745
|
Цитата:
|
|
16.01.2016, 16:51 | #823 | |
Гуру
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
|
seriousstas
Цитата:
Фризы и продергивания в этом скрипте всегда были и хз как их убрать... сегодня посмотрю другие скрипты и как в них прокрутка работает... у Гены красивее конечно сделано, надо посмотреть возможно что то и получится. По скрипту, можно было немного проще сделать без слияния скриптов... добавить секцию // ==PREPROCESSOR== в скрипт сикбара и прописать в ней импорт скрипта Modoki.js из какой ни будь папки фубара, и в on_paint в скрипте сикбара прописать вызов фунции DateModoki.on_paint(gr, -185, 6); |
|
16.01.2016, 17:02 | #824 | |
Гуру
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
|
Цитата:
Надо попробовать Voicemeeter посмотреть что да как. А ты его используешь в машине ? Просто как мне кажется физические провода лучше программных решений... думаю что реализация в програмных кабелях такая запись-->вывод и смешивание, из того что я заметил в виртуальном кабеле. |
|
16.01.2016, 17:44 | #825 |
Старший Пользователь
Регистрация: 09.07.2011
Город: Ростов на Дону
Регион: 61
Машина: KIA Sorento XM
Сообщений: 745
|
Выводить с двух карт шнурками и соединять их на входе в усь. не выйдет... Интегрированная имеет своё время задержки и внешняя своё время. Если соединить их выходы параллельно и подать на вход уся то получится фигня. Вообщем как то так. Из этого следует, что каждая карта должна иметь свой усь...
|
16.01.2016, 18:06 | #826 | |
Бывалый писикарщик
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
|
Я о том-же . На подсказки , такого "с головой.." :
http://ru.aliexpress.com/item/BS-S-T...451318400_6150 duzzy Цитата:
|
|
16.01.2016, 18:22 | #827 | |
Старший Пользователь
Регистрация: 09.07.2011
Город: Ростов на Дону
Регион: 61
Машина: KIA Sorento XM
Сообщений: 745
|
Цитата:
|
|
16.01.2016, 23:09 | #828 | |
Бывалый писикарщик
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
|
Цитата:
что приведёт к эхо во время разговора через Икаровскую говорилку . Сейчас эха нет совсем . |
|
16.01.2016, 23:47 | #829 | |
Бывалый писикарщик
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
|
duzzy
Цитата:
|
|
17.01.2016, 01:14 | #830 | |
Гуру
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
|
Цитата:
(подтормаживает из за гифки а так вообще движение плавное) |
|
Здесь присутствуют: 15 (пользователей: 0 , гостей: 15) | |
|
|