Примеры кода, фичи, баги jsfx(only, not reascript) (1 онлайн

Trasher

Well-Known Member
12 Янв 2013
637
447
63
Делимся примерами кода, обсуждаем варианты реализации и тд и тп(база кода и приёмов программирования на языке EEL2 в jsfx)
________________________________________
1.Начну с себя.
Фича->Использование функции time_precise позволяет вытащить в принт времени после секунд с точностью только фиксации до зептосекунды(фактически отображается только с точностью до аттосекунды, зептосекунда к сожалению работает как триггер из-за ограничения типа int64. (мастхэв)
2.Фича:Возможности трансляции кода препроцессором позволяют создать полнофункциональное переопределение функции(возможно ошибаюсь в терминологии), т е один декларатор(строка), несколько реализаций, при вызове функции возможна подмена реализации функции в разных вариациях.Аналог интерфейса(мастхэв).
3.Баг(в описании спеков на сайте рипера) Длина имени переменной=127 символов, по факту длина имени переменной=128символов.[0-127 позиция=> запара разработчика при подсчёте элементов массива начинающегося с нуля.
4.Незадокументированная Фича: в опциях скрипта можно принудительно предвыделять память(указать) на выделение памяти(использована в лупере super8) :
options:maxmem=33000000 prealloc=*
5.Баг(неприятный) при увеличении слайдеров(объявлений) в скрипте, разработчики забыли/забили реализовать скролл, те при выходе за рамки окна вида не воспользоваться контроллами из окна вида(стандартный риперовский гуй) плагина только из енвелоуп окна трека.
 
  • Like
Реакции: Antonio

Trasher

Well-Known Member
12 Янв 2013
637
447
63
[~Legacy]
Про инициализации целочисленных(integer) значений в переменной jsfx:
При инициализации переменной значением в 16-ой системе(hex value) и/счисления нужно иметь ввиду, что максимально возможное значение ограничено значением maxint32+1.
Пример:
InValue=0xDE0B6B3A7640000[C hex style]
или
InValue=$xDE0B6B3A7640000[EEL2 style]
Оба значения будут усечены значением maxint32+1[0x80000000].
При тех же манипуляциях со значением в десятичной системе счисления таких проблем не обнаружено. (пережиток ЛЕГАСИ прошлого в jsfx).Также, (но это пока спорный и не проверенный момент) :в функциях вывода в печать дебагвью и секцию графики, работают также с усечением точности значения(есть альтернативы) . Спецификаторы формата принта также(пока предположение) не реализованы должным образом. Сразу паровозом могут(пока предположение) возникнуть сложности с применением в вычислениях операторов так называемого битового сдвига(все bitwise operators).Т.е нужно очень внимательно дебажить все арифметические операции с целочисленными числами больше MaxInt32.
 

Trasher

Well-Known Member
12 Янв 2013
637
447
63
Снова про функцию time_precise.
Кто-нибудь задавался вопросом, что означает формат этой функции и зачем она? Все очень оказывается просто. Это регион от старт поинта сессии операционной системы до момента фиксации. Т. е промежуток времени от последней загрузки системы до какого-то момента времени.
PS Значение возврата time_precise в reaper - только целая часть результата=>секунды.
243262
 
Последнее редактирование:

Trasher

Well-Known Member
12 Янв 2013
637
447
63
Про Limits в целочисленных и хранении значений(rvalue).
Версия Reaper[7.05rev32b987]
___________________________________
Итак, посмотрел забугорных товарищей поэтому поводу. Как говорится не читал, но осуждаю.)
___________________________________
В моем посте #3 опечатка. (к сожалению не исправить)

К теории полученной практическим путем.(весь текст является предположением, полученным тестированием поведения ,способом <blackbox>)
Число в EEL2 хранится определённым способом и защищено от переполнения типа. Т. е если результат получится больше максимального лимита типа, то результат будет усечен(методом потери точности результата).
На сей момент в целочисленных типах определены следующие лимиты:
__________________________________
MaxHexValue=0xffffffff;
MaxMaskValue=$~53;
MaxIntValue=9007199254740991;
__________________________________
Все остальные результирующие значения и выражения с ними выше лимитов, будут с усечением/потерей точности....
__________________________________
Немного забегу вперёд и расскажу как хранится число с плавающей запятой в jsfx. А также укажу maxValue.
Число имеет целую часть шириной = 9 бит(dec-511) и дробную часть шириной = 47 бит(имеет два пустых зарезервированных бита 45 бит и 46 бит==предположительно под флаги)
Знак не хранится, тк является unary_expression(но это не точно).
Итого:
MaxFloatVal=511.87960930222079;
____________________________________
Алгоритм защиты от переполнения типа пока не щёлкнул, но представление как работает уже имеется(но это не точно и возможно не является истиной а только предположением).
 
Последнее редактирование:

Trasher

Well-Known Member
12 Янв 2013
637
447
63
Блин как неудобно запрет на редакцию своих постов.
Опять ошибка, вернее неточность в определении:пост#5
MaxFloat(для вычислений) =31.87960930222079,те ширина целой части=5бит(для хранения и операций только с целой частью ширина 9 бит) .(в принципе вовремя исправленная ошибка не считается ошибкой, если не спалиться сильно))
 
Последнее редактирование:
  • Like
Реакции: belovw

Trasher

Well-Known Member
12 Янв 2013
637
447
63
Про курсоры:
Тут говорить в принципе не о чем. Проще посмотреть простенький пример использования системных ресурсов(win10) в лице курсоров мыши.
C:
desc:about_cursors
slider1:10<0,16,1{arrow,ibeam,wait,cross,uparrow,makeintersource,sizenwse,sizenesw,sizewe,sizens,sizeall,no,hand,appstarting,help,pin,person}>name_cursor

@gfx 300 300
function cursor(index)
local(IDC_ARROW IDC_IBEAM IDC_WAIT IDC_CROSS IDC_UPARROW MAKEINTRESOURCE IDC_SIZENWSE
     IDC_SIZENESW IDC_SIZEWE IDC_SIZENS IDC_SIZEALL IDC_NO IDC_HAND IDC_APPSTARTING
     IDC_HELP IDC_PIN IDC_PERSON x
    )
(
        IDC_ARROW      =0x7F00;         //01-32512
        IDC_IBEAM      =0x7F01;         //02-32513
        IDC_WAIT       =0x7F02;         //03-32514
        IDC_CROSS      =0x7F03;         //04-32515
        IDC_UPARROW    =0x7F04;         //05-32516
        MAKEINTRESOURCE=0x7F77;         //06-32631
        IDC_SIZENWSE   =0x7F82;         //07-32642
        IDC_SIZENESW   =0x7F83;         //08-32643
        IDC_SIZEWE     =0x7F84;         //09-32644
        IDC_SIZENS     =0x7F85;         //10-32645
        IDC_SIZEALL    =0x7F86;         //11-32646
        IDC_NO         =0x7F88;         //12-32648
        IDC_HAND       =0x7F89;         //13-32649
        IDC_APPSTARTING=0x7F8A;         //14-32650
        IDC_HELP       =0x7F8B;         //15-32651
        IDC_PIN        =0x7F9F;         //16-32671
        IDC_PERSON     =0x7FA0;         //17-32672

        index===0x00?x=IDC_ARROW;       //#i00="IDC_ARROW";
        index===0x01?x=IDC_IBEAM;       //#i01="IDC_IBEAM";
        index===0x02?x=IDC_WAIT;        //#i02="IDC_WAIT";
        index===0x03?x=IDC_CROSS;       //#i03="IDC_CROSS";
        index===0x04?x=IDC_UPARROW;     //#i04="IDC_UPARROW";
        index===0x05?x=MAKEINTRESOURCE; //#i05="MAKEINTRESOURCE";
        index===0x06?x=IDC_SIZENWSE;    //#i06="IDC_SIZENWSE";
        index===0x07?x=IDC_SIZENESW;    //#i07="IDC_SIZENESW";
        index===0x08?x=IDC_SIZEWE;      //#i08="IDC_SIZEWE";
        index===0x09?x=IDC_SIZENS;      //#i09="IDC_SIZENS";
        index===0x0A?x=IDC_SIZEALL;     //#i10="IDC_SIZEALL";
        index===0x0B?x=IDC_NO;          //#i11="IDC_NO";
        index===0x0C?x=IDC_HAND;        //#i12="IDC_HAND";
        index===0x0D?x=IDC_APPSTARTING; //#i13="IDC_APPSTARTING";
        index===0x0E?x=IDC_HELP;        //#i14="IDC_HELP";
        index===0x0F?x=IDC_PIN;         //#i15="IDC_PIN";
        index===0x10?x=IDC_PERSON;      //#i16="IDC_PERSON";
        
        gfx_printf("ResourceID \" hex--\'0x%04X\'  dec--\'%d\' \"",x,x);
        gfx_setcursor(x)
);

gfx_x=10;gfx_y=250;gfx_r=1;gfx_g=1;gfx_b=0;gfx_a=.9;
gfx_setfont(01,"Arial",30);
cursor(slider1);
gfx_x=10;gfx_y=10;
gfx_printf("x=%03d  y=%03d",mouse_x,mouse_y);
 

Trasher

Well-Known Member
12 Янв 2013
637
447
63
243532


Вернее про их хранение. Итак в jsfx есть функция отображения в секции графики системных/пользовательских шрифтов вин10 - - > gfx_setfont.
______________________________________

Набросал функцию(выглядит ужасно) для хранения шрифтов win10, тк в gfx_setfont максимальное возможное количество шрифтов ограничено 16 пользовательскими и одним риперовским шрифтом по умолчанию(в сумме 17 штук),пришлось разгруппировать(получилось 7 групп шрифтов) и прописать условие для параметра flags.
Из особенностей языка eel2(для множественного присваивания значений в блоке результата выражения ветвления, необходимо реализовать через выражение присваивания какой-нибудь переменной, иначе возможно получить ub результат. В итоге при реализации функционала было задействовано две строки(одна для хранения, вторая для принта в секцию графики) . В функцию получилось запихать(7 групп * 16 =112 + 1 имя шрифта по умолчанию). Можно было продолжить, но меня задолбало вручную набирать текст.) Шрифты забивал какие были в коллекции шрифтов на моем компьютере(могут отсутствовать у Вас).
________________________________________
C:
desc:eel_windows_fonts

slider1:0<0,16,1{Gr00,Gr01,Gr02,Gr03,Gr04,Gr05,Gr06,Gr07,Gr08,Gr09,Gr10,Gr11,Gr12,Gr13,Gr14,Gr15,Gr16}>groupFont
slider2:0<0,16,1>fontPosition
slider3:0<0,8,1{withoutFlags, Italic, UnderLine, Italic+UnderLine, Bold, Italic+Bold, UnderLine+Bold, Italic+UnderLine+Bold}>Flags

@init
function win_fonts(idX, sizeFont, fontGroup, flags)
local(_flag _p _pos _len)
(
    // Регистрируем строчную переменную, куда положим текст
    STR_WIN_TEXT = 0;
    //-------------------------------------------------------------
    // Ложим текст в зарегистрированную переменную STR_WIN_TEXT,
    // длина текста в строке не более 64kB
    strcpy(STR_WIN_TEXT,                                 //_pos    _len  
                           "Default Reaper Bitmap font"  //0000-----026
                           //--------------------------------------------
                           "Academy Engraved LET"        //0026-----020      
                           "AdLib WGL 4BT"               //0046-----013
                           "AlphabetSoup Tilt BT"        //0059-----020
                           "Amazone BT"                  //0079-----010
                           "Archivo"                     //0089-----007
                           "Arial"                       //0096-----005
                           "Bahnschrift"                 //0101-----011
                           "BankGothic Md BT"            //0112-----016
                           "BernhardTango BT"            //0128-----016
                           "Blackletter686 BT"           //0144-----017
                           "Brandish"                    //0161-----008
                           "Broadway BT"                 //0169-----011
                           "BroadwayEngraved BT"         //0180-----019
                           "Brush455 BT"                 //0199-----011
                           "Calibri"                     //0210-----007
                           "Calligraph421 BT"            //0217-----016
                           ///-----------------------------------------
                           "Cambria"                     //0233-----007
                           "Cambria Math"                //0240-----012
                           "Candara"                     //0252-----007
                           "CandyBits BT"                //0259-----012
                           "Carmina Blk BT"              //0271-----014
                           "CaslonOpnface BT"            //0285-----016
                           "Cataneo BT"                  //0301-----010
                           "Century725 Blk BT"           //0311-----017
                           "Chianti XBd BT"              //0328-----014
                           "Comic Sans MS"               //0342-----013
                           "Consolas"                    //0355-----008
                           "Constantia"                  //0363-----010
                           "Cooper BlkOul BT"            //0373-----016
                           "Corbel"                      //0389-----006
                           "Courier New"                 //0395-----011
                           "Decorated035 BT"             //0406-----015
                           //------------------------------------------
                           "DomBold BT"                  //0421-----010
                           "Ebrima"                      //0431-----006
                           "Eyeballs BT"                 //0437-----011
                           "Folio Lt BT"                 //0448-----011
                           "FontAwesome"                 //0459-----011
                           "Fraktur BT"                  //0470-----010
                           "FrankGoth BT"                //0480-----012
                           "Franklin Gothic"             //0492-----015
                           "Freehand591 BT"              //0507-----014
                           "Futura LtCn BT"              //0521-----014
                           "Futura Md BT"                //0535-----012
                           "Futura XBlklt BT"            //0547-----016
                           "FuturaBlack WGL4 BT"         //0563-----019
                           "Gabriola"                    //0582-----008
                           "Gadugi"                      //0590-----006
                           "GENUINE"                     //0596-----007
                           //------------------------------------------
                           "Geometr212 Bk BT"            //0603-----016
                           "Georgia"                     //0619-----007
                           "Geotype TT"                  //0626-----010
                           "HandelGothic BT"             //0636-----015
                           "Highlight LET"               //0651-----013
                           "HolidayPi BT"                //0664-----012
                           "HoloLens MDL2 Assets"        //0676-----020
                           "Humanst521 XBd BT"           //0696-----017
                           "Impact"                      //0713-----006
                           "Incised901 Nd BT"            //0719-----016
                           "Incised901 Ndlt BT"          //0735-----018
                           "Ink Free"                    //0753-----008
                           "Javanese Text"               //0761-----013
                           "John Handy LET"              //0774-----014
                           "Jokerman LET"                //0788-----012
                           "Kaufmann BT"                 //0800-----011
                           //------------------------------------------
                           "La Bamba LET"                //0811-----012
                           "Leelawadee UI"               //0823-----013
                           "Lucida Console"              //0836-----014
                           "Lucida Sans Unicode"         //0850-----019
                           "Malgun Gothic"               //0869-----013
                           "Marlett"                     //0882-----007
                           "Martina"                     //0889-----007
                           "Material Icons"              //0896-----014
                           "Mekanik LET"                 //0910-----011
                           "Microsoft Himalaya"          //0921-----018
                           "Microsoft JhengHei"          //0939-----018
                           "Microsoft JhengHei UI"       //0957-----021
                           "Microsoft New Tai Lue"       //0978-----021
                           "Microsoft PhagsPa"           //0999-----017
                           "Microsoft Sans Serif"        //1016-----020
                           "Microsoft Tai Le"            //1036-----016
                           //------------------------------------------
                           "Microsoft YaHei"             //1052-----015
                           "Microsoft YaHei UI"          //1067-----018
                           "Microsoft Yi Baiti"          //1085-----018
                           "Milano LET"                  //1103-----010
                           "MingLiU_HKSCS-ExtB"          //1113-----018
                           "MingLiU-ExtB"                //1131-----012
                           "MisterEarl BT"               //1143-----013
                           "Mongolian Baiti"             //1156-----015
                           "MS Gothic"                   //1171-----009
                           "MS PGothic"                  //1180-----010
                           "MS UI Gothic"                //1190-----012
                           "MV Boli"                     //1202-----007
                           "Myanmar Text"                //1209-----012
                           "NewspaperPi BT"              //1221-----014
                           "Nirmala UI"                  //1235-----010
                           "Normande BT"                 //1245-----011
                           //------------------------------------------
                           "NSimSun"                     //1256-----007
                           "OCR-A BT"                    //1263-----008
                           "Odessa LET"                  //1271-----010
                           "OldDreadfulNo7 BT"           //1281-----017
                           "One Stroke Script LET"       //1298-----021
                           "Open Sans"                   //1319-----009
                           "Orange LET"                  //1328-----010
                           "Palatino Linotype"           //1338-----017
                           "Parisian BT"                 //1355-----011
                           "ParkAvenue BT"               //1366-----013
                           "PMingLiU-ExtB"               //1379-----013
                           "PosterBodoni WGL4 BT"        //1392-----020
                           "PrimaSans BT"                //1412-----012
                           "Pump LET"                    //1424-----008
                           "Quixley LET"                 //1432-----011
                           "Rage LET"                    //1443-----008
                           //--------------------------------------------
                           //Ruach LET
                         
           );
           //------------------------------------------------------------
           // Условие для флагов параметра[flags] функции gfx_setfont
           // Принцип: число в двоичной системе счисления
           // Т.е. макисмум три символа = 3заполненных бита = 7;
           // пустой символ        = 0; символ i = 0бит(2^0) = 1;
           // символ u = 1бит(2^1) = 2; символ b = 2бит(2^2) = 4;
           // Остальные значения символов-производные от заполнения
           // битов числа 7
           // 3='iu'-->(1['i']+2['u'])
           // 5='ib'-->(1['i']+4['b'])
           // 6='ub'-->(2['u']+4['b'])
           // 7='iub'->(1['i']+2['u']+4['b'])
           //------------------------------------------------------------
           // charVal 0=' '  (Empty BitField)               = decNum = 0;
           // charVal 1='i'  (zeroBit)                      = decNum = 1;
           // charVal 2='u'  (firstBit)                     = decNum = 2;
           // charVal 3='iu' (zeroBit+firstBit)             = decNum = 3;
           // charVal 4='b'  (secondBit)                    = decNum = 4;
           // charVal 5='ib' (zeroBit+secondBit)            = decNum = 5;
           // charVal 6='ub' (firstBit+secondBit)           = decNum = 6;
           // charVal 7='iub'(zeroBit+firstBit+seconddBit)  = decNum = 7;
           flags==00?_flag=' ' ; flags==01?_flag='i';
           flags==02?_flag='u' ; flags==03?_flag='iu';
           flags==04?_flag='b' ; flags==05?_flag='ib';
           flags==06?_flag='ub'; flags==07?_flag='iub';
           //------------------------------------------------------------
           // Группы хранимых шрифтов(Одна группа = 17 шрифтов
           // [ограничение функции gfx_setfont],0 позиция любой группы
           // всегда шрифт по умолчанияю (Default Reaper Bitmap font)
           //Group_0-----------------------------------------------------
           // Условия для выполнения параметров среза для группы 0
           // Множественный выбор: присваивание двух значений-
           //  [_pos-позиция начала среза в тексте]
           //  [_len-длина среза в символах]
           // через выражение присваивания переменной _p
           (idX==00)&&(fontGroup==0)?_p=(_pos=0000; _len=026;);
           (idX==01)&&(fontGroup==0)?_p=(_pos=0026; _len=020;);
           (idX==02)&&(fontGroup==0)?_p=(_pos=0046; _len=013;);
           (idX==03)&&(fontGroup==0)?_p=(_pos=0059; _len=020;);
           (idX==04)&&(fontGroup==0)?_p=(_pos=0079; _len=010;);
           (idX==05)&&(fontGroup==0)?_p=(_pos=0089; _len=007;);
           (idX==06)&&(fontGroup==0)?_p=(_pos=0096; _len=005;);
           (idX==07)&&(fontGroup==0)?_p=(_pos=0101; _len=011;);
           (idX==08)&&(fontGroup==0)?_p=(_pos=0112; _len=016;);
           (idX==09)&&(fontGroup==0)?_p=(_pos=0128; _len=016;);
           (idX==10)&&(fontGroup==0)?_p=(_pos=0144; _len=017;);
           (idX==11)&&(fontGroup==0)?_p=(_pos=0161; _len=008;);
           (idX==12)&&(fontGroup==0)?_p=(_pos=0169; _len=011;);
           (idX==13)&&(fontGroup==0)?_p=(_pos=0180; _len=019;);
           (idX==14)&&(fontGroup==0)?_p=(_pos=0199; _len=011;);
           (idX==15)&&(fontGroup==0)?_p=(_pos=0210; _len=007;);
           (idX==16)&&(fontGroup==0)?_p=(_pos=0217; _len=016;);
           //Group_1---------------------------------------------------
           // Условия для выполнения параметров среза для группы 1
           (idX==00)&&(fontGroup==1)?_p=(_pos=0000; _len=026;);
           (idX==01)&&(fontGroup==1)?_p=(_pos=0233; _len=007;);
           (idX==02)&&(fontGroup==1)?_p=(_pos=0240; _len=012;);          
           (idX==03)&&(fontGroup==1)?_p=(_pos=0252; _len=007;);
           (idX==04)&&(fontGroup==1)?_p=(_pos=0259; _len=012;);
           (idX==05)&&(fontGroup==1)?_p=(_pos=0271; _len=014;);
           (idX==06)&&(fontGroup==1)?_p=(_pos=0285; _len=016;);
           (idX==07)&&(fontGroup==1)?_p=(_pos=0301; _len=010;);
           (idX==08)&&(fontGroup==1)?_p=(_pos=0311; _len=017;);
           (idX==09)&&(fontGroup==1)?_p=(_pos=0328; _len=014;);
           (idX==10)&&(fontGroup==1)?_p=(_pos=0342; _len=013;);
           (idX==11)&&(fontGroup==1)?_p=(_pos=0355; _len=008;);
           (idX==12)&&(fontGroup==1)?_p=(_pos=0363; _len=010;);
           (idX==13)&&(fontGroup==1)?_p=(_pos=0373; _len=016;);
           (idX==14)&&(fontGroup==1)?_p=(_pos=0389; _len=006;);
           (idX==15)&&(fontGroup==1)?_p=(_pos=0395; _len=011;);
           (idX==16)&&(fontGroup==1)?_p=(_pos=0406; _len=015;);
           //Group_2---------------------------------------------------
           // Условия для выполнения параметров среза для группы 2
           (idX==00)&&(fontGroup==2)?_p=(_pos=0000; _len=026;);
           (idX==01)&&(fontGroup==2)?_p=(_pos=0421; _len=010;);
           (idX==02)&&(fontGroup==2)?_p=(_pos=0431; _len=006;);
           (idX==03)&&(fontGroup==2)?_p=(_pos=0437; _len=011;);
           (idX==04)&&(fontGroup==2)?_p=(_pos=0448; _len=011;);
           (idX==05)&&(fontGroup==2)?_p=(_pos=0459; _len=011;);
           (idX==06)&&(fontGroup==2)?_p=(_pos=0470; _len=010;);
           (idX==07)&&(fontGroup==2)?_p=(_pos=0480; _len=012;);
           (idX==08)&&(fontGroup==2)?_p=(_pos=0492; _len=015;);
           (idX==09)&&(fontGroup==2)?_p=(_pos=0507; _len=014;);
           (idX==10)&&(fontGroup==2)?_p=(_pos=0521; _len=014;);
           (idX==11)&&(fontGroup==2)?_p=(_pos=0535; _len=012;);
           (idX==12)&&(fontGroup==2)?_p=(_pos=0547; _len=016;);
           (idX==13)&&(fontGroup==2)?_p=(_pos=0563; _len=019;);
           (idX==14)&&(fontGroup==2)?_p=(_pos=0582; _len=008;);
           (idX==15)&&(fontGroup==2)?_p=(_pos=0590; _len=006;);
           (idX==16)&&(fontGroup==2)?_p=(_pos=0596; _len=007;);
           //Group_3---------------------------------------------------
           // Условия для выполнения параметров среза для группы 3
           (idX==00)&&(fontGroup==3)?_p=(_pos=0000; _len=026;);
           (idX==01)&&(fontGroup==3)?_p=(_pos=0603; _len=016;);
           (idX==02)&&(fontGroup==3)?_p=(_pos=0619; _len=007;);
           (idX==03)&&(fontGroup==3)?_p=(_pos=0626; _len=010;);
           (idX==04)&&(fontGroup==3)?_p=(_pos=0636; _len=015;);
           (idX==05)&&(fontGroup==3)?_p=(_pos=0651; _len=013;);
           (idX==06)&&(fontGroup==3)?_p=(_pos=0664; _len=012;);
           (idX==07)&&(fontGroup==3)?_p=(_pos=0676; _len=020;);
           (idX==08)&&(fontGroup==3)?_p=(_pos=0696; _len=017;);
           (idX==09)&&(fontGroup==3)?_p=(_pos=0713; _len=006;);
           (idX==10)&&(fontGroup==3)?_p=(_pos=0719; _len=016;);
           (idX==11)&&(fontGroup==3)?_p=(_pos=0735; _len=018;);
           (idX==12)&&(fontGroup==3)?_p=(_pos=0753; _len=008;);
           (idX==13)&&(fontGroup==3)?_p=(_pos=0761; _len=013;);
           (idX==14)&&(fontGroup==3)?_p=(_pos=0774; _len=014;);
           (idX==15)&&(fontGroup==3)?_p=(_pos=0788; _len=012;);
           (idX==16)&&(fontGroup==3)?_p=(_pos=0800; _len=011;);
           //Group_4---------------------------------------------------
           // Условия для выполнения параметров среза для группы 4
           (idX==00)&&(fontGroup==4)?_p=(_pos=0000; _len=026;);
           (idX==01)&&(fontGroup==4)?_p=(_pos=0811; _len=012;);
           (idX==02)&&(fontGroup==4)?_p=(_pos=0823; _len=013;);
           (idX==03)&&(fontGroup==4)?_p=(_pos=0836; _len=014;);
           (idX==04)&&(fontGroup==4)?_p=(_pos=0850; _len=019;);
           (idX==05)&&(fontGroup==4)?_p=(_pos=0869; _len=013;);
           (idX==06)&&(fontGroup==4)?_p=(_pos=0882; _len=007;);
           (idX==07)&&(fontGroup==4)?_p=(_pos=0889; _len=007;);
           (idX==08)&&(fontGroup==4)?_p=(_pos=0896; _len=014;);
           (idX==09)&&(fontGroup==4)?_p=(_pos=0910; _len=011;);
           (idX==10)&&(fontGroup==4)?_p=(_pos=0921; _len=018;);
           (idX==11)&&(fontGroup==4)?_p=(_pos=0939; _len=018;);
           (idX==12)&&(fontGroup==4)?_p=(_pos=0957; _len=021;);
           (idX==13)&&(fontGroup==4)?_p=(_pos=0978; _len=021;);
           (idX==14)&&(fontGroup==4)?_p=(_pos=0999; _len=017;);
           (idX==15)&&(fontGroup==4)?_p=(_pos=1016; _len=020;);
           (idX==16)&&(fontGroup==4)?_p=(_pos=1036; _len=016;);
           //Group_5---------------------------------------------------
           // Условия для выполнения параметров среза для группы 5
           (idX==00)&&(fontGroup==5)?_p=(_pos=0000; _len=026;);
           (idX==01)&&(fontGroup==5)?_p=(_pos=1052; _len=015;);
           (idX==02)&&(fontGroup==5)?_p=(_pos=1067; _len=018;);
           (idX==03)&&(fontGroup==5)?_p=(_pos=1085; _len=018;);
           (idX==04)&&(fontGroup==5)?_p=(_pos=1103; _len=010;);
           (idX==05)&&(fontGroup==5)?_p=(_pos=1113; _len=018;);
           (idX==06)&&(fontGroup==5)?_p=(_pos=1131; _len=012;);
           (idX==07)&&(fontGroup==5)?_p=(_pos=1143; _len=013;);
           (idX==08)&&(fontGroup==5)?_p=(_pos=1156; _len=015;);
           (idX==09)&&(fontGroup==5)?_p=(_pos=1171; _len=009;);
           (idX==10)&&(fontGroup==5)?_p=(_pos=1180; _len=010;);
           (idX==11)&&(fontGroup==5)?_p=(_pos=1190; _len=012;);
           (idX==12)&&(fontGroup==5)?_p=(_pos=1202; _len=007;);
           (idX==13)&&(fontGroup==5)?_p=(_pos=1209; _len=012;);
           (idX==14)&&(fontGroup==5)?_p=(_pos=1221; _len=014;);
           (idX==15)&&(fontGroup==5)?_p=(_pos=1235; _len=010;);
           (idX==16)&&(fontGroup==5)?_p=(_pos=1245; _len=011;);
           //Group_6---------------------------------------------------
           // Условия для выполнения параметров среза для группы 6
           (idX==00)&&(fontGroup==6)?_p=(_pos=0000; _len=026;);
           (idX==01)&&(fontGroup==6)?_p=(_pos=1256; _len=007;);
           (idX==02)&&(fontGroup==6)?_p=(_pos=1263; _len=008;);
           (idX==03)&&(fontGroup==6)?_p=(_pos=1271; _len=010;);
           (idX==04)&&(fontGroup==6)?_p=(_pos=1281; _len=017;);
           (idX==05)&&(fontGroup==6)?_p=(_pos=1298; _len=021;);
           (idX==06)&&(fontGroup==6)?_p=(_pos=1319; _len=009;);
           (idX==07)&&(fontGroup==6)?_p=(_pos=1328; _len=010;);
           (idX==08)&&(fontGroup==6)?_p=(_pos=1338; _len=017;);
           (idX==09)&&(fontGroup==6)?_p=(_pos=1355; _len=011;);
           (idX==10)&&(fontGroup==6)?_p=(_pos=1366; _len=013;);
           (idX==11)&&(fontGroup==6)?_p=(_pos=1379; _len=013;);
           (idX==12)&&(fontGroup==6)?_p=(_pos=1392; _len=020;);
           (idX==13)&&(fontGroup==6)?_p=(_pos=1412; _len=012;);
           (idX==14)&&(fontGroup==6)?_p=(_pos=1424; _len=008;);
           (idX==15)&&(fontGroup==6)?_p=(_pos=1432; _len=011;);
           (idX==16)&&(fontGroup==6)?_p=(_pos=1443; _len=008;);
           //Group_7---------------------------------------------------
           // (Для визуального контроля в дебагвью на перебор
           //  длины строки)
           //  Длина текста <= 64000 ascii символов[asciiCharLen=1byte]
           //  в строчной переменной STR_WIN_TEXT
           //  переменная _strLen - количество символов
           //  в строчной переменной STR_WIN_TEXT
           _strLen = strlen(STR_WIN_TEXT);
           // Берем срез с текста(копирование в подстроку)
           // с заданными параметрами и ложим в
           // именованную строку #FontName(для принта в
           // секцию графики и визуального контроля правильности
           // имени шрифта в дебагвью)
           strcpy_substr(#FontName, STR_WIN_TEXT, _pos,     _len );
           // Результат среза ложим в параметр функции gfx_setfont
             gfx_setfont(idX,       #FontName, sizeFont, _flag);
);

@gfx 300 300

gfx_r=1;gfx_g=1;gfx_b=.7;gfx_a=1;gfx_x=10;gfx_y=50;
/////////////////////////
win_fonts(slider2, 90, slider1, slider3);
/////////////////////////
gfx_printf(" Hello RMM site Users" /*" Привет Мир"*/);

gfx_r=1;gfx_g=1;gfx_b=1;gfx_a=.7;gfx_x=10;gfx_y=250;
gfx_setfont(01, "Arial", 20);
gfx_printf("fontName-%s",#FontName);
_______________________________________
243535
Ну и результат
243536
 
  • Like
Реакции: Antonio

Trasher

Well-Known Member
12 Янв 2013
637
447
63
Продолжу "монолог инфоцыганина")
Речь пойдёт о "маленькой полезности".
А именно о строке-заголовке <desc:>
243571
________________________________________
<desc:> скорее(при беглом взгляде) всего является строкой описателем названия плагина(description/descriptor).
________________________________________
При более внимательном рассмотрении, <desc:> также является меткой для интерпретатора(могу ошибиться в терминологии), для определённой обработки некоторой информации следуемой после <desc:>. Приблизительно обработка идёт следующим образом:
-После двоеточия(которое идет после ключевого слова desc) игнорируются пробелы и тп.
-Последующие символы интерпретируются в строку(игнорятся, а скорее всего преобразовываются в строчные(литералы или что-то подобное) , чтобы избежать головняков со специальными символами)
-Размер строки равен строго одной линии текста в файле исходного кода скрипта.
-Также в IDE/JSDE в Рипере под это дело зарезервирована именованная строчная переменная <#dbg_desc>
243572
________________________________________
Также переменную <#dbg_desc> возможно передать как параметр для печати/принта в секцию графики интерфейса плагина, ну или куда-нибудь ещё, в зависимости от контекста разработки и фантазии разработчега.)
243573
________________________________________
Ну и как всегда результат проделанных манипуляций.
243574
 
Последнее редактирование:

Сейчас онлайн (Пользователей: 0, Гостей: 1)