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}