1 /* 2 * Copyright (c) 2024 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 16 #include "print_converter.h" 17 #include "print_constant.h" 18 #include "print_log.h" 19 #include "print_util.h" 20 21 namespace { 22 const uint32_t ORIENTATION_OFFSET = 3; 23 } // namespace 24 namespace OHOS::Print { ConvertToNativeErrorCode(int32_t errorCode)25 Print_ErrorCode ConvertToNativeErrorCode(int32_t errorCode) 26 { 27 if (errorCode >= E_PRINT_GENERIC_FAILURE && errorCode <= E_PRINT_UNKNOWN) { 28 return static_cast<Print_ErrorCode>(errorCode + PRINT_ERROR_GENERIC_FAILURE - E_PRINT_GENERIC_FAILURE); 29 } 30 return static_cast<Print_ErrorCode>(errorCode); 31 } 32 ConvertPrinterState(uint32_t state)33 Print_PrinterState ConvertPrinterState(uint32_t state) 34 { 35 switch (state) { 36 case PRINTER_ADDED: 37 return PRINTER_UNAVAILABLE; 38 case PRINTER_REMOVED: 39 return PRINTER_UNAVAILABLE; 40 case PRINTER_UPDATE_CAP: 41 return PRINTER_UNAVAILABLE; 42 case PRINTER_CONNECTED: 43 return PRINTER_IDLE; 44 case PRINTER_DISCONNECTED: 45 return PRINTER_UNAVAILABLE; 46 case PRINTER_RUNNING: 47 return PRINTER_BUSY; 48 default: 49 return PRINTER_UNAVAILABLE; 50 } 51 } 52 ConvertStringToInt(const char * src,int & dst)53 bool ConvertStringToInt(const char *src, int &dst) 54 { 55 if (src == nullptr || src[0] == '\0') { 56 return false; 57 } 58 if (!PrintUtil::ConvertToInt(std::string(src), dst)) { 59 PRINT_HILOGW("ConvertStringToInt fail: %{public}s", src); 60 return false; 61 } 62 return true; 63 } 64 ConvertOrientationMode(const uint32_t & src,Print_OrientationMode & dst)65 bool ConvertOrientationMode(const uint32_t &src, Print_OrientationMode &dst) 66 { 67 if (src >= ORIENTATION_OFFSET && src - ORIENTATION_OFFSET <= static_cast<uint32_t>(ORIENTATION_MODE_NONE)) { 68 dst = static_cast<Print_OrientationMode>(src - ORIENTATION_OFFSET); 69 return true; 70 } else { 71 return false; 72 } 73 } 74 ConvertColorMode(const uint32_t & src,Print_ColorMode & dst)75 bool ConvertColorMode(const uint32_t &src, Print_ColorMode &dst) 76 { 77 if (src >= 0 && src <= static_cast<uint32_t>(COLOR_MODE_AUTO)) { 78 dst = static_cast<Print_ColorMode>(src); 79 return true; 80 } else { 81 return false; 82 } 83 } 84 ConvertDuplexMode(const uint32_t & src,Print_DuplexMode & dst)85 bool ConvertDuplexMode(const uint32_t &src, Print_DuplexMode &dst) 86 { 87 if (src >= 0 && src <= static_cast<uint32_t>(DUPLEX_MODE_SHORT_EDGE)) { 88 dst = static_cast<Print_DuplexMode>(src); 89 return true; 90 } else { 91 return false; 92 } 93 } 94 ConvertQuality(const uint32_t & src,Print_Quality & dst)95 bool ConvertQuality(const uint32_t &src, Print_Quality &dst) 96 { 97 if (src >= static_cast<uint32_t>(PRINT_QUALITY_DRAFT) && src <= static_cast<uint32_t>(PRINT_QUALITY_HIGH)) { 98 dst = static_cast<Print_Quality>(src); 99 return true; 100 } else { 101 return false; 102 } 103 } 104 GetDocumentFormatString(Print_DocumentFormat format)105 std::string GetDocumentFormatString(Print_DocumentFormat format) 106 { 107 switch (format) { 108 case DOCUMENT_FORMAT_JPEG: 109 return "image/jpeg"; 110 case DOCUMENT_FORMAT_PDF: 111 return "application/pdf"; 112 case DOCUMENT_FORMAT_POSTSCRIPT: 113 return "application/postscript"; 114 case DOCUMENT_FORMAT_TEXT: 115 return "text/plain"; 116 case DOCUMENT_FORMAT_AUTO: 117 return "application/octet-stream"; 118 default: 119 return "application/octet-stream"; 120 } 121 } 122 GetResolutionString(Print_Resolution resolution)123 std::string GetResolutionString(Print_Resolution resolution) 124 { 125 return std::to_string(resolution.horizontalDpi) + "x" + std::to_string(resolution.verticalDpi) + "dpi"; 126 } 127 } // namespace OHOS::Print 128