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}