История изменений
Исправление EXL, (текущая версия) :
Эх, всё-таки классная эта штука была в своё время, всегда с большой теплотой её вспоминаю! :-)
https://baat.z-lab.me/~exl_lab/screens/NeXTSTEP_Display_PostScript_Rocks1.png
Однажды мне в приложении под NeXTSTEP требовалось рисовать прямоугольники со скруглёными краями и если под древними иксами это делается коряво и с кучей излишнего кода, то в PostScript у меня для этого используется такая вот небольшая функция на кубических кривых Безье:
defineps PSWdrawRectRounded(float r, g, b, left, right, top, bottom, rad)
/off 1 0.551915024494 sub rad mul def
r g b setrgbcolor
1.0 setalpha
left rad add top moveto
right rad sub top lineto
right off sub top right top off add right top rad add curveto
right bottom rad sub lineto
right bottom off sub right off sub bottom right rad sub bottom curveto
left rad add bottom lineto
left off add bottom left bottom off sub left bottom rad sub curveto
left top rad add lineto
left top off add left off add top left rad add top curveto
fill
endps
Она без проблем встраивалась в контекст программы на C (или на Objective-C) и вызывалась оттуда.
Исходная версия EXL, :
Эх, всё-таки классная эта штука была в своё время, всегда с большой теплотой её вспоминаю! :-)
https://baat.z-lab.me/~exl_lab/screens/NeXTSTEP_Display_PostScript_Rocks.png
Однажды мне в приложении под NeXTSTEP требовалось рисовать прямоугольники со скруглёными краями и если под древними иксами это делается коряво и с кучей излишнего кода, то в PostScript у меня для этого используется такая вот небольшая функция на кубических кривых Безье:
defineps PSWdrawRectRounded(float r, g, b, left, right, top, bottom, rad)
/off 1 0.551915024494 sub rad mul def
r g b setrgbcolor
1.0 setalpha
left rad add top moveto
right rad sub top lineto
right off sub top right top off add right top rad add curveto
right bottom rad sub lineto
right bottom off sub right off sub bottom right rad sub bottom curveto
left rad add bottom lineto
left off add bottom left bottom off sub left bottom rad sub curveto
left top rad add lineto
left top off add left off add top left rad add top curveto
fill
endps