Структурирование редактора для карт изображений HTML - PullRequest
0 голосов
/ 09 декабря 2011

Резюме:

Я начинаю создавать инструмент для создания / редактирования карт изображений HTML или «горячих точек» на изображении, используя Delphi 7. Концепция приложения ясна и описана ниже. Я делал подобные проекты раньше, и я уверен, что смогу сделать это с любым подходом, который я выберу сам. Мне нужна помощь в поиске наилучшего подхода к хранению карт изображений в памяти.

Карта изображения может выглядеть так:

<MAP NAME="someImageMap">
  <AREA SHAPE="RECT" COORDS="10,28,54,51" HREF="some_page.htm">
  <AREA SHAPE="RECT" COORDS="54,28,111,50" HREF="some_other_page.htm">
  <AREA SHAPE="RECT" COORDS="111,28,199,49" HREF="another_example.htm">
</MAP>
<IMG border=0 src="../images/SomeImage.png" width=571 height =451 
  isMap useMap=#someImageMap />

AREA - это область в изображении с заданной формой и координатами для размещения невидимой гиперссылки. Их также называют Hotspots.

Фон

У меня есть огромный файл справки в формате HTML, который раньше был в HelpScribble программном обеспечении, но теперь мы используем WinCHM . В HelpScribble был инструмент под названием SHGEditor , который сделал все это для меня. Но WinCHM не имеет концепции карт изображений, и они во всем коде. Поэтому вместо того, чтобы пытаться найти инструмент для этого (что, конечно, является легким выходом из этого), я собираюсь сделать один из своих.

Изображение:

Beginnings of Editor

Проблема:

Путаница начинается с решения, где временно хранить первичные данные для Hotspot областей в памяти ...

  • прямо в коде HTML?
  • В TList?
  • В TStringList?
  • В массиве?
  • В TListView, где я отображаю список горячих точек?

Это основной вопрос, который я задаю.

У каждого, я думаю, есть свои взлеты и падения. Но все это отбрасывается, когда я думаю о редакторе HTML. Когда изменения выполняются на одной из трех вкладок редактирования («Изображение», «HTML» или «Список горячих точек»), необходимо каким-то образом синхронизировать эти изменения с двумя другими редакторами. Так что, если на изображении нарисована новая точка доступа, конечно, я могу без проблем перевести ее в HTML. Но как насчет использования чистого HTML-кода в качестве основного источника? Я собираюсь собирать / разбирать его в любом случае, но я беспокоюсь о производительности с этим. Но опять же, я могу создать хороший внутренний класс, чтобы все тоже было. Что считать основным?

Вывод:

Так что все сводится к тому, следует ли мне хранить первичные данные в источнике HTML, элементах представления списка, пользовательском классе списка (THotspots) или где?

Любые советы, хитрости или предложения приветствуются.

PS:

На самом деле я часто задаю длинные вопросы, извините!

1 Ответ

1 голос
/ 10 декабря 2011

По многим причинам я решил использовать необработанный HTML в качестве базы данных.Изначально я беспокоился о производительности, используя этот подход, но поскольку я нашел этот компонент HTML-парсера для Delphi, производительность не является проблемой.Этот синтаксический анализатор может проходить 50000 тегов за 1 секунду.

Основным преимуществом использования базового HTML является то, что я могу поддерживать данные HTML в их первоначальном формате.Любой другой метод, скорее всего, приведет к необходимости заново генерировать HTML-код каждый раз, когда он мне понадобится, что будет происходить в любом формате, в который его помещает мое приложение. Но так как у меня теперь есть этот синтаксический анализатор, легко изменить атрибуты тега, подмигнувглаз.

...