Object name:Object0
Style:      X=290 Y=-50 A=1800 S=1 Color=clBlack BGColor=$008F8F8F Width=1 W=70 H=50 Source="file://1\main_screen.PNG"
DisplayList lines:4
SetColor clBlack
SetBGColor $008F8F8F
SetWidth 1
Bmp 290,-50,360,0,file://1\main_screen.PNG
Callout name:Callout0
Style:X=0 Y=210 W=420 H=180 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=default FontColor=clDefault FontHeight=3.69951 BIUS= Transparent=No BindMode=None
Text:"вводный ролик","-для чего предназначен","- что может",,,,"Изначально Pencil задумывался, как средство для визуального редактирования семантических сетей.","В процессе реализации оказалось что с его помощью можно редактировать карты знаний, планы, схемы, диаграммы","Использоать в качестве простого векторного графического редактора или аналога Visio. ",,"Позднее добавился функционал, позволяющий применять pencil для отображения данных мониторинга  (dashboard)","и использовать в качестве пульта управления АСОДУ (автоматизированной системы оперативно-диспетчерсого управления).",,,"Pencil - это векторный редактор, который может использоваться для построения планов, схем, графов, карт знаний, диаграмм итд.","Встроенный интерпретатор позволяет работать не только в режиме ручного редактирования, но и по командам внешней программы.","Имеется возможность агрегировать информацию для отображения из сторонних источников и возможность привязки действий","к элементам документа, что позволяет применять программу в качестве дашборда мониторинга или пульта управления. ",,,"Основным элементом сцены являются ОБЪЕКТы.","Объекты могут соединяться между собой СОЕДИНЕНИЯМИ.","К объектам могут привязываться одна и несколько ВЫНОСОК с подписями. ","Выноски могут изображаться и сами по себе, без привязки к объектам.","Соединений между выносками не бывает - соединяются только объекты.","Соединения бывают двух видов:","- подключаются к объекту, как к целому","- подключаются к порту объекта","К одному порту может подключаться только одно соединение.","""Внепортовых"" соедиений к одному объекту может быть более одного.","Соединения могут быть с изломами и собственными подписями.","Технически, соединения состоят из двух или более портов - начального, конечного и промежуточных,"," которые могут обозначать точки изломов или текстовых подписей",,"Четвертый вид элементов сцены - КРИВЫЕ - можно рассматривать, как недосформированный объект.",,"Объекты, выноски и соединения могут объединяться в группы.","Для каждой группы регулируются атрибуты видимости, взаимодействия с мышью и ""склеенности""."
Callout name:Callout1
Style:X=0 Y=0 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=10.3383 BIUS= Transparent=No BindMode=None
Text:"1 - интерфейс",,
Callout name:Callout2
Style:X=-200 Y=250 W=180 H=40 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=default FontColor=clDefault FontHeight=26.56005 BIUS= Transparent=No BindMode=None
Source:exec://free
Text:,"2 - создание простейшего документа в режиме интеллект-карт:","     объекты, связи, выноски"
Callout name:Callout3
Style:X=-460 Y=-120 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=default FontColor=clDefault FontHeight=10.269886 BIUS= Transparent=No BindMode=None
Text:"руководство программиста",,,"внутренннняя кухня","в памяти каждый элемент сцены имеет стиль, несколько атрибутов, дисплейный список","объекты и соединения могут также иметь список портов",,,"на диске (или в кармане) каждому элементу соответствует участок текстового файла","для объектов и кривых дисплейный список сохраняется","для выносок и соединений дисплейный список не хранится, поскольку он полностью генерируется на основе информации атрибутов и списка портов","для объектов типа ""прямоугольник"" дисплейный список также может генерироваться автоматически",,,интерпретатор,"в командном режиме создание элемента сцены должно осуществляться с помощью однострочной команды,","поэтому в дополнение к атрибутам появился СТИЛЬ - текстовая строка, содержащая все атрибуты и которая ","может быть передана, как часть команды",,,"2д команды и акселерация",,,"рендеринг и буферизация, оптимизирование отрисовки",,,кэши
Callout name:Callout4
Style:X=-430 Y=-490 W=260 H=190 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=12.535345 BIUS= Transparent=No BindMode=None
Text:"руководство администратора",,установка,"работа с флешки",,конфиги,"настройка размещения библиотеки",,"совместная работа","с другими приложениями","отдаца сцен через вебсервер"
Callout name:Callout5
Style:X=0 Y=-520 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=10.91265 BIUS= Transparent=No BindMode=None
Text:,"3 - рисование в режиме визио"
Callout name:Callout6
Style:X=0 Y=-830 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=11.215835 BIUS= Transparent=No BindMode=None
Text:,"4 - рисование подробно - кривые, шаблоны, программирование рисования","    конвертация в объекты"
Callout name:Callout7
Style:X=0 Y=-1120 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=default FontColor=clDefault FontHeight=10.576657 BIUS= Transparent=No BindMode=None
Text:"5 - группы - слои",,"В группу могут входить объекты, связи и выноски. Кривые не могут входить в группу."
Callout name:Callout8
Style:X=0 Y=-1400 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=4.547154 BIUS= Transparent=No BindMode=None
Text:"6 - программирование действий, интерпретатор"
Callout name:Callout9
Style:X=0 Y=-1680 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=10.61004 BIUS= Transparent=No BindMode=None
Text:"7 - конверторы",
Callout name:Callout10
Style:X=0 Y=-1950 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=9.85218 BIUS= Transparent=No BindMode=None
Text:,"8 - авторазмещение"
Callout name:Callout11
Style:X=0 Y=-2220 W=260 H=240 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=10 BIUS= Transparent=No BindMode=None
Text:"1 - интерфейс","2 - создание простейшего документа в режиме интеллект-карт:","     объекты, связи, выноски","3 - рисование в режиме визио","4 - рисование подробно - кривые, шаблоны, программирование рисования","    конвертация в объекты","5 - группы - слои","6 - программирование действий, интерпретатор","7 - конверторы","8 - авторазмещение",,,"внутренннняя кухня",интерпретатор,"2д команды и акселерация","рендеринг и буферизация, оптимизирование отрисовки",кэши
Callout name:Callout12
Style:X=-654 Y=-72 W=130 H=318 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=default FontColor=clDefault FontHeight=0.610191 BIUS= Transparent=No BindMode=None
Text:Интерпретатор,,,self::CAD_UpdateDraw,,self::CAD_UpdateCoordBase,self::CAD_UpdateScale,self::CAD_PeekViewPosition,self::CAD_UpdateAll,self::CAD_Scene2GUI,self::CAD_GUI2Scene,self::CAD_LoadSceneFile:<FileName>,self::CAD_SaveSceneFile:<FileName>,self::CAD_ReloadSource:<callout>,self::CAD_Teleport:<location>,self::CAD_Hover:<Steps>:<location>,self::CAD_Fly:<Steps>:<location>,"self::CAD_CreateObject:Name=<name> ...",,"Создает объект с указанным именем.","Если такой уже есть - ничего не делает.","Если имя не указано - присваивает автоматически.","Остальные параметры стиля объекта, которые возможно передать:","X по умолчанию - 0","Y по умолчанию - 0","A по умолчанию - 0","Специальные значения","  720 - прямоугольник","  720+360 - скругленный прямоугольник","  720+2*360 - эллипс","  720+3*360 - растровый контейнер (bmp)","  720+4*360 - векторный контейнер (subpicture)",W,"H   ",X2,Y2,"S по умолчанию - 1","Color по умолчанию - clBlack","BGColor по умолчанию - clGray","Width по умолчанию - 1","Value по умолчанию - 0",Source,Template,,self::CAD_CreateObjectPort:<ObjName>:<Style>,self::CAD_ArrangePortsByRect:<ObjName>:<Cols>:<Rows>,self::CAD_ArrangePortsByRectAll:<Cols>:<Rows>,self::CAD_ArrangePortsByLines:<ObjName>:<Ix>:<Iy>:<Ox>:<Oy>,"self::CAD_CreateCallout:Name=<name> ...",X,Y,W,H,Content,Color,BGColor,Width,FontName,FontColor,FontHeight,BIUS,Transparent,BindMode,RelatedObj,,,,"self::CAD_CreateConnection:StartObj= StartPort= EndObj= EndPort=","Создает межпортовое соединение с указанным именем между указанными объектами.","Если такое уже есть - ничего не делает.","Если начального или конечного объекта с указанным именем нет - ничего не делает.","Если имя не указано - присваивает автоматически.","Если имя начального или конечного портов объектов не указаны - создает автоматически.","Остальные параметры стиля объекта, которые возможно передать:","AutoText - текстовые подписи над соединением. в случае наличия пробелов - заключается в кавычки","                  многострочная подпись создает несколько текстовых узлов подряд","                  строки заключаются в апострофы и разделяютя запятыми","                  пример: AutoText=""'1','2 - 2','3'""","Color по умолчанию - clBlack","BGColor по умолчанию - clNone","Width по умолчанию - 1","StartStyle по умолчанию - пусто. возможные варианты - box,circle,cross,plus и arrow","EndStyle по умолчанию - пусто. возможные варианты - box,circle,cross,plus и arrow",Value,"пример self::CAD_CreateConnection:StartObj=Object0 EndObj=object1 AutoText=""'1','2 - 2','3'""",,,"self::CAD_CreateNPConnection:StartObj= EndObj=",,,"self::CAD_SetSource:<Item Name>:Src","Для объектов и выносок устанавливает значение атрибута Source, обновляет дисплейный список и перерисовывет элемент.","Получение информации из источника не выполняется.",,self::CAD_SetText:<Name>:Text,"Только для выносок. Устанавливает текст выноски, обновляет дисплейный список и перериовывет выноску.",,"self::CAD_GetAttr:<Item Name>:<Attr name>","Извлекает атрибут с указанным именем из стиля объекта, выноски или соединения.",,"self::CAD_SetAttr:<Item Name>:<Attr name>:<Attr Value>","Устанавливает атрибут с указанным именем в стиле объекта, выноски или соединения, и обновляет дисплейный список элемента.",,"self::CAD_ModAttr:<Item Name>:<Attr name>:<Attr delta>","Для объектов, выносок и соединений извлекает из стиля элемента указанный атрибут и изменяет его на величину Delta.","После чего  обновляет дисплейный список.",,"self::CAD_FixItem:<Item Name>","Для объектов - выполняет операцию перемещения объекта в его собственные координаты. При этом сдвига объекта не происходит, но пересчитываются","координаты опорных точек подключенных соединений и обновляются дисплейные списки.","Для выносок и соединений пока не делает ничего, хотя вероятно должно.",,self::CAD_FixAll,"self::CAD_Select:<Item Name>","self::CAD_UnSelect:<Item Name>",self::CAD_UnSelectAll,self::CAD_Copy,self::CAD_Paste,self::CAD_DeleteSelection,"self::CAD_DeleteItem:<Item Name>",self::CAD_MoveTo:<x>:<y>,"self::CAD_CreateGroup:<Group Name>","self::CAD_DeleteGroup:<Group Name>","Удаляет группу. Члены группы -остаются, но перестают быть её членами.",,"self::CAD_EraseGroup:<Group Name>","Удаляет группу вместе со всем содержимым.",,self::CAD_AddToGroup:<group>:<item>,self::CAD_DelFromGroup:<group>:<item>
Callout name:Callout13
Style:X=-610 Y=-390 W=130 H=210 Content=Text Color=clBlack BGColor=clNone Width=1 FontName=Tahoma FontColor=clDefault FontHeight=1.87866 BIUS= Transparent=No BindMode=None
Text:"2д-команды и акселерация",,,,,"вывод изображения осуществляется с помощью дисплейных списков, ","т.е. команд управления режимами отрисовки и выводом графических примитивов",,,"при этом в таких примитивах, как линия, прямоугольник итд в качестве координат используются мировые координаты ",,"объект TDrawer связан с полотном, на котором производится рисование ","имеет параметры отображаемой области, масштаб, поворот и для преобразования мировых координат в экранные ","и является по сути интерпретатором команд дисплейного списка","список поддерживаемых команд (реализованы не все!)",,"01  Set      var=value","02  Unset    var","04  SetWidth       x","03  SetColor       n","05  SetBGColor     n","06  SetFont        font,size,color,bius","19  SetScaledFont  font,height,scale,color,bius","10  MoveTo         x,y","09  LineTo         x,y","11  Rect           x1,y1,x2,y2","12  RoundRect      x1,y1,x2,y2","08  Ellipse        x1,y1,x2,y2","13  Circle         x,y,r","14  TextOut        x,y,text","15  Bmp            x1,y1,x2,y2,cachename","16  SubPicture     x,y,x2,y2,filename","17  SetTextStyle   opaque","18  SetPenStyle    psDot","20  UnScaled       box1,pixelsize","21  TextRect       x1,y1,x2,y2,text","07  floodfill      x,y,color            ",,,,"При многократном исполнении дисплейного списка (например при навигации по сцене, т.е. скроллинге и смене масштаба)","каждый раз будет анализироваться текстовая строка и выполняться преобразование координат из текстового формата в вещественный","Чтобы сэкономить вычислительные ресурсы - интерпретатору команд передаётся не только текстовое представление команды, но и ","""акселератор"" - структура данных, несущая координаты уже в вещественной форме и код команды вместо её текстового имени для ускорения сравнения","Команды, содержащие текстовые атрибуты наподобие имени файла или шрифта будут парситься в любом случае",,"Пример использования акселератора для многократно отрисовываемого участка (например объект на сцене)",,"  NonAccCommand:='SetColor '+Connection.Color;","  AccObject:=TAccObject.Create;","  AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","  Connection.DisplayList.AddObject(NonAccCommand,AccObject);",,,"Если какой-то объект должен быть нарисован всего один раз, например с целью подсветки выделения"," или рисования ""ручек"" вокруг объекта или необходимо выполнить команду, которая будет парситься в любом случае,"," и организовывать ускорение бессмысленно, то можно воспользоваться ""нулевым акселератором""",," ZeroAcc:  TAcceleratedCommand=(0,0,0,0,0);"," Drawer.ExecCommand('MoveTo '+FloatToStr(Curl.Shell.X1)+','+FloatToStr(Curl.Shell.Y1),ZeroAcc);",,"По сути акселертор является кешем распарсенной строки.","К сожалению кешировать результат преобразования мировых координат в экранные практически бесполезно, т.к. при каждом ","перемещении изменении масштаба отображения и начала координат матрица преобразования обновляется и такой кеш мгновенно устаревает.",,"Если необходимо перерисовать сцену не вследствие её модификации, а по внешней причине (окно заслонили другим окном) - ","то вызывается не полный рендеринг, а вывод растрового буфера. ",,"Кеширование экранных координат может пригодиться при полной перерисовке сцены при её частичном изменении сцены без смены"," позиционирования (копирование множества объектов, автоматической трассировке соединений), но только если эффективно","решить вопрос инвалидации кеша для команд, принадлежащих модифицируемым дисплейным спискам.",,,"SubPicture - для векторных контейнеров","                   берет из кеша (если там нет - то зазгружает) дисплейный список","                   расчитывает его прямоугольную оболочку, генерирует субдравер с матрицей, ","                   вписывающей расчитанную оболочку в заданный прямоугольник","                   и исполняет команды на нём"
View: Main
Lines:1
DrawObject Object0
