Rev 447 | Blame | Compare with Previous | Last modification | View Log | Download
все данные добавляются в DOM и viewer-DOM через единую функцию "заказать блок памяти" (с прицелом на будущую возможность модификации DOM на лету, при этом надо бы обновлять viewer-DOM не целиком!)
viewer-DOM нужен для отображения кусков абзаца как независимых строк
но ссылки внутри этих независимых строк общие (чтобы можно было подсвечивать вместе)
ссылки ведут на DOM, а DOM и так должен знать все адреса ссылок во viewer-DOM для их будущего обновления (их может быть сколько угодно)
для этого ссылка должна быть независимым куском абзаца? или ссылаться из DOM в середину строки???
посещённость ссылки обновляется в DOM
пока можно отлаживать без DOM и ссылок:
- картинки класть в кэш и искать в кэше по имени
- элементы брать через getelement, парсить через parseelement (он может рекурсивно вызывать getelement)
- тип закрывающего тэга не важен, считаем, что правильная вложенность? кроме <br> (не класть в стек) и </br> (игнорировать), т.е. текст парсим без захода в <br>? или всё-таки генерить несколько элементов текста? <pre>..</pre> может создать много элементов текста? или это просто текст с разрывами строк, заданной высоты? <img> тоже не закрывают!
Текст, разорванный ссылками - один элемент текста? А разорванный картинками? Бывает обтекание картинки элементом текста!!!
wporipweor wopeir pweirp wepri weipri pwierow<img src="go-button.gif">eiopriwoierpoiwir wopirp woeripwier pwier piwpirpwier pwir poweirpwierpowierp pwoeirpw eropwe irpoiw peroiwpoeripowi riwpr pwierpiwopirpowir pwirp weiopriwpeir wpr woeirpowirpw pripwirpiwerpiwoeri pwieropwiper
При этом картинка увеличивает высоту текущей видимой строки текста (картинка растёт от неё вверх, как большая буква)
адреса кусков одного абзаца должны быть списком (прошиты?)
чтобы избегать дублирования текста, надо отдельно хранить все слова текста, на них ссылаться в DOM и в viewer-DOM??? или это будет проигрыш (добавить к каждому слову прошивку по двум спискам)
а вот картинки можно хранить отдельно - или в viewer-DOM они будут пересчитаны под масштаб? (допустим, смена масштаба не будет менять DOM, только viewer-DOM)
блок viewer-DOM должен иметь заголовок, нужный вьюверу
блоки viewer-DOM должны быть отсортированы, как удобно вьюверу:
а) сверху вниз (через цепочку указателей?)
б) несколько списков сверху вниз (без цепочки указателей?)
как сортировать?
если уже есть несколько списков сверху вниз, то можно слияние
но как получить несколько списков сверху вниз от начала и до конца? в DOM только граф!
как быстро найти все блоки viewer-DOM, попадающие в заданный диапазон Y хоть частично? линии и картинки могут быть в принципе любой высоты!!!
хранить список строк, в каждой строке указатели на все попадающие элементы? строк может быть 10000!
если это не список, а таблица строк, то блоки viewer-DOM можно не сортировать
как обновлять поля ввода при вводе текста? размер полей не меняется? но фрагменты текста появляются и исчезают в DOM и viewer-DOM!
относительный y не нужен, раз размер полей не меняется?
y=24 бит? 16 бит = 8192 строки
заголовок viewer-DOM:
y
x (16 бит)
адрес следующего блока того же абзаца
адрес следующего блока по Y
тип (текст/ссылка/гор.линия/верт.линия)
[цвет фона?]
цвет тона
[размер данных?]
[для линии тип, толщина, длина]
[для ссылки адрес ссылки в DOM]
[для текста и ссылки шрифт, размер(пересчитанный), толщина, текст]
заголовок viewer-DOM картинок (через него обновлять фазы GIF периодически, пока нет скролла):
y
x (16 бит)
адрес следующего блока по Y
ширина
высота
таблица таймингов и адресов фаз
или неанимированные картинки класть в viewer-DOM?
как скроллить?
а) прямо на экране pop...push
ld sp
[pop af]
pop bc
pop de
pop hl
exx
pop bc
pop de
pop hl
ld sp
push hl
push de
push bc
exx
push hl
push de
push bc
[push af]
:175/14=12.5[164/12=13.67]
то есть надо два прохода, один из которых дополнен pop:ld (),hl (13t/b, но в турбо соотношение может быть в пользу pop:push)
итого на строку слоя: 175+175+156 = 506/40 = 12.65t/b
итого на экран 23x8x320 (без одной строки скролла и без панели статуса) = 372416
можно не по строкам, а весь экран как один блок, будет чуть-чуть быстрее, но картинка развалится, если не копировать между экранами (чередовать)
надо защиту от прерывания
б) хранить текущую картинку в ld:push - тогда получается 8 слоёв, что ещё хуже, чем 4, а обновление фаз GIF будет медленнее (т.к. вывод в буфер, а оттуда в экран)
в) выводить картинку из линейного формата - медленно, и обновление фаз GIF будет медленнее (т.к. вывод в буфер, а оттуда в экран)
текст должен выводиться всегда поверх картинок? т.е. два отдельных viewer-DOM!
как быстро выводить буквы с клипированием прямо в экран? ещё и с наложением на картинку???
или не делать наложение на картинку? но надо накладывать на рамочки + предыдущие буквы + произвольный фон
рендерить окрестность экрана по фону, пока нет скролла? а когда попадается неотрендеренная часть, рендерить её форсированно?
так делать только с текстом, а картинки накладывать отдельно, уже на экран?
тогда можно сделать быстрое обновление фаз GIF, но и при этом удобный буфер отрисованного текста, но текст не сможет быть над картинкой!
TODO:
редирект в http должен заменять введённый урл
сохранять под истинным именем (доставать из http ответа)
показывать ссылку при наведении?
ввод и перекодирование ссылки в %
белый фон? (в png уже белый?)
добавить стили и управляющий код ссылки на стиль (как передавать его параметры, чтобы они не напечатались?)
пропорциональный шрифт
плюс крупный и мелкий шрифты
плагины scr, png...? (nedoview) откуда брать расширение? из http ответа? или это в wget?
ввод имени файла для сохранения
многократные пробелы и табы в html заменять на одинарный пробел, в начале строки уже игнорируются, но почему-то не всегда
многократные неявные (т.е. не br) переводы строки заменять на одинарные
переходить по ...#blabla (тэг id?)
картинки в тексте
scr?
при кликании на файлы спектрумовских форматов запускать соответствующий вьювер
форматирование с учётом виртуальных табов, надо список табов и на них ссылаться (но что делать, если в клетке таблицы слишком много текста?)
UTF-8 с ударениями, надстрочными символами латиницы и ятями (это можно сделать с одним шрифтом)
msn.com внутренние ссылки вида:
"/ru-ru/news/accident/%d0%b8%d0%bd%d1%81%d0%bf%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b0-%d0%b4%d0%bf%d1%81-%d0%be%d1%88%d1%82%d1%80%d0%b0%d1%84%d0%be%d0%b2%d0%b0%d0%bb%d0%b8-%d0%bd%d0%b0-650-%d1%82%d1%8b%d1%81%d1%8f%d1%87-%d0%b7%d0%b0-%d0%b2%d0%b7%d1%8f%d1%82%d0%ba%d1%83-%d0%b2-30-%d1%82%d1%8b%d1%81%d1%8f%d1%87/ar-BB14fhhw?li=BBOIQ51"
<img alt="" data-src="{"default":"//static-global-s-msn-com.akamaized.net/img-resizer/tenant/amp/entityid/BB14eQSY.img?h=166&w=310&m=6&q=60&u=t&o=t&l=f&f=jpg"}" src="//static-global-s-msn-com.akamaized.net/hp-neu/sc/9b/e151e5.gif" title="В России прививку от коронавируса начали делать добровольцам - Фото: ТАСС" />
<!-- <table width=100% cellpadding=0 cellspacing=0><tr><td valign=top><img src="img/diske.png" width=21 style="padding-right: 4px"></td>
<td> -->
не пропускает до -->
nedopc.com:
<!--<table width="100%" bgcolor="#000000" border="1" cellspacing="0" cellpadding="3">
<tr><td><div align="center"><a href="http://party11.cc.org.ru"><img src="cc11_logo.png" width="1004" height="197" border=0></a></div></td></tr>
</table>-->
не пропускает до -->
cc11_logo.png выводится глючно (глюк в конце показа), но это зависит от сборки браузера!!! в текущей норм
<a href="http://nedopc.com"><img src="5" />blabla</a>
правее картинки ссылка работает неправильно
<div style не пропускает до конца? (zxpress.ru)
l сейчас не выходит из файла обратно