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