• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { paramMock } from "../utils"
17
18const SizeMock = {
19  height: "[PC Preview] unknow height",
20  width: "[PC Preview] unknow width"
21}
22const ImageInfoMock = {
23  size: SizeMock
24}
25
26export const PixelMapMock = {
27  isEditable: "[PC Preview] unknow isEditable",
28  readPixelsToBuffer: function (...args) {
29    console.warn("PixelMap.readPixelsToBuffer interface mocked in the Previewer. How this interface works on the Previewer" +
30      " may be different from that on a real device.")
31    const len = args.length
32    if (typeof args[len - 1] === 'function') {
33      args[len - 1].call(this, paramMock.businessErrorMock);
34    } else {
35      return new Promise((resolve, reject) => {
36        resolve();
37      })
38    }
39  },
40  readPixels: function (...args) {
41    console.warn("PixelMap.readPixels interface mocked in the Previewer. How this interface works on the Previewer" +
42      " may be different from that on a real device.")
43    const len = args.length
44    if (typeof args[len - 1] === 'function') {
45      args[len - 1].call(this, paramMock.businessErrorMock);
46    } else {
47      return new Promise((resolve, reject) => {
48        resolve();
49      })
50    }
51  },
52  writePixels: function (...args) {
53    console.warn("PixelMap.writePixels interface mocked in the Previewer. How this interface works on the Previewer" +
54      " may be different from that on a real device.")
55    const len = args.length
56    if (typeof args[len - 1] === 'function') {
57      args[len - 1].call(this, paramMock.businessErrorMock);
58    } else {
59      return new Promise((resolve, reject) => {
60        resolve();
61      })
62    }
63  },
64  writeBufferToPixels: function (...args) {
65    console.warn("PixelMap.writeBufferToPixels interface mocked in the Previewer. How this interface works on the Previewer" +
66      " may be different from that on a real device.")
67    const len = args.length
68    if (typeof args[len - 1] === 'function') {
69      args[len - 1].call(this, paramMock.businessErrorMock);
70    } else {
71      return new Promise((resolve, reject) => {
72        resolve();
73      })
74    }
75  },
76  getImageInfo: function (...args) {
77    console.warn("PixelMap.getImageInfo interface mocked in the Previewer. How this interface works on the Previewer" +
78      " may be different from that on a real device.")
79    const len = args.length
80    if (len > 0 && typeof args[len - 1] === 'function') {
81      args[len - 1].call(this, paramMock.businessErrorMock, ImageInfoMock);
82    } else {
83      return new Promise((resolve, reject) => {
84        resolve(ImageInfoMock);
85      })
86    }
87  },
88  getBytesNumberPerRow: function (...args) {
89    console.warn("PixelMap.getBytesNumberPerRow interface mocked in the Previewer. How this interface works on the Previewer" +
90      " may be different from that on a real device.")
91    return paramMock.paramNumberMock
92  },
93  getPixelBytesNumber: function (...args) {
94    console.warn("PixelMap.getPixelBytesNumber interface mocked in the Previewer. How this interface works on the Previewer" +
95      " may be different from that on a real device.")
96    return paramMock.paramNumberMock
97  },
98  release: function (...args) {
99    console.warn("PixelMap.release interface mocked in the Previewer. How this interface works on the Previewer" +
100      " may be different from that on a real device.")
101    const len = args.length
102    if (len > 0 && typeof args[len - 1] === 'function') {
103      args[len - 1].call(this, paramMock.businessErrorMock);
104    } else {
105      return new Promise((resolve, reject) => {
106        resolve();
107      })
108    }
109  }
110}
111
112export function mockMultimediaImage() {
113  const RegionMock = {
114    size: SizeMock,
115    x: "[PC Preview] unknow x",
116    y: "[PC Preview] unknow y"
117  }
118  const PositionAreaMock = {
119    pixels: "[PC Preview] unknow pixels",
120    offset: "[PC Preview] unknow offset",
121    stride: "[PC Preview] unknow stride",
122    region: RegionMock
123  }
124  const PackingOptionMock = {
125    format: "[PC Preview] unknow format",
126    quality: "[PC Preview] unknow quality"
127  }
128  const GetImagePropertyOptionsMock = {
129    index: "[PC Preview] unknow index",
130    defaultValue: "[PC Preview] unknow defaultValue"
131  }
132  const DecodingOptionsMock = {
133    index: "[PC Preview] unknow index",
134    sampleSize: "[PC Preview] unknow sampleSize",
135    rotate: "[PC Preview] unknow rotate",
136    editable: "[PC Preview] unknow editable",
137    desiredSize: SizeMock,
138    desiredRegion: RegionMock,
139    desiredPixelFormat: "[PC Preview] unknow desiredPixelFormat"
140  }
141  const ComponentMock = {
142    componentType: "[PC Preview] unknow componentType",
143    rowStride: "[PC Preview] unknow rowStride",
144    pixelStride: "[PC Preview] unknow pixelStride",
145    byteBuffer: "[PC Preview] unknow pixelStride"
146  }
147  const InitializationOptionsMock = {
148    size: SizeMock,
149    pixelFormat: "[PC Preview] unknow pixelFormat",
150    editable: "[PC Preview] unknow editable",
151    alphaType: "[PC Preview] unknow alphaType",
152    scaleMode: "[PC Preview] unknow scaleMode"
153  }
154
155  const ImageSourceMock = {
156    getImageInfo: function (...args) {
157      console.warn("ImageSource.getImageInfo interface mocked in the Previewer. How this interface works on the" +
158        " Previewer may be different from that on a real device.")
159      const len = args.length
160      if (typeof args[len - 1] === 'function') {
161        args[len - 1].call(this, paramMock.businessErrorMock, ImageInfoMock);
162      } else {
163        return new Promise((resolve, reject) => {
164          resolve(ImageInfoMock);
165        })
166      }
167    },
168    release: function (...args) {
169      console.warn("ImageSource.release interface mocked in the Previewer. How this interface works on the Previewer" +
170        " may be different from that on a real device.")
171      const len = args.length
172      if (len > 0 && typeof args[len - 1] === 'function') {
173        args[len - 1].call(this, paramMock.businessErrorMock);
174      } else {
175        return new Promise((resolve, reject) => {
176          resolve();
177        })
178      }
179    },
180    createPixelMap: function (...args) {
181      console.warn("ImageSource.createPixelMap interface mocked in the Previewer. How this interface works on the Previewer" +
182        " may be different from that on a real device.")
183      const len = args.length
184      if (len > 0 && typeof args[len - 1] === 'function') {
185        args[len - 1].call(this, paramMock.businessErrorMock, PixelMapMock);
186      } else {
187        return new Promise((resolve, reject) => {
188          resolve(PixelMapMock);
189        })
190      }
191    },
192    getImageProperty: function (...args) {
193      console.warn("ImageSource.getImageProperty interface mocked in the Previewer. How this interface works on the Previewer" +
194        " may be different from that on a real device.")
195      const len = args.length
196      if (len > 0 && typeof args[len - 1] === 'function') {
197        args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramStringMock);
198      } else {
199        return new Promise((resolve, reject) => {
200          resolve(paramMock.paramStringMock);
201        })
202      }
203    },
204	release: function (...args) {
205	  console.warn("ImageSource.release interface mocked in the Previewer. How this interface works on the Previewer" +
206		" may be different from that on a real device.")
207	  const len = args.length
208	  if (len > 0 && typeof args[len - 1] === 'function') {
209	    args[len - 1].call(this, paramMock.businessErrorMock);
210	  } else {
211	    return new Promise((resolve, reject) => {
212		  resolve();
213	    })
214	  }
215    },
216    supportedFormats: "[PC Preview] unknow supportedFormats"
217  }
218  const ImagePackerMock = {
219    packing: function (...args) {
220      console.warn("ImagePacker.packing interface mocked in the Previewer. How this interface works on the Previewer" +
221        " may be different from that on a real device.")
222      const len = args.length
223      if (typeof args[len - 1] === 'function') {
224        args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramArrayMock);
225      } else {
226        return new Promise((resolve, reject) => {
227          resolve(paramMock.paramArrayMock);
228        })
229      }
230    },
231    release: function (...args) {
232      console.warn("ImagePacker.release interface mocked in the Previewer. How this interface works on the Previewer" +
233        " may be different from that on a real device.")
234      const len = args.length
235      if (typeof args[len - 1] === 'function') {
236        args[len - 1].call(this, paramMock.businessErrorMock);
237      } else {
238        return new Promise((resolve, reject) => {
239          resolve();
240        })
241      }
242    },
243    supportedFormats: "[PC Preview] unknow supportedFormats"
244  }
245  const ImageMock = {
246    clipRect: RegionMock,
247    size: SizeMock,
248    format: "[PC Preview] unknow format",
249    getComponent: function (...args) {
250      console.warn("Image.getComponent interface mocked in the Previewer. How this interface works on the Previewer" +
251        " may be different from that on a real device.")
252      const len = args.length
253      if (typeof args[len - 1] === 'function') {
254        args[len - 1].call(this, paramMock.businessErrorMock,ComponentMock);
255      } else {
256        return new Promise((resolve, reject) => {
257          resolve(ComponentMock);
258        })
259      }
260    },
261    release: function (...args) {
262      console.warn("Image.release interface mocked in the Previewer. How this interface works on the Previewer" +
263        " may be different from that on a real device.")
264      const len = args.length
265      if (typeof args[len - 1] === 'function') {
266        args[len - 1].call(this, paramMock.businessErrorMock);
267      } else {
268        return new Promise((resolve, reject) => {
269          resolve();
270        })
271      }
272    }
273  }
274  const ImageReceiverMock = {
275    size: SizeMock,
276    capacity: "[PC Preview] unknow width",
277    format: "[PC Preview] unknow format",
278    getReceivingSurfaceId: function (...args) {
279      console.warn("ImageReceiver.getReceivingSurfaceId interface mocked in the Previewer. How this interface works on the Previewer" +
280        " may be different from that on a real device.")
281      const len = args.length
282      if (len > 0 && typeof args[len - 1] === 'function') {
283        args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramStringMock);
284      } else {
285        return new Promise((resolve, reject) => {
286          resolve(paramMock.paramStringMock);
287        })
288      }
289    },
290    readLatestImage: function (...args) {
291      console.warn("ImageReceiver.readLatestImage interface mocked in the Previewer. How this interface works on the Previewer" +
292        " may be different from that on a real device.")
293      const len = args.length
294      if (len > 0 && typeof args[len - 1] === 'function') {
295        args[len - 1].call(this, paramMock.businessErrorMock, paramMock.ImageMock);
296      } else {
297        return new Promise((resolve, reject) => {
298          resolve(paramMock.ImageMock);
299        })
300      }
301    },
302    readLatestImage: function (...args) {
303      console.warn("ImageReceiver.readLatestImage interface mocked in the Previewer. How this interface works on the Previewer" +
304        " may be different from that on a real device.")
305      const len = args.length
306      if (len > 0 && typeof args[len - 1] === 'function') {
307        args[len - 1].call(this, paramMock.businessErrorMock, paramMock.ImageMock);
308      } else {
309        return new Promise((resolve, reject) => {
310          resolve(paramMock.ImageMock);
311        })
312      }
313    },
314    on: function (...args) {
315      console.warn("ImageReceiver.on interface mocked in the Previewer. How this interface works on the Previewer" +
316        " may be different from that on a real device.")
317    },
318    release: function (...args) {
319      console.warn("ImageReceiver.release interface mocked in the Previewer. How this interface works on the Previewer" +
320        " may be different from that on a real device.")
321      const len = args.length
322      if (len > 0 && typeof args[len - 1] === 'function') {
323        args[len - 1].call(this, paramMock.businessErrorMock);
324      } else {
325        return new Promise((resolve, reject) => {
326          resolve();
327        })
328      }
329    }
330  }
331  const image = {
332    PixelMapFormat: {
333      UNKNOWN: 0,
334      RGB_565: 2,
335      RGBA_8888: 3,
336    },
337    PropertyKey: {
338      BITS_PER_SAMPLE: "BitsPerSample",
339      ORIENTATION: "Orientation",
340      IMAGE_LENGTH: "ImageLength",
341      IMAGE_WIDTH: "ImageWidth",
342      GPS_LATITUDE: "GPSLatitude",
343      GPS_LONGITUDE: "GPSLongitude",
344      GPS_LATITUDE_REF: "GPSLatitudeRef",
345      GPS_LONGITUDE_REF: "GPSLongitudeRef",
346    },
347    ImageFormat: {
348      YCBCR_422_SP: 1000,
349      JPEG: 2000,
350    },
351    AlphaType: {
352      UNKNOWN: 0,
353      OPAQUE: 1,
354      PREMUL: 2,
355      UNPREMUL: 3,
356    },
357    ScaleMode: {
358      CENTER_CROP: 1,
359      FIT_TARGET_SIZE: 2,
360    },
361    ComponentType: {
362      YUV_Y: 1,
363      YUV_U: 2,
364      YUV_V: 3,
365      JPEG: 4,
366    },
367    createPixelMap: function (...args) {
368      console.warn("image.createPixelMap interface mocked in the Previewer. How this interface works on the Previewer" +
369        " may be different from that on a real device.")
370      const len = args.length
371      if (len > 0 && typeof args[len - 1] === 'function') {
372        args[len - 1].call(this, paramMock.businessErrorMock, PixelMapMock);
373      } else {
374        return new Promise((resolve, reject) => {
375          resolve(PixelMapMock);
376        })
377      }
378    },
379    createImageSource: function () {
380      console.warn("image.createImageSource interface mocked in the Previewer. How this interface works" +
381        " on the Previewer may be different from that on a real device.")
382      return ImageSourceMock;
383    },
384    createImagePacker: function () {
385      console.warn("image.createImagePacker interface mocked in the Previewer. How this interface works" +
386        " on the Previewer may be different from that on a real device.")
387      return ImagePackerMock;
388    },
389    createImageReceiver: function () {
390      console.warn("image.createImageReceiver interface mocked in the Previewer. How this interface works" +
391        " on the Previewer may be different from that on a real device.")
392      return ImageReceiverMock;
393    }
394  }
395  return image;
396}
397