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:
Nick Shirokov
2026-08-15 20:07:12 +03:00
parent 9a1353a1d9
commit 9285ed00cd
23 changed files with 1654 additions and 46 deletions
@@ -0,0 +1,34 @@
{
"name": "Рисунки: типы, картинки, линия, стороны, расшифровка",
"input": {
"columns": 4,
"styles": {
"заливка": { "backColor": "web:LightYellow" }
},
"pictures": {
"стоп": { "ref": "v8ui:Стоп48" },
"точка": { "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP4z8DwHwAFAAH/q842iQAAAABJRU5ErkJggg==", "transparent": false }
},
"areas": [{ "rows": [["Бланк"]] }],
"drawings": [
{ "type": "Picture", "picture": "стоп", "name": "Знак",
"begin": { "row": 1, "col": 1, "dy": 0, "dx": 0 },
"end": { "row": 2, "col": 2, "dy": 20, "dx": 40 },
"pictureSize": "Proportionally" },
{ "type": "Picture", "picture": "точка", "detail": "ПараметрРасшифровки",
"begin": { "row": 3, "col": 1 },
"end": { "row": 3, "col": 2, "dy": 34, "dx": 115 } },
{ "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": "Ellipse", "line": "Solid",
"begin": { "row": 8, "col": 1 }, "end": { "row": 9, "col": 2 } },
{ "type": "Line", "zOrder": 9,
"begin": { "row": 11, "col": 1 }, "end": { "row": 11, "col": 4 } },
{ "type": "Text", "id": 42, "text": { "ru": "Подпись", "en": "Signature" },
"begin": { "row": 13, "col": 1 }, "end": { "row": 13, "col": 3, "dy": 12 } }
]
},
"params": { "outputPath": "Template.xml" }
}
@@ -0,0 +1,10 @@
{
"name": "Ошибка: прозрачность задана у картинки без данных",
"input": {
"columns": 2,
"pictures": { "пусто": { "transparent": true } },
"areas": [{ "rows": [["Бланк"]] }]
},
"params": { "outputPath": "Template.xml" },
"expectError": "pictures[пусто]: 'transparent' and 'transparentPixel' require 'data'"
}
@@ -0,0 +1,13 @@
{
"name": "Ошибка: рисунок ссылается на необъявленную картинку",
"input": {
"columns": 2,
"areas": [{ "rows": [["Бланк"]] }],
"drawings": [
{ "type": "Picture", "picture": "нет-такой",
"begin": { "row": 1, "col": 1 }, "end": { "row": 2, "col": 2 } }
]
},
"params": { "outputPath": "Template.xml" },
"expectError": "drawings[1]: unknown 'picture' \"нет-такой\" — not declared in pictures"
}
@@ -0,0 +1,284 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<languageSettings>
<currentLanguage>ru</currentLanguage>
<defaultLanguage>ru</defaultLanguage>
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description>Русский</description>
</languageInfo>
<languageInfo>
<id>en</id>
<code>Английский</code>
<description>Английский</description>
</languageInfo>
</languageSettings>
<columns>
<size>5</size>
</columns>
<rowsItem>
<index>0</index>
<row>
<empty>true</empty>
</row>
</rowsItem>
<drawing>
<drawingType>Picture</drawingType>
<id>1</id>
<formatIndex>0</formatIndex>
<detailParameter>ПараметрРасшифровки</detailParameter>
<beginRow>1</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>3</endRow>
<endRowOffset>34</endRowOffset>
<beginColumn>1</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>115</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>1</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<drawing>
<drawingType>Picture</drawingType>
<id>2</id>
<formatIndex>1</formatIndex>
<beginRow>6</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>8</endRow>
<endRowOffset>34</endRowOffset>
<beginColumn>1</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>115</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>RealSize</pictureSize>
<zOrder>2</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<drawing>
<drawingType>Picture</drawingType>
<id>3</id>
<formatIndex>2</formatIndex>
<beginRow>12</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>14</endRow>
<endRowOffset>34</endRowOffset>
<beginColumn>1</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>115</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Proportionally</pictureSize>
<zOrder>3</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<drawing>
<drawingType>Picture</drawingType>
<id>4</id>
<formatIndex>3</formatIndex>
<beginRow>18</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>20</endRow>
<endRowOffset>34</endRowOffset>
<beginColumn>1</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>115</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Tile</pictureSize>
<zOrder>4</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<drawing>
<drawingType>Picture</drawingType>
<id>5</id>
<formatIndex>0</formatIndex>
<beginRow>23</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>25</endRow>
<endRowOffset>34</endRowOffset>
<beginColumn>1</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>115</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>AutoSize</pictureSize>
<zOrder>5</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<drawing>
<drawingType>Picture</drawingType>
<id>6</id>
<formatIndex>0</formatIndex>
<beginRow>28</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>30</endRow>
<endRowOffset>34</endRowOffset>
<beginColumn>1</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>115</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>ByFontSize</pictureSize>
<zOrder>6</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<drawing>
<drawingType>Picture</drawingType>
<id>7</id>
<formatIndex>1</formatIndex>
<beginRow>1</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>2</endRow>
<endRowOffset>31</endRowOffset>
<beginColumn>3</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>3</endColumn>
<endColumnOffset>60</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>7</zOrder>
<pictureIndex>2</pictureIndex>
</drawing>
<drawing>
<drawingType>Line</drawingType>
<id>8</id>
<formatIndex>4</formatIndex>
<beginRow>7</beginRow>
<beginRowOffset>19</beginRowOffset>
<endRow>4</endRow>
<endRowOffset>24</endRowOffset>
<beginColumn>2</beginColumn>
<beginColumnOffset>106</beginColumnOffset>
<endColumn>4</endColumn>
<endColumnOffset>103</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>8</zOrder>
</drawing>
<drawing>
<drawingType>Rectangle</drawingType>
<id>9</id>
<formatIndex>5</formatIndex>
<beginRow>8</beginRow>
<beginRowOffset>36</beginRowOffset>
<endRow>12</endRow>
<endRowOffset>10</endRowOffset>
<beginColumn>2</beginColumn>
<beginColumnOffset>108</beginColumnOffset>
<endColumn>4</endColumn>
<endColumnOffset>125</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>9</zOrder>
</drawing>
<drawing>
<drawingType>Ellipse</drawingType>
<id>10</id>
<formatIndex>6</formatIndex>
<beginRow>14</beginRow>
<beginRowOffset>22</beginRowOffset>
<endRow>17</endRow>
<endRowOffset>12</endRowOffset>
<beginColumn>2</beginColumn>
<beginColumnOffset>134</beginColumnOffset>
<endColumn>4</endColumn>
<endColumnOffset>139</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>10</zOrder>
</drawing>
<drawing>
<drawingType>Text</drawingType>
<id>11</id>
<formatIndex>7</formatIndex>
<text>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Текст</v8:content>
</v8:item>
</text>
<beginRow>19</beginRow>
<beginRowOffset>38</beginRowOffset>
<endRow>23</endRow>
<endRowOffset>17</endRowOffset>
<beginColumn>2</beginColumn>
<beginColumnOffset>101</beginColumnOffset>
<endColumn>4</endColumn>
<endColumnOffset>146</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>11</zOrder>
</drawing>
<templateMode>true</templateMode>
<defaultFormatIndex>8</defaultFormatIndex>
<height>31</height>
<vgRows>31</vgRows>
<namedItem xsi:type="NamedItemDrawing">
<name>Звездочка</name>
<drawingID>7</drawingID>
</namedItem>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentDrawingLineType">None</v8ui:style>
</line>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentDrawingLineType">Dashed</v8ui:style>
</line>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentDrawingLineType">DashDottedDotted</v8ui:style>
</line>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentDrawingLineType">DashDotted</v8ui:style>
</line>
<format>
<drawingBorder>0</drawingBorder>
</format>
<format>
<backColor xmlns:d3p1="http://v8.1c.ru/8.1/data/ui/colors/web">d3p1:HoneyDew</backColor>
</format>
<format>
<patternColor>style:SpecialTextColor</patternColor>
<pattern>Pattern4</pattern>
</format>
<format>
<verticalAlignment>Top</verticalAlignment>
<backColor>style:FieldBackColor</backColor>
</format>
<format>
<drawingBorder>1</drawingBorder>
<verticalAlignment>Top</verticalAlignment>
<backColor>style:FieldBackColor</backColor>
</format>
<format>
<drawingBorder>2</drawingBorder>
<verticalAlignment>Top</verticalAlignment>
<backColor>style:FieldBackColor</backColor>
</format>
<format>
<drawingBorder>3</drawingBorder>
<verticalAlignment>Top</verticalAlignment>
<backColor>style:FieldBackColor</backColor>
</format>
<format>
<width>72</width>
</format>
<picture>
<index>0</index>
<picture ref="v8ui:Стоп48"/>
</picture>
<picture>
<index>1</index>
<picture t="false">iVBORw0KGgoAAAANSUhEUgAAABkAAAAeCAYAAADZ7LXbAAAAAXNSR0IArs4c6QAA
AARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAE9SURBVEhL7ZOh
coQwEIb7tBExmBjEGUwNBhGDiUH0DWIQmJgYREwM5gwCcwZT83cLuWlhrhOCqOJT
uwszX3Y3ecM/cEmSuCRJXJIkTkmszJFLG7I4JyQ9JGNgTFJ0jFOddCVJyi5kcaKS
XmZgPIdyc6gAj7ZA0T5CBsyuhqDustqFypaoZPjIwZfxCNRP0aChhzWcrUS2fOe4
6XEt7jg8Lt9rNGWJxk/wWkFpj8k3KMsGuvfhr9ek74RGs3bGqbNQi5Akme8W1hnI
jIGLGp2zcPefXf1FVPI5GqhCLKfPnm/jMWAIezcVXQzqShQKZlpre6ISffseDQmq
X4/PVKhMiAm7iOi/9zZUtsTHNXkYt701rubgu4WMNEa6Ey9JXzzRCDq1aEIWw56R
eChaPMsURcc41UkqlySJS5IA8AW5c2KJOTY6eAAAAABJRU5ErkJggg==</picture>
</picture>
</document>
@@ -0,0 +1,20 @@
{
"name": "Картинки: пустая запись и пиксель прозрачного цвета",
"input": {
"columns": 2,
"pictures": {
"пусто": {},
"точка": {
"data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP4z8DwHwAFAAH/q842iQAAAABJRU5ErkJggg==",
"transparent": true,
"transparentPixel": { "x": 3, "y": 5 }
}
},
"areas": [{ "rows": [["Бланк"]] }],
"drawings": [
{ "type": "Picture", "picture": "точка",
"begin": { "row": 1, "col": 1 }, "end": { "row": 2, "col": 2 } }
]
},
"params": { "outputPath": "Template.xml" }
}
@@ -0,0 +1,13 @@
{
"name": "Раундтрип макета ПЛАТФОРМЫ байт в байт: Рисунки2",
"setup": "fixture:platform-roundtrip",
"preRun": [
{ "script": "mxl-decompile/scripts/mxl-decompile",
"args": { "-TemplatePath": "Рисунки2.xml", "-OutputPath": "back.json" },
"cwd": "{workDir}" }
],
"params": { "outputPath": "out.xml" },
"noSnapshot": "эталон — файл платформы, сверяется expect.filesEqual",
"expect": { "filesEqual": { "actual": "out.xml", "expected": "Рисунки2.xml" } },
"inputFrom": "back.json"
}
@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<languageSettings>
<currentLanguage>ru</currentLanguage>
<defaultLanguage>ru</defaultLanguage>
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description>Русский</description>
</languageInfo>
</languageSettings>
<columns>
<size>4</size>
</columns>
<rowsItem>
<index>0</index>
<row>
<c>
<c>
<f>0</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Бланк</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<drawing>
<drawingType>Picture</drawingType>
<id>1</id>
<formatIndex>0</formatIndex>
<beginRow>0</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>1</endRow>
<endRowOffset>20</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>40</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Proportionally</pictureSize>
<zOrder>1</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<drawing>
<drawingType>Picture</drawingType>
<id>2</id>
<formatIndex>0</formatIndex>
<detailParameter>ПараметрРасшифровки</detailParameter>
<beginRow>2</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>2</endRow>
<endRowOffset>34</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>115</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>2</zOrder>
<pictureIndex>2</pictureIndex>
</drawing>
<drawing>
<drawingType>Rectangle</drawingType>
<id>3</id>
<formatIndex>1</formatIndex>
<beginRow>4</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>5</endRow>
<endRowOffset>0</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>2</endColumn>
<endColumnOffset>0</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>3</zOrder>
</drawing>
<drawing>
<drawingType>Ellipse</drawingType>
<id>4</id>
<formatIndex>2</formatIndex>
<beginRow>7</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>8</endRow>
<endRowOffset>0</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>0</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>4</zOrder>
</drawing>
<drawing>
<drawingType>Line</drawingType>
<id>5</id>
<formatIndex>0</formatIndex>
<beginRow>10</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>10</endRow>
<endRowOffset>0</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>3</endColumn>
<endColumnOffset>0</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>9</zOrder>
</drawing>
<drawing>
<drawingType>Text</drawingType>
<id>42</id>
<formatIndex>0</formatIndex>
<text>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Подпись</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Signature</v8:content>
</v8:item>
</text>
<beginRow>12</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>12</endRow>
<endRowOffset>12</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>2</endColumn>
<endColumnOffset>0</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>6</zOrder>
</drawing>
<templateMode>true</templateMode>
<defaultFormatIndex>3</defaultFormatIndex>
<height>13</height>
<vgRows>13</vgRows>
<namedItem xsi:type="NamedItemDrawing">
<name>Знак</name>
<drawingID>1</drawingID>
</namedItem>
<line width="2" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentDrawingLineType">Dashed</v8ui:style>
</line>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentDrawingLineType">Solid</v8ui:style>
</line>
<format>
<drawingBorder>0</drawingBorder>
<drawingHaveLeftBorder>true</drawingHaveLeftBorder>
<drawingHaveTopBorder>true</drawingHaveTopBorder>
<drawingHaveRightBorder>false</drawingHaveRightBorder>
<drawingHaveBottomBorder>false</drawingHaveBottomBorder>
<backColor xmlns:d3p1="http://v8.1c.ru/8.1/data/ui/colors/web">d3p1:LightYellow</backColor>
</format>
<format>
<drawingBorder>1</drawingBorder>
</format>
<format>
<width>10</width>
</format>
<picture>
<index>0</index>
<picture ref="v8ui:Стоп48"/>
</picture>
<picture>
<index>1</index>
<picture t="false">iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP4z8DwHwAFAAH/q842iQAAAABJRU5ErkJggg==</picture>
</picture>
</document>
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<languageSettings>
<currentLanguage>ru</currentLanguage>
<defaultLanguage>ru</defaultLanguage>
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description>Русский</description>
</languageInfo>
</languageSettings>
<columns>
<size>2</size>
</columns>
<rowsItem>
<index>0</index>
<row>
<c>
<c>
<f>0</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Бланк</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<drawing>
<drawingType>Picture</drawingType>
<id>1</id>
<formatIndex>0</formatIndex>
<beginRow>0</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>1</endRow>
<endRowOffset>0</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>0</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>1</zOrder>
<pictureIndex>2</pictureIndex>
</drawing>
<templateMode>true</templateMode>
<defaultFormatIndex>1</defaultFormatIndex>
<height>2</height>
<vgRows>2</vgRows>
<format>
<width>10</width>
</format>
<picture>
<index>0</index>
<picture/>
</picture>
<picture>
<index>1</index>
<picture t="true" tx="3" ty="5">iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP4z8DwHwAFAAH/q842iQAAAABJRU5ErkJggg==</picture>
</picture>
</document>
@@ -0,0 +1,30 @@
{
"name": "Roundtrip — рисунки и палитра картинок",
"preRun": [
{ "script": "mxl-compile/scripts/mxl-compile",
"input": {
"columns": 4,
"styles": { "заливка": { "backColor": "web:LightYellow" } },
"pictures": {
"стоп": { "ref": "v8ui:Стоп48" },
"пусто": {}
},
"areas": [{ "rows": [["Бланк"]] }],
"drawings": [
{ "type": "Picture", "picture": "стоп", "name": "Знак",
"begin": { "row": 1, "col": 1 }, "end": { "row": 2, "col": 2, "dy": 20, "dx": 40 },
"pictureSize": "Proportionally" },
{ "type": "Rectangle", "style": "заливка", "line": { "style": "Dashed", "width": 2 },
"sides": { "left": true, "top": true, "right": false, "bottom": false },
"begin": { "row": 4, "col": 1 }, "end": { "row": 5, "col": 3 } },
{ "type": "Text", "id": 42, "text": { "ru": "Подпись", "en": "Signature" },
"begin": { "row": 7, "col": 1 }, "end": { "row": 7, "col": 3, "dy": 12 } }
]
},
"args": { "-JsonPath": "{inputFile}", "-OutputPath": "Template.xml" },
"cwd": "{workDir}" }
],
"params": { "templatePath": "Template.xml" },
"args_extra": ["-OutputPath", "{workDir}/back.json"],
"expect": { "files": ["back.json"], "stdoutContains": "[OK] Decompiled:" }
}
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<languageSettings>
<currentLanguage>ru</currentLanguage>
<defaultLanguage>ru</defaultLanguage>
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description>Русский</description>
</languageInfo>
</languageSettings>
<columns>
<size>4</size>
</columns>
<rowsItem>
<index>0</index>
<row>
<c>
<c>
<f>0</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Бланк</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<drawing>
<drawingType>Picture</drawingType>
<id>1</id>
<formatIndex>0</formatIndex>
<beginRow>0</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>1</endRow>
<endRowOffset>20</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>1</endColumn>
<endColumnOffset>40</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Proportionally</pictureSize>
<zOrder>1</zOrder>
<pictureIndex>1</pictureIndex>
</drawing>
<drawing>
<drawingType>Rectangle</drawingType>
<id>2</id>
<formatIndex>1</formatIndex>
<beginRow>3</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>4</endRow>
<endRowOffset>0</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>2</endColumn>
<endColumnOffset>0</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>2</zOrder>
</drawing>
<drawing>
<drawingType>Text</drawingType>
<id>42</id>
<formatIndex>0</formatIndex>
<text>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Подпись</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Signature</v8:content>
</v8:item>
</text>
<beginRow>6</beginRow>
<beginRowOffset>0</beginRowOffset>
<endRow>6</endRow>
<endRowOffset>12</endRowOffset>
<beginColumn>0</beginColumn>
<beginColumnOffset>0</beginColumnOffset>
<endColumn>2</endColumn>
<endColumnOffset>0</endColumnOffset>
<autoSize>false</autoSize>
<pictureSize>Stretch</pictureSize>
<zOrder>3</zOrder>
</drawing>
<templateMode>true</templateMode>
<defaultFormatIndex>2</defaultFormatIndex>
<height>7</height>
<vgRows>7</vgRows>
<namedItem xsi:type="NamedItemDrawing">
<name>Знак</name>
<drawingID>1</drawingID>
</namedItem>
<line width="2" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentDrawingLineType">Dashed</v8ui:style>
</line>
<format>
<drawingBorder>0</drawingBorder>
<drawingHaveLeftBorder>true</drawingHaveLeftBorder>
<drawingHaveTopBorder>true</drawingHaveTopBorder>
<drawingHaveRightBorder>false</drawingHaveRightBorder>
<drawingHaveBottomBorder>false</drawingHaveBottomBorder>
<backColor xmlns:d3p1="http://v8.1c.ru/8.1/data/ui/colors/web">d3p1:LightYellow</backColor>
</format>
<format>
<width>10</width>
</format>
<picture>
<index>0</index>
<picture ref="v8ui:Стоп48"/>
</picture>
<picture>
<index>1</index>
<picture/>
</picture>
</document>
@@ -0,0 +1,13 @@
{
"columns": 4,
"defaultWidth": 10,
"fonts": {},
"styles": { "bg": { "backColor": "web:LightYellow" } },
"pictures": { "pic1": { "ref": "v8ui:Стоп48" }, "pic2": {} },
"drawings": [
{ "type": "Picture", "name": "Знак", "picture": "pic1", "begin": { "row": 1, "col": 1, "dy": 0, "dx": 0 }, "end": { "row": 2, "col": 2, "dy": 20, "dx": 40 }, "pictureSize": "Proportionally" },
{ "type": "Rectangle", "style": "bg", "line": { "style": "Dashed", "width": 2 }, "sides": { "left": true, "top": true, "right": false, "bottom": false }, "begin": { "row": 4, "col": 1, "dy": 0, "dx": 0 }, "end": { "row": 5, "col": 3, "dy": 0, "dx": 0 } },
{ "type": "Text", "id": 42, "text": { "ru": "Подпись", "en": "Signature" }, "begin": { "row": 7, "col": 1, "dy": 0, "dx": 0 }, "end": { "row": 7, "col": 3, "dy": 12, "dx": 0 } }
],
"areas": [{ "rows": [["Бланк"]] }]
}