mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-18 01:00:24 +03:00
feat(mxl-compile,mxl-decompile): рисунки и палитра картинок
Рисунок поверх сетки — картинка, фигура, надпись — теперь описывается в DSL и возвращается из макета: два якоря «ячейка + смещение», тип, ссылка на картинку, надпись, расшифровка, имя, порядок перекрытия. Оформление рисунка разложено надвое: общее (заливка, шрифт, выравнивание) берётся из именованного стиля, а линия и её стороны — собственные ключи рисунка. У ячейки таких свойств не бывает: все 2 135 записей палитры с ними принадлежат рисункам. Палитра картинок: ссылка на библиотеку платформы, данные base64, пустая запись «картинка не задана» (151 в корпусе) и координата пикселя прозрачного цвета (tx/ty — проверено, это не размеры картинки). Заодно: висячий пустой колонтитул в ps1-порте (пустой словарь в PowerShell истинен, порты расходились на 3 макетах из 40) и проверка индекса формата рисунка в mxl-validate. Стенды Рисунки, Рисунки2, КартинкаВЯчейке проходят раундтрип байт в байт в обоих портах; на 35 корпусных макетах с рисунками расхождение сократилось у всех 35.
This commit is contained in:
+51
-1
@@ -91,6 +91,8 @@
|
||||
| `columnGroups` | нет | — | Группы колонок (см. ниже) |
|
||||
| `header` / `footer` | нет | — | Верхний и нижний колонтитулы (см. ниже) |
|
||||
| `printSettings` | нет | — | Параметры печати (см. ниже) |
|
||||
| `pictures` | нет | — | Палитра картинок: ссылки на библиотеку платформы или данные (см. ниже) |
|
||||
| `drawings` | нет | — | Рисунки: картинки, фигуры, надписи (см. ниже) |
|
||||
|
||||
## Области (`areas[]`)
|
||||
|
||||
@@ -384,6 +386,54 @@
|
||||
Порядок в списке не важен: компилятор пишет группы так же, как платформа, — родитель
|
||||
раньше вложенных, по возрастанию начала.
|
||||
|
||||
## Рисунки и картинки
|
||||
|
||||
Рисунок — объект поверх сетки ячеек: картинка, фигура или надпись. Его положение задают два
|
||||
якоря: ячейка плюс смещение в точках от её левого верхнего угла.
|
||||
|
||||
```json
|
||||
"pictures": {
|
||||
"знак": { "ref": "v8ui:Стоп48" },
|
||||
"логотип": { "data": "iVBORw0KGgo...", "transparent": false }
|
||||
},
|
||||
"drawings": [
|
||||
{ "type": "Picture", "picture": "логотип", "name": "Логотип",
|
||||
"begin": { "row": 1, "col": 1 },
|
||||
"end": { "row": 3, "col": 2, "dy": 34, "dx": 115 },
|
||||
"pictureSize": "Proportionally", "detail": "ПараметрРасшифровки" },
|
||||
{ "type": "Rectangle", "style": "заливка",
|
||||
"line": { "style": "Dashed", "width": 2 },
|
||||
"sides": { "left": true, "top": true, "right": false, "bottom": false },
|
||||
"begin": { "row": 5, "col": 1 }, "end": { "row": 6, "col": 3 } },
|
||||
{ "type": "Text", "text": { "ru": "Подпись", "en": "Signature" },
|
||||
"begin": { "row": 8, "col": 1 }, "end": { "row": 8, "col": 3, "dy": 12 } }
|
||||
]
|
||||
```
|
||||
|
||||
| Поле | Обяз. | По умолч. | Описание |
|
||||
|------|:-----:|-----------|----------|
|
||||
| `type` | нет | `Picture` | `Picture`, `Rectangle`, `Ellipse`, `Line`, `Text`, `Chart`, `GanttChart` |
|
||||
| `begin` / `end` | да | — | Якоря: `row`, `col` (1-based) и смещения `dy`, `dx` в точках |
|
||||
| `picture` | нет | — | Имя записи из `pictures` |
|
||||
| `pictureSize` | нет | `Stretch` | Как картинка заполняет прямоугольник: `Stretch`, `AutoSize`, `Proportionally`, `RealSize` |
|
||||
| `text` | нет | — | Надпись: строка или объект «язык → текст» |
|
||||
| `name` | нет | — | Имя рисунка, по которому к нему обращаются из кода |
|
||||
| `detail` | нет | — | Параметр расшифровки |
|
||||
| `style` | нет | — | Именованный стиль: заливка, шрифт, выравнивание надписи |
|
||||
| `line` | нет | — | Линия рисунка (она же его рамка) — как `border` у ячейки |
|
||||
| `sides` | нет | — | Какие стороны рамки видны: `left`, `top`, `right`, `bottom` |
|
||||
| `id` | нет | номер по порядку | Идентификатор рисунка |
|
||||
| `zOrder` | нет | номер по порядку | Порядок перекрытия: чем больше, тем выше |
|
||||
|
||||
Порядок в списке `drawings` — порядок в документе; кто кого перекрывает, задаёт `zOrder`.
|
||||
|
||||
Запись в `pictures` — либо ссылка на библиотеку картинок платформы (`ref`), либо сами данные
|
||||
в base64 (`data`). Пустая запись `{}` — картинка не задана, такое в макетах встречается.
|
||||
С данными сочетаются `transparent` (прозрачность включена) и `transparentPixel`
|
||||
(`{ "x": …, "y": … }` — координата пикселя, чей цвет считается прозрачным).
|
||||
|
||||
Одну запись `pictures` могут использовать несколько рисунков — данные в макете не дублируются.
|
||||
|
||||
## `rowStyle` — оформление строки
|
||||
|
||||
Стиль применяется ко ВСЕЙ ширине строки: позиции без явных ячеек получают тот же стиль. Так в табличных строках получаются сплошные рамки. Он же становится оформлением самой строки — именно так платформа хранит строку, оформленную целиком.
|
||||
@@ -399,7 +449,7 @@ round-trip** (`/mxl-decompile` → `/mxl-compile`): в JSON оно не попа
|
||||
XML не возвращается.
|
||||
|
||||
- объединения, не привязанные к ячейке (по всей высоте или ширине документа);
|
||||
- рисунки и картинки, в том числе штрихкоды;
|
||||
- настройки диаграмм (`Chart`, `GanttChart`) — сам рисунок сохраняется, его содержимое нет;
|
||||
- область печати.
|
||||
|
||||
Пересборка макета из DSL — это полная перегенерация, а не точечная правка XML, поэтому
|
||||
|
||||
Reference in New Issue
Block a user