LINUX.ORG.RU

История изменений

Исправление 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