package NHtml.NBlob;

message TRange {
    optional uint32 Begin = 1;
    optional uint32 End = 2;
}

message TDocumentPack {
    message TContentsSize {
        optional uint32 Width = 1;
        optional uint32 Height = 2;
        optional float ScaleFactor = 3;
    }

    message TFrame {
        // main frame has "main" id, other has GUID value as id
        // in parent HTML their frameElements has attribute yandex-robot-frame-id with id value
        optional string Id = 1;
        //! Урл текущего фрейма.
        optional string Url = 2;
        //! Сылка на упакованное представление html-дерева.
        optional TRange Data = 4;
        //! Дочерние фреймы.
        repeated TFrame Children = 3;
    }

    //! Смещения до таблиц текстов.
    message TStrings {
        //! Имена тегов.
        optional TRange Tags = 1;
        //! Имена атрибутов.
        optional TRange AttributeNames = 2;
        //! Имена атрибутов.
        optional TRange AttributeValues = 3;
        //! Тексты, коментарии и значения атрибутов.
        optional TRange Texts = 4;
        //! Cмещение до таблиц с именами стилей.
        optional TRange StyleNames = 5;
        //! Cмещение до таблиц с текстами стилей.
        optional TRange StyleValues = 6;
    }


    //! Версия формата данных.
    optional uint32 Version = 1;
    //! Габаритные параметры документа.
    optional TContentsSize ContentsSize = 2;
    //! Фреймы документа.
    optional TFrame Main = 3;
    //! Ссылки на строковые таблицы.
    optional TStrings Strings = 4;
}
