Задокументирован ли формат, сохраненный функцией Android Picture.writeToStream ()? - PullRequest
2 голосов
/ 03 апреля 2011

Я знаю, что могу посмотреть на источник, но мне интересно, есть ли документация для формата, используемого android.graphics.Picture.writeToStream(OutputStream).

Ответы [ 2 ]

2 голосов
/ 04 декабря 2012

Я бы предположил , что он совпадает с форматом всех этих файлов "skp":

http://skia.googlecode.com/svn/skp/

, которые можно открыть с помощьюОтладчик Skia, который входит в состав skia (если вы можете его скомпилировать!).

Сказав это, отладчик skia произвел сбой, когда я попытался открыть вывод writeToStream() для моего тестового представления.*

Детали кода

Эта функция вызывается кодом Android.Как вы можете видеть, это версия.Тестовые файлы в этом каталоге - версия 9. Выходные данные Canvas.writeToStream() на моем Galaxy S2 - версия 1. Вот где код Java обращается к:

http://code.google.com/p/skia/source/browse/trunk/src/core/SkPicture.cpp#291

Ноэто, очевидно, намного более новая версия, чем та, что установлена ​​на моем телефоне, поскольку это версия 9:

http://code.google.com/p/skia/source/browse/trunk/include/core/SkPicture.h#161

Изображения восстанавливаются с помощью конструктора SkPicture, который необратная совместимость:

http://code.google.com/p/skia/source/browse/trunk/src/core/SkPicture.cpp#269

Это немного стыдно и делает довольно хакерским использование в качестве формата сериализации, так как вам придется прослушивать PICTURE_VERSION на Android изатем сделайте что-нибудь интересное, чтобы дать Android правильную версию.

Edit

* PICTURE_VERSION - от 1 до ICS включительно и 2 в Jellybean:

https://github.com/android/platform_external_skia/blob/master/include/core/SkUserConfig.h#L44

2 голосов
/ 03 апреля 2011

Вы можете проверить SkPictureRecord.cpp . Похоже, что детали функций рисования просто сериализуются линейно с помощью методов, таких как:

void addScalar(SkScalar scalar) {
    fWriter.writeScalar(scalar);
}

В любом случае, как и в случае с большинством личных данных SDK, использование этих знаний может привести к проблемам при изменении SDK.

...