/painter2

Paints images based on formulas (just like fractals). Jun-Jul 1997 (uncertain).

Primary LanguagePascal

                             Работа

Работайте как хотите. Но:
Если нажать правой кнопкой на картинке, то появится контексное меню.
Кнопкой Ins можно копировать картинку в буфер обмена,
а кнопкой F2 записать в 24bit BMP-файл.
Как закрыть окно "О программе", думаю, догадаетесь (там два способа).

                       Подключение модулей

  Для подключения модуля необходимо скопировать его в каталог с
исполняемым файлом и запустить этот исполняемый файл.

                      Собственные процедуры

  Собственные процедуры должны задаваться в DLL'ке, в которой
есть функция Painter. Эта функция возвращает переменную
типа Variant, содержащую массив строк с названиями функций.
Переменная Name должна содержать название библиотеки,
которое показывется в дереве функций (по умолчанию это
имя файла библиотеки).
  Каждая регистрируемая функция должна соотвутствовать указанному
шаблону и удовлетворять следующим условиям: 
  - Возвращаемый результат - это название функции в дереве функций.
  - При D<0 в R возвращается способ симметрии,
          а в G возвращается способ обработки переполнения.
  - При D>=0 в R,G,B возвращаются мощности цветов (красного, зеленого
          и синего) в интервале [0..1]. При выходе за промежуток
          [0..1] значения цветов зависят от способа обработки переполнения.
          Если он равен cutFrac (0), то берется дробная часть,
          а если равен cutNear (1), то значение просто "поджиматеся в
          интервал [0..1] в зависимости от того, в какую сторону
          произошло переполнение.
Замечание1: Все функции, разумеется, должны быть экспортируемыми.
Замечание2: X,Y находятся в интервале [-1..+1] ([0..1] в зависимости от
            симметрии).
            D находится в интервале [0..1]
            A находится в интервале [-pi/2..+pi/2] (такова функция ArcTan)

Пример смотрите в каталоге Example.

   const
     symZero=0; symHorz=1; symVert=2; symNone=3;
     cutFrac=0; cutNear=1;

   function Painter(var Name:ShortString):variant;
   function f1(x,y,a,d:Extended; var r,g,b:Extended):ShortString;