12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict'
- const { nativeImage, NativeImage } = process.electronBinding('native_image')
- const objectMap = function (source, mapper) {
- const sourceEntries = Object.entries(source)
- const targetEntries = sourceEntries.map(([key, val]) => [key, mapper(val)])
- return Object.fromEntries(targetEntries)
- }
- const serialize = function (value) {
- if (value instanceof NativeImage) {
- return {
- buffer: value.toBitmap(),
- size: value.getSize(),
- __ELECTRON_SERIALIZED_NativeImage__: true
- }
- } else if (Array.isArray(value)) {
- return value.map(serialize)
- } else if (value instanceof Buffer) {
- return value
- } else if (value instanceof Object) {
- return objectMap(value, serialize)
- } else {
- return value
- }
- }
- const deserialize = function (value) {
- if (value && value.__ELECTRON_SERIALIZED_NativeImage__) {
- return nativeImage.createFromBitmap(value.buffer, value.size)
- } else if (Array.isArray(value)) {
- return value.map(deserialize)
- } else if (value instanceof Buffer) {
- return value
- } else if (value instanceof Object) {
- return objectMap(value, deserialize)
- } else {
- return value
- }
- }
- module.exports = {
- serialize,
- deserialize
- }
|