# Рисунки и картинки

Рисунок — объект поверх сетки ячеек: картинка, фигура или надпись. Его положение задают два
якоря: ячейка плюс смещение в точках от её левого верхнего угла.

```json
"pictures": {
  "знак":  { "ref": "v8ui:Стоп48" },
  "логотип": { "data": "iVBORw0KGgo...", "transparent": { "x": 24, "y": 29 } }
},
"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`). Ссылкой
задаются и предопределённая картинка платформы, и общая картинка конфигурации — пишутся они
одинаково, префиксом `v8ui:`. Пустая запись `{}` — картинка не задана, такое в макетах встречается.
Прозрачность задаётся ключом `transparent` в одной из двух форм: `false` — прозрачного фона
нет; `{ "x": …, "y": … }` — прозрачным считается цвет пикселя с этими координатами внутри
картинки (по флажку «прозрачный фон» Конфигуратор берёт её правый нижний пиксель).

Одну запись `pictures` могут использовать несколько рисунков — данные в макете не дублируются.

## Картинка в ячейке

Картинка бывает не только поверх сетки, но и внутри ячейки — тогда её задаёт стиль, а сама
картинка берётся из той же палитры `pictures`:

```json
{
  "columns": 2,
  "pictures": { "стоп": { "ref": "v8ui:Стоп48" } },
  "styles": { "значок": { "picIndex": 1, "picHorizontalAlignment": "Center",
                          "picVerticalAlignment": "Center", "textPosition": "Bottom" } },
  "areas": [{ "rows": [
    [{ "style": "значок", "text": "удалить", "pictureParameter": "Удалить" }]
  ]}]
}
```

- `picIndex` — номер записи в `pictures`, считая с единицы в порядке объявления;
- `picHorizontalAlignment`, `picVerticalAlignment`, `pictureSizeMode`, `textPosition` — как
  картинка стоит в ячейке и где относительно неё текст (значения — в `style-properties.md`);
- `pictureParameter` — ключ самой ЯЧЕЙКИ, а не стиля: имя параметра, которым картинку
  подставляют из кода, как `param` подставляет текст. С текстом ячейки уживается.
