OberonCore https://forum.oberoncore.ru/ |
|
Пример работы с текстом... запускаем строчку по синусоиде! https://forum.oberoncore.ru/viewtopic.php?f=35&t=731 |
Страница 1 из 1 |
Автор: | mikle [ Пятница, 09 Ноябрь, 2007 14:46 ] |
Заголовок сообщения: | Пример работы с текстом... запускаем строчку по синусоиде! |
На лабе предложили мне сделать модуль, изменяющий атрибуты текста на жирный. А почему бы не разукрасить его, подумал я от нечего делать? Вот и получилось... правда не совсем то, что задавили ! Попробуйте сделать меню для вызова функции Color и видоизмените какой-нибудь большой документ (например справку о языке!). Код: MODULE MyColorer;
IMPORT TextViews,TextModels,StdLog,Fonts,Math,Ports; PROCEDURE Ord(x,d:INTEGER):REAL; BEGIN RETURN ((Math.Sin(2*Math.Pi()/d*(x MOD d)))+1)/2; END Ord; PROCEDURE Round(x:REAL;n,d:INTEGER):INTEGER; BEGIN RETURN (SHORT(ENTIER(x*Ord(n,d)))); END Round; PROCEDURE Color*; VAR view:TextViews.View; model,newmodel:TextModels.Model; writer:TextModels.Writer; reader:TextModels.Reader; i:INTEGER; attr:TextModels.Attributes; BEGIN view:=TextViews.Focus(); IF view#NIL THEN model:=view.ThisModel(); NEW(attr); attr.InitFromProp(model.Prop(0,0)); attr:=TextModels.NewWeight(attr, Fonts.bold); FOR i:=0 TO view.ThisModel().Length()-1 DO attr:=TextModels.NewSize(attr,100000+Round(100000,i,20)); attr:=TextModels.NewColor(attr,Ports.RGBColor(100+Round(155,i,30),Round(150,i,1000),Round(250,i,100))); attr:=TextModels.NewOffset(attr,Round(250000,i+30,40)); model.SetAttr(i,i+1, attr); END; ELSE StdLog.String('No active text!'); END; END Color; END MyColorer. |
Автор: | batyrmastyr [ Пятница, 09 Ноябрь, 2007 16:37 ] |
Заголовок сообщения: | Re: Пример работы с текстом... запускаем строчку по синусоиде! |
Теперь есть чем придавить любителей подсветки и интелисенсов |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |