• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023-2023 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 */
15import { PrintPageSize } from '../framework/Print';
16
17import { MediaType } from '../model/Constants';
18import { MediaSize, MediaSizeHelper } from '../model/MediaSize';
19
20export class MediaSizeUtil {
21  public static readonly defaultSizeCode = 26;
22
23  public static getMediaSizeArrayByCodes(codes: number[]): PrintPageSize[] {
24    return codes.map((code) => {
25      if (MediaSizeHelper.sCodeToStringMap.has(code)) {
26        let mediaSize = MediaSizeHelper.sCodeToStringMap.get(code);
27        let pageSize = new PrintPageSize(code.toString(),mediaSize.name,mediaSize.heightMils,mediaSize.widthMils);
28        return pageSize;
29      }
30      return null;
31    });
32  }
33
34  public static getDefaultMediaSizeByMediaType(mediaType: number): Array<MediaSize> {
35    let list: Array<MediaSize> = new Array<MediaSize>();
36    if (mediaType === MediaType.NORMAL) {
37      return this.getDocSizeList();
38    }
39    if (mediaType === MediaType.PHOTO) {
40      return this.getPhotoSizeList();
41    }
42    return list;
43  }
44
45  public static getDocSizeList(): Array<MediaSize> {
46    let list: Array<MediaSize> = new Array<MediaSize>();
47    list.push(MediaSizeHelper.ISO_A4);
48    list.push(MediaSizeHelper.ISO_A5);
49    list.push(MediaSizeHelper.JIS_B5);
50    list.push(MediaSizeHelper.ISO_C5);
51    list.push(MediaSizeHelper.ISO_DL);
52    return <Array<MediaSize>>list;
53  }
54
55  public static getPhotoSizeList(): Array<MediaSize> {
56    let list: Array<MediaSize> = new Array<MediaSize>();
57    list.push(MediaSizeHelper.ISO_A4);
58    list.push(MediaSizeHelper.PHOTO_4x6);
59    list.push(MediaSizeHelper.PHOTO_5x7);
60    return <Array<MediaSize>>list;
61  }
62
63  public static initMediaSizeArray(mediaSizeArray: Array<MediaSize>): void {
64    mediaSizeArray.push(MediaSizeHelper.ISO_A4);
65    mediaSizeArray.push(MediaSizeHelper.ISO_A5);
66    mediaSizeArray.push(MediaSizeHelper.JIS_B5);
67    mediaSizeArray.push(MediaSizeHelper.ISO_C5);
68    mediaSizeArray.push(MediaSizeHelper.ISO_DL);
69    mediaSizeArray.push(MediaSizeHelper.LETTER);
70    mediaSizeArray.push(MediaSizeHelper.LEGAL);
71    mediaSizeArray.push(MediaSizeHelper.PHOTO_4x6);
72    mediaSizeArray.push(MediaSizeHelper.PHOTO_5x7);
73  }
74
75  public static mediaSizeToPageSize(mediaSize: MediaSize): PrintPageSize {
76    let pageSize = new PrintPageSize(mediaSize.id, mediaSize.name, mediaSize.widthMils, mediaSize.heightMils);
77    return pageSize;
78  }
79
80  public static pageSizeToMediaSize(pageSize: PrintPageSize): MediaSize {
81    let mediaSize = this.getMediaSizeByCode(Number.parseInt(pageSize.id));
82    return mediaSize;
83  }
84
85  public static getCodesBySizes(sizes: string[]): number[] {
86    let codes: number[] = new Array<number>();
87    for (let size of sizes) {
88      for (let key of MediaSizeHelper.sCodeToStringMap.keys()) {
89        if (MediaSizeHelper.sCodeToStringMap.get(key).name === size) {
90          codes.push(key);
91        }
92      }
93    }
94    return codes;
95  }
96
97  public static getMediaSizeByCode(code: number): MediaSize {
98    let result: boolean = <boolean>MediaSizeHelper.sCodeToStringMap.has(code);
99    if (result) {
100      return MediaSizeHelper.sCodeToStringMap.get(code);
101    }
102    return MediaSizeHelper.sCodeToStringMap.get(MediaSizeUtil.defaultSizeCode);
103  }
104
105  public static toMediaCode(code: number): number {
106    let result: boolean = <boolean>MediaSizeHelper.sCodeToStringMap.has(code);
107    if (result) {
108      return code;
109    }
110    return 0;
111  }
112}